@typed/id 0.16.0 → 0.17.1

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.
package/dist/Cuid.d.ts CHANGED
@@ -1,4 +1,6 @@
1
- import { Effect, Layer, Schema } from 'effect';
1
+ import * as Effect from 'effect/Effect';
2
+ import * as Layer from 'effect/Layer';
3
+ import * as Schema from 'effect/Schema';
2
4
  import { DateTimes } from './DateTimes.js';
3
5
  import { GetRandomValues } from './GetRandomValues.js';
4
6
  export declare const Cuid: Schema.brand<Schema.filter<Schema.Schema<string, string, never>>, "@typed/id/CUID">;
package/dist/Cuid.js CHANGED
@@ -1,4 +1,6 @@
1
- import { Effect, Layer, Schema } from 'effect';
1
+ import * as Effect from 'effect/Effect';
2
+ import * as Layer from 'effect/Layer';
3
+ import * as Schema from 'effect/Schema';
2
4
  import { DateTimes } from './DateTimes.js';
3
5
  import { GetRandomValues } from './GetRandomValues.js';
4
6
  // Constants
package/dist/Cuid.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Cuid.js","sourceRoot":"","sources":["../src/Cuid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Cuid.js","sourceRoot":"","sources":["../src/Cuid.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { Effect, Layer } from 'effect';
1
+ import * as Effect from 'effect/Effect';
2
+ import * as Layer from 'effect/Layer';
2
3
  declare const DateTimes_base: import("effect/Context").TagClass<DateTimes, "DateTimes", {
3
4
  readonly now: Effect.Effect<number>;
4
5
  readonly date: Effect.Effect<Date>;
package/dist/DateTimes.js CHANGED
@@ -1,4 +1,5 @@
1
- import { Effect, Layer } from 'effect';
1
+ import * as Effect from 'effect/Effect';
2
+ import * as Layer from 'effect/Layer';
2
3
  export class DateTimes extends Effect.Tag('DateTimes')() {
3
4
  static make = (now) => Layer.succeed(this, {
4
5
  now,
@@ -7,10 +8,11 @@ export class DateTimes extends Effect.Tag('DateTimes')() {
7
8
  static Default = this.make(Effect.clockWith((clock) => clock.currentTimeMillis));
8
9
  static Fixed = (base) => Layer.effect(DateTimes, Effect.gen(function* () {
9
10
  const clock = yield* Effect.clock;
11
+ const baseN = BigInt(base.getTime());
10
12
  const startMillis = yield* clock.currentTimeMillis;
11
13
  const now = clock.currentTimeMillis.pipe(Effect.map((millis) =>
12
14
  // Use BigInt to avoid floating point precision issues which can break deterministic testing
13
- Number(BigInt(base.getTime()) + BigInt(millis) - BigInt(startMillis))));
15
+ Number(baseN + BigInt(millis) - BigInt(startMillis))));
14
16
  return {
15
17
  now,
16
18
  date: now.pipe(Effect.map((millis) => new Date(millis))),
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimes.js","sourceRoot":"","sources":["../src/DateTimes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAqB,MAAM,QAAQ,CAAA;AAEzD,MAAM,OAAO,SAAU,SAAQ,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAMnD;IACD,MAAM,CAAU,IAAI,GAAG,CAAC,GAA0B,EAA0B,EAAE,CAC5E,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;QAClB,GAAG;QACH,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;KACzD,CAAC,CAAA;IAEJ,MAAM,CAAU,OAAO,GAA2B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAA;IAEjH,MAAM,CAAU,KAAK,GAAG,CAAC,IAAU,EAA0B,EAAE,CAC7D,KAAK,CAAC,MAAM,CACV,SAAS,EACT,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAA;QACjC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAA;QAClD,MAAM,GAAG,GAAG,KAAK,CAAC,iBAAiB,CAAC,IAAI,CACtC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACpB,4FAA4F;QAC5F,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CACtE,CACF,CAAA;QAED,OAAO;YACL,GAAG;YACH,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;SACzD,CAAA;IACH,CAAC,CAAC,CACH,CAAA"}
1
+ {"version":3,"file":"DateTimes.js","sourceRoot":"","sources":["../src/DateTimes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,MAAM,OAAO,SAAU,SAAQ,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAMnD;IACD,MAAM,CAAU,IAAI,GAAG,CAAC,GAA0B,EAA0B,EAAE,CAC5E,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;QAClB,GAAG;QACH,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;KACzD,CAAC,CAAA;IAEJ,MAAM,CAAU,OAAO,GAA2B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAA;IAEjH,MAAM,CAAU,KAAK,GAAG,CAAC,IAAU,EAA0B,EAAE,CAC7D,KAAK,CAAC,MAAM,CACV,SAAS,EACT,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAA;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;QACpC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAA;QAClD,MAAM,GAAG,GAAG,KAAK,CAAC,iBAAiB,CAAC,IAAI,CACtC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACpB,4FAA4F;QAC5F,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CACrD,CACF,CAAA;QAED,OAAO;YACL,GAAG;YACH,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;SACzD,CAAA;IACH,CAAC,CAAC,CACH,CAAA"}
@@ -0,0 +1,8 @@
1
+ import * as Effect from 'effect/Effect';
2
+ import * as Schema from 'effect/Schema';
3
+ import { DateTimes } from './DateTimes.js';
4
+ import { GetRandomValues } from './GetRandomValues.js';
5
+ export declare const Ksuid: Schema.brand<Schema.filter<Schema.Schema<string, string, never>>, "@typed/id/KSUID">;
6
+ export type Ksuid = Schema.Schema.Type<typeof Ksuid>;
7
+ export declare const isKsuid: (value: string) => value is Ksuid;
8
+ export declare const makeKsuid: Effect.Effect<Ksuid, never, DateTimes | GetRandomValues>;
package/dist/Ksuid.js ADDED
@@ -0,0 +1,57 @@
1
+ import * as Effect from 'effect/Effect';
2
+ import * as Schema from 'effect/Schema';
3
+ import { DateTimes } from './DateTimes.js';
4
+ import { GetRandomValues } from './GetRandomValues.js';
5
+ // Constants
6
+ const EPOCH = 14e11; // 2014-03-01T00:00:00Z
7
+ const TIMESTAMP_BYTES = 4;
8
+ const PAYLOAD_BYTES = 16;
9
+ const TOTAL_BYTES = TIMESTAMP_BYTES + PAYLOAD_BYTES;
10
+ const STRING_LENGTH = 27;
11
+ // Schema
12
+ export const Ksuid = Schema.String.pipe(Schema.pattern(/^[0-9a-zA-Z]{27}$/), Schema.brand('@typed/id/KSUID'));
13
+ export const isKsuid = Schema.is(Ksuid);
14
+ // Utilities
15
+ const base62Chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
16
+ const base = BigInt(base62Chars.length);
17
+ function base62Encode(bytes) {
18
+ let number = 0n;
19
+ for (const byte of bytes) {
20
+ number = (number << 8n) + BigInt(byte);
21
+ }
22
+ const chars = new Array(STRING_LENGTH);
23
+ let i = chars.length;
24
+ while (i > 0) {
25
+ i--;
26
+ const remainder = Number(number % base);
27
+ chars[i] = base62Chars[remainder];
28
+ number = number / base;
29
+ }
30
+ return chars.join('');
31
+ }
32
+ // Core Functions
33
+ function ksuidFromSeed({ timestamp, payload }) {
34
+ // Create the combined bytes
35
+ const bytes = new Uint8Array(TOTAL_BYTES);
36
+ // Support for timestamps before the epoch, usually for testing
37
+ if (timestamp < EPOCH) {
38
+ timestamp += EPOCH;
39
+ }
40
+ // Write timestamp (4 bytes, big-endian)
41
+ const seconds = Math.floor((timestamp - EPOCH) / 1000);
42
+ bytes[0] = (seconds >>> 24) & 0xff;
43
+ bytes[1] = (seconds >>> 16) & 0xff;
44
+ bytes[2] = (seconds >>> 8) & 0xff;
45
+ bytes[3] = seconds & 0xff;
46
+ // Copy payload
47
+ bytes.set(payload, TIMESTAMP_BYTES);
48
+ // Encode as base62
49
+ return Ksuid.make(base62Encode(bytes));
50
+ }
51
+ // Public API
52
+ export const makeKsuid = Effect.gen(function* () {
53
+ const timestamp = yield* DateTimes.now;
54
+ const payload = yield* GetRandomValues.apply(PAYLOAD_BYTES);
55
+ return ksuidFromSeed({ timestamp, payload });
56
+ });
57
+ //# sourceMappingURL=Ksuid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Ksuid.js","sourceRoot":"","sources":["../src/Ksuid.ts"],"names":[],"mappings":"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"}
package/dist/NanoId.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { Schema } from 'effect';
2
1
  import * as Effect from 'effect/Effect';
2
+ import * as Schema from 'effect/Schema';
3
3
  import { GetRandomValues } from './GetRandomValues.js';
4
4
  export declare const isNanoId: (id: string) => id is NanoId;
5
5
  export declare const NanoId: Schema.brand<typeof Schema.String, "@typed/id/NanoId">;
package/dist/NanoId.js CHANGED
@@ -1,5 +1,5 @@
1
- import { Schema } from 'effect';
2
1
  import * as Effect from 'effect/Effect';
2
+ import * as Schema from 'effect/Schema';
3
3
  import { GetRandomValues } from './GetRandomValues.js';
4
4
  const nanoIdPattern = /[0-9a-zA-Z_-]/;
5
5
  export const isNanoId = (id) => nanoIdPattern.test(id);
@@ -1 +1 @@
1
- {"version":3,"file":"NanoId.js","sourceRoot":"","sources":["../src/NanoId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,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"}
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/Uuid4.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as Effect from 'effect/Effect';
2
+ import * as Schema from 'effect/Schema';
2
3
  import { GetRandomValues } from './GetRandomValues.js';
3
- import { Schema } from 'effect';
4
4
  export declare const Uuid4: Schema.brand<typeof Schema.UUID, "@typed/id/UUID4">;
5
5
  export type Uuid4 = Schema.Schema.Type<typeof Uuid4>;
6
6
  export declare const isUuid4: (value: string) => value is Uuid4;
package/dist/Uuid4.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as Effect from 'effect/Effect';
2
+ import * as Schema from 'effect/Schema';
2
3
  import { GetRandomValues } from './GetRandomValues.js';
3
- import { Schema } from 'effect';
4
4
  import { uuidStringify } from './UuidStringify.js';
5
5
  export const Uuid4 = Schema.UUID.pipe(Schema.brand('@typed/id/UUID4'));
6
6
  export const isUuid4 = Schema.is(Uuid4);
@@ -9,6 +9,6 @@ function uuid4FromSeed(seed) {
9
9
  // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
10
10
  seed[6] = (seed[6] & 0x0f) | 0x40;
11
11
  seed[8] = (seed[8] & 0x3f) | 0x80;
12
- return uuidStringify(seed);
12
+ return Uuid4.make(uuidStringify(seed));
13
13
  }
14
14
  //# sourceMappingURL=Uuid4.js.map
package/dist/Uuid4.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Uuid4.js","sourceRoot":"","sources":["../src/Uuid4.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,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,aAAa,CAAC,IAAI,CAAU,CAAA;AACrC,CAAC"}
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.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as Effect from 'effect/Effect';
2
- import { Layer, Schema } from 'effect';
2
+ import * as Layer from 'effect/Layer';
3
+ import * as Schema from 'effect/Schema';
3
4
  export declare const Uuid5: Schema.brand<typeof Schema.UUID, "@typed/id/UUID5">;
4
5
  export type Uuid5 = Schema.Schema.Type<typeof Uuid5>;
5
6
  export declare const isUuid5: (value: string) => value is Uuid5;
package/dist/Uuid5.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as Effect from 'effect/Effect';
2
- import { Layer, Schema } from 'effect';
2
+ import * as Layer from 'effect/Layer';
3
+ import * as Schema from 'effect/Schema';
3
4
  import { uuidStringify } from './UuidStringify.js';
4
5
  export const Uuid5 = Schema.UUID.pipe(Schema.brand('@typed/id/UUID5'));
5
6
  export const isUuid5 = Schema.is(Uuid5);
@@ -42,7 +43,7 @@ export function makeUuid5(namespace, name) {
42
43
  // Set version (5) and variant bits
43
44
  result[6] = (result[6] & 0x0f) | 0x50; // version 5
44
45
  result[8] = (result[8] & 0x3f) | 0x80; // variant 1
45
- return uuidStringify(result);
46
+ return Uuid5.make(uuidStringify(result));
46
47
  });
47
48
  }
48
49
  //# sourceMappingURL=Uuid5.js.map
package/dist/Uuid5.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Uuid5.js","sourceRoot":"","sources":["../src/Uuid5.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Uuid5.js","sourceRoot":"","sources":["../src/Uuid5.ts"],"names":[],"mappings":"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"}
package/dist/Uuid7.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import * as Effect from 'effect/Effect';
2
- import { GetRandomValues } from './GetRandomValues.js';
3
- import { Layer, Schema } from 'effect';
2
+ import * as Layer from 'effect/Layer';
3
+ import * as Schema from 'effect/Schema';
4
4
  import { DateTimes } from './DateTimes.js';
5
+ import { GetRandomValues } from './GetRandomValues.js';
5
6
  export declare const Uuid7: Schema.brand<typeof Schema.UUID, "@typed/id/UUID7">;
6
7
  export type Uuid7 = Schema.Schema.Type<typeof Uuid7>;
7
8
  export declare const isUuid7: (value: string) => value is Uuid7;
package/dist/Uuid7.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import * as Effect from 'effect/Effect';
2
- import { GetRandomValues } from './GetRandomValues.js';
3
- import { Layer, Schema } from 'effect';
2
+ import * as Layer from 'effect/Layer';
3
+ import * as Schema from 'effect/Schema';
4
4
  import { DateTimes } from './DateTimes.js';
5
+ import { GetRandomValues } from './GetRandomValues.js';
5
6
  import { uuidStringify } from './UuidStringify.js';
6
7
  export const Uuid7 = Schema.UUID.pipe(Schema.brand('@typed/id/UUID7'));
7
8
  export const isUuid7 = Schema.is(Uuid7);
@@ -66,6 +67,6 @@ function uuid7FromSeed({ timestamp, seq, randomBytes }) {
66
67
  result[13] = randomBytes[13];
67
68
  result[14] = randomBytes[14];
68
69
  result[15] = randomBytes[15];
69
- return uuidStringify(result);
70
+ return Uuid7.make(uuidStringify(result));
70
71
  }
71
72
  //# sourceMappingURL=Uuid7.js.map
package/dist/Uuid7.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Uuid7.js","sourceRoot":"","sources":["../src/Uuid7.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Uuid7.js","sourceRoot":"","sources":["../src/Uuid7.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from './Cuid.js';
2
2
  export * from './DateTimes.js';
3
3
  export * from './GetRandomValues.js';
4
+ export * from './Ksuid.js';
4
5
  export * from './NanoId.js';
5
6
  export * from './Ulid.js';
6
7
  export * from './Uuid4.js';
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from './Cuid.js';
2
2
  export * from './DateTimes.js';
3
3
  export * from './GetRandomValues.js';
4
+ export * from './Ksuid.js';
4
5
  export * from './NanoId.js';
5
6
  export * from './Ulid.js';
6
7
  export * from './Uuid4.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
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,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typed/id",
3
- "version": "0.16.0",
3
+ "version": "0.17.1",
4
4
  "description": "Common ID format generation for Effect",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/readme.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @typed/id
2
2
 
3
- A TypeScript library providing common ID format generation using [Effect](https://effect.website/). This package includes implementations for UUID, NanoID, ULID, and CUID generation with a focus on type safety and functional programming principles.
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
4
 
5
5
  ## Installation
6
6
 
@@ -21,9 +21,16 @@ yarn add @typed/id effect
21
21
  - NanoID
22
22
  - ULID
23
23
  - CUID2
24
+ - KSUID
24
25
  - ⚡ Efficient and secure random value generation
25
26
  - 📦 Zero dependencies (except Effect)
26
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
+
27
34
  ## Usage
28
35
 
29
36
  ```typescript
@@ -41,6 +48,7 @@ import {
41
48
  makeUlid,
42
49
  makeCuid,
43
50
  CuidState,
51
+ makeKsuid,
44
52
  } from '@typed/id'
45
53
 
46
54
  // Generate a UUID v4 (random)
@@ -53,7 +61,7 @@ await makeUuid4.pipe(
53
61
 
54
62
  // Generate a UUID v5 (namespace + name based)
55
63
  await makeUuid5(Uuid5Namespace.URL, 'https://example.com').pipe(
56
- Effect.provide(Sha1.Default),
64
+ Effect.provide([GetRandomValues.CryptoRandom, DateTimes.Default, Sha1.Default]),
57
65
  Effect.flatMap(Effect.log),
58
66
  Effect.runPromise
59
67
  )
@@ -92,6 +100,14 @@ await makeCuid.pipe(
92
100
  Effect.runPromise
93
101
  )
94
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"
95
111
  ```
96
112
 
97
113
  ## API
@@ -122,7 +138,7 @@ Pre-defined namespaces for UUID v5 generation:
122
138
 
123
139
  - `makeCuid`: Generates a CUID2 (Collision-resistant Unique IDentifier)
124
140
  - `CuidState.layer(envData)`: Creates a CUID state layer with environment fingerprint
125
- - `envData`: A string identifying the environment (e.g., 'browser', 'node', 'mobile-ios')
141
+ - `envData`: A string identifying the environment (e.g., 'browser', 'node', 'mobile-ios', uniqueProcessId())
126
142
  - Used to help prevent collisions in distributed systems
127
143
  - Cached and reused for efficiency
128
144
  - Format: 24 characters, starting with a lowercase letter, followed by numbers and lowercase letters
@@ -133,6 +149,21 @@ Pre-defined namespaces for UUID v5 generation:
133
149
  - Horizontally scalable
134
150
  - Includes timestamp for time-based sorting
135
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
+
136
167
  ## License
137
168
 
138
169
  MIT
package/src/Cuid.ts CHANGED
@@ -1,4 +1,6 @@
1
- import { Effect, Layer, Schema } from 'effect'
1
+ import * as Effect from 'effect/Effect'
2
+ import * as Layer from 'effect/Layer'
3
+ import * as Schema from 'effect/Schema'
2
4
  import { DateTimes } from './DateTimes.js'
3
5
  import { GetRandomValues } from './GetRandomValues.js'
4
6
 
package/src/DateTimes.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { Effect, Layer, Option, TestClock } from 'effect'
1
+ import * as Effect from 'effect/Effect'
2
+ import * as Layer from 'effect/Layer'
2
3
 
3
4
  export class DateTimes extends Effect.Tag('DateTimes')<
4
5
  DateTimes,
@@ -20,11 +21,12 @@ export class DateTimes extends Effect.Tag('DateTimes')<
20
21
  DateTimes,
21
22
  Effect.gen(function* () {
22
23
  const clock = yield* Effect.clock
24
+ const baseN = BigInt(base.getTime())
23
25
  const startMillis = yield* clock.currentTimeMillis
24
26
  const now = clock.currentTimeMillis.pipe(
25
27
  Effect.map((millis) =>
26
28
  // Use BigInt to avoid floating point precision issues which can break deterministic testing
27
- Number(BigInt(base.getTime()) + BigInt(millis) - BigInt(startMillis)),
29
+ Number(baseN + BigInt(millis) - BigInt(startMillis)),
28
30
  ),
29
31
  )
30
32
 
@@ -35,3 +37,4 @@ export class DateTimes extends Effect.Tag('DateTimes')<
35
37
  }),
36
38
  )
37
39
  }
40
+
package/src/Ksuid.ts ADDED
@@ -0,0 +1,82 @@
1
+ import * as Effect from 'effect/Effect'
2
+ import * as Schema from 'effect/Schema'
3
+ import { DateTimes } from './DateTimes.js'
4
+ import { GetRandomValues } from './GetRandomValues.js'
5
+
6
+ // Constants
7
+ const EPOCH = 14e11 // 2014-03-01T00:00:00Z
8
+ const TIMESTAMP_BYTES = 4
9
+ const PAYLOAD_BYTES = 16
10
+ const TOTAL_BYTES = TIMESTAMP_BYTES + PAYLOAD_BYTES
11
+ const STRING_LENGTH = 27
12
+
13
+ // Schema
14
+ export const Ksuid = Schema.String.pipe(
15
+ Schema.pattern(/^[0-9a-zA-Z]{27}$/),
16
+ Schema.brand('@typed/id/KSUID'),
17
+ )
18
+ export type Ksuid = Schema.Schema.Type<typeof Ksuid>
19
+
20
+ export const isKsuid: (value: string) => value is Ksuid = Schema.is(Ksuid)
21
+
22
+ // Types
23
+ type KsuidSeed = {
24
+ readonly timestamp: number
25
+ readonly payload: Uint8Array
26
+ }
27
+
28
+ // Utilities
29
+ const base62Chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
30
+ const base = BigInt(base62Chars.length)
31
+
32
+ function base62Encode(bytes: Uint8Array): string {
33
+ let number = 0n
34
+ for (const byte of bytes) {
35
+ number = (number << 8n) + BigInt(byte)
36
+ }
37
+
38
+ const chars: string[] = new Array(STRING_LENGTH)
39
+ let i = chars.length
40
+
41
+ while (i > 0) {
42
+ i--
43
+ const remainder = Number(number % base)
44
+ chars[i] = base62Chars[remainder]
45
+ number = number / base
46
+ }
47
+
48
+ return chars.join('')
49
+ }
50
+
51
+ // Core Functions
52
+ function ksuidFromSeed({ timestamp, payload }: KsuidSeed): Ksuid {
53
+ // Create the combined bytes
54
+ const bytes = new Uint8Array(TOTAL_BYTES)
55
+
56
+ // Support for timestamps before the epoch, usually for testing
57
+ if (timestamp < EPOCH) {
58
+ timestamp += EPOCH
59
+ }
60
+
61
+ // Write timestamp (4 bytes, big-endian)
62
+ const seconds = Math.floor((timestamp - EPOCH) / 1000)
63
+ bytes[0] = (seconds >>> 24) & 0xff
64
+ bytes[1] = (seconds >>> 16) & 0xff
65
+ bytes[2] = (seconds >>> 8) & 0xff
66
+ bytes[3] = seconds & 0xff
67
+
68
+ // Copy payload
69
+ bytes.set(payload, TIMESTAMP_BYTES)
70
+
71
+ // Encode as base62
72
+ return Ksuid.make(base62Encode(bytes))
73
+ }
74
+
75
+ // Public API
76
+ export const makeKsuid: Effect.Effect<Ksuid, never, DateTimes | GetRandomValues> = Effect.gen(
77
+ function* () {
78
+ const timestamp = yield* DateTimes.now
79
+ const payload = yield* GetRandomValues.apply(PAYLOAD_BYTES)
80
+ return ksuidFromSeed({ timestamp, payload })
81
+ },
82
+ )
package/src/NanoId.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { Schema } from 'effect'
2
1
  import * as Effect from 'effect/Effect'
2
+ import * as Schema from 'effect/Schema'
3
3
  import { GetRandomValues } from './GetRandomValues.js'
4
4
 
5
5
  const nanoIdPattern = /[0-9a-zA-Z_-]/
package/src/Uuid4.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as Effect from 'effect/Effect'
2
+ import * as Schema from 'effect/Schema'
2
3
  import { GetRandomValues } from './GetRandomValues.js'
3
- import { Schema } from 'effect'
4
4
  import { uuidStringify } from './UuidStringify.js'
5
5
 
6
6
  export const Uuid4 = Schema.UUID.pipe(Schema.brand('@typed/id/UUID4'))
@@ -18,5 +18,5 @@ function uuid4FromSeed(seed: Uint8Array): Uuid4 {
18
18
  seed[6] = (seed[6] & 0x0f) | 0x40
19
19
  seed[8] = (seed[8] & 0x3f) | 0x80
20
20
 
21
- return uuidStringify(seed) as Uuid4
21
+ return Uuid4.make(uuidStringify(seed))
22
22
  }
package/src/Uuid5.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as Effect from 'effect/Effect'
2
- import { Layer, Schema } from 'effect'
2
+ import * as Layer from 'effect/Layer'
3
+ import * as Schema from 'effect/Schema'
3
4
  import { uuidStringify } from './UuidStringify.js'
4
5
 
5
6
  export const Uuid5 = Schema.UUID.pipe(Schema.brand('@typed/id/UUID5'))
@@ -72,6 +73,6 @@ export function makeUuid5(
72
73
  result[6] = (result[6] & 0x0f) | 0x50 // version 5
73
74
  result[8] = (result[8] & 0x3f) | 0x80 // variant 1
74
75
 
75
- return uuidStringify(result) as Uuid5
76
+ return Uuid5.make(uuidStringify(result))
76
77
  })
77
78
  }
package/src/Uuid7.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import * as Effect from 'effect/Effect'
2
- import { GetRandomValues } from './GetRandomValues.js'
3
- import { Layer, Schema } from 'effect'
2
+ import * as Layer from 'effect/Layer'
3
+ import * as Schema from 'effect/Schema'
4
4
  import { DateTimes } from './DateTimes.js'
5
+ import { GetRandomValues } from './GetRandomValues.js'
5
6
  import { uuidStringify } from './UuidStringify.js'
6
7
 
7
8
  export const Uuid7 = Schema.UUID.pipe(Schema.brand('@typed/id/UUID7'))
@@ -100,5 +101,5 @@ function uuid7FromSeed({ timestamp, seq, randomBytes }: Uuid7Seed): Uuid7 {
100
101
  result[14] = randomBytes[14]
101
102
  result[15] = randomBytes[15]
102
103
 
103
- return uuidStringify(result) as Uuid7
104
+ return Uuid7.make(uuidStringify(result))
104
105
  }
package/src/id.test.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from '@effect/vitest'
2
- import { Effect, flow } from 'effect'
2
+ import { Effect, flow, TestClock } from 'effect'
3
3
  import {
4
4
  DateTimes,
5
5
  GetRandomValues,
@@ -17,12 +17,15 @@ import {
17
17
  makeCuid,
18
18
  isCuid,
19
19
  CuidState,
20
+ makeKsuid,
21
+ isKsuid,
20
22
  } from './index.js'
21
23
 
24
+
22
25
  const makeTestValues = (length: number) => {
23
26
  const values = new Uint8Array(length)
24
27
  for (let i = 0; i < length; ++i) {
25
- values[i] = i
28
+ values[i] = i % 256
26
29
  }
27
30
  return values
28
31
  }
@@ -105,4 +108,26 @@ describe(__filename, () => {
105
108
  }).pipe(provideTestValues),
106
109
  )
107
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
+ })
108
133
  })
package/src/index.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from './Cuid.js'
2
2
  export * from './DateTimes.js'
3
3
  export * from './GetRandomValues.js'
4
+ export * from './Ksuid.js'
4
5
  export * from './NanoId.js'
5
6
  export * from './Ulid.js'
6
7
  export * from './Uuid4.js'
package/dist/Uuid.d.ts DELETED
@@ -1,27 +0,0 @@
1
- import * as Effect from 'effect/Effect';
2
- import { GetRandomValues } from './GetRandomValues.js';
3
- import { Schema } from 'effect';
4
- export declare const isUuid: (value: string) => value is Uuid;
5
- export declare const Uuid: Schema.brand<typeof Schema.UUID, "@typed/id/UUID">;
6
- export type Uuid = Schema.Schema.Type<typeof Uuid>;
7
- export type UuidSeed = readonly [
8
- zero: number,
9
- one: number,
10
- two: number,
11
- three: number,
12
- four: number,
13
- five: number,
14
- six: number,
15
- seven: number,
16
- eight: number,
17
- nine: number,
18
- ten: number,
19
- eleven: number,
20
- twelve: number,
21
- thirteen: number,
22
- fourteen: number,
23
- fifteen: number
24
- ];
25
- export declare const makeUuidSeed: Effect.Effect<UuidSeed, never, GetRandomValues>;
26
- export declare const makeUuid: Effect.Effect<Uuid, never, GetRandomValues>;
27
- export declare function uuid4(seed: UuidSeed): Uuid;
package/dist/Uuid.js DELETED
@@ -1,45 +0,0 @@
1
- import * as Effect from 'effect/Effect';
2
- import { GetRandomValues } from './GetRandomValues.js';
3
- import { Schema } from 'effect';
4
- export const isUuid = Schema.is(Schema.UUID);
5
- export const Uuid = Schema.UUID.pipe(Schema.brand('@typed/id/UUID'));
6
- export const makeUuidSeed = GetRandomValues.apply(32);
7
- export const makeUuid = Effect.map(makeUuidSeed, uuid4);
8
- /**
9
- * Convert array of 16 byte values to UUID string format of the form:
10
- * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
11
- */
12
- const byteToHex = [];
13
- for (let i = 0; i < 256; ++i) {
14
- byteToHex.push((i + 0x100).toString(16).slice(1));
15
- }
16
- export function uuid4(seed) {
17
- // Note: Be careful editing this code! It's been tuned for performance
18
- // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
19
- //
20
- // Note to future-self: No, you can't remove the `toLowerCase()` call.
21
- // REF: https://github.com/uuidjs/uuid/pull/677#issuecomment-1757351351
22
- return (
23
- // biome-ignore lint/style/useTemplate: <explanation>
24
- byteToHex[seed[0]] +
25
- byteToHex[seed[1]] +
26
- byteToHex[seed[2]] +
27
- byteToHex[seed[3]] +
28
- '-' +
29
- byteToHex[seed[4]] +
30
- byteToHex[seed[5]] +
31
- '-' +
32
- byteToHex[seed[6]] +
33
- byteToHex[seed[7]] +
34
- '-' +
35
- byteToHex[seed[8]] +
36
- byteToHex[seed[9]] +
37
- '-' +
38
- byteToHex[seed[10]] +
39
- byteToHex[seed[11]] +
40
- byteToHex[seed[12]] +
41
- byteToHex[seed[13]] +
42
- byteToHex[seed[14]] +
43
- byteToHex[seed[15]]).toLowerCase();
44
- }
45
- //# sourceMappingURL=Uuid.js.map
package/dist/Uuid.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Uuid.js","sourceRoot":"","sources":["../src/Uuid.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;AAE/B,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;AAsBpE,MAAM,CAAC,MAAM,YAAY,GAAoD,eAAe,CAAC,KAAK,CAChG,EAAE,CACI,CAAA;AAER,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,MAAM,UAAU,KAAK,CAAC,IAAc;IAClC,uEAAuE;IACvE,oFAAoF;IACpF,EAAE;IACF,sEAAsE;IACtE,uEAAuE;IACvE,OACE;IACE,qDAAqD;IACrD,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,EACd,CAAA;AACH,CAAC"}
package/dist/Uuid6.d.ts DELETED
@@ -1,27 +0,0 @@
1
- import * as Effect from 'effect/Effect';
2
- import { GetRandomValues } from './GetRandomValues.js';
3
- import { Layer, Schema } from 'effect';
4
- import { DateTimes } from './DateTimes.js';
5
- export declare const Uuid6: Schema.brand<typeof Schema.UUID, "@typed/id/UUID6">;
6
- export type Uuid6 = Schema.Schema.Type<typeof Uuid6>;
7
- export declare const isUuid6: (value: string) => value is Uuid6;
8
- export type Uuid6Seed = {
9
- readonly msecs: number;
10
- readonly nsecs: number;
11
- readonly clockSeq: number;
12
- readonly nodeId: Uint8Array;
13
- };
14
- declare const Uuid6State_base: import("effect/Context").TagClass<Uuid6State, "Uuid6State", {
15
- readonly next: Effect.Effect<Uuid6Seed>;
16
- }> & Effect.Tag.Proxy<Uuid6State, {
17
- readonly next: Effect.Effect<Uuid6Seed>;
18
- }> & {
19
- use: <X>(body: (_: {
20
- readonly next: Effect.Effect<Uuid6Seed>;
21
- }) => X) => [X] extends [Effect.Effect<infer A, infer E, infer R>] ? Effect.Effect<A, E, R | Uuid6State> : [X] extends [PromiseLike<infer A_1>] ? Effect.Effect<A_1, import("effect/Cause").UnknownException, Uuid6State> : Effect.Effect<X, never, Uuid6State>;
22
- };
23
- export declare class Uuid6State extends Uuid6State_base {
24
- static Default: Layer.Layer<Uuid6State, never, GetRandomValues | DateTimes>;
25
- }
26
- export declare const makeUuid6: Effect.Effect<Uuid6, never, Uuid6State>;
27
- export {};
package/dist/Uuid6.js DELETED
@@ -1,104 +0,0 @@
1
- import * as Effect from 'effect/Effect';
2
- import { GetRandomValues } from './GetRandomValues.js';
3
- import { Layer, Schema } from 'effect';
4
- import { DateTimes } from './DateTimes.js';
5
- import { uuidStringify } from './UuidStringify.js';
6
- export const Uuid6 = Schema.UUID.pipe(Schema.brand('@typed/id/UUID6'));
7
- export const isUuid6 = Schema.is(Uuid6);
8
- export class Uuid6State extends Effect.Tag('Uuid6State')() {
9
- static Default = Layer.effect(this, Effect.gen(function* () {
10
- const { now } = yield* DateTimes;
11
- const getRandomValues = yield* GetRandomValues;
12
- const state = {
13
- msecs: Number.NEGATIVE_INFINITY,
14
- nsecs: 0,
15
- clockSeq: -1,
16
- nodeId: undefined,
17
- };
18
- function updateState(currentTime, randomBytes) {
19
- if (currentTime === state.msecs) {
20
- // Same msec-interval = simulate higher clock resolution by bumping `nsecs`
21
- state.nsecs++;
22
- // Check for `nsecs` overflow (nsecs is capped at 10K intervals / msec)
23
- if (state.nsecs >= 10000) {
24
- state.nodeId = undefined;
25
- state.nsecs = 0;
26
- }
27
- }
28
- else if (currentTime > state.msecs) {
29
- // Reset nsec counter when clock advances to a new msec interval
30
- state.nsecs = 0;
31
- }
32
- else if (currentTime < state.msecs) {
33
- // Handle clock regression
34
- state.nodeId = undefined;
35
- }
36
- // Init node and clock sequence if needed
37
- if (!state.nodeId) {
38
- state.nodeId = randomBytes.slice(10, 16);
39
- // Set multicast bit
40
- state.nodeId[0] |= 0x01;
41
- // Clock sequence must be randomized
42
- state.clockSeq = ((randomBytes[8] << 8) | randomBytes[9]) & 0x3fff;
43
- }
44
- state.msecs = currentTime;
45
- return {
46
- msecs: state.msecs,
47
- nsecs: state.nsecs,
48
- clockSeq: state.clockSeq,
49
- nodeId: state.nodeId,
50
- };
51
- }
52
- return {
53
- next: Effect.gen(function* () {
54
- const timestamp = yield* now;
55
- const randomBytes = yield* getRandomValues(16);
56
- return updateState(timestamp, randomBytes);
57
- }),
58
- };
59
- }));
60
- }
61
- export const makeUuid6 = Effect.map(Uuid6State.next, uuid6FromSeed);
62
- function uuid6FromSeed({ msecs, nsecs, clockSeq, nodeId }) {
63
- // First generate the fields as they would be in a v1 UUID
64
- const result = new Uint8Array(16);
65
- // Offset to Gregorian epoch
66
- msecs += 12219292800000;
67
- // `time_low`
68
- const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
69
- const time_low_bytes = new Uint8Array([
70
- (tl >>> 24) & 0xff,
71
- (tl >>> 16) & 0xff,
72
- (tl >>> 8) & 0xff,
73
- tl & 0xff,
74
- ]);
75
- // `time_mid` and `time_high`
76
- const tmh = ((msecs / 0x100000000) * 10000) & 0xfffffff;
77
- const time_mid_high_bytes = new Uint8Array([
78
- (tmh >>> 8) & 0xff,
79
- tmh & 0xff,
80
- ((tmh >>> 24) & 0xf) | 0x10, // include version 1
81
- (tmh >>> 16) & 0xff,
82
- ]);
83
- result[0] = ((time_mid_high_bytes[2] & 0x0f) << 4) | ((time_mid_high_bytes[3] >> 4) & 0x0f);
84
- result[1] = ((time_mid_high_bytes[3] & 0x0f) << 4) | ((time_mid_high_bytes[0] & 0xf0) >> 4);
85
- result[2] = ((time_mid_high_bytes[0] & 0x0f) << 4) | ((time_mid_high_bytes[1] & 0xf0) >> 4);
86
- result[3] = ((time_mid_high_bytes[1] & 0x0f) << 4) | ((time_low_bytes[0] & 0xf0) >> 4);
87
- result[4] = ((time_low_bytes[0] & 0x0f) << 4) | ((time_low_bytes[1] & 0xf0) >> 4);
88
- result[5] = ((time_low_bytes[1] & 0x0f) << 4) | ((time_low_bytes[2] & 0xf0) >> 4);
89
- result[6] = 0x60 | (time_low_bytes[2] & 0x0f);
90
- result[7] = time_low_bytes[3];
91
- // clock_seq_hi_and_reserved
92
- result[8] = (clockSeq >>> 8) | 0x80; // variant bits
93
- // clock_seq_low
94
- result[9] = clockSeq & 0xff;
95
- // node
96
- result[10] = nodeId[0];
97
- result[11] = nodeId[1];
98
- result[12] = nodeId[2];
99
- result[13] = nodeId[3];
100
- result[14] = nodeId[4];
101
- result[15] = nodeId[5];
102
- return uuidStringify(result);
103
- }
104
- //# sourceMappingURL=Uuid6.js.map
package/dist/Uuid6.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Uuid6.js","sourceRoot":"","sources":["../src/Uuid6.ts"],"names":[],"mappings":"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"}