@verdant-web/common 1.15.3-next.0 → 1.15.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.
Files changed (154) hide show
  1. package/dist/cjs/EventSubscriber.d.ts +17 -17
  2. package/dist/cjs/EventSubscriber.js +66 -66
  3. package/dist/cjs/baseline.d.ts +5 -5
  4. package/dist/cjs/baseline.js +2 -2
  5. package/dist/cjs/batching.d.ts +42 -42
  6. package/dist/cjs/batching.js +91 -91
  7. package/dist/cjs/files.d.ts +19 -19
  8. package/dist/cjs/files.js +18 -18
  9. package/dist/cjs/index.d.ts +19 -19
  10. package/dist/cjs/index.js +41 -41
  11. package/dist/cjs/indexes.d.ts +17 -17
  12. package/dist/cjs/indexes.js +142 -142
  13. package/dist/cjs/indexes.test.d.ts +1 -1
  14. package/dist/cjs/indexes.test.js +127 -127
  15. package/dist/cjs/migration.d.ts +172 -172
  16. package/dist/cjs/migration.js +301 -301
  17. package/dist/cjs/oids.d.ts +100 -100
  18. package/dist/cjs/oids.js +461 -457
  19. package/dist/cjs/oids.js.map +1 -1
  20. package/dist/cjs/oids.test.d.ts +1 -1
  21. package/dist/cjs/oids.test.js +348 -348
  22. package/dist/cjs/operation.d.ts +139 -139
  23. package/dist/cjs/operation.js +545 -545
  24. package/dist/cjs/operation.test.d.ts +1 -1
  25. package/dist/cjs/operation.test.js +529 -529
  26. package/dist/cjs/patch.d.ts +26 -26
  27. package/dist/cjs/patch.js +226 -226
  28. package/dist/cjs/presence.d.ts +27 -27
  29. package/dist/cjs/presence.js +2 -2
  30. package/dist/cjs/protocol.d.ts +145 -145
  31. package/dist/cjs/protocol.js +3 -3
  32. package/dist/cjs/refs.d.ts +7 -7
  33. package/dist/cjs/refs.js +29 -29
  34. package/dist/cjs/replica.d.ts +28 -28
  35. package/dist/cjs/replica.js +28 -28
  36. package/dist/cjs/schema/defaults.test.d.ts +1 -1
  37. package/dist/cjs/schema/defaults.test.js +20 -20
  38. package/dist/cjs/schema/fields.d.ts +9 -9
  39. package/dist/cjs/schema/fields.js +144 -144
  40. package/dist/cjs/schema/index.d.ts +8 -8
  41. package/dist/cjs/schema/index.js +51 -51
  42. package/dist/cjs/schema/indexFilters.d.ts +6 -6
  43. package/dist/cjs/schema/indexFilters.js +30 -30
  44. package/dist/cjs/schema/types/collection.d.ts +23 -23
  45. package/dist/cjs/schema/types/collection.js +2 -2
  46. package/dist/cjs/schema/types/compounds.d.ts +11 -11
  47. package/dist/cjs/schema/types/compounds.js +2 -2
  48. package/dist/cjs/schema/types/fields.d.ts +75 -75
  49. package/dist/cjs/schema/types/fields.js +2 -2
  50. package/dist/cjs/schema/types/filters.d.ts +29 -29
  51. package/dist/cjs/schema/types/filters.js +2 -2
  52. package/dist/cjs/schema/types/shapes.d.ts +21 -21
  53. package/dist/cjs/schema/types/shapes.js +2 -2
  54. package/dist/cjs/schema/types/synthetics.d.ts +37 -37
  55. package/dist/cjs/schema/types/synthetics.js +2 -2
  56. package/dist/cjs/schema/types.d.ts +18 -18
  57. package/dist/cjs/schema/types.js +22 -22
  58. package/dist/cjs/schema/validation.d.ts +3 -3
  59. package/dist/cjs/schema/validation.js +86 -86
  60. package/dist/cjs/timestamp.d.ts +50 -50
  61. package/dist/cjs/timestamp.js +251 -251
  62. package/dist/cjs/timestamp.test.d.ts +1 -1
  63. package/dist/cjs/timestamp.test.js +104 -104
  64. package/dist/cjs/undo.d.ts +3 -3
  65. package/dist/cjs/undo.js +198 -198
  66. package/dist/cjs/utils.d.ts +20 -20
  67. package/dist/cjs/utils.js +145 -145
  68. package/dist/cjs/utils.test.d.ts +1 -1
  69. package/dist/cjs/utils.test.js +36 -36
  70. package/dist/esm/EventSubscriber.d.ts +17 -17
  71. package/dist/esm/EventSubscriber.js +62 -62
  72. package/dist/esm/baseline.d.ts +5 -5
  73. package/dist/esm/baseline.js +1 -1
  74. package/dist/esm/batching.d.ts +42 -42
  75. package/dist/esm/batching.js +86 -86
  76. package/dist/esm/files.d.ts +19 -19
  77. package/dist/esm/files.js +12 -12
  78. package/dist/esm/index.d.ts +19 -19
  79. package/dist/esm/index.js +16 -16
  80. package/dist/esm/indexes.d.ts +17 -17
  81. package/dist/esm/indexes.js +130 -130
  82. package/dist/esm/indexes.test.d.ts +1 -1
  83. package/dist/esm/indexes.test.js +125 -125
  84. package/dist/esm/migration.d.ts +172 -172
  85. package/dist/esm/migration.js +294 -294
  86. package/dist/esm/oids.d.ts +100 -100
  87. package/dist/esm/oids.js +426 -422
  88. package/dist/esm/oids.js.map +1 -1
  89. package/dist/esm/oids.test.d.ts +1 -1
  90. package/dist/esm/oids.test.js +346 -346
  91. package/dist/esm/operation.d.ts +139 -139
  92. package/dist/esm/operation.js +530 -530
  93. package/dist/esm/operation.test.d.ts +1 -1
  94. package/dist/esm/operation.test.js +527 -527
  95. package/dist/esm/patch.d.ts +26 -26
  96. package/dist/esm/patch.js +222 -222
  97. package/dist/esm/presence.d.ts +27 -27
  98. package/dist/esm/presence.js +1 -1
  99. package/dist/esm/protocol.d.ts +145 -145
  100. package/dist/esm/protocol.js +2 -2
  101. package/dist/esm/refs.d.ts +7 -7
  102. package/dist/esm/refs.js +22 -22
  103. package/dist/esm/replica.d.ts +28 -28
  104. package/dist/esm/replica.js +25 -25
  105. package/dist/esm/schema/defaults.test.d.ts +1 -1
  106. package/dist/esm/schema/defaults.test.js +18 -18
  107. package/dist/esm/schema/fields.d.ts +9 -9
  108. package/dist/esm/schema/fields.js +133 -133
  109. package/dist/esm/schema/index.d.ts +8 -8
  110. package/dist/esm/schema/index.js +32 -32
  111. package/dist/esm/schema/indexFilters.d.ts +6 -6
  112. package/dist/esm/schema/indexFilters.js +22 -22
  113. package/dist/esm/schema/types/collection.d.ts +23 -23
  114. package/dist/esm/schema/types/collection.js +1 -1
  115. package/dist/esm/schema/types/compounds.d.ts +11 -11
  116. package/dist/esm/schema/types/compounds.js +1 -1
  117. package/dist/esm/schema/types/fields.d.ts +75 -75
  118. package/dist/esm/schema/types/fields.js +1 -1
  119. package/dist/esm/schema/types/filters.d.ts +29 -29
  120. package/dist/esm/schema/types/filters.js +1 -1
  121. package/dist/esm/schema/types/shapes.d.ts +21 -21
  122. package/dist/esm/schema/types/shapes.js +1 -1
  123. package/dist/esm/schema/types/synthetics.d.ts +37 -37
  124. package/dist/esm/schema/types/synthetics.js +1 -1
  125. package/dist/esm/schema/types.d.ts +18 -18
  126. package/dist/esm/schema/types.js +6 -6
  127. package/dist/esm/schema/validation.d.ts +3 -3
  128. package/dist/esm/schema/validation.js +81 -81
  129. package/dist/esm/timestamp.d.ts +50 -50
  130. package/dist/esm/timestamp.js +234 -234
  131. package/dist/esm/timestamp.test.d.ts +1 -1
  132. package/dist/esm/timestamp.test.js +102 -102
  133. package/dist/esm/undo.d.ts +3 -3
  134. package/dist/esm/undo.js +194 -194
  135. package/dist/esm/utils.d.ts +20 -20
  136. package/dist/esm/utils.js +127 -127
  137. package/dist/esm/utils.test.d.ts +1 -1
  138. package/dist/esm/utils.test.js +34 -34
  139. package/dist/tsconfig-cjs.tsbuildinfo +1 -1
  140. package/dist/tsconfig.tsbuildinfo +1 -1
  141. package/package.json +1 -1
  142. package/src/oids.ts +5 -1
  143. package/dist/cjs/files.test.d.ts +0 -1
  144. package/dist/cjs/files.test.js +0 -81
  145. package/dist/cjs/files.test.js.map +0 -1
  146. package/dist/cjs/schema/defaults.d.ts +0 -4
  147. package/dist/cjs/schema/defaults.js +0 -72
  148. package/dist/cjs/schema/defaults.js.map +0 -1
  149. package/dist/esm/files.test.d.ts +0 -1
  150. package/dist/esm/files.test.js +0 -79
  151. package/dist/esm/files.test.js.map +0 -1
  152. package/dist/esm/schema/defaults.d.ts +0 -4
  153. package/dist/esm/schema/defaults.js +0 -66
  154. package/dist/esm/schema/defaults.js.map +0 -1
@@ -1,144 +1,144 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const files_js_1 = require("./files.js");
5
- const oids_js_1 = require("./oids.js");
6
- (0, vitest_1.describe)('normalizing an object', () => {
7
- (0, vitest_1.it)('should return a map of sub-objects with relationships replaced by refs', () => {
8
- let i = 0;
9
- function createSubId() {
10
- return (i++).toString();
11
- }
12
- const initial = {
13
- foo: {
14
- bar: 1,
15
- baz: [2, 3],
16
- },
17
- qux: [
18
- {
19
- corge: true,
20
- },
21
- {
22
- grault: {
23
- garply: 4,
24
- },
25
- },
26
- ],
27
- };
28
- (0, oids_js_1.assignOid)(initial, 'test/a');
29
- (0, oids_js_1.assignOidsToAllSubObjects)(initial, createSubId);
30
- const result = (0, oids_js_1.normalize)(initial);
31
- (0, vitest_1.expect)(result.get('test/a')).toEqual((0, oids_js_1.assignOid)({
32
- foo: {
33
- '@@type': 'ref',
34
- id: 'test/a:0',
35
- },
36
- qux: {
37
- '@@type': 'ref',
38
- id: 'test/a:2',
39
- },
40
- }, 'test/a'));
41
- (0, vitest_1.expect)(result.get('test/a:0')).toEqual((0, oids_js_1.assignOid)({
42
- bar: 1,
43
- baz: {
44
- '@@type': 'ref',
45
- id: 'test/a:1',
46
- },
47
- }, 'test/a:0'));
48
- (0, vitest_1.expect)(result.get('test/a:1')).toEqual((0, oids_js_1.assignOid)([2, 3], 'test/a:1'));
49
- (0, vitest_1.expect)(result.get('test/a:2')).toEqual((0, oids_js_1.assignOid)([
50
- {
51
- '@@type': 'ref',
52
- id: 'test/a:3',
53
- },
54
- {
55
- '@@type': 'ref',
56
- id: 'test/a:4',
57
- },
58
- ], 'test/a:2'));
59
- (0, vitest_1.expect)(result.get('test/a:3')).toEqual((0, oids_js_1.assignOid)({
60
- corge: true,
61
- }, 'test/a:3'));
62
- (0, vitest_1.expect)(result.get('test/a:4')).toEqual((0, oids_js_1.assignOid)({
63
- grault: {
64
- '@@type': 'ref',
65
- id: 'test/a:5',
66
- },
67
- }, 'test/a:4'));
68
- (0, vitest_1.expect)(result.get('test/a:5')).toEqual((0, oids_js_1.assignOid)({
69
- garply: 4,
70
- }, 'test/a:5'));
71
- });
72
- (0, vitest_1.it)('should handle file references and not replace them with refs or attempt to normalize them', () => {
73
- let i = 0;
74
- function createSubId() {
75
- return (i++).toString();
76
- }
77
- const initial = {
78
- foo: {
79
- bar: 1,
80
- file: (0, files_js_1.createFileRef)('abcd123'),
81
- },
82
- qux: [(0, files_js_1.createFileRef)('efgh456'), (0, files_js_1.createFileRef)('ijkl789')],
83
- };
84
- (0, oids_js_1.assignOid)(initial, 'test/a');
85
- (0, oids_js_1.assignOidsToAllSubObjects)(initial, createSubId);
86
- const result = (0, oids_js_1.normalize)(initial);
87
- (0, vitest_1.expect)(result.size).toBe(3);
88
- (0, vitest_1.expect)(result.get('test/a')).toEqual((0, oids_js_1.assignOid)({
89
- foo: {
90
- '@@type': 'ref',
91
- id: 'test/a:0',
92
- },
93
- qux: {
94
- '@@type': 'ref',
95
- id: 'test/a:1',
96
- },
97
- }, 'test/a'));
98
- (0, vitest_1.expect)(result.get('test/a:0')).toEqual((0, oids_js_1.assignOid)({
99
- bar: 1,
100
- file: {
101
- '@@type': 'file',
102
- id: 'abcd123',
103
- },
104
- }, 'test/a:0'));
105
- (0, vitest_1.expect)(result.get('test/a:1')).toEqual((0, oids_js_1.assignOid)([
106
- {
107
- '@@type': 'file',
108
- id: 'efgh456',
109
- },
110
- {
111
- '@@type': 'file',
112
- id: 'ijkl789',
113
- },
114
- ], 'test/a:2'));
115
- });
116
- });
117
- (0, vitest_1.describe)('normalizing the first level of an object', () => {
118
- (0, vitest_1.it)('collects all top-level sub-objects', () => {
119
- let i = 0;
120
- function createSubId() {
121
- return (i++).toString();
122
- }
123
- const initial = {
124
- foo: {
125
- bar: 1,
126
- baz: [2, 3],
127
- },
128
- qux: [
129
- {
130
- corge: true,
131
- },
132
- {
133
- grault: {
134
- garply: 4,
135
- },
136
- },
137
- ],
138
- };
139
- (0, oids_js_1.assignOid)(initial, 'test/a');
140
- (0, oids_js_1.assignOidsToAllSubObjects)(initial, createSubId);
141
- const { refs: result } = (0, oids_js_1.normalizeFirstLevel)(initial);
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const files_js_1 = require("./files.js");
5
+ const oids_js_1 = require("./oids.js");
6
+ (0, vitest_1.describe)('normalizing an object', () => {
7
+ (0, vitest_1.it)('should return a map of sub-objects with relationships replaced by refs', () => {
8
+ let i = 0;
9
+ function createSubId() {
10
+ return (i++).toString();
11
+ }
12
+ const initial = {
13
+ foo: {
14
+ bar: 1,
15
+ baz: [2, 3],
16
+ },
17
+ qux: [
18
+ {
19
+ corge: true,
20
+ },
21
+ {
22
+ grault: {
23
+ garply: 4,
24
+ },
25
+ },
26
+ ],
27
+ };
28
+ (0, oids_js_1.assignOid)(initial, 'test/a');
29
+ (0, oids_js_1.assignOidsToAllSubObjects)(initial, createSubId);
30
+ const result = (0, oids_js_1.normalize)(initial);
31
+ (0, vitest_1.expect)(result.get('test/a')).toEqual((0, oids_js_1.assignOid)({
32
+ foo: {
33
+ '@@type': 'ref',
34
+ id: 'test/a:0',
35
+ },
36
+ qux: {
37
+ '@@type': 'ref',
38
+ id: 'test/a:2',
39
+ },
40
+ }, 'test/a'));
41
+ (0, vitest_1.expect)(result.get('test/a:0')).toEqual((0, oids_js_1.assignOid)({
42
+ bar: 1,
43
+ baz: {
44
+ '@@type': 'ref',
45
+ id: 'test/a:1',
46
+ },
47
+ }, 'test/a:0'));
48
+ (0, vitest_1.expect)(result.get('test/a:1')).toEqual((0, oids_js_1.assignOid)([2, 3], 'test/a:1'));
49
+ (0, vitest_1.expect)(result.get('test/a:2')).toEqual((0, oids_js_1.assignOid)([
50
+ {
51
+ '@@type': 'ref',
52
+ id: 'test/a:3',
53
+ },
54
+ {
55
+ '@@type': 'ref',
56
+ id: 'test/a:4',
57
+ },
58
+ ], 'test/a:2'));
59
+ (0, vitest_1.expect)(result.get('test/a:3')).toEqual((0, oids_js_1.assignOid)({
60
+ corge: true,
61
+ }, 'test/a:3'));
62
+ (0, vitest_1.expect)(result.get('test/a:4')).toEqual((0, oids_js_1.assignOid)({
63
+ grault: {
64
+ '@@type': 'ref',
65
+ id: 'test/a:5',
66
+ },
67
+ }, 'test/a:4'));
68
+ (0, vitest_1.expect)(result.get('test/a:5')).toEqual((0, oids_js_1.assignOid)({
69
+ garply: 4,
70
+ }, 'test/a:5'));
71
+ });
72
+ (0, vitest_1.it)('should handle file references and not replace them with refs or attempt to normalize them', () => {
73
+ let i = 0;
74
+ function createSubId() {
75
+ return (i++).toString();
76
+ }
77
+ const initial = {
78
+ foo: {
79
+ bar: 1,
80
+ file: (0, files_js_1.createFileRef)('abcd123'),
81
+ },
82
+ qux: [(0, files_js_1.createFileRef)('efgh456'), (0, files_js_1.createFileRef)('ijkl789')],
83
+ };
84
+ (0, oids_js_1.assignOid)(initial, 'test/a');
85
+ (0, oids_js_1.assignOidsToAllSubObjects)(initial, createSubId);
86
+ const result = (0, oids_js_1.normalize)(initial);
87
+ (0, vitest_1.expect)(result.size).toBe(3);
88
+ (0, vitest_1.expect)(result.get('test/a')).toEqual((0, oids_js_1.assignOid)({
89
+ foo: {
90
+ '@@type': 'ref',
91
+ id: 'test/a:0',
92
+ },
93
+ qux: {
94
+ '@@type': 'ref',
95
+ id: 'test/a:1',
96
+ },
97
+ }, 'test/a'));
98
+ (0, vitest_1.expect)(result.get('test/a:0')).toEqual((0, oids_js_1.assignOid)({
99
+ bar: 1,
100
+ file: {
101
+ '@@type': 'file',
102
+ id: 'abcd123',
103
+ },
104
+ }, 'test/a:0'));
105
+ (0, vitest_1.expect)(result.get('test/a:1')).toEqual((0, oids_js_1.assignOid)([
106
+ {
107
+ '@@type': 'file',
108
+ id: 'efgh456',
109
+ },
110
+ {
111
+ '@@type': 'file',
112
+ id: 'ijkl789',
113
+ },
114
+ ], 'test/a:2'));
115
+ });
116
+ });
117
+ (0, vitest_1.describe)('normalizing the first level of an object', () => {
118
+ (0, vitest_1.it)('collects all top-level sub-objects', () => {
119
+ let i = 0;
120
+ function createSubId() {
121
+ return (i++).toString();
122
+ }
123
+ const initial = {
124
+ foo: {
125
+ bar: 1,
126
+ baz: [2, 3],
127
+ },
128
+ qux: [
129
+ {
130
+ corge: true,
131
+ },
132
+ {
133
+ grault: {
134
+ garply: 4,
135
+ },
136
+ },
137
+ ],
138
+ };
139
+ (0, oids_js_1.assignOid)(initial, 'test/a');
140
+ (0, oids_js_1.assignOidsToAllSubObjects)(initial, createSubId);
141
+ const { refs: result } = (0, oids_js_1.normalizeFirstLevel)(initial);
142
142
  (0, vitest_1.expect)(result.get('test/a')).toMatchInlineSnapshot(`
143
143
  {
144
144
  "foo": {
@@ -150,7 +150,7 @@ const oids_js_1 = require("./oids.js");
150
150
  "id": "test/a:2",
151
151
  },
152
152
  }
153
- `);
153
+ `);
154
154
  (0, vitest_1.expect)(result.get('test/a:0')).toMatchInlineSnapshot(`
155
155
  {
156
156
  "bar": 1,
@@ -159,8 +159,8 @@ const oids_js_1 = require("./oids.js");
159
159
  3,
160
160
  ],
161
161
  }
162
- `);
163
- (0, vitest_1.expect)(result.get('test/a:1')).toBeUndefined();
162
+ `);
163
+ (0, vitest_1.expect)(result.get('test/a:1')).toBeUndefined();
164
164
  (0, vitest_1.expect)(result.get('test/a:2')).toMatchInlineSnapshot(`
165
165
  [
166
166
  {
@@ -172,73 +172,73 @@ const oids_js_1 = require("./oids.js");
172
172
  },
173
173
  },
174
174
  ]
175
- `);
176
- (0, vitest_1.expect)(result.get('test/a:3')).toBeUndefined();
177
- (0, vitest_1.expect)(result.get('test/a:4')).toBeUndefined();
178
- (0, vitest_1.expect)(result.get('test/a:5')).toBeUndefined();
179
- });
180
- });
181
- (0, vitest_1.describe)('computing a range of oids for a whole object set', () => {
182
- function isWithin(oid, start, end) {
183
- return oid >= start && oid <= end;
184
- }
185
- (0, vitest_1.it)('should include the root object and any possible sub object oid', () => {
186
- const [start, end] = (0, oids_js_1.getOidSubIdRange)('test/a');
187
- (0, vitest_1.expect)(start).toEqual('test/a:');
188
- (0, vitest_1.expect)(end).toEqual('test/a:\uffff');
189
- (0, vitest_1.expect)(start < end).toBe(true);
190
- (0, vitest_1.expect)(isWithin('test/a:0', start, end)).toBe(true);
191
- (0, vitest_1.expect)(isWithin('test/a:1', start, end)).toBe(true);
192
- (0, vitest_1.expect)(isWithin('test/a:zzzzzzzzzzzzzzzzzzzzzzz', start, end)).toBe(true);
193
- (0, vitest_1.expect)(isWithin('test/a:\uffff', start, end)).toBe(true);
194
- (0, vitest_1.expect)(isWithin('test1/a', start, end)).toBe(false);
195
- (0, vitest_1.expect)(isWithin('test/b', start, end)).toBe(false);
196
- (0, vitest_1.expect)(isWithin('test/ ', start, end)).toBe(false);
197
- (0, vitest_1.expect)(isWithin('test/a1', start, end)).toBe(false);
198
- (0, vitest_1.expect)(isWithin('test/a1:3', start, end)).toBe(false);
199
- });
200
- (0, vitest_1.it)('should accommodate legacy dot style oids', () => {
201
- const [start, end] = (0, oids_js_1.getLegacyDotOidSubIdRange)('test/a.foo:barrrr');
202
- (0, vitest_1.expect)(start).toEqual('test/a.');
203
- (0, vitest_1.expect)(end).toEqual('test/a.\uffff');
204
- (0, vitest_1.expect)(start < end).toBe(true);
205
- (0, vitest_1.expect)(isWithin('test/a.foo:0', start, end)).toBe(true);
206
- (0, vitest_1.expect)(isWithin('test/a.foo:1', start, end)).toBe(true);
207
- (0, vitest_1.expect)(isWithin('test/a.bar:zzzzzzzzzzzzzzzzzzzzzzz', start, end)).toBe(true);
208
- (0, vitest_1.expect)(isWithin('test/a.aff:\uffff', start, end)).toBe(true);
209
- (0, vitest_1.expect)(isWithin('test1/a', start, end)).toBe(false);
210
- (0, vitest_1.expect)(isWithin('test/b', start, end)).toBe(false);
211
- (0, vitest_1.expect)(isWithin('test/ ', start, end)).toBe(false);
212
- (0, vitest_1.expect)(isWithin('test/a1', start, end)).toBe(false);
213
- (0, vitest_1.expect)(isWithin('test/a1:3', start, end)).toBe(false);
214
- (0, vitest_1.expect)(isWithin('test/a.foo:barrrr', start, end)).toBe(true);
215
- });
216
- });
217
- (0, vitest_1.describe)('assigning OIDs as properties', () => {
218
- (0, vitest_1.it)('should assign to all sub-objects', () => {
219
- let i = 0;
220
- function createSubId() {
221
- return (i++).toString();
222
- }
223
- const initial = {
224
- foo: {
225
- bar: 1,
226
- baz: [2, 3],
227
- },
228
- qux: [
229
- {
230
- corge: true,
231
- },
232
- {
233
- grault: {
234
- garply: 4,
235
- },
236
- },
237
- ],
238
- };
239
- (0, oids_js_1.assignOid)(initial, 'test/a');
240
- (0, oids_js_1.assignOidsToAllSubObjects)(initial, createSubId);
241
- (0, oids_js_1.assignOidPropertiesToAllSubObjects)(initial);
175
+ `);
176
+ (0, vitest_1.expect)(result.get('test/a:3')).toBeUndefined();
177
+ (0, vitest_1.expect)(result.get('test/a:4')).toBeUndefined();
178
+ (0, vitest_1.expect)(result.get('test/a:5')).toBeUndefined();
179
+ });
180
+ });
181
+ (0, vitest_1.describe)('computing a range of oids for a whole object set', () => {
182
+ function isWithin(oid, start, end) {
183
+ return oid >= start && oid <= end;
184
+ }
185
+ (0, vitest_1.it)('should include the root object and any possible sub object oid', () => {
186
+ const [start, end] = (0, oids_js_1.getOidSubIdRange)('test/a');
187
+ (0, vitest_1.expect)(start).toEqual('test/a:');
188
+ (0, vitest_1.expect)(end).toEqual('test/a:\uffff');
189
+ (0, vitest_1.expect)(start < end).toBe(true);
190
+ (0, vitest_1.expect)(isWithin('test/a:0', start, end)).toBe(true);
191
+ (0, vitest_1.expect)(isWithin('test/a:1', start, end)).toBe(true);
192
+ (0, vitest_1.expect)(isWithin('test/a:zzzzzzzzzzzzzzzzzzzzzzz', start, end)).toBe(true);
193
+ (0, vitest_1.expect)(isWithin('test/a:\uffff', start, end)).toBe(true);
194
+ (0, vitest_1.expect)(isWithin('test1/a', start, end)).toBe(false);
195
+ (0, vitest_1.expect)(isWithin('test/b', start, end)).toBe(false);
196
+ (0, vitest_1.expect)(isWithin('test/ ', start, end)).toBe(false);
197
+ (0, vitest_1.expect)(isWithin('test/a1', start, end)).toBe(false);
198
+ (0, vitest_1.expect)(isWithin('test/a1:3', start, end)).toBe(false);
199
+ });
200
+ (0, vitest_1.it)('should accommodate legacy dot style oids', () => {
201
+ const [start, end] = (0, oids_js_1.getLegacyDotOidSubIdRange)('test/a.foo:barrrr');
202
+ (0, vitest_1.expect)(start).toEqual('test/a.');
203
+ (0, vitest_1.expect)(end).toEqual('test/a.\uffff');
204
+ (0, vitest_1.expect)(start < end).toBe(true);
205
+ (0, vitest_1.expect)(isWithin('test/a.foo:0', start, end)).toBe(true);
206
+ (0, vitest_1.expect)(isWithin('test/a.foo:1', start, end)).toBe(true);
207
+ (0, vitest_1.expect)(isWithin('test/a.bar:zzzzzzzzzzzzzzzzzzzzzzz', start, end)).toBe(true);
208
+ (0, vitest_1.expect)(isWithin('test/a.aff:\uffff', start, end)).toBe(true);
209
+ (0, vitest_1.expect)(isWithin('test1/a', start, end)).toBe(false);
210
+ (0, vitest_1.expect)(isWithin('test/b', start, end)).toBe(false);
211
+ (0, vitest_1.expect)(isWithin('test/ ', start, end)).toBe(false);
212
+ (0, vitest_1.expect)(isWithin('test/a1', start, end)).toBe(false);
213
+ (0, vitest_1.expect)(isWithin('test/a1:3', start, end)).toBe(false);
214
+ (0, vitest_1.expect)(isWithin('test/a.foo:barrrr', start, end)).toBe(true);
215
+ });
216
+ });
217
+ (0, vitest_1.describe)('assigning OIDs as properties', () => {
218
+ (0, vitest_1.it)('should assign to all sub-objects', () => {
219
+ let i = 0;
220
+ function createSubId() {
221
+ return (i++).toString();
222
+ }
223
+ const initial = {
224
+ foo: {
225
+ bar: 1,
226
+ baz: [2, 3],
227
+ },
228
+ qux: [
229
+ {
230
+ corge: true,
231
+ },
232
+ {
233
+ grault: {
234
+ garply: 4,
235
+ },
236
+ },
237
+ ],
238
+ };
239
+ (0, oids_js_1.assignOid)(initial, 'test/a');
240
+ (0, oids_js_1.assignOidsToAllSubObjects)(initial, createSubId);
241
+ (0, oids_js_1.assignOidPropertiesToAllSubObjects)(initial);
242
242
  (0, vitest_1.expect)(initial).toMatchInlineSnapshot(`
243
243
  {
244
244
  "@@id": "test/a",
@@ -264,141 +264,141 @@ const oids_js_1 = require("./oids.js");
264
264
  },
265
265
  ],
266
266
  }
267
- `);
268
- // extra check needed for array since it doesn't serialize in the snapshot
269
- (0, vitest_1.expect)((0, oids_js_1.maybeGetOidProperty)(initial.qux)).toBe('test/a:2');
270
- });
271
- (0, vitest_1.it)('should transfer assigned OID properties to the memory system', () => {
272
- const initial = (0, oids_js_1.assignOidProperty)({
273
- foo: (0, oids_js_1.assignOidProperty)({
274
- bar: 1,
275
- }, 'test/a:1'),
276
- qux: (0, oids_js_1.assignOidProperty)([
277
- (0, oids_js_1.assignOidProperty)({
278
- corge: true,
279
- }, 'test/a:2'),
280
- (0, oids_js_1.assignOidProperty)({
281
- grault: (0, oids_js_1.assignOidProperty)({
282
- garply: 4,
283
- }, 'test/a:3'),
284
- }, 'test/a:4'),
285
- ], 'test/a:2'),
286
- }, 'test/a');
287
- (0, oids_js_1.removeOidPropertiesFromAllSubObjects)(initial);
288
- (0, vitest_1.expect)((0, oids_js_1.getOid)(initial)).toEqual('test/a');
289
- (0, vitest_1.expect)((0, oids_js_1.getOid)(initial.foo)).toEqual('test/a:1');
290
- (0, vitest_1.expect)((0, oids_js_1.getOid)(initial.qux)).toEqual('test/a:2');
291
- (0, vitest_1.expect)((0, oids_js_1.getOid)(initial.qux[0])).toEqual('test/a:2');
292
- (0, vitest_1.expect)((0, oids_js_1.getOid)(initial.qux[1])).toEqual('test/a:4');
293
- (0, vitest_1.expect)((0, oids_js_1.getOid)(initial.qux[1].grault)).toEqual('test/a:3');
294
- });
295
- });
296
- (0, vitest_1.it)('should handle special characters in document id or collection', () => {
297
- (0, vitest_1.expect)((0, oids_js_1.decomposeOid)((0, oids_js_1.createOid)('test.teesssst/asdf::', 'foo/bar (.) : huh:', 'corge'))).toEqual({
298
- collection: 'test.teesssst/asdf::',
299
- id: 'foo/bar (.) : huh:',
300
- subId: 'corge',
301
- });
302
- });
303
- (0, vitest_1.describe)('assigning OIDs to sub-objects', () => {
304
- (0, vitest_1.it)('should not assign oids to refs', () => {
305
- const obj = {
306
- foo: {
307
- file: (0, files_js_1.createFileRef)('1a'),
308
- },
309
- bar: [(0, files_js_1.createFileRef)('2a')],
310
- };
311
- (0, oids_js_1.assignOid)(obj, 'test/a');
312
- (0, oids_js_1.assignOidsToAllSubObjects)(obj);
313
- (0, vitest_1.expect)((0, oids_js_1.hasOid)(obj.foo.file)).toBe(false);
314
- (0, vitest_1.expect)((0, oids_js_1.hasOid)(obj.bar[0])).toBe(false);
315
- });
316
- });
317
- (0, vitest_1.describe)('handling legacy OIDs', () => {
318
- (0, vitest_1.it)('should get the root OID for a legacy OID', () => {
319
- (0, vitest_1.expect)((0, oids_js_1.getOidRoot)('items/clabgyjfh00003968qycsq3ld.inputs.#')).toEqual('items/clabgyjfh00003968qycsq3ld');
320
- });
321
- (0, vitest_1.it)('should create sub-ids for legacy OIDs in new format', () => {
322
- (0, vitest_1.expect)((0, oids_js_1.createSubOid)('items/clabgyjfh00003968qycsq3ld.inputs.#', () => 'pseudorandom')).toEqual('items/clabgyjfh00003968qycsq3ld:pseudorandom');
323
- });
324
- (0, vitest_1.it)('should identify new sub-OIDs as related to the legacy root OID', () => {
325
- (0, vitest_1.expect)((0, oids_js_1.areOidsRelated)('items/clabgyjfh00003968qycsq3ld.inputs.#', 'items/clabgyjfh00003968qycsq3ld:pseudorandom')).toBe(true);
326
- });
327
- vitest_1.it.each([
328
- ['items/clabgyjfh00003968qycsq3ld.inputs.#:baz', true],
329
- // include more unicode chars
330
- ['items/clabgyjfh00003968qycsq3ld\ufea3.inputs\u39fc.#:baz!!!', true],
331
- // not matching new oids
332
- ['items/clabgyjfh00003968qycsq3ld', false],
333
- ['items/clabgyjfh00003968qycsq3ld:baz', false],
334
- ['items/clabgyjfh00003968qycsq3ld:baz1111', false],
335
- ])('matches legacy oids', (oid, match) => {
336
- (0, vitest_1.expect)(oids_js_1.MATCH_LEGACY_OID_JSON_STRING.test('"' + oid + '"'), oid).toBe(match);
337
- // regex are stateful 🙄
338
- oids_js_1.MATCH_LEGACY_OID_JSON_STRING.lastIndex = 0;
339
- });
340
- vitest_1.it.each([
341
- [
342
- { op: 'delete', oid: 'items/clabgyjfh00003968qycsq3ld.inputs.#:baz' },
343
- { op: 'delete', oid: 'items/clabgyjfh00003968qycsq3ld:baz' },
344
- ],
345
- [
346
- {
347
- op: 'list-push',
348
- oid: 'items/clabgyjfh00003968qycsq3ld.inputs.#:baz',
349
- value: {
350
- '@@type': 'ref',
351
- id: 'items/clabgyjfh00003968qycsq3ld.inputs.#:qux',
352
- },
353
- },
354
- {
355
- op: 'list-push',
356
- oid: 'items/clabgyjfh00003968qycsq3ld:baz',
357
- value: { '@@type': 'ref', id: 'items/clabgyjfh00003968qycsq3ld:qux' },
358
- },
359
- ],
360
- [
361
- {
362
- op: 'list-remove',
363
- oid: 'items/clabgyjfh00003968qycsq3ld.inputs.#:baz',
364
- value: {
365
- '@@type': 'ref',
366
- id: 'items/clabgyjfh00003968qycsq3ld.inputs.#:qux',
367
- },
368
- },
369
- {
370
- op: 'list-remove',
371
- oid: 'items/clabgyjfh00003968qycsq3ld:baz',
372
- value: { '@@type': 'ref', id: 'items/clabgyjfh00003968qycsq3ld:qux' },
373
- },
374
- ],
375
- [
376
- {
377
- oid: 'items/clabgyjfh00003968qycsq3ld.inputs.#:baz',
378
- timestamp: '2021-03-04T21:00:00.000Z',
379
- snapshot: {
380
- foo: 1,
381
- bar: {
382
- '@@type': 'ref',
383
- id: 'items/clabgyjfh00003968qycsq3ld.inputs.#:qux',
384
- },
385
- },
386
- },
387
- {
388
- oid: 'items/clabgyjfh00003968qycsq3ld:baz',
389
- timestamp: '2021-03-04T21:00:00.000Z',
390
- snapshot: {
391
- foo: 1,
392
- bar: { '@@type': 'ref', id: 'items/clabgyjfh00003968qycsq3ld:qux' },
393
- },
394
- },
395
- ],
396
- [
397
- { oid: 'test thing/what if.boo.blah so what:fajsdfj' },
398
- { oid: 'test thing/what if:fajsdfj' },
399
- ],
400
- ])('should replace legacy OIDs in a JSON string with new OIDs', (from, to) => {
401
- (0, vitest_1.expect)((0, oids_js_1.replaceLegacyOidsInObject)(from), JSON.stringify(from)).toEqual(to);
402
- });
403
- });
267
+ `);
268
+ // extra check needed for array since it doesn't serialize in the snapshot
269
+ (0, vitest_1.expect)((0, oids_js_1.maybeGetOidProperty)(initial.qux)).toBe('test/a:2');
270
+ });
271
+ (0, vitest_1.it)('should transfer assigned OID properties to the memory system', () => {
272
+ const initial = (0, oids_js_1.assignOidProperty)({
273
+ foo: (0, oids_js_1.assignOidProperty)({
274
+ bar: 1,
275
+ }, 'test/a:1'),
276
+ qux: (0, oids_js_1.assignOidProperty)([
277
+ (0, oids_js_1.assignOidProperty)({
278
+ corge: true,
279
+ }, 'test/a:2'),
280
+ (0, oids_js_1.assignOidProperty)({
281
+ grault: (0, oids_js_1.assignOidProperty)({
282
+ garply: 4,
283
+ }, 'test/a:3'),
284
+ }, 'test/a:4'),
285
+ ], 'test/a:2'),
286
+ }, 'test/a');
287
+ (0, oids_js_1.removeOidPropertiesFromAllSubObjects)(initial);
288
+ (0, vitest_1.expect)((0, oids_js_1.getOid)(initial)).toEqual('test/a');
289
+ (0, vitest_1.expect)((0, oids_js_1.getOid)(initial.foo)).toEqual('test/a:1');
290
+ (0, vitest_1.expect)((0, oids_js_1.getOid)(initial.qux)).toEqual('test/a:2');
291
+ (0, vitest_1.expect)((0, oids_js_1.getOid)(initial.qux[0])).toEqual('test/a:2');
292
+ (0, vitest_1.expect)((0, oids_js_1.getOid)(initial.qux[1])).toEqual('test/a:4');
293
+ (0, vitest_1.expect)((0, oids_js_1.getOid)(initial.qux[1].grault)).toEqual('test/a:3');
294
+ });
295
+ });
296
+ (0, vitest_1.it)('should handle special characters in document id or collection', () => {
297
+ (0, vitest_1.expect)((0, oids_js_1.decomposeOid)((0, oids_js_1.createOid)('test.teesssst/asdf::', 'foo/bar (.) : huh:', 'corge'))).toEqual({
298
+ collection: 'test.teesssst/asdf::',
299
+ id: 'foo/bar (.) : huh:',
300
+ subId: 'corge',
301
+ });
302
+ });
303
+ (0, vitest_1.describe)('assigning OIDs to sub-objects', () => {
304
+ (0, vitest_1.it)('should not assign oids to refs', () => {
305
+ const obj = {
306
+ foo: {
307
+ file: (0, files_js_1.createFileRef)('1a'),
308
+ },
309
+ bar: [(0, files_js_1.createFileRef)('2a')],
310
+ };
311
+ (0, oids_js_1.assignOid)(obj, 'test/a');
312
+ (0, oids_js_1.assignOidsToAllSubObjects)(obj);
313
+ (0, vitest_1.expect)((0, oids_js_1.hasOid)(obj.foo.file)).toBe(false);
314
+ (0, vitest_1.expect)((0, oids_js_1.hasOid)(obj.bar[0])).toBe(false);
315
+ });
316
+ });
317
+ (0, vitest_1.describe)('handling legacy OIDs', () => {
318
+ (0, vitest_1.it)('should get the root OID for a legacy OID', () => {
319
+ (0, vitest_1.expect)((0, oids_js_1.getOidRoot)('items/clabgyjfh00003968qycsq3ld.inputs.#')).toEqual('items/clabgyjfh00003968qycsq3ld');
320
+ });
321
+ (0, vitest_1.it)('should create sub-ids for legacy OIDs in new format', () => {
322
+ (0, vitest_1.expect)((0, oids_js_1.createSubOid)('items/clabgyjfh00003968qycsq3ld.inputs.#', () => 'pseudorandom')).toEqual('items/clabgyjfh00003968qycsq3ld:pseudorandom');
323
+ });
324
+ (0, vitest_1.it)('should identify new sub-OIDs as related to the legacy root OID', () => {
325
+ (0, vitest_1.expect)((0, oids_js_1.areOidsRelated)('items/clabgyjfh00003968qycsq3ld.inputs.#', 'items/clabgyjfh00003968qycsq3ld:pseudorandom')).toBe(true);
326
+ });
327
+ vitest_1.it.each([
328
+ ['items/clabgyjfh00003968qycsq3ld.inputs.#:baz', true],
329
+ // include more unicode chars
330
+ ['items/clabgyjfh00003968qycsq3ld\ufea3.inputs\u39fc.#:baz!!!', true],
331
+ // not matching new oids
332
+ ['items/clabgyjfh00003968qycsq3ld', false],
333
+ ['items/clabgyjfh00003968qycsq3ld:baz', false],
334
+ ['items/clabgyjfh00003968qycsq3ld:baz1111', false],
335
+ ])('matches legacy oids', (oid, match) => {
336
+ (0, vitest_1.expect)(oids_js_1.MATCH_LEGACY_OID_JSON_STRING.test('"' + oid + '"'), oid).toBe(match);
337
+ // regex are stateful 🙄
338
+ oids_js_1.MATCH_LEGACY_OID_JSON_STRING.lastIndex = 0;
339
+ });
340
+ vitest_1.it.each([
341
+ [
342
+ { op: 'delete', oid: 'items/clabgyjfh00003968qycsq3ld.inputs.#:baz' },
343
+ { op: 'delete', oid: 'items/clabgyjfh00003968qycsq3ld:baz' },
344
+ ],
345
+ [
346
+ {
347
+ op: 'list-push',
348
+ oid: 'items/clabgyjfh00003968qycsq3ld.inputs.#:baz',
349
+ value: {
350
+ '@@type': 'ref',
351
+ id: 'items/clabgyjfh00003968qycsq3ld.inputs.#:qux',
352
+ },
353
+ },
354
+ {
355
+ op: 'list-push',
356
+ oid: 'items/clabgyjfh00003968qycsq3ld:baz',
357
+ value: { '@@type': 'ref', id: 'items/clabgyjfh00003968qycsq3ld:qux' },
358
+ },
359
+ ],
360
+ [
361
+ {
362
+ op: 'list-remove',
363
+ oid: 'items/clabgyjfh00003968qycsq3ld.inputs.#:baz',
364
+ value: {
365
+ '@@type': 'ref',
366
+ id: 'items/clabgyjfh00003968qycsq3ld.inputs.#:qux',
367
+ },
368
+ },
369
+ {
370
+ op: 'list-remove',
371
+ oid: 'items/clabgyjfh00003968qycsq3ld:baz',
372
+ value: { '@@type': 'ref', id: 'items/clabgyjfh00003968qycsq3ld:qux' },
373
+ },
374
+ ],
375
+ [
376
+ {
377
+ oid: 'items/clabgyjfh00003968qycsq3ld.inputs.#:baz',
378
+ timestamp: '2021-03-04T21:00:00.000Z',
379
+ snapshot: {
380
+ foo: 1,
381
+ bar: {
382
+ '@@type': 'ref',
383
+ id: 'items/clabgyjfh00003968qycsq3ld.inputs.#:qux',
384
+ },
385
+ },
386
+ },
387
+ {
388
+ oid: 'items/clabgyjfh00003968qycsq3ld:baz',
389
+ timestamp: '2021-03-04T21:00:00.000Z',
390
+ snapshot: {
391
+ foo: 1,
392
+ bar: { '@@type': 'ref', id: 'items/clabgyjfh00003968qycsq3ld:qux' },
393
+ },
394
+ },
395
+ ],
396
+ [
397
+ { oid: 'test thing/what if.boo.blah so what:fajsdfj' },
398
+ { oid: 'test thing/what if:fajsdfj' },
399
+ ],
400
+ ])('should replace legacy OIDs in a JSON string with new OIDs', (from, to) => {
401
+ (0, vitest_1.expect)((0, oids_js_1.replaceLegacyOidsInObject)(from), JSON.stringify(from)).toEqual(to);
402
+ });
403
+ });
404
404
  //# sourceMappingURL=oids.test.js.map