Skip to content

Conversation

@broofa
Copy link
Member

@broofa broofa commented Jun 10, 2024

Switching the codebase to Typescript.

  • Move src/.js -> src/.ts
  • add type annotations throughout
  • Prefer Uint8Array for binary uuids throughout (BREAKING CHANGE)
  • Port unit tests to TS
  • Switch test runner from jest to node:test
  • Switch to tsc for generating buidls
  • Get all checks passing

Other notes:

  • Changes to src/*.js files should be limited to...
    • Adding type annotations
    • Switching to Uint8Array for binary UUIDs
  • The examples/node-jest test passes, but I don't see it being run as part of CI or npm test anywhere. I'm tempted to remove it. 🤔
  • Updated to eslint@latest, and switched config to ESM.
  • Updated to @wdio/*@latest
  • Switched prettier config to ESM
  • Added VSCode configuration. @ctavan, iirc you've objected to this in the past, but these are very helpful to me and to other vscode users that may want to contribute to this codebase. Specifically:
    • tasks.json starts the build:watch and test:watch scripts automatically when you open the project
    • extensions.json identifies the plugins that devs should use to apply our eslint and prettier settings while editing code
  • Sorted package.json#scripts alphabetically
    • Added build:watch and test:watch scripts, which I'm using in vscode
  • Unit tests have been ported to TS, but should be functionally identical.
  • Tests and CI are run using the dist/esm directory (unless they're explicitely testing other dist/* builds.
  • build.sh now builds ESM and CJS versions of code using tsc rather than babel.
    • The top-level dist/*.js files can now be found in dist/esm, alongside the other builds (esm-browser, cjs, and cjs-browser)
  • Switched to using Uint8Array for binary (byte) UUID data structures throughout. The one exception is the return type for md5 and sha1 on node, which is still Buffer (but that's a subclass of Uint8Array these days anyways so... 🤷)

@broofa broofa linked an issue Jun 10, 2024 that may be closed by this pull request
@uuidjs uuidjs deleted a comment from Young8881 Jun 28, 2024
@broofa
Copy link
Member Author

broofa commented Jun 30, 2024

@LinusU @pmccarren I would particularly appreciate a review of the TS types I've added, particularly with regard to API surface where I've used overload signatures to capture the different method incantations.

@ctavan et al: Thoughts on release process? I know we just pushed v10, so pushing a v11 this soon after feels a bit... sudden? We could do a prerelease ("11.0.0-beta") and dist tag as npm dist-tag add 11.0.0-beta beta, I suppose.

@broofa broofa linked an issue Jul 2, 2024 that may be closed by this pull request
@broofa
Copy link
Member Author

broofa commented Jul 2, 2024

@joshkel As the most recent contributor to @types/uuid, I'd certainly appreciate any feedback you have on this.

@broofa
Copy link
Member Author

broofa commented Jul 11, 2024

Final call. Merging this by week's end unless someone objects.

@ctavan @LinusU @pmccarren @joshkel

@broofa broofa deleted the ts_port branch July 17, 2024 13:14
molaeiali added a commit to molaeiali/uuid that referenced this pull request Aug 5, 2024
broofa pushed a commit that referenced this pull request Aug 7, 2024
…D from being used (#786)

* fix: remove options default assignment introduced during porting to ts, pull #763 preventing native.randomUUID being used

* test: add unit test to check if native randomUUID should be used or not
@veksa veksa mentioned this pull request Oct 29, 2024
2 tasks
marmitar added a commit to marmitar/thelounge that referenced this pull request Nov 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Port codebase to TypeScript Make Uint8Array the one and only type used for binary (byte) uuid values

3 participants