@typed/id 0.17.2 → 1.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +164 -0
  2. package/dist/Cuid.d.ts +28 -17
  3. package/dist/Cuid.d.ts.map +1 -0
  4. package/dist/Cuid.js +41 -46
  5. package/dist/DateTimes.d.ts +15 -15
  6. package/dist/DateTimes.d.ts.map +1 -0
  7. package/dist/DateTimes.js +18 -15
  8. package/dist/Id.test.d.ts +2 -0
  9. package/dist/Id.test.d.ts.map +1 -0
  10. package/dist/Id.test.js +190 -0
  11. package/dist/Ids.d.ts +71 -0
  12. package/dist/Ids.d.ts.map +1 -0
  13. package/dist/Ids.js +51 -0
  14. package/dist/Ksuid.d.ts +8 -7
  15. package/dist/Ksuid.d.ts.map +1 -0
  16. package/dist/Ksuid.js +26 -33
  17. package/dist/NanoId.d.ts +8 -32
  18. package/dist/NanoId.d.ts.map +1 -0
  19. package/dist/NanoId.js +10 -14
  20. package/dist/RandomValues.d.ts +13 -0
  21. package/dist/RandomValues.d.ts.map +1 -0
  22. package/dist/RandomValues.js +19 -0
  23. package/dist/Ulid.d.ts +8 -30
  24. package/dist/Ulid.d.ts.map +1 -0
  25. package/dist/Ulid.js +15 -20
  26. package/dist/Uuid4.d.ts +7 -6
  27. package/dist/Uuid4.d.ts.map +1 -0
  28. package/dist/Uuid4.js +8 -10
  29. package/dist/Uuid5.d.ts +13 -19
  30. package/dist/Uuid5.d.ts.map +1 -0
  31. package/dist/Uuid5.js +14 -16
  32. package/dist/Uuid7.d.ts +35 -18
  33. package/dist/Uuid7.d.ts.map +1 -0
  34. package/dist/Uuid7.js +23 -22
  35. package/dist/_sha.d.ts +4 -0
  36. package/dist/_sha.d.ts.map +1 -0
  37. package/dist/_sha.js +3 -0
  38. package/dist/{UuidStringify.d.ts → _uuid-stringify.d.ts} +1 -0
  39. package/dist/_uuid-stringify.d.ts.map +1 -0
  40. package/dist/_uuid-stringify.js +28 -0
  41. package/dist/index.d.ts +11 -9
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +10 -10
  44. package/package.json +19 -30
  45. package/src/Cuid.ts +87 -100
  46. package/src/DateTimes.ts +22 -26
  47. package/src/Id.test.ts +217 -0
  48. package/src/Ids.ts +124 -0
  49. package/src/Ksuid.ts +54 -62
  50. package/src/NanoId.ts +20 -47
  51. package/src/RandomValues.ts +33 -0
  52. package/src/Ulid.ts +37 -68
  53. package/src/Uuid4.ts +20 -18
  54. package/src/Uuid5.ts +39 -46
  55. package/src/Uuid7.ts +79 -80
  56. package/src/_sha.ts +11 -0
  57. package/src/_uuid-stringify.ts +30 -0
  58. package/src/index.ts +10 -9
  59. package/tsconfig.json +5 -25
  60. package/vitest.config.ts +8 -0
  61. package/.nvmrc +0 -1
  62. package/biome.json +0 -36
  63. package/dist/Cuid.js.map +0 -1
  64. package/dist/DateTimes.js.map +0 -1
  65. package/dist/GetRandomValues.d.ts +0 -11
  66. package/dist/GetRandomValues.js +0 -17
  67. package/dist/GetRandomValues.js.map +0 -1
  68. package/dist/Ksuid.js.map +0 -1
  69. package/dist/NanoId.js.map +0 -1
  70. package/dist/Ulid.js.map +0 -1
  71. package/dist/Uuid4.js.map +0 -1
  72. package/dist/Uuid5.js.map +0 -1
  73. package/dist/Uuid7.js.map +0 -1
  74. package/dist/UuidStringify.js +0 -29
  75. package/dist/UuidStringify.js.map +0 -1
  76. package/dist/index.js.map +0 -1
  77. package/readme.md +0 -169
  78. package/src/GetRandomValues.ts +0 -29
  79. package/src/UuidStringify.ts +0 -31
  80. package/src/id.test.ts +0 -133
@@ -1 +0,0 @@
1
- {"version":3,"file":"GetRandomValues.js","sourceRoot":"","sources":["../src/GetRandomValues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,MAAM,OAAO,eAAgB,SAAQ,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAGhE;IACD,MAAM,CAAU,KAAK,GAAG,CAAC,CAAgD,EAAE,EAAE,CAC3E,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAA;IAEnC,MAAM,CAAU,KAAK,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IAE7F,MAAM,CAAU,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CACnD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAA;QACjC,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CACH,CAAA;IAED,MAAM,CAAU,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CACnD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAClE,CAAA"}
package/dist/Ksuid.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Ksuid.js","sourceRoot":"","sources":["../src/Ksuid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,YAAY;AACZ,MAAM,KAAK,GAAG,KAAK,CAAA,CAAC,uBAAuB;AAC3C,MAAM,eAAe,GAAG,CAAC,CAAA;AACzB,MAAM,aAAa,GAAG,EAAE,CAAA;AACxB,MAAM,WAAW,GAAG,eAAe,GAAG,aAAa,CAAA;AACnD,MAAM,aAAa,GAAG,EAAE,CAAA;AAExB,SAAS;AACT,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CACrC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,EACnC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAChC,CAAA;AAGD,MAAM,CAAC,MAAM,OAAO,GAAsC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;AAQ1E,YAAY;AACZ,MAAM,WAAW,GAAG,gEAAgE,CAAA;AACpF,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;AAEvC,SAAS,YAAY,CAAC,KAAiB;IACrC,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC;IAED,MAAM,KAAK,GAAa,IAAI,KAAK,CAAC,aAAa,CAAC,CAAA;IAChD,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;IAEpB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACb,CAAC,EAAE,CAAA;QACH,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;QACvC,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,CAAA;QACjC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IACxB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACvB,CAAC;AAED,iBAAiB;AACjB,SAAS,aAAa,CAAC,EAAE,SAAS,EAAE,OAAO,EAAa;IACtD,4BAA4B;IAC5B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAA;IAEzC,+DAA+D;IAC/D,IAAI,SAAS,GAAG,KAAK,EAAE,CAAC;QACtB,SAAS,IAAI,KAAK,CAAA;IACpB,CAAC;IAED,wCAAwC;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;IACtD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;IAClC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;IAClC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,GAAG,IAAI,CAAA;IACjC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,IAAI,CAAA;IAEzB,eAAe;IACf,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;IAEnC,mBAAmB;IACnB,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;AACxC,CAAC;AAED,aAAa;AACb,MAAM,CAAC,MAAM,SAAS,GAA6D,MAAM,CAAC,GAAG,CAC3F,QAAQ,CAAC;IACP,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAA;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IAC3D,OAAO,aAAa,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;AAC9C,CAAC,CACF,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NanoId.js","sourceRoot":"","sources":["../src/NanoId.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,aAAa,GAAG,eAAe,CAAA;AAErC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAgB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAE5E,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAA;AA2B1E,MAAM,cAAc,GAAG,CAAC,IAAY,EAAU,EAAE;IAC9C,IAAI,IAAI,EAAE,CAAA;IACV,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;QACd,WAAW;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC1B,CAAC;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;QACrB,QAAQ;QACR,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IAC/C,CAAC;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;QACrB,OAAO,GAAG,CAAA;IACZ,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,CAAA;IACZ,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAgB,EAAU,EAAE,CACjD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AAEjE,MAAM,CAAC,MAAM,cAAc,GACzB,eAAe,CAAC,KAAK,CAAC,EAAE,CAAQ,CAAA;AAElC,MAAM,CAAC,MAAM,UAAU,GAAkD,MAAM,CAAC,GAAG,CACjF,cAAc,EACd,MAAM,CACP,CAAA"}
package/dist/Ulid.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Ulid.js","sourceRoot":"","sources":["../src/Ulid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,CAAC,MAAM,MAAM,GAAqC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAQ,CAAA;AAErF,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAA;AAyBpE,qBAAqB;AACrB,MAAM,QAAQ,GAAG,kCAAkC,CAAA;AACnD,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAA;AACpC,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AAC5B,MAAM,QAAQ,GAAG,EAAE,CAAA;AACnB,MAAM,UAAU,GAAG,EAAE,CAAA;AAErB,MAAM,CAAC,MAAM,YAAY,GACvB,SAAS,CAAC,GAAG,CAAC,IAAI,CAChB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EACpB,MAAM,CAAC,IAAI,CACT,MAAM,EACN,GAAG,EAAE,CACH,eAAe,CAAC,KAAK,CAAC,EAAE,CAAmE,CAC9F,CACF,CAAA;AAEH,MAAM,CAAC,MAAM,QAAQ,GAA4D,MAAM,CAAC,GAAG,CACzF,YAAY,EACZ,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CACnC,CAAA;AAED,SAAS,UAAU,CAAC,GAAW,EAAE,GAAW;IAC1C,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,GAAG,GAAG,YAAY,CAAA;QAC9B,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;QAChC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,YAAY,CAAA;IAClC,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,YAAY,CAAC,IAAsB;IAC1C,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAA;IACrD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,IAAsB,EAAE,GAAoB;IAC/D,IAAI,GAAG,GAAG,QAAQ,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IACnE,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IACtC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IAEjC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,CAAA;AACjC,CAAC"}
package/dist/Uuid4.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Uuid4.js","sourceRoot":"","sources":["../src/Uuid4.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAGtE,MAAM,CAAC,MAAM,OAAO,GAAsC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;AAE1E,MAAM,CAAC,MAAM,SAAS,GAAiD,MAAM,CAAC,GAAG,CAC/E,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,EACzB,aAAa,CACd,CAAA;AAED,SAAS,aAAa,CAAC,IAAgB;IACrC,gEAAgE;IAChE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IACjC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IAEjC,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;AACxC,CAAC"}
package/dist/Uuid5.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Uuid5.js","sourceRoot":"","sources":["../src/Uuid5.ts"],"names":[],"mappings":"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"}
package/dist/Uuid7.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Uuid7.js","sourceRoot":"","sources":["../src/Uuid7.ts"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- const byteToHex = [];
2
- for (let i = 0; i < 256; ++i) {
3
- byteToHex.push((i + 0x100).toString(16).slice(1));
4
- }
5
- export function uuidStringify(seed) {
6
- return (
7
- // biome-ignore lint/style/useTemplate: Faster than template literals
8
- byteToHex[seed[0]] +
9
- byteToHex[seed[1]] +
10
- byteToHex[seed[2]] +
11
- byteToHex[seed[3]] +
12
- '-' +
13
- byteToHex[seed[4]] +
14
- byteToHex[seed[5]] +
15
- '-' +
16
- byteToHex[seed[6]] +
17
- byteToHex[seed[7]] +
18
- '-' +
19
- byteToHex[seed[8]] +
20
- byteToHex[seed[9]] +
21
- '-' +
22
- byteToHex[seed[10]] +
23
- byteToHex[seed[11]] +
24
- byteToHex[seed[12]] +
25
- byteToHex[seed[13]] +
26
- byteToHex[seed[14]] +
27
- byteToHex[seed[15]]);
28
- }
29
- //# sourceMappingURL=UuidStringify.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UuidStringify.js","sourceRoot":"","sources":["../src/UuidStringify.ts"],"names":[],"mappings":"AAAA,MAAM,SAAS,GAAkB,EAAE,CAAA;AAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;IAC7B,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACnD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAgB;IAC5C,OAAO;IACL,qEAAqE;IACrE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,GAAG;QACH,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,GAAG;QACH,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,GAAG;QACH,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,GAAG;QACH,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CACpB,CAAA;AACH,CAAC"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
package/readme.md DELETED
@@ -1,169 +0,0 @@
1
- # @typed/id
2
-
3
- A TypeScript library providing common ID format generation using [Effect](https://effect.website/). This package includes implementations for UUID, NanoID, ULID, CUID2, and KSUID generation with a focus on type safety and functional programming principles.
4
-
5
- ## Installation
6
-
7
- ```bash
8
- npm install @typed/id effect
9
- # or
10
- pnpm add @typed/id effect
11
- # or
12
- yarn add @typed/id effect
13
- ```
14
-
15
- ## Features
16
-
17
- - 🎯 Type-safe ID generation
18
- - 🔧 Built on top of Effect
19
- - 🎨 Multiple ID format support:
20
- - UUID (v4, v5, v7)
21
- - NanoID
22
- - ULID
23
- - CUID2
24
- - KSUID
25
- - ⚡ Efficient and secure random value generation
26
- - 📦 Zero dependencies (except Effect)
27
-
28
- ## Stackblitz
29
-
30
- Check the console to see the outputs
31
-
32
- > https://stackblitz.com/edit/vitejs-vite-eukvweq2?file=src%2Fmain.ts
33
-
34
- ## Usage
35
-
36
- ```typescript
37
- import { Effect } from 'effect'
38
- import {
39
- DateTimes,
40
- GetRandomValues,
41
- makeUuid4,
42
- makeUuid5,
43
- makeUuid7,
44
- Uuid7State,
45
- Uuid5Namespace,
46
- Sha1,
47
- makeNanoId,
48
- makeUlid,
49
- makeCuid,
50
- CuidState,
51
- makeKsuid,
52
- } from '@typed/id'
53
-
54
- // Generate a UUID v4 (random)
55
- await makeUuid4.pipe(
56
- Effect.provide(GetRandomValues.CryptoRandom),
57
- Effect.flatMap(Effect.log),
58
- Effect.runPromise
59
- )
60
- // Output: "550e8400-e29b-41d4-a716-446655440000"
61
-
62
- // Generate a UUID v5 (namespace + name based)
63
- await makeUuid5(Uuid5Namespace.URL, 'https://example.com').pipe(
64
- Effect.provide([GetRandomValues.CryptoRandom, DateTimes.Default, Sha1.Default]),
65
- Effect.flatMap(Effect.log),
66
- Effect.runPromise
67
- )
68
- // Output: "2ed6657d-e927-568b-95e1-2665a8aea6a2"
69
-
70
- // Generate a UUID v7 (time-sortable)
71
- await makeUuid7.pipe(
72
- Effect.provide(Uuid7State.Default),
73
- Effect.provide([GetRandomValues.CryptoRandom, DateTimes.Default]),
74
- Effect.flatMap(Effect.log),
75
- Effect.runPromise
76
- )
77
- // Output: "018e7768-c0b3-7000-8000-123456789abc"
78
-
79
- // Generate a NanoID
80
- await makeNanoId.pipe(
81
- Effect.provide(GetRandomValues.CryptoRandom),
82
- Effect.flatMap(Effect.log),
83
- Effect.runPromise
84
- )
85
- // Output: "V1StGXR8_Z5jdHi6B-myT"
86
-
87
- // Generate a ULID
88
- await makeUlid.pipe(
89
- Effect.provide([GetRandomValues.CryptoRandom, DateTimes.Default]),
90
- Effect.flatMap(Effect.log),
91
- Effect.runPromise
92
- )
93
- // Output: "01ARZ3NDEKTSV4RRFFQ69G5FAV"
94
-
95
- // Generate a CUID
96
- await makeCuid.pipe(
97
- Effect.provide(CuidState.layer('my-environment')), // Provide environment fingerprint
98
- Effect.provide([GetRandomValues.CryptoRandom, DateTimes.Default]),
99
- Effect.flatMap(Effect.log),
100
- Effect.runPromise
101
- )
102
- // Output: "clh3aqnd900003b64zpka3df"
103
-
104
- // Generate a KSUID
105
- await makeKsuid.pipe(
106
- Effect.provide([GetRandomValues.CryptoRandom, DateTimes.Default]),
107
- Effect.flatMap(Effect.log),
108
- Effect.runPromise
109
- )
110
- // Output: "1jIGxyVFPeR4GkCcDPQU2bXhxy9"
111
- ```
112
-
113
- ## API
114
-
115
- ### UUID
116
-
117
- - `makeUuid4`: Generates a v4 UUID (random)
118
- - `makeUuid5`: Generates a v5 UUID (SHA-1 hash of namespace + name)
119
- - `makeUuid7`: Generates a v7 UUID (time-sortable)
120
-
121
- ### UUID v5 Namespaces
122
-
123
- Pre-defined namespaces for UUID v5 generation:
124
- - `Uuid5Namespace.DNS`: For DNS-based UUIDs
125
- - `Uuid5Namespace.URL`: For URL-based UUIDs
126
- - `Uuid5Namespace.OID`: For OID-based UUIDs
127
- - `Uuid5Namespace.X500`: For X.500 DN-based UUIDs
128
-
129
- ### NanoID
130
-
131
- - `makeNanoId`: Generates a NanoID with a default length of 21 characters
132
-
133
- ### ULID
134
-
135
- - `makeUlid`: Generates a ULID (Universally Unique Lexicographically Sortable Identifier)
136
-
137
- ### CUID
138
-
139
- - `makeCuid`: Generates a CUID2 (Collision-resistant Unique IDentifier)
140
- - `CuidState.layer(envData)`: Creates a CUID state layer with environment fingerprint
141
- - `envData`: A string identifying the environment (e.g., 'browser', 'node', 'mobile-ios', uniqueProcessId())
142
- - Used to help prevent collisions in distributed systems
143
- - Cached and reused for efficiency
144
- - Format: 24 characters, starting with a lowercase letter, followed by numbers and lowercase letters
145
- - Properties:
146
- - Sequential for database performance
147
- - Secure from enumeration
148
- - URL-safe
149
- - Horizontally scalable
150
- - Includes timestamp for time-based sorting
151
-
152
- ### KSUID
153
-
154
- - `makeKsuid`: Generates a KSUID (K-Sortable Unique IDentifier)
155
- - Format: 27 characters of base62 (0-9A-Za-z)
156
- - Components:
157
- - 32-bit timestamp (seconds since 2014-03-01)
158
- - 128-bit random payload
159
- - Properties:
160
- - Time-sortable (lexicographically ordered by time)
161
- - URL-safe (base62 encoded)
162
- - Includes entropy for uniqueness
163
- - Fixed size (27 characters)
164
- - ~136 years of timestamp space from 2014
165
- - No special character dependencies
166
-
167
- ## License
168
-
169
- MIT
@@ -1,29 +0,0 @@
1
- import * as Context from 'effect/Context'
2
- import * as Effect from 'effect/Effect'
3
- import * as Layer from 'effect/Layer'
4
- import * as Random from 'effect/Random'
5
-
6
- export class GetRandomValues extends Context.Tag('GetRandomValues')<
7
- GetRandomValues,
8
- (length: number) => Effect.Effect<Uint8Array>
9
- >() {
10
- static readonly layer = (f: (length: number) => Effect.Effect<Uint8Array>) =>
11
- Layer.succeed(GetRandomValues, f)
12
-
13
- static readonly apply = (length: number) => Effect.flatMap(GetRandomValues, (f) => f(length))
14
-
15
- static readonly PseudoRandom = this.layer((length) =>
16
- Effect.gen(function* () {
17
- const view = new Uint8Array(length)
18
- for (let i = 0; i < length; ++i) {
19
- view[i] = yield* Random.nextInt
20
- }
21
-
22
- return view
23
- }),
24
- )
25
-
26
- static readonly CryptoRandom = this.layer((length) =>
27
- Effect.sync(() => crypto.getRandomValues(new Uint8Array(length))),
28
- )
29
- }
@@ -1,31 +0,0 @@
1
- const byteToHex: Array<string> = []
2
-
3
- for (let i = 0; i < 256; ++i) {
4
- byteToHex.push((i + 0x100).toString(16).slice(1))
5
- }
6
-
7
- export function uuidStringify(seed: Uint8Array): string {
8
- return (
9
- // biome-ignore lint/style/useTemplate: Faster than template literals
10
- byteToHex[seed[0]] +
11
- byteToHex[seed[1]] +
12
- byteToHex[seed[2]] +
13
- byteToHex[seed[3]] +
14
- '-' +
15
- byteToHex[seed[4]] +
16
- byteToHex[seed[5]] +
17
- '-' +
18
- byteToHex[seed[6]] +
19
- byteToHex[seed[7]] +
20
- '-' +
21
- byteToHex[seed[8]] +
22
- byteToHex[seed[9]] +
23
- '-' +
24
- byteToHex[seed[10]] +
25
- byteToHex[seed[11]] +
26
- byteToHex[seed[12]] +
27
- byteToHex[seed[13]] +
28
- byteToHex[seed[14]] +
29
- byteToHex[seed[15]]
30
- )
31
- }
package/src/id.test.ts DELETED
@@ -1,133 +0,0 @@
1
- import { describe, expect, it } from '@effect/vitest'
2
- import { Effect, flow, TestClock } from 'effect'
3
- import {
4
- DateTimes,
5
- GetRandomValues,
6
- isUuid4,
7
- isUuid5,
8
- isUuid7,
9
- makeNanoId,
10
- makeUlid,
11
- makeUuid4,
12
- makeUuid5,
13
- makeUuid7,
14
- Sha1,
15
- Uuid5Namespace,
16
- Uuid7State,
17
- makeCuid,
18
- isCuid,
19
- CuidState,
20
- makeKsuid,
21
- isKsuid,
22
- } from './index.js'
23
-
24
-
25
- const makeTestValues = (length: number) => {
26
- const values = new Uint8Array(length)
27
- for (let i = 0; i < length; ++i) {
28
- values[i] = i % 256
29
- }
30
- return values
31
- }
32
-
33
- const provideTestValues = flow(
34
- Effect.provide(CuidState.layer('test')),
35
- Effect.provide(Uuid7State.Default),
36
- Effect.provide(Sha1.Default),
37
- Effect.provide(GetRandomValues.layer((length) => Effect.succeed(makeTestValues(length)))),
38
- Effect.provide(DateTimes.Fixed(new Date(0))),
39
- )
40
-
41
- describe(__filename, () => {
42
- describe('Uuid4', () => {
43
- it.effect('generates a UUID v4', () =>
44
- Effect.gen(function* () {
45
- const id = yield* makeUuid4
46
- expect(id).toMatchInlineSnapshot(`"00010203-0405-4607-8809-0a0b0c0d0e0f"`)
47
- expect(id.length).toEqual(36)
48
- expect(isUuid4(id)).toEqual(true)
49
- }).pipe(provideTestValues),
50
- )
51
- })
52
-
53
- describe('Uuid5', () => {
54
- it.effect('generates a UUID v5', () =>
55
- Effect.gen(function* () {
56
- const id = yield* makeUuid5(Uuid5Namespace.DNS, 'example.com')
57
- expect(id).toMatchInlineSnapshot(`"cfbff0d1-9375-5685-968c-48ce8b15ae17"`)
58
- expect(id.length).toEqual(36)
59
- expect(isUuid5(id)).toEqual(true)
60
- }).pipe(provideTestValues),
61
- )
62
- })
63
-
64
- describe('Uuid7', () => {
65
- it.effect('generates a UUID v7', () =>
66
- Effect.gen(function* () {
67
- const id = yield* makeUuid7
68
- expect(id).toMatchInlineSnapshot(`"00000000-0000-7030-9c20-260b0c0d0e0f"`)
69
- expect(id.length).toEqual(36)
70
- expect(isUuid7(id)).toEqual(true)
71
- }).pipe(provideTestValues),
72
- )
73
- })
74
-
75
- describe('NanoId', () => {
76
- it.effect('generates a NanoId', () =>
77
- Effect.gen(function* () {
78
- const id = yield* makeNanoId
79
- expect(id).toMatchInlineSnapshot(`"0123456789abcdefghijk"`)
80
- expect(id.length).toEqual(21)
81
- }).pipe(provideTestValues),
82
- )
83
- })
84
-
85
- describe('Ulid', () => {
86
- it.effect('generates a Ulid', () =>
87
- Effect.gen(function* () {
88
- const id = yield* makeUlid
89
- expect(id).toMatchInlineSnapshot(`"00000000000123456789ABCDEF"`)
90
- expect(id.length).toEqual(26)
91
- }).pipe(provideTestValues),
92
- )
93
- })
94
-
95
- describe('Cuid', () => {
96
- it.effect('generates a CUID', () =>
97
- Effect.gen(function* () {
98
- const id = yield* makeCuid
99
- expect(id.length).toEqual(24)
100
- expect(isCuid(id)).toEqual(true)
101
- expect(id).toMatchInlineSnapshot(`"ai17q5mkkp8w5f2cey3lyzu5"`)
102
-
103
- // Generate another to ensure uniqueness
104
- const id2 = yield* makeCuid
105
- expect(id2).not.toEqual(id)
106
- expect(isCuid(id2)).toEqual(true)
107
- expect(id2).toMatchInlineSnapshot(`"abeo5wmlmnjxjrnjiidlfvzp"`)
108
- }).pipe(provideTestValues),
109
- )
110
- })
111
-
112
- describe('Ksuid', () => {
113
- it.effect('generates a KSUID', () =>
114
- Effect.gen(function* () {
115
- console.log(yield* DateTimes.now)
116
- const id = yield* makeKsuid
117
- expect(id.length).toEqual(27)
118
- expect(isKsuid(id)).toEqual(true)
119
- expect(id).toMatchInlineSnapshot(`"00000000SYW7RiJxkEgOGusQGwp"`)
120
-
121
- yield* TestClock.adjust(1000)
122
-
123
- console.log(yield* DateTimes.now)
124
-
125
- // Generate another to ensure uniqueness
126
- const id2 = yield* makeKsuid
127
- expect(id2).not.toEqual(id)
128
- expect(isKsuid(id2)).toEqual(true)
129
- expect(id2).toMatchInlineSnapshot(`"000007n4UlmTXBzjUOTX3nzfyYx"`)
130
- }).pipe(provideTestValues),
131
- )
132
- })
133
- })