@verdant-web/common 1.12.0 → 1.13.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.
Files changed (82) hide show
  1. package/dist/cjs/indexes.d.ts +1 -0
  2. package/dist/cjs/indexes.js +5 -1
  3. package/dist/cjs/indexes.js.map +1 -1
  4. package/dist/cjs/migration.d.ts +7 -0
  5. package/dist/cjs/migration.js +53 -9
  6. package/dist/cjs/migration.js.map +1 -1
  7. package/dist/cjs/oids.d.ts +2 -0
  8. package/dist/cjs/oids.js +30 -4
  9. package/dist/cjs/oids.js.map +1 -1
  10. package/dist/cjs/oids.test.js +3 -0
  11. package/dist/cjs/oids.test.js.map +1 -1
  12. package/dist/cjs/operation.js +12 -3
  13. package/dist/cjs/operation.js.map +1 -1
  14. package/dist/cjs/operation.test.js +151 -1
  15. package/dist/cjs/operation.test.js.map +1 -1
  16. package/dist/cjs/schema/defaults.test.js +3 -3
  17. package/dist/cjs/schema/defaults.test.js.map +1 -1
  18. package/dist/cjs/schema/{defaults.d.ts → fields.d.ts} +3 -0
  19. package/dist/cjs/schema/{defaults.js → fields.js} +48 -3
  20. package/dist/cjs/schema/fields.js.map +1 -0
  21. package/dist/cjs/schema/index.d.ts +1 -1
  22. package/dist/cjs/schema/index.js +1 -1
  23. package/dist/cjs/schema/index.js.map +1 -1
  24. package/dist/cjs/schema/types/fields.d.ts +6 -0
  25. package/dist/cjs/schema/validation.d.ts +3 -0
  26. package/dist/cjs/schema/validation.js +87 -0
  27. package/dist/cjs/schema/validation.js.map +1 -0
  28. package/dist/cjs/timestamp.test.js +11 -0
  29. package/dist/cjs/timestamp.test.js.map +1 -1
  30. package/dist/cjs/utils.d.ts +5 -1
  31. package/dist/cjs/utils.js +9 -5
  32. package/dist/cjs/utils.js.map +1 -1
  33. package/dist/esm/indexes.d.ts +1 -0
  34. package/dist/esm/indexes.js +4 -0
  35. package/dist/esm/indexes.js.map +1 -1
  36. package/dist/esm/migration.d.ts +7 -0
  37. package/dist/esm/migration.js +54 -10
  38. package/dist/esm/migration.js.map +1 -1
  39. package/dist/esm/oids.d.ts +2 -0
  40. package/dist/esm/oids.js +27 -3
  41. package/dist/esm/oids.js.map +1 -1
  42. package/dist/esm/oids.test.js +4 -1
  43. package/dist/esm/oids.test.js.map +1 -1
  44. package/dist/esm/operation.js +13 -4
  45. package/dist/esm/operation.js.map +1 -1
  46. package/dist/esm/operation.test.js +151 -1
  47. package/dist/esm/operation.test.js.map +1 -1
  48. package/dist/esm/schema/defaults.test.js +1 -1
  49. package/dist/esm/schema/defaults.test.js.map +1 -1
  50. package/dist/esm/schema/{defaults.d.ts → fields.d.ts} +3 -0
  51. package/dist/esm/schema/{defaults.js → fields.js} +44 -2
  52. package/dist/esm/schema/fields.js.map +1 -0
  53. package/dist/esm/schema/index.d.ts +1 -1
  54. package/dist/esm/schema/index.js +1 -1
  55. package/dist/esm/schema/index.js.map +1 -1
  56. package/dist/esm/schema/types/fields.d.ts +6 -0
  57. package/dist/esm/schema/validation.d.ts +3 -0
  58. package/dist/esm/schema/validation.js +82 -0
  59. package/dist/esm/schema/validation.js.map +1 -0
  60. package/dist/esm/timestamp.test.js +12 -1
  61. package/dist/esm/timestamp.test.js.map +1 -1
  62. package/dist/esm/utils.d.ts +5 -1
  63. package/dist/esm/utils.js +9 -5
  64. package/dist/esm/utils.js.map +1 -1
  65. package/dist/tsconfig-cjs.tsbuildinfo +1 -1
  66. package/dist/tsconfig.tsbuildinfo +1 -1
  67. package/package.json +1 -1
  68. package/src/indexes.ts +5 -0
  69. package/src/migration.ts +86 -20
  70. package/src/oids.test.ts +7 -0
  71. package/src/oids.ts +31 -3
  72. package/src/operation.test.ts +157 -1
  73. package/src/operation.ts +19 -3
  74. package/src/schema/defaults.test.ts +1 -1
  75. package/src/schema/{defaults.ts → fields.ts} +55 -1
  76. package/src/schema/index.ts +1 -1
  77. package/src/schema/types/fields.ts +6 -1
  78. package/src/schema/validation.ts +99 -0
  79. package/src/timestamp.test.ts +13 -0
  80. package/src/utils.ts +9 -5
  81. package/dist/cjs/schema/defaults.js.map +0 -1
  82. package/dist/esm/schema/defaults.js.map +0 -1
@@ -2,6 +2,7 @@ import { describe, expect, it, vitest } from 'vitest';
2
2
  import {
3
3
  convertOldHlcTimestamp,
4
4
  deserializeHlcTimestamp,
5
+ encodeVersion,
5
6
  HybridLogicalClockTimestampProvider,
6
7
  OLD_encodeVersion,
7
8
  OLD_serializeHlcTimestamp,
@@ -111,3 +112,15 @@ describe('the hybrid logical clock', () => {
111
112
  expect(clock.getWallClockTime(now)).toEqual(time.getTime());
112
113
  });
113
114
  });
115
+
116
+ describe('version encoding', () => {
117
+ it('orders 1 before 2', () => {
118
+ expect(encodeVersion(1) < encodeVersion(2)).toBe(true);
119
+ });
120
+ it('orders 32 before 33', () => {
121
+ expect(encodeVersion(32) < encodeVersion(33)).toBe(true);
122
+ });
123
+ it('orders 34 before 35', () => {
124
+ expect(encodeVersion(34) < encodeVersion(35)).toBe(true);
125
+ });
126
+ });
package/src/utils.ts CHANGED
@@ -60,19 +60,23 @@ export function stableStringify(obj: any) {
60
60
  return JSON.stringify(obj, orderedReplacer);
61
61
  }
62
62
 
63
- export function cloneDeep<T>(obj: T): T {
64
- if (isObject(obj)) {
63
+ /**
64
+ * A version of structured cloning which preserves object identity
65
+ * references in the system.
66
+ */
67
+ export function cloneDeep<T>(obj: T, copyOids = true): T {
68
+ if (isObject(obj) || Array.isArray(obj)) {
65
69
  const oid = maybeGetOid(obj);
66
70
  let clone: any;
67
71
  if (Array.isArray(obj)) {
68
- clone = obj.map(cloneDeep) as T;
72
+ clone = obj.map((v) => cloneDeep(v, copyOids)) as T;
69
73
  } else {
70
74
  clone = {};
71
75
  for (const [key, value] of Object.entries(obj as any)) {
72
- clone[key] = cloneDeep(value);
76
+ clone[key] = cloneDeep(value, copyOids);
73
77
  }
74
78
  }
75
- if (oid) {
79
+ if (copyOids && oid) {
76
80
  assignOid(clone, oid);
77
81
  }
78
82
  return clone;
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/schema/defaults.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/schema/defaults.ts"],"names":[],"mappings":"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"}