MatrixAI / js-id

ID generation for JavaScript & TypeScript Applications
https://polykey.com
Apache License 2.0
10 stars 1 forks source link

Make this workable ES-compliant platforms (like browsers) by generalising crypto and performance APIs #2

Open CMCDragonkai opened 3 years ago

CMCDragonkai commented 3 years ago

Is your feature request related to a problem? Please describe.

Right now js-id only works in node due to 2 imports:

import crypto from 'crypto';
import { performance } from 'perf_hooks';

Both of these are part of ES standards:

Therefore it should be possible to use the JS APIs without importing node specific libraries.

Describe the solution you'd like

Attempt to use top-level await to create modules that work in nodejs and general JS platforms.

This was attempted already in:

This will require updating the ecosystem dependencies. It's quite experimental features.

Describe alternatives you've considered

One can also bundle a browser version of the script. However I've come to dislike this method because it introduces lots of dependencies and makes it more difficult to bundle at the end. IMO bundling should only occur at the application point, not at the library. The library itself should be made generic. This reduces maintenance overhead.

Additional context

See #1 for the development of this library.

CMCDragonkai commented 3 years ago

We now have toBuffer and fromBuffer to ensure that ids are properly converted without copying.

In dynamic JS, this shouldn't be a problem since it's only called when the function is called.

In TS with in non-node environments, there may be type errors.