Introducing JSFS-Solid

Hi,

I’ve previously discussed metro and metro-oidc as a new way to fetch authenticated resources from a Solid Storage server. Recently we’ve finished a more complete solution, jsfs and jsfs-solid. The latter provides a solidClient() function that creates a filesystem-like API for Solid PODs.

One of the differences of this client compared to others is that it doesn’t assume that you need to login or authenticate. It will only trigger that if a resource is protected. Another difference is that it uses OLDM, which translates linked data to/from javascript objects (using N3.js).

Some of the goals of this solid client are:

  • a light-weight footprint (225KB minified, 66KB zipped)
  • close adherence to standards, in names and code
  • up-to-date security (OAuth2.1 - PKCE, DPoP)
  • improved developer experience, especially for those not already familiar with linked data

It is early, we’re still trying/testing the stack ourselves, the documentation needs some more work, but I hope some of you might be interested in trying it out and giving us some feedback as well.

regards,

Auke van Slooten

Muze.nl

1 Like

These tools look fantastic.

The way you are doing fetch, sounds a lot like reactive fetch that we have been looking to build. For the OLDM, you might want to look at using this Object Wrapper library under the hood – which was recently migrated to the RDF/JS org.

That looks interesting. I think something like that should be relatively simple to build as a wrapper around OLDM.

However, I’m hoping to go linked-data native in my applications, and just use the prefixed variable names everywhere, e.g. person.foaf$name instead of person.name. Which is why I’ve defaulted to using $ as the separator character, instead of : - this avoids having to quote every access all the time.

The challenge is to keep in mind that any property/predicate may contain 0, 1 or more values (or objects). So all the tools I’m using must allow for that, or the code must explicitly transform the values to a single value or array of values.