@wordpress/core-data 7.37.1-next.v.0 → 7.38.0

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 (55) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/actions.cjs +14 -2
  3. package/build/actions.cjs.map +2 -2
  4. package/build/entities.cjs +35 -45
  5. package/build/entities.cjs.map +2 -2
  6. package/build/private-selectors.cjs +2 -4
  7. package/build/private-selectors.cjs.map +2 -2
  8. package/build/resolvers.cjs +11 -2
  9. package/build/resolvers.cjs.map +2 -2
  10. package/build/types.cjs.map +1 -1
  11. package/build/utils/crdt-blocks.cjs +63 -41
  12. package/build/utils/crdt-blocks.cjs.map +2 -2
  13. package/build/utils/crdt-utils.cjs +44 -0
  14. package/build/utils/crdt-utils.cjs.map +7 -0
  15. package/build/utils/crdt.cjs +33 -37
  16. package/build/utils/crdt.cjs.map +2 -2
  17. package/build-module/actions.mjs +14 -2
  18. package/build-module/actions.mjs.map +2 -2
  19. package/build-module/entities.mjs +35 -47
  20. package/build-module/entities.mjs.map +2 -2
  21. package/build-module/private-selectors.mjs +2 -4
  22. package/build-module/private-selectors.mjs.map +2 -2
  23. package/build-module/resolvers.mjs +11 -2
  24. package/build-module/resolvers.mjs.map +2 -2
  25. package/build-module/utils/crdt-blocks.mjs +64 -42
  26. package/build-module/utils/crdt-blocks.mjs.map +2 -2
  27. package/build-module/utils/crdt-utils.mjs +17 -0
  28. package/build-module/utils/crdt-utils.mjs.map +7 -0
  29. package/build-module/utils/crdt.mjs +37 -37
  30. package/build-module/utils/crdt.mjs.map +2 -2
  31. package/build-types/actions.d.ts.map +1 -1
  32. package/build-types/entities.d.ts.map +1 -1
  33. package/build-types/index.d.ts.map +1 -1
  34. package/build-types/private-selectors.d.ts.map +1 -1
  35. package/build-types/resolvers.d.ts.map +1 -1
  36. package/build-types/types.d.ts +0 -5
  37. package/build-types/types.d.ts.map +1 -1
  38. package/build-types/utils/crdt-blocks.d.ts +14 -5
  39. package/build-types/utils/crdt-blocks.d.ts.map +1 -1
  40. package/build-types/utils/crdt-utils.d.ts +53 -0
  41. package/build-types/utils/crdt-utils.d.ts.map +1 -0
  42. package/build-types/utils/crdt.d.ts +19 -1
  43. package/build-types/utils/crdt.d.ts.map +1 -1
  44. package/package.json +18 -18
  45. package/src/actions.js +13 -2
  46. package/src/entities.js +38 -54
  47. package/src/private-selectors.ts +3 -4
  48. package/src/resolvers.js +15 -7
  49. package/src/test/entities.js +11 -9
  50. package/src/test/resolvers.js +3 -45
  51. package/src/types.ts +0 -6
  52. package/src/utils/crdt-blocks.ts +101 -99
  53. package/src/utils/crdt-utils.ts +77 -0
  54. package/src/utils/crdt.ts +76 -57
  55. package/src/utils/test/crdt.ts +28 -16
@@ -19,17 +19,17 @@ import {
19
19
  applyPostChangesToCRDTDoc,
20
20
  getPostChangesFromCRDTDoc,
21
21
  type PostChanges,
22
+ type YPostRecord,
22
23
  } from '../crdt';
23
24
  import type { YBlock, YBlocks } from '../crdt-blocks';
25
+ import { createYMap, getRootMap, type YMapWrap } from '../crdt-utils';
24
26
  import type { Post, Type } from '../../entity-types';
25
27
 
26
28
  describe( 'crdt', () => {
27
29
  let doc: Y.Doc;
28
- let map: Y.Map< string | object | YBlocks >;
29
30
 
30
31
  beforeEach( () => {
31
32
  doc = new Y.Doc();
32
- map = doc.getMap( CRDT_RECORD_MAP_KEY );
33
33
  jest.clearAllMocks();
34
34
  } );
35
35
 
@@ -40,6 +40,12 @@ describe( 'crdt', () => {
40
40
  describe( 'applyPostChangesToCRDTDoc', () => {
41
41
  const mockPostType = {} as Type;
42
42
 
43
+ let map: YMapWrap< YPostRecord >;
44
+
45
+ beforeEach( () => {
46
+ map = getRootMap< YPostRecord >( doc, CRDT_RECORD_MAP_KEY );
47
+ } );
48
+
43
49
  it( 'applies simple property changes', () => {
44
50
  const changes = {
45
51
  title: 'New Title',
@@ -164,7 +170,7 @@ describe( 'crdt', () => {
164
170
  },
165
171
  };
166
172
 
167
- const metaMap = new Y.Map< unknown >();
173
+ const metaMap = createYMap();
168
174
  metaMap.set( 'some_meta', 'old value' );
169
175
  map.set( 'meta', metaMap );
170
176
 
@@ -180,7 +186,7 @@ describe( 'crdt', () => {
180
186
  },
181
187
  };
182
188
 
183
- const metaMap = new Y.Map< unknown >();
189
+ const metaMap = createYMap();
184
190
  metaMap.set( 'some_meta', 'old value' );
185
191
  map.set( 'meta', metaMap );
186
192
 
@@ -201,9 +207,9 @@ describe( 'crdt', () => {
201
207
 
202
208
  applyPostChangesToCRDTDoc( doc, changes, mockPostType );
203
209
 
204
- const metaMap = map.get( 'meta' ) as Y.Map< unknown >;
210
+ const metaMap = map.get( 'meta' );
205
211
  expect( metaMap ).toBeInstanceOf( Y.Map );
206
- expect( metaMap.get( 'custom_field' ) ).toBe( 'value' );
212
+ expect( metaMap?.get( 'custom_field' ) ).toBe( 'value' );
207
213
  } );
208
214
  } );
209
215
 
@@ -216,7 +222,10 @@ describe( 'crdt', () => {
216
222
  },
217
223
  } as unknown as Type;
218
224
 
225
+ let map: YMapWrap< YPostRecord >;
226
+
219
227
  beforeEach( () => {
228
+ map = getRootMap< YPostRecord >( doc, CRDT_RECORD_MAP_KEY );
220
229
  map.set( 'title', 'CRDT Title' );
221
230
  map.set( 'status', 'draft' );
222
231
  map.set( 'date', '2025-01-01' );
@@ -344,9 +353,9 @@ describe( 'crdt', () => {
344
353
  } );
345
354
 
346
355
  it( 'includes meta in changes', () => {
347
- map.set( 'meta', {
348
- public_meta: 'new value',
349
- } );
356
+ const metaMap = createYMap();
357
+ metaMap.set( 'public_meta', 'new value' );
358
+ map.set( 'meta', metaMap );
350
359
 
351
360
  const editedRecord = {
352
361
  meta: {
@@ -366,9 +375,9 @@ describe( 'crdt', () => {
366
375
  } );
367
376
 
368
377
  it( 'includes non-single meta in changes', () => {
369
- map.set( 'meta', {
370
- public_meta: [ 'value', 'value 2' ],
371
- } );
378
+ const metaMap = createYMap();
379
+ metaMap.set( 'public_meta', [ 'value', 'value 2' ] );
380
+ map.set( 'meta', metaMap );
372
381
 
373
382
  const editedRecord = {
374
383
  meta: {
@@ -388,10 +397,13 @@ describe( 'crdt', () => {
388
397
  } );
389
398
 
390
399
  it( 'excludes disallowed meta keys in changes', () => {
391
- map.set( 'meta', {
392
- public_meta: 'new value',
393
- [ WORDPRESS_META_KEY_FOR_CRDT_DOC_PERSISTENCE ]: 'exclude me',
394
- } );
400
+ const metaMap = createYMap();
401
+ metaMap.set( 'public_meta', 'new value' );
402
+ metaMap.set(
403
+ WORDPRESS_META_KEY_FOR_CRDT_DOC_PERSISTENCE,
404
+ 'exclude me'
405
+ );
406
+ map.set( 'meta', metaMap );
395
407
 
396
408
  const editedRecord = {
397
409
  meta: {