@simplysm/core-common 13.0.76 → 13.0.78

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 (126) hide show
  1. package/README.md +64 -21
  2. package/dist/extensions/arr-ext.d.ts +1 -1
  3. package/dist/extensions/arr-ext.d.ts.map +1 -1
  4. package/dist/extensions/arr-ext.helpers.d.ts +8 -0
  5. package/dist/extensions/arr-ext.helpers.d.ts.map +1 -1
  6. package/dist/extensions/arr-ext.helpers.js +65 -0
  7. package/dist/extensions/arr-ext.helpers.js.map +2 -2
  8. package/dist/extensions/arr-ext.js +16 -124
  9. package/dist/extensions/arr-ext.js.map +2 -2
  10. package/dist/extensions/arr-ext.types.d.ts +40 -32
  11. package/dist/extensions/arr-ext.types.d.ts.map +1 -1
  12. package/dist/extensions/map-ext.js.map +1 -1
  13. package/dist/extensions/set-ext.js.map +1 -1
  14. package/dist/features/event-emitter.d.ts +4 -4
  15. package/dist/features/event-emitter.d.ts.map +1 -1
  16. package/dist/features/event-emitter.js.map +1 -1
  17. package/dist/features/serial-queue.js +2 -2
  18. package/dist/features/serial-queue.js.map +1 -1
  19. package/dist/index.d.ts +13 -13
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +27 -13
  22. package/dist/index.js.map +1 -1
  23. package/dist/types/date-only.js +2 -2
  24. package/dist/types/date-only.js.map +1 -1
  25. package/dist/types/date-time.js +2 -2
  26. package/dist/types/date-time.js.map +1 -1
  27. package/dist/types/time.js +2 -2
  28. package/dist/types/time.js.map +1 -1
  29. package/dist/types/uuid.d.ts +2 -2
  30. package/dist/types/uuid.d.ts.map +1 -1
  31. package/dist/types/uuid.js +1 -1
  32. package/dist/types/uuid.js.map +1 -1
  33. package/dist/utils/bytes.d.ts +10 -10
  34. package/dist/utils/bytes.d.ts.map +1 -1
  35. package/dist/utils/bytes.js +10 -10
  36. package/dist/utils/bytes.js.map +1 -1
  37. package/dist/utils/date-format.d.ts +1 -1
  38. package/dist/utils/date-format.d.ts.map +1 -1
  39. package/dist/utils/date-format.js +2 -2
  40. package/dist/utils/date-format.js.map +1 -1
  41. package/dist/utils/error.d.ts +1 -1
  42. package/dist/utils/error.d.ts.map +1 -1
  43. package/dist/utils/error.js +2 -2
  44. package/dist/utils/error.js.map +1 -1
  45. package/dist/utils/json.d.ts +4 -2
  46. package/dist/utils/json.d.ts.map +1 -1
  47. package/dist/utils/json.js +9 -9
  48. package/dist/utils/json.js.map +1 -1
  49. package/dist/utils/num.d.ts +10 -10
  50. package/dist/utils/num.d.ts.map +1 -1
  51. package/dist/utils/num.js +11 -11
  52. package/dist/utils/num.js.map +1 -1
  53. package/dist/utils/obj.d.ts +40 -40
  54. package/dist/utils/obj.d.ts.map +1 -1
  55. package/dist/utils/obj.js +102 -99
  56. package/dist/utils/obj.js.map +1 -1
  57. package/dist/utils/path.d.ts +3 -3
  58. package/dist/utils/path.d.ts.map +1 -1
  59. package/dist/utils/path.js +6 -6
  60. package/dist/utils/path.js.map +1 -1
  61. package/dist/utils/primitive.d.ts +1 -1
  62. package/dist/utils/primitive.d.ts.map +1 -1
  63. package/dist/utils/primitive.js +2 -2
  64. package/dist/utils/primitive.js.map +1 -1
  65. package/dist/utils/str.d.ts +16 -16
  66. package/dist/utils/str.d.ts.map +1 -1
  67. package/dist/utils/str.js +16 -16
  68. package/dist/utils/str.js.map +1 -1
  69. package/dist/utils/transferable.d.ts +3 -3
  70. package/dist/utils/transferable.d.ts.map +1 -1
  71. package/dist/utils/transferable.js +10 -10
  72. package/dist/utils/transferable.js.map +1 -1
  73. package/dist/utils/wait.d.ts +2 -2
  74. package/dist/utils/wait.d.ts.map +1 -1
  75. package/dist/utils/wait.js +5 -5
  76. package/dist/utils/wait.js.map +1 -1
  77. package/dist/utils/xml.d.ts +2 -2
  78. package/dist/utils/xml.d.ts.map +1 -1
  79. package/dist/utils/xml.js +4 -4
  80. package/dist/utils/xml.js.map +1 -1
  81. package/dist/{zip/sd-zip.d.ts → utils/zip.d.ts} +1 -1
  82. package/dist/utils/zip.d.ts.map +1 -0
  83. package/dist/{zip/sd-zip.js → utils/zip.js} +1 -1
  84. package/dist/{zip/sd-zip.js.map → utils/zip.js.map} +1 -1
  85. package/package.json +1 -1
  86. package/src/extensions/arr-ext.helpers.ts +86 -0
  87. package/src/extensions/arr-ext.ts +22 -170
  88. package/src/extensions/arr-ext.types.ts +76 -48
  89. package/src/extensions/map-ext.ts +3 -3
  90. package/src/extensions/set-ext.ts +2 -2
  91. package/src/features/event-emitter.ts +6 -6
  92. package/src/features/serial-queue.ts +2 -2
  93. package/src/index.ts +16 -16
  94. package/src/types/date-only.ts +2 -2
  95. package/src/types/date-time.ts +2 -2
  96. package/src/types/time.ts +2 -2
  97. package/src/types/uuid.ts +2 -2
  98. package/src/utils/bytes.ts +15 -15
  99. package/src/utils/date-format.ts +1 -1
  100. package/src/utils/error.ts +1 -1
  101. package/src/utils/json.ts +9 -7
  102. package/src/utils/num.ts +15 -15
  103. package/src/utils/obj.ts +119 -116
  104. package/src/utils/path.ts +3 -3
  105. package/src/utils/primitive.ts +1 -1
  106. package/src/utils/str.ts +16 -16
  107. package/src/utils/transferable.ts +9 -9
  108. package/src/utils/wait.ts +3 -3
  109. package/src/utils/xml.ts +2 -2
  110. package/tests/extensions/array-extension.spec.ts +7 -5
  111. package/tests/types/uuid.spec.ts +4 -4
  112. package/tests/utils/bytes-utils.spec.ts +42 -49
  113. package/tests/utils/date-format.spec.ts +89 -88
  114. package/tests/utils/debounce-queue.spec.ts +3 -1
  115. package/tests/utils/json.spec.ts +61 -68
  116. package/tests/utils/number.spec.ts +41 -46
  117. package/tests/utils/object.spec.ts +120 -139
  118. package/tests/utils/path.spec.ts +19 -19
  119. package/tests/utils/primitive.spec.ts +12 -12
  120. package/tests/utils/string.spec.ts +66 -74
  121. package/tests/utils/transferable.spec.ts +55 -62
  122. package/tests/utils/wait.spec.ts +10 -10
  123. package/tests/utils/xml.spec.ts +25 -25
  124. package/dist/zip/sd-zip.d.ts.map +0 -1
  125. /package/src/{zip/sd-zip.ts → utils/zip.ts} +0 -0
  126. /package/tests/{zip/sd-zip.spec.ts → utils/zip.spec.ts} +0 -0
@@ -1,12 +1,5 @@
1
1
  import { describe, it, expect } from "vitest";
2
- import {
3
- transferableEncode as transferEncode,
4
- transferableDecode as transferDecode,
5
- DateTime,
6
- DateOnly,
7
- Time,
8
- Uuid,
9
- } from "@simplysm/core-common";
2
+ import { transfer, DateTime, DateOnly, Time, Uuid } from "@simplysm/core-common";
10
3
 
11
4
  describe("TransferableConvert", () => {
12
5
  //#region encode - Special types
@@ -14,7 +7,7 @@ describe("TransferableConvert", () => {
14
7
  describe("encode() - Special types", () => {
15
8
  it("Encodes DateTime", () => {
16
9
  const dt = new DateTime(2025, 1, 6, 15, 30, 45, 123);
17
- const { result } = transferEncode(dt);
10
+ const { result } = transfer.encode(dt);
18
11
 
19
12
  expect(result).toEqual({
20
13
  __type__: "DateTime",
@@ -24,7 +17,7 @@ describe("TransferableConvert", () => {
24
17
 
25
18
  it("Encodes DateOnly", () => {
26
19
  const d = new DateOnly(2025, 1, 6);
27
- const { result } = transferEncode(d);
20
+ const { result } = transfer.encode(d);
28
21
 
29
22
  expect(result).toEqual({
30
23
  __type__: "DateOnly",
@@ -34,7 +27,7 @@ describe("TransferableConvert", () => {
34
27
 
35
28
  it("Encodes Time", () => {
36
29
  const t = new Time(15, 30, 45, 123);
37
- const { result } = transferEncode(t);
30
+ const { result } = transfer.encode(t);
38
31
 
39
32
  expect(result).toEqual({
40
33
  __type__: "Time",
@@ -43,8 +36,8 @@ describe("TransferableConvert", () => {
43
36
  });
44
37
 
45
38
  it("Encodes Uuid", () => {
46
- const uuid = Uuid.new();
47
- const { result } = transferEncode(uuid);
39
+ const uuid = Uuid.generate();
40
+ const { result } = transfer.encode(uuid);
48
41
 
49
42
  expect(result).toEqual({
50
43
  __type__: "Uuid",
@@ -55,7 +48,7 @@ describe("TransferableConvert", () => {
55
48
  it("Encodes Error", () => {
56
49
  const err = new Error("test error");
57
50
  err.stack = "test stack";
58
- const { result } = transferEncode(err);
51
+ const { result } = transfer.encode(err);
59
52
 
60
53
  expect(result).toEqual({
61
54
  __type__: "Error",
@@ -70,7 +63,7 @@ describe("TransferableConvert", () => {
70
63
  it("Recursively encodes Error cause", () => {
71
64
  const cause = new Error("cause error");
72
65
  const err = new Error("main error", { cause });
73
- const { result } = transferEncode(err);
66
+ const { result } = transfer.encode(err);
74
67
 
75
68
  const typedResult = result as {
76
69
  __type__: string;
@@ -100,7 +93,7 @@ describe("TransferableConvert", () => {
100
93
  it("Encodes Error code property", () => {
101
94
  const err = new Error("test error") as Error & { code: string };
102
95
  err.code = "ERR_CUSTOM";
103
- const { result } = transferEncode(err);
96
+ const { result } = transfer.encode(err);
104
97
 
105
98
  const typedResult = result as {
106
99
  __type__: string;
@@ -117,7 +110,7 @@ describe("TransferableConvert", () => {
117
110
  it("Encodes Error detail property", () => {
118
111
  const err = new Error("test error") as Error & { detail: unknown };
119
112
  err.detail = { userId: 123, action: "delete" };
120
- const { result } = transferEncode(err);
113
+ const { result } = transfer.encode(err);
121
114
 
122
115
  const typedResult = result as {
123
116
  __type__: string;
@@ -135,7 +128,7 @@ describe("TransferableConvert", () => {
135
128
  const err = new Error("test error") as Error & { detail: unknown };
136
129
  const dt = new DateTime(2025, 1, 6);
137
130
  err.detail = { timestamp: dt };
138
- const { result } = transferEncode(err);
131
+ const { result } = transfer.encode(err);
139
132
 
140
133
  const typedResult = result as {
141
134
  __type__: string;
@@ -154,7 +147,7 @@ describe("TransferableConvert", () => {
154
147
 
155
148
  it("Encodes Uint8Array and adds to transferList", () => {
156
149
  const bytes = new TextEncoder().encode("hello");
157
- const { result, transferList } = transferEncode(bytes);
150
+ const { result, transferList } = transfer.encode(bytes);
158
151
 
159
152
  expect(result).toBe(bytes);
160
153
  expect(transferList).toContain(bytes.buffer);
@@ -162,7 +155,7 @@ describe("TransferableConvert", () => {
162
155
 
163
156
  it("Encodes Date", () => {
164
157
  const date = new Date(2025, 0, 6, 15, 30, 45, 123);
165
- const { result } = transferEncode(date);
158
+ const { result } = transfer.encode(date);
166
159
 
167
160
  expect(result).toEqual({
168
161
  __type__: "Date",
@@ -172,7 +165,7 @@ describe("TransferableConvert", () => {
172
165
 
173
166
  it("Encodes RegExp", () => {
174
167
  const regex = /test\d+/gi;
175
- const { result } = transferEncode(regex);
168
+ const { result } = transfer.encode(regex);
176
169
 
177
170
  expect(result).toEqual({
178
171
  __type__: "RegExp",
@@ -187,8 +180,8 @@ describe("TransferableConvert", () => {
187
180
 
188
181
  describe("encode() - Collections", () => {
189
182
  it("Recursively encodes array", () => {
190
- const arr = [new DateTime(2025, 1, 6), Uuid.new(), "string", 123] as const;
191
- const { result } = transferEncode(arr);
183
+ const arr = [new DateTime(2025, 1, 6), Uuid.generate(), "string", 123] as const;
184
+ const { result } = transfer.encode(arr);
192
185
 
193
186
  expect(Array.isArray(result)).toBe(true);
194
187
  const resultArr = result as unknown[];
@@ -202,9 +195,9 @@ describe("TransferableConvert", () => {
202
195
  it("Recursively encodes Map", () => {
203
196
  const map = new Map<string, DateTime | Uuid>([
204
197
  ["key1", new DateTime(2025, 1, 6)],
205
- ["key2", Uuid.new()],
198
+ ["key2", Uuid.generate()],
206
199
  ]);
207
- const { result } = transferEncode(map);
200
+ const { result } = transfer.encode(map);
208
201
 
209
202
  expect(result instanceof Map).toBe(true);
210
203
  const resultMap = result as Map<string, unknown>;
@@ -214,8 +207,8 @@ describe("TransferableConvert", () => {
214
207
  });
215
208
 
216
209
  it("Recursively encodes Set", () => {
217
- const set = new Set([new DateTime(2025, 1, 6), Uuid.new()]);
218
- const { result } = transferEncode(set);
210
+ const set = new Set([new DateTime(2025, 1, 6), Uuid.generate()]);
211
+ const { result } = transfer.encode(set);
219
212
 
220
213
  expect(result instanceof Set).toBe(true);
221
214
  const resultSet = result as Set<unknown>;
@@ -229,11 +222,11 @@ describe("TransferableConvert", () => {
229
222
  const obj = {
230
223
  dt: new DateTime(2025, 1, 6),
231
224
  nested: {
232
- uuid: Uuid.new(),
225
+ uuid: Uuid.generate(),
233
226
  arr: [new DateOnly(2025, 1, 6)],
234
227
  },
235
228
  };
236
- const { result } = transferEncode(obj);
229
+ const { result } = transfer.encode(obj);
237
230
 
238
231
  const typedResult = result as {
239
232
  dt: { __type__: string };
@@ -258,8 +251,8 @@ describe("TransferableConvert", () => {
258
251
  const obj: Record<string, unknown> = { a: 1 };
259
252
  obj["self"] = obj;
260
253
 
261
- expect(() => transferEncode(obj)).toThrow(TypeError);
262
- expect(() => transferEncode(obj)).toThrow("Circular reference detected");
254
+ expect(() => transfer.encode(obj)).toThrow(TypeError);
255
+ expect(() => transfer.encode(obj)).toThrow("Circular reference detected");
263
256
  });
264
257
 
265
258
  it("Detects nested circular references", () => {
@@ -267,14 +260,14 @@ describe("TransferableConvert", () => {
267
260
  const b: Record<string, unknown> = { name: "b", ref: a };
268
261
  a["ref"] = b;
269
262
 
270
- expect(() => transferEncode(a)).toThrow("Circular reference detected");
263
+ expect(() => transfer.encode(a)).toThrow("Circular reference detected");
271
264
  });
272
265
 
273
266
  it("Detects circular references in array", () => {
274
267
  const arr: unknown[] = [1, 2, 3];
275
268
  arr.push(arr);
276
269
 
277
- expect(() => transferEncode(arr)).toThrow("Circular reference detected");
270
+ expect(() => transfer.encode(arr)).toThrow("Circular reference detected");
278
271
  });
279
272
  });
280
273
 
@@ -286,7 +279,7 @@ describe("TransferableConvert", () => {
286
279
  it("Encodes without error when same object is referenced from multiple places", () => {
287
280
  const shared = { name: "shared" };
288
281
  const data = { a: shared, b: shared };
289
- const { result } = transferEncode(data);
282
+ const { result } = transfer.encode(data);
290
283
  const decoded = result as Record<string, Record<string, string>>;
291
284
  expect(decoded["a"]["name"]).toBe("shared");
292
285
  expect(decoded["b"]["name"]).toBe("shared");
@@ -295,7 +288,7 @@ describe("TransferableConvert", () => {
295
288
  it("Encodes without error when same array is referenced from multiple places", () => {
296
289
  const sharedArr = [1, 2, 3];
297
290
  const data = { x: sharedArr, y: sharedArr };
298
- const { result } = transferEncode(data);
291
+ const { result } = transfer.encode(data);
299
292
  const decoded = result as Record<string, number[]>;
300
293
  expect(decoded["x"]).toEqual([1, 2, 3]);
301
294
  expect(decoded["y"]).toEqual([1, 2, 3]);
@@ -310,7 +303,7 @@ describe("TransferableConvert", () => {
310
303
  it("Decodes DateTime", () => {
311
304
  const tick = new DateTime(2025, 1, 6, 15, 30, 45, 123).tick;
312
305
  const encoded = { __type__: "DateTime", data: tick };
313
- const decoded = transferDecode(encoded);
306
+ const decoded = transfer.decode(encoded);
314
307
 
315
308
  expect(decoded instanceof DateTime).toBe(true);
316
309
  const dt = decoded as DateTime;
@@ -326,7 +319,7 @@ describe("TransferableConvert", () => {
326
319
  it("Decodes DateOnly", () => {
327
320
  const tick = new DateOnly(2025, 1, 6).tick;
328
321
  const encoded = { __type__: "DateOnly", data: tick };
329
- const decoded = transferDecode(encoded);
322
+ const decoded = transfer.decode(encoded);
330
323
 
331
324
  expect(decoded instanceof DateOnly).toBe(true);
332
325
  const d = decoded as DateOnly;
@@ -338,7 +331,7 @@ describe("TransferableConvert", () => {
338
331
  it("Decodes Time", () => {
339
332
  const tick = new Time(15, 30, 45, 123).tick;
340
333
  const encoded = { __type__: "Time", data: tick };
341
- const decoded = transferDecode(encoded);
334
+ const decoded = transfer.decode(encoded);
342
335
 
343
336
  expect(decoded instanceof Time).toBe(true);
344
337
  const t = decoded as Time;
@@ -349,9 +342,9 @@ describe("TransferableConvert", () => {
349
342
  });
350
343
 
351
344
  it("Decodes Uuid", () => {
352
- const uuid = Uuid.new();
345
+ const uuid = Uuid.generate();
353
346
  const encoded = { __type__: "Uuid", data: uuid.toString() };
354
- const decoded = transferDecode(encoded);
347
+ const decoded = transfer.decode(encoded);
355
348
 
356
349
  expect(decoded instanceof Uuid).toBe(true);
357
350
  expect((decoded as Uuid).toString()).toBe(uuid.toString());
@@ -366,7 +359,7 @@ describe("TransferableConvert", () => {
366
359
  stack: "test stack",
367
360
  },
368
361
  };
369
- const decoded = transferDecode(encoded);
362
+ const decoded = transfer.decode(encoded);
370
363
 
371
364
  expect(decoded instanceof Error).toBe(true);
372
365
  const err = decoded as Error;
@@ -390,7 +383,7 @@ describe("TransferableConvert", () => {
390
383
  },
391
384
  },
392
385
  };
393
- const decoded = transferDecode(encoded);
386
+ const decoded = transfer.decode(encoded);
394
387
 
395
388
  expect(decoded instanceof Error).toBe(true);
396
389
  const err = decoded as Error;
@@ -408,7 +401,7 @@ describe("TransferableConvert", () => {
408
401
  code: "ERR_CUSTOM",
409
402
  },
410
403
  };
411
- const decoded = transferDecode(encoded);
404
+ const decoded = transfer.decode(encoded);
412
405
 
413
406
  expect(decoded instanceof Error).toBe(true);
414
407
  const err = decoded as Error & { code?: string };
@@ -424,7 +417,7 @@ describe("TransferableConvert", () => {
424
417
  detail: { userId: 123, action: "delete" },
425
418
  },
426
419
  };
427
- const decoded = transferDecode(encoded);
420
+ const decoded = transfer.decode(encoded);
428
421
 
429
422
  expect(decoded instanceof Error).toBe(true);
430
423
  const err = decoded as Error & { detail?: unknown };
@@ -441,7 +434,7 @@ describe("TransferableConvert", () => {
441
434
  detail: { timestamp: { __type__: "DateTime", data: tick } },
442
435
  },
443
436
  };
444
- const decoded = transferDecode(encoded);
437
+ const decoded = transfer.decode(encoded);
445
438
 
446
439
  expect(decoded instanceof Error).toBe(true);
447
440
  const err = decoded as Error & { detail?: { timestamp: DateTime } };
@@ -452,7 +445,7 @@ describe("TransferableConvert", () => {
452
445
  it("Decodes Date", () => {
453
446
  const tick = new Date(2025, 0, 6, 15, 30, 45, 123).getTime();
454
447
  const encoded = { __type__: "Date", data: tick };
455
- const decoded = transferDecode(encoded);
448
+ const decoded = transfer.decode(encoded);
456
449
 
457
450
  expect(decoded instanceof Date).toBe(true);
458
451
  const date = decoded as Date;
@@ -470,7 +463,7 @@ describe("TransferableConvert", () => {
470
463
  __type__: "RegExp",
471
464
  data: { source: "test\\d+", flags: "gi" },
472
465
  };
473
- const decoded = transferDecode(encoded);
466
+ const decoded = transfer.decode(encoded);
474
467
 
475
468
  expect(decoded instanceof RegExp).toBe(true);
476
469
  const regex = decoded as RegExp;
@@ -490,14 +483,14 @@ describe("TransferableConvert", () => {
490
483
  describe("decode() - Collections", () => {
491
484
  it("Recursively decodes array", () => {
492
485
  const tick = new DateTime(2025, 1, 6).tick;
493
- const uuidStr = Uuid.new().toString();
486
+ const uuidStr = Uuid.generate().toString();
494
487
  const encoded = [
495
488
  { __type__: "DateTime", data: tick },
496
489
  { __type__: "Uuid", data: uuidStr },
497
490
  "string",
498
491
  123,
499
492
  ];
500
- const decoded = transferDecode(encoded);
493
+ const decoded = transfer.decode(encoded);
501
494
 
502
495
  expect(Array.isArray(decoded)).toBe(true);
503
496
  const arr = decoded as unknown[];
@@ -513,7 +506,7 @@ describe("TransferableConvert", () => {
513
506
  ["key1", { __type__: "DateTime", data: tick }],
514
507
  ["key2", "value"],
515
508
  ]);
516
- const decoded = transferDecode(encoded);
509
+ const decoded = transfer.decode(encoded);
517
510
 
518
511
  expect(decoded instanceof Map).toBe(true);
519
512
  const map = decoded as Map<string, unknown>;
@@ -524,7 +517,7 @@ describe("TransferableConvert", () => {
524
517
  it("Recursively decodes Set", () => {
525
518
  const tick = new DateTime(2025, 1, 6).tick;
526
519
  const encoded = new Set([{ __type__: "DateTime", data: tick }, "string"]);
527
- const decoded = transferDecode(encoded);
520
+ const decoded = transfer.decode(encoded);
528
521
 
529
522
  expect(decoded instanceof Set).toBe(true);
530
523
  const set = decoded as Set<unknown>;
@@ -535,7 +528,7 @@ describe("TransferableConvert", () => {
535
528
 
536
529
  it("Recursively decodes nested object", () => {
537
530
  const dtTick = new DateTime(2025, 1, 6).tick;
538
- const uuidStr = Uuid.new().toString();
531
+ const uuidStr = Uuid.generate().toString();
539
532
  const dTick = new DateOnly(2025, 1, 6).tick;
540
533
  const encoded = {
541
534
  dt: { __type__: "DateTime", data: dtTick },
@@ -544,7 +537,7 @@ describe("TransferableConvert", () => {
544
537
  arr: [{ __type__: "DateOnly", data: dTick }],
545
538
  },
546
539
  };
547
- const decoded = transferDecode(encoded);
540
+ const decoded = transfer.decode(encoded);
548
541
 
549
542
  const obj = decoded as {
550
543
  dt: DateTime;
@@ -573,7 +566,7 @@ describe("TransferableConvert", () => {
573
566
  };
574
567
  const originalCopy = JSON.stringify(original);
575
568
 
576
- transferDecode(original);
569
+ transfer.decode(original);
577
570
 
578
571
  // Verify original is not modified
579
572
  expect(JSON.stringify(original)).toBe(originalCopy);
@@ -585,7 +578,7 @@ describe("TransferableConvert", () => {
585
578
  const tick = new DateTime(2025, 1, 6).tick;
586
579
  const original = [{ __type__: "DateTime", data: tick }];
587
580
 
588
- const decoded = transferDecode(original);
581
+ const decoded = transfer.decode(original);
589
582
 
590
583
  // Result is a new array
591
584
  expect(decoded).not.toBe(original);
@@ -602,8 +595,8 @@ describe("TransferableConvert", () => {
602
595
  describe("Round-trip conversion (encode → decode)", () => {
603
596
  it("Round-trips DateTime", () => {
604
597
  const original = new DateTime(2025, 1, 6, 15, 30, 45, 123);
605
- const { result } = transferEncode(original);
606
- const decoded = transferDecode(result) as DateTime;
598
+ const { result } = transfer.encode(original);
599
+ const decoded = transfer.decode(result) as DateTime;
607
600
 
608
601
  expect(decoded.tick).toBe(original.tick);
609
602
  });
@@ -613,14 +606,14 @@ describe("TransferableConvert", () => {
613
606
  dt: new DateTime(2025, 1, 6),
614
607
  d: new DateOnly(2025, 1, 6),
615
608
  t: new Time(15, 30, 45),
616
- uuid: Uuid.new(),
609
+ uuid: Uuid.generate(),
617
610
  arr: [new DateTime(2024, 12, 31)],
618
611
  map: new Map([["key", new DateOnly(2025, 1, 1)]]),
619
612
  set: new Set([new Time(12, 0, 0)]),
620
613
  };
621
614
 
622
- const { result } = transferEncode(original);
623
- const decoded = transferDecode(result) as typeof original;
615
+ const { result } = transfer.encode(original);
616
+ const decoded = transfer.decode(result) as typeof original;
624
617
 
625
618
  expect(decoded.dt instanceof DateTime).toBe(true);
626
619
  expect(decoded.d instanceof DateOnly).toBe(true);
@@ -633,8 +626,8 @@ describe("TransferableConvert", () => {
633
626
 
634
627
  it("Round-trips RegExp", () => {
635
628
  const original = /test\d+/gi;
636
- const { result } = transferEncode(original);
637
- const decoded = transferDecode(result) as RegExp;
629
+ const { result } = transfer.encode(original);
630
+ const decoded = transfer.decode(result) as RegExp;
638
631
 
639
632
  expect(decoded instanceof RegExp).toBe(true);
640
633
  expect(decoded.source).toBe(original.source);
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect } from "vitest";
2
- import { waitTime as time, waitUntil as until, TimeoutError } from "@simplysm/core-common";
2
+ import { wait, TimeoutError } from "@simplysm/core-common";
3
3
 
4
4
  describe("Wait", () => {
5
5
  //#region time
@@ -7,7 +7,7 @@ describe("Wait", () => {
7
7
  describe("time()", () => {
8
8
  it("Waits for specified time", async () => {
9
9
  const start = Date.now();
10
- await time(100);
10
+ await wait.time(100);
11
11
  const elapsed = Date.now() - start;
12
12
 
13
13
  // 100ms ± tolerance - CI environment load and timer precision considered
@@ -24,7 +24,7 @@ describe("Wait", () => {
24
24
  it("Waits until condition becomes true", async () => {
25
25
  let count = 0;
26
26
 
27
- await until(() => {
27
+ await wait.until(() => {
28
28
  count++;
29
29
  return count >= 3;
30
30
  }, 10);
@@ -35,8 +35,8 @@ describe("Wait", () => {
35
35
  it("Supports async condition function", async () => {
36
36
  let count = 0;
37
37
 
38
- await until(async () => {
39
- await time(10);
38
+ await wait.until(async () => {
39
+ await wait.time(10);
40
40
  count++;
41
41
  return count >= 3;
42
42
  }, 10);
@@ -46,7 +46,7 @@ describe("Wait", () => {
46
46
 
47
47
  it("Returns immediately if condition already true", async () => {
48
48
  const start = Date.now();
49
- await until(() => true, 100);
49
+ await wait.until(() => true, 100);
50
50
  const elapsed = Date.now() - start;
51
51
 
52
52
  expect(elapsed).toBeLessThan(50);
@@ -56,7 +56,7 @@ describe("Wait", () => {
56
56
  let count = 0;
57
57
 
58
58
  await expect(async () => {
59
- await until(
59
+ await wait.until(
60
60
  () => {
61
61
  count++;
62
62
  return false;
@@ -73,7 +73,7 @@ describe("Wait", () => {
73
73
  let count = 0;
74
74
 
75
75
  // Unlimited wait but returns when condition true
76
- await until(
76
+ await wait.until(
77
77
  () => {
78
78
  count++;
79
79
  return count >= 10;
@@ -89,7 +89,7 @@ describe("Wait", () => {
89
89
  let count = 0;
90
90
  const start = Date.now();
91
91
 
92
- await until(() => {
92
+ await wait.until(() => {
93
93
  count++;
94
94
  return count >= 3;
95
95
  });
@@ -104,7 +104,7 @@ describe("Wait", () => {
104
104
  let count = 0;
105
105
 
106
106
  await expect(async () => {
107
- await until(
107
+ await wait.until(
108
108
  () => {
109
109
  count++;
110
110
  return false;
@@ -1,20 +1,20 @@
1
1
  import { describe, it, expect } from "vitest";
2
- import { xmlParse as parse, xmlStringify as stringify } from "@simplysm/core-common";
2
+ import { xml } from "@simplysm/core-common";
3
3
 
4
4
  describe("XmlConvert", () => {
5
5
  //#region parse
6
6
 
7
7
  describe("parse()", () => {
8
8
  it("Parses basic XML", () => {
9
- const xml = "<root><child>value</child></root>";
10
- const result = parse(xml) as Record<string, unknown>;
9
+ const xmlStr = "<root><child>value</child></root>";
10
+ const result = xml.parse(xmlStr) as Record<string, unknown>;
11
11
 
12
12
  expect(result).toHaveProperty("root");
13
13
  });
14
14
 
15
15
  it("Parses XML with attributes", () => {
16
- const xml = '<root id="1"><child name="test">value</child></root>';
17
- const result = parse(xml) as {
16
+ const xmlStr = '<root id="1"><child name="test">value</child></root>';
17
+ const result = xml.parse(xmlStr) as {
18
18
  root: {
19
19
  $: { id: string };
20
20
  child: Array<{ $: { name: string }; _: string }>;
@@ -26,8 +26,8 @@ describe("XmlConvert", () => {
26
26
  });
27
27
 
28
28
  it("Parses nested XML", () => {
29
- const xml = "<root><parent><child>value</child></parent></root>";
30
- const result = parse(xml) as {
29
+ const xmlStr = "<root><parent><child>value</child></parent></root>";
30
+ const result = xml.parse(xmlStr) as {
31
31
  root: { parent: Array<{ child: string[] }> };
32
32
  };
33
33
 
@@ -35,8 +35,8 @@ describe("XmlConvert", () => {
35
35
  });
36
36
 
37
37
  it("Parses text nodes as _ key", () => {
38
- const xml = '<item id="1">text content</item>';
39
- const result = parse(xml) as {
38
+ const xmlStr = '<item id="1">text content</item>';
39
+ const result = xml.parse(xmlStr) as {
40
40
  item: { $: { id: string }; _: string };
41
41
  };
42
42
 
@@ -44,8 +44,8 @@ describe("XmlConvert", () => {
44
44
  });
45
45
 
46
46
  it("Removes namespace prefix (stripTagPrefix: true)", () => {
47
- const xml = "<ns:root><ns:child>value</ns:child></ns:root>";
48
- const result = parse(xml, { stripTagPrefix: true }) as {
47
+ const xmlStr = "<ns:root><ns:child>value</ns:child></ns:root>";
48
+ const result = xml.parse(xmlStr, { stripTagPrefix: true }) as {
49
49
  root: { child: string[] };
50
50
  };
51
51
 
@@ -54,22 +54,22 @@ describe("XmlConvert", () => {
54
54
  });
55
55
 
56
56
  it("Preserves namespace prefix (default)", () => {
57
- const xml = "<ns:root><ns:child>value</ns:child></ns:root>";
58
- const result = parse(xml) as Record<string, unknown>;
57
+ const xmlStr = "<ns:root><ns:child>value</ns:child></ns:root>";
58
+ const result = xml.parse(xmlStr) as Record<string, unknown>;
59
59
 
60
60
  expect(result).toHaveProperty("ns:root");
61
61
  });
62
62
 
63
63
  it("Parses multiple same tags as array", () => {
64
- const xml = "<root><item>1</item><item>2</item><item>3</item></root>";
65
- const result = parse(xml) as { root: { item: string[] } };
64
+ const xmlStr = "<root><item>1</item><item>2</item><item>3</item></root>";
65
+ const result = xml.parse(xmlStr) as { root: { item: string[] } };
66
66
 
67
67
  expect(result.root.item).toEqual(["1", "2", "3"]);
68
68
  });
69
69
 
70
70
  it("Does not remove namespace prefix from attributes", () => {
71
- const xml = '<ns:root xmlns:ns="http://example.com"><ns:child>value</ns:child></ns:root>';
72
- const result = parse(xml, { stripTagPrefix: true }) as {
71
+ const xmlStr = '<ns:root xmlns:ns="http://example.com"><ns:child>value</ns:child></ns:root>';
72
+ const result = xml.parse(xmlStr, { stripTagPrefix: true }) as {
73
73
  root: { $: Record<string, string>; child: string[] };
74
74
  };
75
75
 
@@ -84,7 +84,7 @@ describe("XmlConvert", () => {
84
84
  describe("stringify()", () => {
85
85
  it("Serializes object to XML", () => {
86
86
  const obj = { root: { child: "value" } };
87
- const result = stringify(obj);
87
+ const result = xml.stringify(obj);
88
88
 
89
89
  expect(result).toContain("<root>");
90
90
  expect(result).toContain("<child>value</child>");
@@ -93,7 +93,7 @@ describe("XmlConvert", () => {
93
93
 
94
94
  it("Serializes object with attributes", () => {
95
95
  const obj = { root: { $: { id: "1" }, child: "value" } };
96
- const result = stringify(obj);
96
+ const result = xml.stringify(obj);
97
97
 
98
98
  expect(result).toContain('id="1"');
99
99
  expect(result).toContain("<child>value</child>");
@@ -101,7 +101,7 @@ describe("XmlConvert", () => {
101
101
 
102
102
  it("Serializes array as multiple tags", () => {
103
103
  const obj = { root: { item: ["1", "2", "3"] } };
104
- const result = stringify(obj);
104
+ const result = xml.stringify(obj);
105
105
 
106
106
  expect(result).toContain("<item>1</item>");
107
107
  expect(result).toContain("<item>2</item>");
@@ -110,7 +110,7 @@ describe("XmlConvert", () => {
110
110
 
111
111
  it("Serializes text node as _ key", () => {
112
112
  const obj = { item: { $: { id: "1" }, _: "text content" } };
113
- const result = stringify(obj);
113
+ const result = xml.stringify(obj);
114
114
 
115
115
  expect(result).toContain('id="1"');
116
116
  expect(result).toContain("text content");
@@ -118,7 +118,7 @@ describe("XmlConvert", () => {
118
118
 
119
119
  it("Serializes nested object", () => {
120
120
  const obj = { root: { parent: { child: "value" } } };
121
- const result = stringify(obj);
121
+ const result = xml.stringify(obj);
122
122
 
123
123
  expect(result).toContain("<parent>");
124
124
  expect(result).toContain("<child>value</child>");
@@ -132,9 +132,9 @@ describe("XmlConvert", () => {
132
132
 
133
133
  describe("parse/stringify roundtrip", () => {
134
134
  it("Structure preserved after parse then stringify", () => {
135
- const xml = "<root><child>value</child></root>";
136
- const parsed = parse(xml);
137
- const result = stringify(parsed);
135
+ const xmlStr = "<root><child>value</child></root>";
136
+ const parsed = xml.parse(xmlStr);
137
+ const result = xml.stringify(parsed);
138
138
 
139
139
  expect(result).toContain("<root>");
140
140
  expect(result).toContain("<child>value</child>");
@@ -1 +0,0 @@
1
- {"version":3,"file":"sd-zip.d.ts","sourceRoot":"","sources":["../../src/zip/sd-zip.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAA0B;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAC/D,OAAO,CAAC,QAAQ,CAAC,CAA6D;IAE9E;;;OAGG;gBACS,IAAI,CAAC,EAAE,IAAI,GAAG,KAAK;YAUjB,WAAW;IAQzB;;;OAGG;IACG,UAAU,CACd,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,GACxD,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC;IAoD1C;;;OAGG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAwBvD;;;OAGG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBhD;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAM3C;;;;;;OAMG;IACG,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC;IAiBhC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;OAEG;IACG,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7C"}
File without changes
File without changes