@dungarees/id-generator 0.11.4

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/fake.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import type { IdGeneratorBackend } from './type.ts';
2
+ export type FakeIdGeneratorBackend = {
3
+ backend: IdGeneratorBackend;
4
+ uuidRequests: string[];
5
+ };
6
+ export declare const createFakeIdGeneratorBackend: () => FakeIdGeneratorBackend;
package/fake.js ADDED
@@ -0,0 +1,15 @@
1
+ // Numbered rather than random, so a test can name the id it expects instead of reading it back out
2
+ // of the subject.
3
+ export const createFakeIdGeneratorBackend = () => {
4
+ const uuidRequests = [];
5
+ return {
6
+ backend: {
7
+ generateUuid: () => {
8
+ const generated = `fake-uuid-${uuidRequests.length + 1}`;
9
+ uuidRequests.push(generated);
10
+ return generated;
11
+ },
12
+ },
13
+ uuidRequests,
14
+ };
15
+ };
package/package.json ADDED
@@ -0,0 +1,450 @@
1
+ {
2
+ "name": "@dungarees/id-generator",
3
+ "engines": {
4
+ "node": ">=25.0.0"
5
+ },
6
+ "scripts": {
7
+ "type-check": "tsc --noEmit"
8
+ },
9
+ "type": "module",
10
+ "dependencies": {
11
+ "uuidv7": "^1.2.1"
12
+ },
13
+ "devDependencies": {
14
+ "typescript": "^5.9.3",
15
+ "vitest": "^3.0.2"
16
+ },
17
+ "author": "info@productkind.com",
18
+ "license": "MIT",
19
+ "version": "0.11.4",
20
+ "exports": {
21
+ "./fake.ts": {
22
+ "import": "./fake.js",
23
+ "types": "./fake.d.ts"
24
+ },
25
+ "./node_modules/typescript/lib/lib.d.ts": {
26
+ "import": "./node_modules/typescript/lib/lib.d.js",
27
+ "types": "./node_modules/typescript/lib/lib.d.d.ts"
28
+ },
29
+ "./node_modules/typescript/lib/lib.decorators.d.ts": {
30
+ "import": "./node_modules/typescript/lib/lib.decorators.d.js",
31
+ "types": "./node_modules/typescript/lib/lib.decorators.d.d.ts"
32
+ },
33
+ "./node_modules/typescript/lib/lib.decorators.legacy.d.ts": {
34
+ "import": "./node_modules/typescript/lib/lib.decorators.legacy.d.js",
35
+ "types": "./node_modules/typescript/lib/lib.decorators.legacy.d.d.ts"
36
+ },
37
+ "./node_modules/typescript/lib/lib.dom.asynciterable.d.ts": {
38
+ "import": "./node_modules/typescript/lib/lib.dom.asynciterable.d.js",
39
+ "types": "./node_modules/typescript/lib/lib.dom.asynciterable.d.d.ts"
40
+ },
41
+ "./node_modules/typescript/lib/lib.dom.d.ts": {
42
+ "import": "./node_modules/typescript/lib/lib.dom.d.js",
43
+ "types": "./node_modules/typescript/lib/lib.dom.d.d.ts"
44
+ },
45
+ "./node_modules/typescript/lib/lib.dom.iterable.d.ts": {
46
+ "import": "./node_modules/typescript/lib/lib.dom.iterable.d.js",
47
+ "types": "./node_modules/typescript/lib/lib.dom.iterable.d.d.ts"
48
+ },
49
+ "./node_modules/typescript/lib/lib.es2015.collection.d.ts": {
50
+ "import": "./node_modules/typescript/lib/lib.es2015.collection.d.js",
51
+ "types": "./node_modules/typescript/lib/lib.es2015.collection.d.d.ts"
52
+ },
53
+ "./node_modules/typescript/lib/lib.es2015.core.d.ts": {
54
+ "import": "./node_modules/typescript/lib/lib.es2015.core.d.js",
55
+ "types": "./node_modules/typescript/lib/lib.es2015.core.d.d.ts"
56
+ },
57
+ "./node_modules/typescript/lib/lib.es2015.d.ts": {
58
+ "import": "./node_modules/typescript/lib/lib.es2015.d.js",
59
+ "types": "./node_modules/typescript/lib/lib.es2015.d.d.ts"
60
+ },
61
+ "./node_modules/typescript/lib/lib.es2015.generator.d.ts": {
62
+ "import": "./node_modules/typescript/lib/lib.es2015.generator.d.js",
63
+ "types": "./node_modules/typescript/lib/lib.es2015.generator.d.d.ts"
64
+ },
65
+ "./node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
66
+ "import": "./node_modules/typescript/lib/lib.es2015.iterable.d.js",
67
+ "types": "./node_modules/typescript/lib/lib.es2015.iterable.d.d.ts"
68
+ },
69
+ "./node_modules/typescript/lib/lib.es2015.promise.d.ts": {
70
+ "import": "./node_modules/typescript/lib/lib.es2015.promise.d.js",
71
+ "types": "./node_modules/typescript/lib/lib.es2015.promise.d.d.ts"
72
+ },
73
+ "./node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
74
+ "import": "./node_modules/typescript/lib/lib.es2015.proxy.d.js",
75
+ "types": "./node_modules/typescript/lib/lib.es2015.proxy.d.d.ts"
76
+ },
77
+ "./node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
78
+ "import": "./node_modules/typescript/lib/lib.es2015.reflect.d.js",
79
+ "types": "./node_modules/typescript/lib/lib.es2015.reflect.d.d.ts"
80
+ },
81
+ "./node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
82
+ "import": "./node_modules/typescript/lib/lib.es2015.symbol.d.js",
83
+ "types": "./node_modules/typescript/lib/lib.es2015.symbol.d.d.ts"
84
+ },
85
+ "./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
86
+ "import": "./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.js",
87
+ "types": "./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.d.ts"
88
+ },
89
+ "./node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
90
+ "import": "./node_modules/typescript/lib/lib.es2016.array.include.d.js",
91
+ "types": "./node_modules/typescript/lib/lib.es2016.array.include.d.d.ts"
92
+ },
93
+ "./node_modules/typescript/lib/lib.es2016.d.ts": {
94
+ "import": "./node_modules/typescript/lib/lib.es2016.d.js",
95
+ "types": "./node_modules/typescript/lib/lib.es2016.d.d.ts"
96
+ },
97
+ "./node_modules/typescript/lib/lib.es2016.full.d.ts": {
98
+ "import": "./node_modules/typescript/lib/lib.es2016.full.d.js",
99
+ "types": "./node_modules/typescript/lib/lib.es2016.full.d.d.ts"
100
+ },
101
+ "./node_modules/typescript/lib/lib.es2016.intl.d.ts": {
102
+ "import": "./node_modules/typescript/lib/lib.es2016.intl.d.js",
103
+ "types": "./node_modules/typescript/lib/lib.es2016.intl.d.d.ts"
104
+ },
105
+ "./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts": {
106
+ "import": "./node_modules/typescript/lib/lib.es2017.arraybuffer.d.js",
107
+ "types": "./node_modules/typescript/lib/lib.es2017.arraybuffer.d.d.ts"
108
+ },
109
+ "./node_modules/typescript/lib/lib.es2017.d.ts": {
110
+ "import": "./node_modules/typescript/lib/lib.es2017.d.js",
111
+ "types": "./node_modules/typescript/lib/lib.es2017.d.d.ts"
112
+ },
113
+ "./node_modules/typescript/lib/lib.es2017.date.d.ts": {
114
+ "import": "./node_modules/typescript/lib/lib.es2017.date.d.js",
115
+ "types": "./node_modules/typescript/lib/lib.es2017.date.d.d.ts"
116
+ },
117
+ "./node_modules/typescript/lib/lib.es2017.full.d.ts": {
118
+ "import": "./node_modules/typescript/lib/lib.es2017.full.d.js",
119
+ "types": "./node_modules/typescript/lib/lib.es2017.full.d.d.ts"
120
+ },
121
+ "./node_modules/typescript/lib/lib.es2017.intl.d.ts": {
122
+ "import": "./node_modules/typescript/lib/lib.es2017.intl.d.js",
123
+ "types": "./node_modules/typescript/lib/lib.es2017.intl.d.d.ts"
124
+ },
125
+ "./node_modules/typescript/lib/lib.es2017.object.d.ts": {
126
+ "import": "./node_modules/typescript/lib/lib.es2017.object.d.js",
127
+ "types": "./node_modules/typescript/lib/lib.es2017.object.d.d.ts"
128
+ },
129
+ "./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
130
+ "import": "./node_modules/typescript/lib/lib.es2017.sharedmemory.d.js",
131
+ "types": "./node_modules/typescript/lib/lib.es2017.sharedmemory.d.d.ts"
132
+ },
133
+ "./node_modules/typescript/lib/lib.es2017.string.d.ts": {
134
+ "import": "./node_modules/typescript/lib/lib.es2017.string.d.js",
135
+ "types": "./node_modules/typescript/lib/lib.es2017.string.d.d.ts"
136
+ },
137
+ "./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
138
+ "import": "./node_modules/typescript/lib/lib.es2017.typedarrays.d.js",
139
+ "types": "./node_modules/typescript/lib/lib.es2017.typedarrays.d.d.ts"
140
+ },
141
+ "./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
142
+ "import": "./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.js",
143
+ "types": "./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.d.ts"
144
+ },
145
+ "./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
146
+ "import": "./node_modules/typescript/lib/lib.es2018.asynciterable.d.js",
147
+ "types": "./node_modules/typescript/lib/lib.es2018.asynciterable.d.d.ts"
148
+ },
149
+ "./node_modules/typescript/lib/lib.es2018.d.ts": {
150
+ "import": "./node_modules/typescript/lib/lib.es2018.d.js",
151
+ "types": "./node_modules/typescript/lib/lib.es2018.d.d.ts"
152
+ },
153
+ "./node_modules/typescript/lib/lib.es2018.full.d.ts": {
154
+ "import": "./node_modules/typescript/lib/lib.es2018.full.d.js",
155
+ "types": "./node_modules/typescript/lib/lib.es2018.full.d.d.ts"
156
+ },
157
+ "./node_modules/typescript/lib/lib.es2018.intl.d.ts": {
158
+ "import": "./node_modules/typescript/lib/lib.es2018.intl.d.js",
159
+ "types": "./node_modules/typescript/lib/lib.es2018.intl.d.d.ts"
160
+ },
161
+ "./node_modules/typescript/lib/lib.es2018.promise.d.ts": {
162
+ "import": "./node_modules/typescript/lib/lib.es2018.promise.d.js",
163
+ "types": "./node_modules/typescript/lib/lib.es2018.promise.d.d.ts"
164
+ },
165
+ "./node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
166
+ "import": "./node_modules/typescript/lib/lib.es2018.regexp.d.js",
167
+ "types": "./node_modules/typescript/lib/lib.es2018.regexp.d.d.ts"
168
+ },
169
+ "./node_modules/typescript/lib/lib.es2019.array.d.ts": {
170
+ "import": "./node_modules/typescript/lib/lib.es2019.array.d.js",
171
+ "types": "./node_modules/typescript/lib/lib.es2019.array.d.d.ts"
172
+ },
173
+ "./node_modules/typescript/lib/lib.es2019.d.ts": {
174
+ "import": "./node_modules/typescript/lib/lib.es2019.d.js",
175
+ "types": "./node_modules/typescript/lib/lib.es2019.d.d.ts"
176
+ },
177
+ "./node_modules/typescript/lib/lib.es2019.full.d.ts": {
178
+ "import": "./node_modules/typescript/lib/lib.es2019.full.d.js",
179
+ "types": "./node_modules/typescript/lib/lib.es2019.full.d.d.ts"
180
+ },
181
+ "./node_modules/typescript/lib/lib.es2019.intl.d.ts": {
182
+ "import": "./node_modules/typescript/lib/lib.es2019.intl.d.js",
183
+ "types": "./node_modules/typescript/lib/lib.es2019.intl.d.d.ts"
184
+ },
185
+ "./node_modules/typescript/lib/lib.es2019.object.d.ts": {
186
+ "import": "./node_modules/typescript/lib/lib.es2019.object.d.js",
187
+ "types": "./node_modules/typescript/lib/lib.es2019.object.d.d.ts"
188
+ },
189
+ "./node_modules/typescript/lib/lib.es2019.string.d.ts": {
190
+ "import": "./node_modules/typescript/lib/lib.es2019.string.d.js",
191
+ "types": "./node_modules/typescript/lib/lib.es2019.string.d.d.ts"
192
+ },
193
+ "./node_modules/typescript/lib/lib.es2019.symbol.d.ts": {
194
+ "import": "./node_modules/typescript/lib/lib.es2019.symbol.d.js",
195
+ "types": "./node_modules/typescript/lib/lib.es2019.symbol.d.d.ts"
196
+ },
197
+ "./node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
198
+ "import": "./node_modules/typescript/lib/lib.es2020.bigint.d.js",
199
+ "types": "./node_modules/typescript/lib/lib.es2020.bigint.d.d.ts"
200
+ },
201
+ "./node_modules/typescript/lib/lib.es2020.d.ts": {
202
+ "import": "./node_modules/typescript/lib/lib.es2020.d.js",
203
+ "types": "./node_modules/typescript/lib/lib.es2020.d.d.ts"
204
+ },
205
+ "./node_modules/typescript/lib/lib.es2020.date.d.ts": {
206
+ "import": "./node_modules/typescript/lib/lib.es2020.date.d.js",
207
+ "types": "./node_modules/typescript/lib/lib.es2020.date.d.d.ts"
208
+ },
209
+ "./node_modules/typescript/lib/lib.es2020.full.d.ts": {
210
+ "import": "./node_modules/typescript/lib/lib.es2020.full.d.js",
211
+ "types": "./node_modules/typescript/lib/lib.es2020.full.d.d.ts"
212
+ },
213
+ "./node_modules/typescript/lib/lib.es2020.intl.d.ts": {
214
+ "import": "./node_modules/typescript/lib/lib.es2020.intl.d.js",
215
+ "types": "./node_modules/typescript/lib/lib.es2020.intl.d.d.ts"
216
+ },
217
+ "./node_modules/typescript/lib/lib.es2020.number.d.ts": {
218
+ "import": "./node_modules/typescript/lib/lib.es2020.number.d.js",
219
+ "types": "./node_modules/typescript/lib/lib.es2020.number.d.d.ts"
220
+ },
221
+ "./node_modules/typescript/lib/lib.es2020.promise.d.ts": {
222
+ "import": "./node_modules/typescript/lib/lib.es2020.promise.d.js",
223
+ "types": "./node_modules/typescript/lib/lib.es2020.promise.d.d.ts"
224
+ },
225
+ "./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts": {
226
+ "import": "./node_modules/typescript/lib/lib.es2020.sharedmemory.d.js",
227
+ "types": "./node_modules/typescript/lib/lib.es2020.sharedmemory.d.d.ts"
228
+ },
229
+ "./node_modules/typescript/lib/lib.es2020.string.d.ts": {
230
+ "import": "./node_modules/typescript/lib/lib.es2020.string.d.js",
231
+ "types": "./node_modules/typescript/lib/lib.es2020.string.d.d.ts"
232
+ },
233
+ "./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts": {
234
+ "import": "./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.js",
235
+ "types": "./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.d.ts"
236
+ },
237
+ "./node_modules/typescript/lib/lib.es2021.d.ts": {
238
+ "import": "./node_modules/typescript/lib/lib.es2021.d.js",
239
+ "types": "./node_modules/typescript/lib/lib.es2021.d.d.ts"
240
+ },
241
+ "./node_modules/typescript/lib/lib.es2021.full.d.ts": {
242
+ "import": "./node_modules/typescript/lib/lib.es2021.full.d.js",
243
+ "types": "./node_modules/typescript/lib/lib.es2021.full.d.d.ts"
244
+ },
245
+ "./node_modules/typescript/lib/lib.es2021.intl.d.ts": {
246
+ "import": "./node_modules/typescript/lib/lib.es2021.intl.d.js",
247
+ "types": "./node_modules/typescript/lib/lib.es2021.intl.d.d.ts"
248
+ },
249
+ "./node_modules/typescript/lib/lib.es2021.promise.d.ts": {
250
+ "import": "./node_modules/typescript/lib/lib.es2021.promise.d.js",
251
+ "types": "./node_modules/typescript/lib/lib.es2021.promise.d.d.ts"
252
+ },
253
+ "./node_modules/typescript/lib/lib.es2021.string.d.ts": {
254
+ "import": "./node_modules/typescript/lib/lib.es2021.string.d.js",
255
+ "types": "./node_modules/typescript/lib/lib.es2021.string.d.d.ts"
256
+ },
257
+ "./node_modules/typescript/lib/lib.es2021.weakref.d.ts": {
258
+ "import": "./node_modules/typescript/lib/lib.es2021.weakref.d.js",
259
+ "types": "./node_modules/typescript/lib/lib.es2021.weakref.d.d.ts"
260
+ },
261
+ "./node_modules/typescript/lib/lib.es2022.array.d.ts": {
262
+ "import": "./node_modules/typescript/lib/lib.es2022.array.d.js",
263
+ "types": "./node_modules/typescript/lib/lib.es2022.array.d.d.ts"
264
+ },
265
+ "./node_modules/typescript/lib/lib.es2022.d.ts": {
266
+ "import": "./node_modules/typescript/lib/lib.es2022.d.js",
267
+ "types": "./node_modules/typescript/lib/lib.es2022.d.d.ts"
268
+ },
269
+ "./node_modules/typescript/lib/lib.es2022.error.d.ts": {
270
+ "import": "./node_modules/typescript/lib/lib.es2022.error.d.js",
271
+ "types": "./node_modules/typescript/lib/lib.es2022.error.d.d.ts"
272
+ },
273
+ "./node_modules/typescript/lib/lib.es2022.full.d.ts": {
274
+ "import": "./node_modules/typescript/lib/lib.es2022.full.d.js",
275
+ "types": "./node_modules/typescript/lib/lib.es2022.full.d.d.ts"
276
+ },
277
+ "./node_modules/typescript/lib/lib.es2022.intl.d.ts": {
278
+ "import": "./node_modules/typescript/lib/lib.es2022.intl.d.js",
279
+ "types": "./node_modules/typescript/lib/lib.es2022.intl.d.d.ts"
280
+ },
281
+ "./node_modules/typescript/lib/lib.es2022.object.d.ts": {
282
+ "import": "./node_modules/typescript/lib/lib.es2022.object.d.js",
283
+ "types": "./node_modules/typescript/lib/lib.es2022.object.d.d.ts"
284
+ },
285
+ "./node_modules/typescript/lib/lib.es2022.regexp.d.ts": {
286
+ "import": "./node_modules/typescript/lib/lib.es2022.regexp.d.js",
287
+ "types": "./node_modules/typescript/lib/lib.es2022.regexp.d.d.ts"
288
+ },
289
+ "./node_modules/typescript/lib/lib.es2022.string.d.ts": {
290
+ "import": "./node_modules/typescript/lib/lib.es2022.string.d.js",
291
+ "types": "./node_modules/typescript/lib/lib.es2022.string.d.d.ts"
292
+ },
293
+ "./node_modules/typescript/lib/lib.es2023.array.d.ts": {
294
+ "import": "./node_modules/typescript/lib/lib.es2023.array.d.js",
295
+ "types": "./node_modules/typescript/lib/lib.es2023.array.d.d.ts"
296
+ },
297
+ "./node_modules/typescript/lib/lib.es2023.collection.d.ts": {
298
+ "import": "./node_modules/typescript/lib/lib.es2023.collection.d.js",
299
+ "types": "./node_modules/typescript/lib/lib.es2023.collection.d.d.ts"
300
+ },
301
+ "./node_modules/typescript/lib/lib.es2023.d.ts": {
302
+ "import": "./node_modules/typescript/lib/lib.es2023.d.js",
303
+ "types": "./node_modules/typescript/lib/lib.es2023.d.d.ts"
304
+ },
305
+ "./node_modules/typescript/lib/lib.es2023.full.d.ts": {
306
+ "import": "./node_modules/typescript/lib/lib.es2023.full.d.js",
307
+ "types": "./node_modules/typescript/lib/lib.es2023.full.d.d.ts"
308
+ },
309
+ "./node_modules/typescript/lib/lib.es2023.intl.d.ts": {
310
+ "import": "./node_modules/typescript/lib/lib.es2023.intl.d.js",
311
+ "types": "./node_modules/typescript/lib/lib.es2023.intl.d.d.ts"
312
+ },
313
+ "./node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts": {
314
+ "import": "./node_modules/typescript/lib/lib.es2024.arraybuffer.d.js",
315
+ "types": "./node_modules/typescript/lib/lib.es2024.arraybuffer.d.d.ts"
316
+ },
317
+ "./node_modules/typescript/lib/lib.es2024.collection.d.ts": {
318
+ "import": "./node_modules/typescript/lib/lib.es2024.collection.d.js",
319
+ "types": "./node_modules/typescript/lib/lib.es2024.collection.d.d.ts"
320
+ },
321
+ "./node_modules/typescript/lib/lib.es2024.d.ts": {
322
+ "import": "./node_modules/typescript/lib/lib.es2024.d.js",
323
+ "types": "./node_modules/typescript/lib/lib.es2024.d.d.ts"
324
+ },
325
+ "./node_modules/typescript/lib/lib.es2024.full.d.ts": {
326
+ "import": "./node_modules/typescript/lib/lib.es2024.full.d.js",
327
+ "types": "./node_modules/typescript/lib/lib.es2024.full.d.d.ts"
328
+ },
329
+ "./node_modules/typescript/lib/lib.es2024.object.d.ts": {
330
+ "import": "./node_modules/typescript/lib/lib.es2024.object.d.js",
331
+ "types": "./node_modules/typescript/lib/lib.es2024.object.d.d.ts"
332
+ },
333
+ "./node_modules/typescript/lib/lib.es2024.promise.d.ts": {
334
+ "import": "./node_modules/typescript/lib/lib.es2024.promise.d.js",
335
+ "types": "./node_modules/typescript/lib/lib.es2024.promise.d.d.ts"
336
+ },
337
+ "./node_modules/typescript/lib/lib.es2024.regexp.d.ts": {
338
+ "import": "./node_modules/typescript/lib/lib.es2024.regexp.d.js",
339
+ "types": "./node_modules/typescript/lib/lib.es2024.regexp.d.d.ts"
340
+ },
341
+ "./node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts": {
342
+ "import": "./node_modules/typescript/lib/lib.es2024.sharedmemory.d.js",
343
+ "types": "./node_modules/typescript/lib/lib.es2024.sharedmemory.d.d.ts"
344
+ },
345
+ "./node_modules/typescript/lib/lib.es2024.string.d.ts": {
346
+ "import": "./node_modules/typescript/lib/lib.es2024.string.d.js",
347
+ "types": "./node_modules/typescript/lib/lib.es2024.string.d.d.ts"
348
+ },
349
+ "./node_modules/typescript/lib/lib.es5.d.ts": {
350
+ "import": "./node_modules/typescript/lib/lib.es5.d.js",
351
+ "types": "./node_modules/typescript/lib/lib.es5.d.d.ts"
352
+ },
353
+ "./node_modules/typescript/lib/lib.es6.d.ts": {
354
+ "import": "./node_modules/typescript/lib/lib.es6.d.js",
355
+ "types": "./node_modules/typescript/lib/lib.es6.d.d.ts"
356
+ },
357
+ "./node_modules/typescript/lib/lib.esnext.array.d.ts": {
358
+ "import": "./node_modules/typescript/lib/lib.esnext.array.d.js",
359
+ "types": "./node_modules/typescript/lib/lib.esnext.array.d.d.ts"
360
+ },
361
+ "./node_modules/typescript/lib/lib.esnext.collection.d.ts": {
362
+ "import": "./node_modules/typescript/lib/lib.esnext.collection.d.js",
363
+ "types": "./node_modules/typescript/lib/lib.esnext.collection.d.d.ts"
364
+ },
365
+ "./node_modules/typescript/lib/lib.esnext.d.ts": {
366
+ "import": "./node_modules/typescript/lib/lib.esnext.d.js",
367
+ "types": "./node_modules/typescript/lib/lib.esnext.d.d.ts"
368
+ },
369
+ "./node_modules/typescript/lib/lib.esnext.decorators.d.ts": {
370
+ "import": "./node_modules/typescript/lib/lib.esnext.decorators.d.js",
371
+ "types": "./node_modules/typescript/lib/lib.esnext.decorators.d.d.ts"
372
+ },
373
+ "./node_modules/typescript/lib/lib.esnext.disposable.d.ts": {
374
+ "import": "./node_modules/typescript/lib/lib.esnext.disposable.d.js",
375
+ "types": "./node_modules/typescript/lib/lib.esnext.disposable.d.d.ts"
376
+ },
377
+ "./node_modules/typescript/lib/lib.esnext.error.d.ts": {
378
+ "import": "./node_modules/typescript/lib/lib.esnext.error.d.js",
379
+ "types": "./node_modules/typescript/lib/lib.esnext.error.d.d.ts"
380
+ },
381
+ "./node_modules/typescript/lib/lib.esnext.float16.d.ts": {
382
+ "import": "./node_modules/typescript/lib/lib.esnext.float16.d.js",
383
+ "types": "./node_modules/typescript/lib/lib.esnext.float16.d.d.ts"
384
+ },
385
+ "./node_modules/typescript/lib/lib.esnext.full.d.ts": {
386
+ "import": "./node_modules/typescript/lib/lib.esnext.full.d.js",
387
+ "types": "./node_modules/typescript/lib/lib.esnext.full.d.d.ts"
388
+ },
389
+ "./node_modules/typescript/lib/lib.esnext.intl.d.ts": {
390
+ "import": "./node_modules/typescript/lib/lib.esnext.intl.d.js",
391
+ "types": "./node_modules/typescript/lib/lib.esnext.intl.d.d.ts"
392
+ },
393
+ "./node_modules/typescript/lib/lib.esnext.iterator.d.ts": {
394
+ "import": "./node_modules/typescript/lib/lib.esnext.iterator.d.js",
395
+ "types": "./node_modules/typescript/lib/lib.esnext.iterator.d.d.ts"
396
+ },
397
+ "./node_modules/typescript/lib/lib.esnext.promise.d.ts": {
398
+ "import": "./node_modules/typescript/lib/lib.esnext.promise.d.js",
399
+ "types": "./node_modules/typescript/lib/lib.esnext.promise.d.d.ts"
400
+ },
401
+ "./node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts": {
402
+ "import": "./node_modules/typescript/lib/lib.esnext.sharedmemory.d.js",
403
+ "types": "./node_modules/typescript/lib/lib.esnext.sharedmemory.d.d.ts"
404
+ },
405
+ "./node_modules/typescript/lib/lib.scripthost.d.ts": {
406
+ "import": "./node_modules/typescript/lib/lib.scripthost.d.js",
407
+ "types": "./node_modules/typescript/lib/lib.scripthost.d.d.ts"
408
+ },
409
+ "./node_modules/typescript/lib/lib.webworker.asynciterable.d.ts": {
410
+ "import": "./node_modules/typescript/lib/lib.webworker.asynciterable.d.js",
411
+ "types": "./node_modules/typescript/lib/lib.webworker.asynciterable.d.d.ts"
412
+ },
413
+ "./node_modules/typescript/lib/lib.webworker.d.ts": {
414
+ "import": "./node_modules/typescript/lib/lib.webworker.d.js",
415
+ "types": "./node_modules/typescript/lib/lib.webworker.d.d.ts"
416
+ },
417
+ "./node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
418
+ "import": "./node_modules/typescript/lib/lib.webworker.importscripts.d.js",
419
+ "types": "./node_modules/typescript/lib/lib.webworker.importscripts.d.d.ts"
420
+ },
421
+ "./node_modules/typescript/lib/lib.webworker.iterable.d.ts": {
422
+ "import": "./node_modules/typescript/lib/lib.webworker.iterable.d.js",
423
+ "types": "./node_modules/typescript/lib/lib.webworker.iterable.d.d.ts"
424
+ },
425
+ "./node_modules/typescript/lib/tsserverlibrary.d.ts": {
426
+ "import": "./node_modules/typescript/lib/tsserverlibrary.d.js",
427
+ "types": "./node_modules/typescript/lib/tsserverlibrary.d.d.ts"
428
+ },
429
+ "./node_modules/typescript/lib/typescript.d.ts": {
430
+ "import": "./node_modules/typescript/lib/typescript.d.js",
431
+ "types": "./node_modules/typescript/lib/typescript.d.d.ts"
432
+ },
433
+ "./service.test.ts": {
434
+ "import": "./service.test.js",
435
+ "types": "./service.test.d.ts"
436
+ },
437
+ "./service.ts": {
438
+ "import": "./service.js",
439
+ "types": "./service.d.ts"
440
+ },
441
+ "./type.ts": {
442
+ "import": "./type.js",
443
+ "types": "./type.d.ts"
444
+ },
445
+ "./uuidv7.ts": {
446
+ "import": "./uuidv7.js",
447
+ "types": "./uuidv7.d.ts"
448
+ }
449
+ }
450
+ }
package/service.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import type { IdGenerator, IdGeneratorBackend } from './type.ts';
2
+ export declare const createIdGeneratorService: (backend: IdGeneratorBackend) => IdGenerator;
package/service.js ADDED
@@ -0,0 +1,3 @@
1
+ export const createIdGeneratorService = (backend) => ({
2
+ generateUuid: () => backend.generateUuid(),
3
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,34 @@
1
+ import { createFakeIdGeneratorBackend } from './fake.js';
2
+ import { createIdGeneratorService } from './service.js';
3
+ import { createUuidv7Backend } from './uuidv7.js';
4
+ import { expect, test } from 'vitest';
5
+ const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
6
+ test('generateUuid returns a version 7 uuid', () => {
7
+ const idGenerator = createIdGeneratorService(createUuidv7Backend());
8
+ expect(idGenerator.generateUuid()).toMatch(UUID_PATTERN);
9
+ });
10
+ test('generateUuid returns a different id every time', () => {
11
+ const idGenerator = createIdGeneratorService(createUuidv7Backend());
12
+ const ids = new Set(Array.from({ length: 100 }, () => idGenerator.generateUuid()));
13
+ expect(ids.size).toBe(100);
14
+ });
15
+ test('generateUuid returns ids that sort in the order they were created', () => {
16
+ const idGenerator = createIdGeneratorService(createUuidv7Backend());
17
+ const ids = Array.from({ length: 10 }, () => idGenerator.generateUuid());
18
+ expect([...ids].sort()).toEqual(ids);
19
+ });
20
+ test('the fake backend hands out predictable, numbered ids', () => {
21
+ const { backend } = createFakeIdGeneratorBackend();
22
+ const idGenerator = createIdGeneratorService(backend);
23
+ expect([idGenerator.generateUuid(), idGenerator.generateUuid()]).toEqual([
24
+ 'fake-uuid-1',
25
+ 'fake-uuid-2',
26
+ ]);
27
+ });
28
+ test('the fake backend records the ids it handed out', () => {
29
+ const { backend, uuidRequests } = createFakeIdGeneratorBackend();
30
+ const idGenerator = createIdGeneratorService(backend);
31
+ idGenerator.generateUuid();
32
+ idGenerator.generateUuid();
33
+ expect(uuidRequests).toEqual(['fake-uuid-1', 'fake-uuid-2']);
34
+ });
package/type.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export type IdGeneratorBackend = {
2
+ generateUuid: () => string;
3
+ };
4
+ export type IdGenerator = {
5
+ generateUuid: () => string;
6
+ };
package/type.js ADDED
@@ -0,0 +1 @@
1
+ export {};
package/uuidv7.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import type { IdGeneratorBackend } from './type.ts';
2
+ export declare const createUuidv7Backend: () => IdGeneratorBackend;
package/uuidv7.js ADDED
@@ -0,0 +1,4 @@
1
+ import { uuidv7 } from 'uuidv7';
2
+ export const createUuidv7Backend = () => ({
3
+ generateUuid: () => uuidv7(),
4
+ });