@typed/id 0.11.0 → 0.13.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 (77) hide show
  1. package/.nvmrc +1 -0
  2. package/biome.json +36 -0
  3. package/dist/DateTimes.d.ts +19 -0
  4. package/dist/DateTimes.js +20 -0
  5. package/dist/DateTimes.js.map +1 -0
  6. package/dist/GetRandomValues.d.ts +11 -0
  7. package/dist/GetRandomValues.js +17 -0
  8. package/dist/GetRandomValues.js.map +1 -0
  9. package/dist/{dts/NanoId.d.ts → NanoId.d.ts} +5 -30
  10. package/dist/NanoId.js +27 -0
  11. package/dist/NanoId.js.map +1 -0
  12. package/dist/Ulid.d.ts +31 -0
  13. package/dist/Ulid.js +39 -0
  14. package/dist/Ulid.js.map +1 -0
  15. package/dist/{dts/Uuid.d.ts → Uuid.d.ts} +5 -31
  16. package/dist/{esm/Uuid.js → Uuid.js} +13 -31
  17. package/dist/Uuid.js.map +1 -0
  18. package/dist/Uuid4.d.ts +7 -0
  19. package/dist/Uuid4.js +14 -0
  20. package/dist/Uuid4.js.map +1 -0
  21. package/dist/Uuid7.d.ts +26 -0
  22. package/dist/Uuid7.js +71 -0
  23. package/dist/Uuid7.js.map +1 -0
  24. package/dist/UuidStringify.d.ts +1 -0
  25. package/dist/UuidStringify.js +29 -0
  26. package/dist/UuidStringify.js.map +1 -0
  27. package/dist/index.d.ts +6 -0
  28. package/dist/index.js +7 -0
  29. package/dist/index.js.map +1 -0
  30. package/package.json +34 -58
  31. package/readme.md +86 -0
  32. package/src/DateTimes.ts +37 -0
  33. package/src/GetRandomValues.ts +28 -77
  34. package/src/NanoId.ts +16 -40
  35. package/src/Ulid.ts +82 -0
  36. package/src/Uuid4.ts +22 -0
  37. package/src/Uuid7.ts +104 -0
  38. package/src/UuidStringify.ts +31 -0
  39. package/src/id.test.ts +73 -0
  40. package/src/index.ts +6 -16
  41. package/tsconfig.json +26 -0
  42. package/GetRandomValues/package.json +0 -6
  43. package/LICENSE +0 -21
  44. package/NanoId/package.json +0 -6
  45. package/README.md +0 -5
  46. package/Schema/package.json +0 -6
  47. package/Uuid/package.json +0 -6
  48. package/dist/cjs/GetRandomValues.js +0 -65
  49. package/dist/cjs/GetRandomValues.js.map +0 -1
  50. package/dist/cjs/NanoId.js +0 -53
  51. package/dist/cjs/NanoId.js.map +0 -1
  52. package/dist/cjs/Schema.js +0 -31
  53. package/dist/cjs/Schema.js.map +0 -1
  54. package/dist/cjs/Uuid.js +0 -55
  55. package/dist/cjs/Uuid.js.map +0 -1
  56. package/dist/cjs/index.js +0 -39
  57. package/dist/cjs/index.js.map +0 -1
  58. package/dist/dts/GetRandomValues.d.ts +0 -38
  59. package/dist/dts/GetRandomValues.d.ts.map +0 -1
  60. package/dist/dts/NanoId.d.ts.map +0 -1
  61. package/dist/dts/Schema.d.ts +0 -15
  62. package/dist/dts/Schema.d.ts.map +0 -1
  63. package/dist/dts/Uuid.d.ts.map +0 -1
  64. package/dist/dts/index.d.ts +0 -16
  65. package/dist/dts/index.d.ts.map +0 -1
  66. package/dist/esm/GetRandomValues.js +0 -57
  67. package/dist/esm/GetRandomValues.js.map +0 -1
  68. package/dist/esm/NanoId.js +0 -45
  69. package/dist/esm/NanoId.js.map +0 -1
  70. package/dist/esm/Schema.js +0 -16
  71. package/dist/esm/Schema.js.map +0 -1
  72. package/dist/esm/Uuid.js.map +0 -1
  73. package/dist/esm/index.js +0 -16
  74. package/dist/esm/index.js.map +0 -1
  75. package/dist/esm/package.json +0 -4
  76. package/src/Schema.ts +0 -29
  77. package/src/Uuid.ts +0 -99
@@ -1,45 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import * as Brand from "effect/Brand";
5
- import * as Effect from "effect/Effect";
6
- import { GetRandomValues } from "./GetRandomValues.js";
7
- const nanoIdPattern = /[0-9a-zA-Z_-]/;
8
- /**
9
- * @since 1.0.0
10
- */
11
- export const isNanoId = (id) => nanoIdPattern.test(id);
12
- /**
13
- * @since 1.0.0
14
- */
15
- export const NanoId = Brand.refined(isNanoId, (input) => Brand.error(`Expected a NanoID but received ${input}.`));
16
- const numToCharacter = (byte) => {
17
- byte &= 63;
18
- if (byte < 36) {
19
- // `0-9a-z`
20
- return byte.toString(36);
21
- }
22
- else if (byte < 62) {
23
- // `A-Z`
24
- return (byte - 26).toString(36).toUpperCase();
25
- }
26
- else if (byte > 62) {
27
- return "-";
28
- }
29
- else {
30
- return "_";
31
- }
32
- };
33
- /**
34
- * @since 1.0.0
35
- */
36
- export const nanoId = (seed) => NanoId(seed.reduce((id, x) => id + numToCharacter(x), ""));
37
- /**
38
- * @since 1.0.0
39
- */
40
- export const makeNanoIdSeed = GetRandomValues(21);
41
- /**
42
- * @since 1.0.0
43
- */
44
- export const makeNanoId = Effect.map(makeNanoIdSeed, nanoId);
45
- //# sourceMappingURL=NanoId.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NanoId.js","sourceRoot":"","sources":["../../src/NanoId.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,aAAa,GAAG,eAAe,CAAA;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAgB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAO5E;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CACjC,QAAQ,EACR,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,kCAAkC,KAAK,GAAG,CAAC,CACnE,CAAA;AA6BD,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;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAgB,EAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AAE9G;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAsD,eAAe,CAAC,EAAE,CAAQ,CAAA;AAE3G;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAkD,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA"}
@@ -1,16 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import { Arbitrary } from "@effect/schema";
5
- import * as Schema from "@effect/schema/Schema";
6
- import * as NanoId from "./NanoId.js";
7
- import * as Uuid from "./Uuid.js";
8
- /**
9
- * @since 1.0.0
10
- */
11
- export const uuid = Schema.UUID.pipe(Schema.fromBrand(Uuid.Uuid));
12
- /**
13
- * @since 1.0.0
14
- */
15
- export const nanoId = Schema.String.pipe(Schema.length(21), Schema.pattern(/^[A-Za-z0-9_-]+$/), Schema.fromBrand(NanoId.NanoId), Arbitrary.arbitrary(() => (fc) => fc.array(fc.integer({ min: 0, max: 63 }), { minLength: 21, maxLength: 21 }).map((_) => NanoId.nanoId(_))));
16
- //# sourceMappingURL=Schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../src/Schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAqC,MAAM,CAAC,IAAI,CAAC,IAAI,CACpE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAC5B,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAyC,MAAM,CAAC,MAAM,CAAC,IAAI,CAC5E,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EACjB,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAClC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAC/B,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAC/B,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACpF,MAAM,CAAC,MAAM,CAAC,CAA6B,CAAC,CAC7C,CACF,CACF,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Uuid.js","sourceRoot":"","sources":["../../src/Uuid.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,WAAW,GAAG,iEAAiE,CAAA;AAErF;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAqC,CAAC,KAAa,EAAiB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAMjH;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAO,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,gCAAgC,KAAK,GAAG,CAAC,CAAC,CAAA;AAwBjH;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAoD,eAAe,CAAC,EAAE,CAAQ,CAAA;AAEvG;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAgD,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;AAEpG;;;GAGG;AACH,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;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,IAAc;IAClC,uEAAuE;IACvE,oFAAoF;IACpF,EAAE;IACF,sEAAsE;IACtE,uEAAuE;IACvE,OAAO,CACL,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,CAAC,WAAW,EAAU,CAAA;AACzB,CAAC"}
package/dist/esm/index.js DELETED
@@ -1,16 +0,0 @@
1
- /**
2
- * @since 1.18.0
3
- */
4
- /**
5
- * @since 1.18.0
6
- */
7
- export * from "./GetRandomValues.js";
8
- /**
9
- * @since 1.18.0
10
- */
11
- export * from "./NanoId.js";
12
- /**
13
- * @since 1.18.0
14
- */
15
- export * from "./Uuid.js";
16
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,cAAc,sBAAsB,CAAA;AACpC;;GAEG;AACH,cAAc,aAAa,CAAA;AAC3B;;GAEG;AACH,cAAc,WAAW,CAAA"}
@@ -1,4 +0,0 @@
1
- {
2
- "type": "module",
3
- "sideEffects": []
4
- }
package/src/Schema.ts DELETED
@@ -1,29 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
-
5
- import { Arbitrary } from "@effect/schema"
6
- import * as Schema from "@effect/schema/Schema"
7
- import * as NanoId from "./NanoId.js"
8
- import * as Uuid from "./Uuid.js"
9
-
10
- /**
11
- * @since 1.0.0
12
- */
13
- export const uuid: Schema.Schema<Uuid.Uuid, string> = Schema.UUID.pipe(
14
- Schema.fromBrand(Uuid.Uuid)
15
- )
16
-
17
- /**
18
- * @since 1.0.0
19
- */
20
- export const nanoId: Schema.Schema<NanoId.NanoId, string> = Schema.String.pipe(
21
- Schema.length(21),
22
- Schema.pattern(/^[A-Za-z0-9_-]+$/),
23
- Schema.fromBrand(NanoId.NanoId),
24
- Arbitrary.arbitrary(() => (fc) =>
25
- fc.array(fc.integer({ min: 0, max: 63 }), { minLength: 21, maxLength: 21 }).map((_) =>
26
- NanoId.nanoId(_ as any as NanoId.NanoIdSeed)
27
- )
28
- )
29
- )
package/src/Uuid.ts DELETED
@@ -1,99 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
-
5
- import * as Brand from "effect/Brand"
6
- import * as Effect from "effect/Effect"
7
- import { GetRandomValues } from "./GetRandomValues.js"
8
-
9
- const uuidPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i
10
-
11
- /**
12
- * Returns `true` if a string is a UUID.
13
- * @since 1.0.0
14
- */
15
- export const isUuid: (value: string) => value is Uuid = (value: string): value is Uuid => uuidPattern.test(value)
16
-
17
- /**
18
- * @since 1.0.0
19
- */
20
- export type Uuid = string & Brand.Brand<"@typed/id/UUID">
21
- /**
22
- * @since 1.0.0
23
- */
24
- export const Uuid = Brand.refined<Uuid>(isUuid, (input) => Brand.error(`Expected a UUID but received ${input}.`))
25
-
26
- /**
27
- * @since 1.0.0
28
- */
29
- export type UuidSeed = readonly [
30
- zero: number,
31
- one: number,
32
- two: number,
33
- three: number,
34
- four: number,
35
- five: number,
36
- six: number,
37
- seven: number,
38
- eight: number,
39
- nine: number,
40
- ten: number,
41
- eleven: number,
42
- twelve: number,
43
- thirteen: number,
44
- fourteen: number,
45
- fifteen: number
46
- ]
47
-
48
- /**
49
- * @since 1.0.0
50
- */
51
- export const makeUuidSeed: Effect.Effect<UuidSeed, never, GetRandomValues> = GetRandomValues(32) as any
52
-
53
- /**
54
- * @since 1.0.0
55
- */
56
- export const makeUuid: Effect.Effect<Uuid, never, GetRandomValues> = Effect.map(makeUuidSeed, uuid4)
57
-
58
- /**
59
- * Convert array of 16 byte values to UUID string format of the form:
60
- * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
61
- */
62
- const byteToHex: Array<string> = []
63
-
64
- for (let i = 0; i < 256; ++i) {
65
- byteToHex.push((i + 0x100).toString(16).slice(1))
66
- }
67
-
68
- /**
69
- * @since 1.0.0
70
- */
71
- export function uuid4(seed: UuidSeed): Uuid {
72
- // Note: Be careful editing this code! It's been tuned for performance
73
- // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
74
- //
75
- // Note to future-self: No, you can't remove the `toLowerCase()` call.
76
- // REF: https://github.com/uuidjs/uuid/pull/677#issuecomment-1757351351
77
- return (
78
- byteToHex[seed[0]] +
79
- byteToHex[seed[1]] +
80
- byteToHex[seed[2]] +
81
- byteToHex[seed[3]] +
82
- "-" +
83
- byteToHex[seed[4]] +
84
- byteToHex[seed[5]] +
85
- "-" +
86
- byteToHex[seed[6]] +
87
- byteToHex[seed[7]] +
88
- "-" +
89
- byteToHex[seed[8]] +
90
- byteToHex[seed[9]] +
91
- "-" +
92
- byteToHex[seed[10]] +
93
- byteToHex[seed[11]] +
94
- byteToHex[seed[12]] +
95
- byteToHex[seed[13]] +
96
- byteToHex[seed[14]] +
97
- byteToHex[seed[15]]
98
- ).toLowerCase() as Uuid
99
- }