@datocms/cma-client 5.1.13 → 5.1.15

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/README.md CHANGED
@@ -18,26 +18,30 @@ Every field type follows a consistent pattern providing:
18
18
 
19
19
  **Example: `lat_lon` Field Type**
20
20
 
21
+ <details>
22
+ <summary>View example</summary>
23
+
21
24
  ```typescript
22
- import { LatLonFieldValue, isLatLonFieldValue, isLocalizedLatLonFieldValue } from '@datocms/cma-client';
23
- import type { LatLonFieldValidators, LatLonFieldAppearance } from '@datocms/cma-client';
25
+ import { isLatLonFieldValue, isLocalizedLatLonFieldValue } from '@datocms/cma-client';
26
+ import type { LatLonFieldValue, LatLonFieldValidators, LatLonFieldAppearance } from '@datocms/cma-client';
24
27
 
25
- // Field value type - can be boolean or null
26
- const value: LatLonFieldValue = true;
28
+ // Field value type - object with latitude/longitude or null
29
+ const value: LatLonFieldValue = { latitude: 45.4642, longitude: 9.1900 };
27
30
 
28
31
  // Type guard functions for validation
29
32
  if (isLatLonFieldValue(someValue)) {
30
- // someValue is guaranteed to be boolean | null
33
+ // someValue is guaranteed to be { latitude: number; longitude: number } | null
31
34
  }
32
35
 
33
36
  if (isLocalizedLatLonFieldValue(localizedValue)) {
34
- // localizedValue is a localized boolean field
37
+ // localizedValue is a localized lat/lon field
35
38
  }
36
39
 
37
40
  // Validator and appearance types available for type-safe configuration
38
41
  type Validators = LatLonFieldValidators;
39
42
  type Appearance = LatLonFieldAppearance;
40
43
  ```
44
+ </details>
41
45
 
42
46
  ### Context-Dependent field types
43
47
 
@@ -47,6 +51,9 @@ Some field types have different value formats depending on the API context (requ
47
51
 
48
52
  **File and Gallery fields** have different type requirements for API requests versus responses:
49
53
 
54
+ <details>
55
+ <summary>View example</summary>
56
+
50
57
  ```typescript
51
58
  import {
52
59
  FileFieldValue,
@@ -84,11 +91,15 @@ if (isGalleryFieldValue(someGalleryValue)) {
84
91
  // someGalleryValue is array of files with all metadata present
85
92
  }
86
93
  ```
94
+ </details>
87
95
 
88
96
  #### "Nested Mode" Response variations
89
97
 
90
98
  **Block-containing fields** (`structured_text`, `single_block`, `rich_text`) support different block representations for regular responses, for ["Nested Mode" responses](https://www.datocms.com/docs/content-management-api/resources/item#api-response-modes-regular-vs-nested), and for requests:
91
99
 
100
+ <details>
101
+ <summary>View example</summary>
102
+
92
103
  ```typescript
93
104
  import {
94
105
  StructuredTextFieldValue,
@@ -165,11 +176,15 @@ if (isStructuredTextFieldValueInRequest(requestData)) {
165
176
  // requestData allows flexible block representations
166
177
  }
167
178
  ```
179
+ </details>
168
180
 
169
181
  These variants ensure type safety across different API contexts while maintaining the same conceptual data structure. All localized variants also have corresponding type guards (e.g., `isLocalizedStructuredTextFieldValueInRequest`, `isLocalizedStructuredTextFieldValueInNestedResponse`, etc.).
170
182
 
171
183
  **TypeScript Generics Support:** For maximum type safety, all field value types and type guards for block-containing fields accept [`ItemTypeDefinition` generics](https://www.datocms.com/docs/content-management-api/resources/item#type-safe-development-with-typescript) to provide precise typing for your specific schema:
172
184
 
185
+ <details>
186
+ <summary>View example</summary>
187
+
173
188
  ```typescript
174
189
  import type { MyArticle, MyArticleSection } from './schema';
175
190
 
@@ -186,6 +201,7 @@ if (isStructuredTextFieldValueInNestedResponse<MyArticleSection>(value)) {
186
201
  // value is now typed with your specific block schema
187
202
  }
188
203
  ```
204
+ </details>
189
205
 
190
206
  ## Block Processing Utilities
191
207
 
@@ -193,11 +209,13 @@ if (isStructuredTextFieldValueInNestedResponse<MyArticleSection>(value)) {
193
209
 
194
210
  The `inspectItem()` function provides a visual, tree-structured representation of DatoCMS records in the console, making it easier to debug and understand complex content structures.
195
211
 
196
- <details>
197
- <summary><strong>inspectItem()</strong> - Display records with visual appeal</summary>
212
+ #### inspectItem()
198
213
 
199
214
  Formats a DatoCMS item (record or block) as a visual tree structure, showing all fields with proper formatting for each field type. Particularly useful for debugging nested structures like modular content and structured text.
200
215
 
216
+ <details>
217
+ <summary>View details</summary>
218
+
201
219
  **TypeScript Signature:**
202
220
  ```typescript
203
221
  function inspectItem(
@@ -236,11 +254,13 @@ console.log(inspectItem(record));
236
254
 
237
255
  ### Creating and Duplicating Blocks
238
256
 
239
- <details>
240
- <summary><strong>buildBlockRecord()</strong> - Create block records from data</summary>
257
+ #### buildBlockRecord()
241
258
 
242
259
  Converts a block data object into the proper format for API requests.
243
260
 
261
+ <details>
262
+ <summary>View details</summary>
263
+
244
264
  **TypeScript Signature:**
245
265
  ```typescript
246
266
  function buildBlockRecord<D extends ItemTypeDefinition>(
@@ -254,11 +274,13 @@ function buildBlockRecord<D extends ItemTypeDefinition>(
254
274
  **Returns:** Formatted block record ready for API requests
255
275
  </details>
256
276
 
257
- <details>
258
- <summary><strong>duplicateBlockRecord()</strong> - Deep clone blocks with nested content</summary>
277
+ #### duplicateBlockRecord()
259
278
 
260
279
  Creates a deep copy of a block record, including all nested blocks, removing IDs to create new instances.
261
280
 
281
+ <details>
282
+ <summary>View details</summary>
283
+
262
284
  **TypeScript Signature:**
263
285
  ```typescript
264
286
  async function duplicateBlockRecord<D extends ItemTypeDefinition>(
@@ -278,11 +300,13 @@ async function duplicateBlockRecord<D extends ItemTypeDefinition>(
278
300
 
279
301
  DatoCMS supports three field types that can contain blocks: Modular Content (arrays of blocks), Single Block fields, and Structured Text (rich-text with embedded blocks). These functions abstract away the differences between field types and can traverse blocks recursively, processing nested blocks within blocks. They require a `SchemaRepository` instance to look up field definitions for nested blocks.
280
302
 
281
- <details>
282
- <summary><strong>visitBlocksInNonLocalizedFieldValue()</strong> - Recursively visit all blocks</summary>
303
+ #### visitBlocksInNonLocalizedFieldValue()
283
304
 
284
305
  Visit every block in a non-localized field value recursively, including blocks nested within other blocks.
285
306
 
307
+ <details>
308
+ <summary>View details</summary>
309
+
286
310
  **TypeScript Signature:**
287
311
  ```typescript
288
312
  async function visitBlocksInNonLocalizedFieldValue(
@@ -300,11 +324,13 @@ async function visitBlocksInNonLocalizedFieldValue(
300
324
  - `visitor`: Function called for each block (including nested)
301
325
  </details>
302
326
 
303
- <details>
304
- <summary><strong>mapBlocksInNonLocalizedFieldValue()</strong> - Recursively transform all blocks</summary>
327
+ #### mapBlocksInNonLocalizedFieldValue()
305
328
 
306
329
  Transform all blocks in a non-localized field value recursively, including nested blocks.
307
330
 
331
+ <details>
332
+ <summary>View details</summary>
333
+
308
334
  **TypeScript Signature:**
309
335
  ```typescript
310
336
  async function mapBlocksInNonLocalizedFieldValue(
@@ -324,11 +350,13 @@ async function mapBlocksInNonLocalizedFieldValue(
324
350
  **Returns:** New field value
325
351
  </details>
326
352
 
327
- <details>
328
- <summary><strong>filterBlocksInNonLocalizedFieldValue()</strong> - Recursively filter blocks</summary>
353
+ #### filterBlocksInNonLocalizedFieldValue()
329
354
 
330
355
  Filter blocks recursively, removing blocks at any nesting level that don't match the predicate.
331
356
 
357
+ <details>
358
+ <summary>View details</summary>
359
+
332
360
  **TypeScript Signature:**
333
361
  ```typescript
334
362
  async function filterBlocksInNonLocalizedFieldValue(
@@ -359,11 +387,13 @@ const noVideos = await filterBlocksInNonLocalizedFieldValue(
359
387
  ```
360
388
  </details>
361
389
 
362
- <details>
363
- <summary><strong>findAllBlocksInNonLocalizedFieldValue()</strong> - Recursively search for blocks</summary>
390
+ #### findAllBlocksInNonLocalizedFieldValue()
364
391
 
365
392
  Find all blocks that match the predicate, searching recursively through nested blocks.
366
393
 
394
+ <details>
395
+ <summary>View details</summary>
396
+
367
397
  **TypeScript Signature:**
368
398
  ```typescript
369
399
  async function findAllBlocksInNonLocalizedFieldValue(
@@ -383,11 +413,13 @@ async function findAllBlocksInNonLocalizedFieldValue(
383
413
  **Returns:** Array of all matching blocks with their paths
384
414
  </details>
385
415
 
386
- <details>
387
- <summary><strong>reduceBlocksInNonLocalizedFieldValue()</strong> - Recursively reduce blocks</summary>
416
+ #### reduceBlocksInNonLocalizedFieldValue()
388
417
 
389
418
  Reduce all blocks recursively to a single value.
390
419
 
420
+ <details>
421
+ <summary>View details</summary>
422
+
391
423
  **TypeScript Signature:**
392
424
  ```typescript
393
425
  async function reduceBlocksInNonLocalizedFieldValue<R>(
@@ -409,11 +441,13 @@ async function reduceBlocksInNonLocalizedFieldValue<R>(
409
441
  **Returns:** The final accumulated value
410
442
  </details>
411
443
 
412
- <details>
413
- <summary><strong>someBlocksInNonLocalizedFieldValue()</strong> - Recursively test for any match</summary>
444
+ #### someBlocksInNonLocalizedFieldValue()
414
445
 
415
446
  Check if any block (including nested) matches the predicate.
416
447
 
448
+ <details>
449
+ <summary>View details</summary>
450
+
417
451
  **TypeScript Signature:**
418
452
  ```typescript
419
453
  async function someBlocksInNonLocalizedFieldValue(
@@ -433,11 +467,13 @@ async function someBlocksInNonLocalizedFieldValue(
433
467
  **Returns:** True if any block matches
434
468
  </details>
435
469
 
436
- <details>
437
- <summary><strong>everyBlockInNonLocalizedFieldValue()</strong> - Recursively test if all match</summary>
470
+ #### everyBlockInNonLocalizedFieldValue()
438
471
 
439
472
  Check if every block (including nested) matches the predicate.
440
473
 
474
+ <details>
475
+ <summary>View details</summary>
476
+
441
477
  **TypeScript Signature:**
442
478
  ```typescript
443
479
  async function everyBlockInNonLocalizedFieldValue(
@@ -461,11 +497,13 @@ async function everyBlockInNonLocalizedFieldValue(
461
497
 
462
498
  These utilities provide a unified interface for working with DatoCMS field values that may or may not be localized. They eliminate the need for conditional logic when processing fields that could be either localized or non-localized.
463
499
 
464
- <details>
465
- <summary><strong>mapNormalizedFieldValues() / mapNormalizedFieldValuesAsync()</strong> - Transform field values</summary>
500
+ #### mapNormalizedFieldValues() / mapNormalizedFieldValuesAsync()
466
501
 
467
502
  Apply a transformation function to field values, handling both localized and non-localized fields uniformly.
468
503
 
504
+ <details>
505
+ <summary>View details</summary>
506
+
469
507
  **TypeScript Signatures:**
470
508
  ```typescript
471
509
  function mapNormalizedFieldValues<TInput, TOutput>(
@@ -489,11 +527,13 @@ async function mapNormalizedFieldValuesAsync<TInput, TOutput>(
489
527
  **Returns:** Transformed value maintaining the same structure
490
528
  </details>
491
529
 
492
- <details>
493
- <summary><strong>filterNormalizedFieldValues() / filterNormalizedFieldValuesAsync()</strong> - Filter field values</summary>
530
+ #### filterNormalizedFieldValues() / filterNormalizedFieldValuesAsync()
494
531
 
495
532
  Filter field values based on a predicate, handling both localized and non-localized fields.
496
533
 
534
+ <details>
535
+ <summary>View details</summary>
536
+
497
537
  **TypeScript Signatures:**
498
538
  ```typescript
499
539
  function filterNormalizedFieldValues<T>(
@@ -517,11 +557,13 @@ async function filterNormalizedFieldValuesAsync<T>(
517
557
  **Returns:** Filtered value or undefined if all filtered out
518
558
  </details>
519
559
 
520
- <details>
521
- <summary><strong>visitNormalizedFieldValues() / visitNormalizedFieldValuesAsync()</strong> - Iterate over field values</summary>
560
+ #### visitNormalizedFieldValues() / visitNormalizedFieldValuesAsync()
522
561
 
523
562
  Visit each value in a field, handling both localized and non-localized fields.
524
563
 
564
+ <details>
565
+ <summary>View details</summary>
566
+
525
567
  **TypeScript Signatures:**
526
568
  ```typescript
527
569
  function visitNormalizedFieldValues<T>(
@@ -543,11 +585,13 @@ async function visitNormalizedFieldValuesAsync<T>(
543
585
  - `visitFn`: Function called for each value
544
586
  </details>
545
587
 
546
- <details>
547
- <summary><strong>someNormalizedFieldValues() / someNormalizedFieldValuesAsync()</strong> - Test if any value matches</summary>
588
+ #### someNormalizedFieldValues() / someNormalizedFieldValuesAsync()
548
589
 
549
590
  Check if at least one field value passes the test.
550
591
 
592
+ <details>
593
+ <summary>View details</summary>
594
+
551
595
  **TypeScript Signatures:**
552
596
  ```typescript
553
597
  function someNormalizedFieldValues<T>(
@@ -571,11 +615,13 @@ async function someNormalizedFieldValuesAsync<T>(
571
615
  **Returns:** True if any value passes the test
572
616
  </details>
573
617
 
574
- <details>
575
- <summary><strong>everyNormalizedFieldValue() / everyNormalizedFieldValueAsync()</strong> - Test if all values match</summary>
618
+ #### everyNormalizedFieldValue() / everyNormalizedFieldValueAsync()
576
619
 
577
620
  Check if all field values pass the test.
578
621
 
622
+ <details>
623
+ <summary>View details</summary>
624
+
579
625
  **TypeScript Signatures:**
580
626
  ```typescript
581
627
  function everyNormalizedFieldValue<T>(
@@ -599,11 +645,13 @@ async function everyNormalizedFieldValueAsync<T>(
599
645
  **Returns:** True if all values pass the test
600
646
  </details>
601
647
 
602
- <details>
603
- <summary><strong>toNormalizedFieldValueEntries() / fromNormalizedFieldValueEntries()</strong> - Convert between formats</summary>
648
+ #### toNormalizedFieldValueEntries() / fromNormalizedFieldValueEntries()
604
649
 
605
650
  Convert field values to/from a normalized entry format for uniform processing.
606
651
 
652
+ <details>
653
+ <summary>View details</summary>
654
+
607
655
  **TypeScript Signatures:**
608
656
  ```typescript
609
657
  function toNormalizedFieldValueEntries<T>(
@@ -641,9 +689,10 @@ const processed = entries.map(({ locale, value }) => ({
641
689
 
642
690
  // Convert back to field value format
643
691
  const result = fromNormalizedFieldValueEntries(field, processed);
692
+ ```
644
693
  </details>
645
694
 
646
- ### 4. SchemaRepository
695
+ ## SchemaRepository
647
696
 
648
697
  The `SchemaRepository` class provides a lightweight, in-memory cache for DatoCMS schema entities (item types, fields, fieldsets, and plugins). It helps avoid redundant API calls when working across multiple functions or utilities that require schema lookups.
649
698
 
@@ -655,6 +704,10 @@ The `SchemaRepository` class provides a lightweight, in-memory cache for DatoCMS
655
704
  - **Fewer API calls**: Dramatically speeds up bulk operations and complex traversals.
656
705
 
657
706
  **Usage Example:**
707
+
708
+ <details>
709
+ <summary>View example</summary>
710
+
658
711
  ```typescript
659
712
  const schemaRepository = new SchemaRepository(client);
660
713
 
@@ -669,13 +722,14 @@ const sameFields = await schemaRepository.getItemTypeFields(blogPost);
669
722
  // Works seamlessly with block-processing utilities
670
723
  await mapBlocksInNonLocalizedFieldValue(
671
724
  fieldValue,
672
- field,
725
+ fieldType,
673
726
  schemaRepository, // share cached lookups
674
727
  async (block) => {
675
728
  // transform block here
676
729
  }
677
730
  );
678
731
  ```
732
+ </details>
679
733
 
680
734
  **When to Use**
681
735
 
@@ -88,7 +88,7 @@ class Client {
88
88
  return this.config.baseUrl || Client.defaultBaseUrl;
89
89
  }
90
90
  request(options) {
91
- return (0, rest_client_utils_1.request)(Object.assign(Object.assign(Object.assign({}, this.config), options), { logFn: this.config.logFn || console.log, userAgent: '@datocms/cma-client v5.1.13', baseUrl: this.baseUrl, preCallStack: new Error().stack, extraHeaders: Object.assign(Object.assign(Object.assign({}, (this.config.extraHeaders || {})), (this.config.environment
91
+ return (0, rest_client_utils_1.request)(Object.assign(Object.assign(Object.assign({}, this.config), options), { logFn: this.config.logFn || console.log, userAgent: '@datocms/cma-client v5.1.15', baseUrl: this.baseUrl, preCallStack: new Error().stack, extraHeaders: Object.assign(Object.assign(Object.assign({}, (this.config.extraHeaders || {})), (this.config.environment
92
92
  ? { 'X-Environment': this.config.environment }
93
93
  : {})), { 'X-API-Version': '3' }), fetchJobResult: (jobId) => {
94
94
  return this.jobResultsFetcher
@@ -11,6 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.SchemaRepository = void 0;
13
13
  const rest_client_utils_1 = require("@datocms/rest-client-utils");
14
+ const fieldsContainingReferences_1 = require("./fieldsContainingReferences");
14
15
  /**
15
16
  * Repository for DatoCMS schema entities including item types, fields, and plugins.
16
17
  * Provides caching and efficient lookup functionality for schema-related operations.
@@ -93,6 +94,7 @@ class SchemaRepository {
93
94
  this.pluginsPromise = null;
94
95
  this.pluginsById = new Map();
95
96
  this.pluginsByPackageName = new Map();
97
+ this.prefetchPromise = null;
96
98
  this.client = client;
97
99
  }
98
100
  /**
@@ -413,6 +415,119 @@ class SchemaRepository {
413
415
  return plugin;
414
416
  });
415
417
  }
418
+ /**
419
+ * Prefetches all models and their fields in a single optimized API call.
420
+ * This method populates the internal caches for both item types and fields,
421
+ * making subsequent lookups very fast without additional API calls.
422
+ *
423
+ * This is more efficient than lazy loading when you know you'll need access
424
+ * to multiple models and fields, as it reduces the number of API requests
425
+ * from potentially dozens down to just one.
426
+ *
427
+ * @returns Promise that resolves when all data has been fetched and cached
428
+ */
429
+ prefetchAllModelsAndFields() {
430
+ return __awaiter(this, void 0, void 0, function* () {
431
+ if (this.prefetchPromise) {
432
+ return this.prefetchPromise;
433
+ }
434
+ const prefetch = () => __awaiter(this, void 0, void 0, function* () {
435
+ const { included } = yield this.client.site.rawFind({
436
+ include: 'item_types,item_types.fields',
437
+ });
438
+ if (!included) {
439
+ throw new Error('This should not happen');
440
+ }
441
+ const allItemTypes = included.filter((item) => item.type === 'item_type');
442
+ const allFields = included.filter((item) => item.type === 'field');
443
+ // Populate item types caches
444
+ this.itemTypesPromise = Promise.resolve(allItemTypes);
445
+ for (const itemType of allItemTypes) {
446
+ this.itemTypesByApiKey.set(itemType.attributes.api_key, itemType);
447
+ this.itemTypesById.set(itemType.id, itemType);
448
+ }
449
+ // Group fields by item type and populate fields cache
450
+ const fieldsByItemTypeId = new Map();
451
+ for (const field of allFields) {
452
+ const itemTypeId = field.relationships.item_type.data.id;
453
+ if (!fieldsByItemTypeId.has(itemTypeId)) {
454
+ fieldsByItemTypeId.set(itemTypeId, []);
455
+ }
456
+ fieldsByItemTypeId.get(itemTypeId).push(field);
457
+ }
458
+ // Populate the fields cache
459
+ for (const [itemTypeId, fields] of fieldsByItemTypeId) {
460
+ this.fieldsByItemType.set(itemTypeId, fields);
461
+ }
462
+ });
463
+ this.prefetchPromise = prefetch();
464
+ return this.prefetchPromise;
465
+ });
466
+ }
467
+ /**
468
+ * Gets all models that directly or indirectly embed the given block models.
469
+ * This method recursively traverses the schema to find all models that reference
470
+ * the provided blocks, either directly through block fields or indirectly through
471
+ * other block models that reference them.
472
+ *
473
+ * @param blocks - Array of block models to find references to
474
+ * @returns Promise that resolves to array of models that embed these blocks
475
+ */
476
+ getRawModelsEmbeddingBlocks(blocks) {
477
+ return __awaiter(this, void 0, void 0, function* () {
478
+ yield this.prefetchAllModelsAndFields();
479
+ const allItemTypes = yield this.getAllRawItemTypes();
480
+ const blockIds = new Set(blocks.map((block) => block.id));
481
+ const embeddingModels = [];
482
+ // Helper function to check if a model points to any of the target blocks
483
+ const modelPointsToBlocks = (itemType, alreadyExplored = new Set()) => __awaiter(this, void 0, void 0, function* () {
484
+ if (alreadyExplored.has(itemType.id)) {
485
+ return false;
486
+ }
487
+ alreadyExplored.add(itemType.id);
488
+ const fields = yield this.getRawItemTypeFields(itemType);
489
+ for (const field of fields) {
490
+ const referencedBlockIds = (0, fieldsContainingReferences_1.blockModelIdsReferencedInField)(field);
491
+ // Check if this field directly references any of our target blocks
492
+ if (referencedBlockIds.some((id) => blockIds.has(id))) {
493
+ return true;
494
+ }
495
+ // Check if this field references other block models that might transitively reference our targets
496
+ const referencedBlocks = referencedBlockIds.map((id) => allItemTypes.find((it) => it.id === id));
497
+ for (const linkedBlock of referencedBlocks) {
498
+ if (yield modelPointsToBlocks(linkedBlock, new Set(alreadyExplored))) {
499
+ return true;
500
+ }
501
+ }
502
+ }
503
+ return false;
504
+ });
505
+ // Check each model to see if it embeds any of the target blocks
506
+ for (const itemType of allItemTypes) {
507
+ if (yield modelPointsToBlocks(itemType)) {
508
+ embeddingModels.push(itemType);
509
+ }
510
+ }
511
+ return embeddingModels;
512
+ });
513
+ }
514
+ /**
515
+ * Gets all models that directly or indirectly embed the given block models.
516
+ * This method recursively traverses the schema to find all models that reference
517
+ * the provided blocks, either directly through block fields or indirectly through
518
+ * other block models that reference them.
519
+ *
520
+ * @param blocks - Array of block models to find references to
521
+ * @returns Promise that resolves to array of models that embed these blocks
522
+ */
523
+ getModelsEmbeddingBlocks(blocks) {
524
+ return __awaiter(this, void 0, void 0, function* () {
525
+ const rawResult = yield this.getRawModelsEmbeddingBlocks(blocks);
526
+ return (0, rest_client_utils_1.deserializeResponseBody)({
527
+ data: rawResult,
528
+ });
529
+ });
530
+ }
416
531
  }
417
532
  exports.SchemaRepository = SchemaRepository;
418
533
  //# sourceMappingURL=schemaRepository.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemaRepository.js","sourceRoot":"","sources":["../../../src/utilities/schemaRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemaRepository.js","sourceRoot":"","sources":["../../../src/utilities/schemaRepository.ts"],"names":[],"mappings":"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"}
@@ -62,7 +62,7 @@ export class Client {
62
62
  return this.config.baseUrl || Client.defaultBaseUrl;
63
63
  }
64
64
  request(options) {
65
- return request(Object.assign(Object.assign(Object.assign({}, this.config), options), { logFn: this.config.logFn || console.log, userAgent: '@datocms/cma-client v5.1.13', baseUrl: this.baseUrl, preCallStack: new Error().stack, extraHeaders: Object.assign(Object.assign(Object.assign({}, (this.config.extraHeaders || {})), (this.config.environment
65
+ return request(Object.assign(Object.assign(Object.assign({}, this.config), options), { logFn: this.config.logFn || console.log, userAgent: '@datocms/cma-client v5.1.15', baseUrl: this.baseUrl, preCallStack: new Error().stack, extraHeaders: Object.assign(Object.assign(Object.assign({}, (this.config.extraHeaders || {})), (this.config.environment
66
66
  ? { 'X-Environment': this.config.environment }
67
67
  : {})), { 'X-API-Version': '3' }), fetchJobResult: (jobId) => {
68
68
  return this.jobResultsFetcher
@@ -24,6 +24,14 @@ interface GenericClient {
24
24
  data: RawApiTypes.Plugin[];
25
25
  }>;
26
26
  };
27
+ site: {
28
+ rawFind(params: {
29
+ include: string;
30
+ }): Promise<{
31
+ data: any;
32
+ included?: Array<RawApiTypes.ItemType | RawApiTypes.Field | any>;
33
+ }>;
34
+ };
27
35
  }
28
36
  /**
29
37
  * Repository for DatoCMS schema entities including item types, fields, and plugins.
@@ -103,6 +111,7 @@ export declare class SchemaRepository {
103
111
  private pluginsPromise;
104
112
  private pluginsById;
105
113
  private pluginsByPackageName;
114
+ private prefetchPromise;
106
115
  /**
107
116
  * Creates a new SchemaRepository instance.
108
117
  * @param client - The DatoCMS client instance
@@ -244,5 +253,37 @@ export declare class SchemaRepository {
244
253
  * @throws Error if the plugin is not found
245
254
  */
246
255
  getRawPluginByPackageName(packageName: string): Promise<RawApiTypes.Plugin>;
256
+ /**
257
+ * Prefetches all models and their fields in a single optimized API call.
258
+ * This method populates the internal caches for both item types and fields,
259
+ * making subsequent lookups very fast without additional API calls.
260
+ *
261
+ * This is more efficient than lazy loading when you know you'll need access
262
+ * to multiple models and fields, as it reduces the number of API requests
263
+ * from potentially dozens down to just one.
264
+ *
265
+ * @returns Promise that resolves when all data has been fetched and cached
266
+ */
267
+ prefetchAllModelsAndFields(): Promise<void>;
268
+ /**
269
+ * Gets all models that directly or indirectly embed the given block models.
270
+ * This method recursively traverses the schema to find all models that reference
271
+ * the provided blocks, either directly through block fields or indirectly through
272
+ * other block models that reference them.
273
+ *
274
+ * @param blocks - Array of block models to find references to
275
+ * @returns Promise that resolves to array of models that embed these blocks
276
+ */
277
+ getRawModelsEmbeddingBlocks(blocks: Array<ApiTypes.ItemType | RawApiTypes.ItemType>): Promise<Array<RawApiTypes.ItemType>>;
278
+ /**
279
+ * Gets all models that directly or indirectly embed the given block models.
280
+ * This method recursively traverses the schema to find all models that reference
281
+ * the provided blocks, either directly through block fields or indirectly through
282
+ * other block models that reference them.
283
+ *
284
+ * @param blocks - Array of block models to find references to
285
+ * @returns Promise that resolves to array of models that embed these blocks
286
+ */
287
+ getModelsEmbeddingBlocks(blocks: Array<ApiTypes.ItemType | RawApiTypes.ItemType>): Promise<Array<ApiTypes.ItemType>>;
247
288
  }
248
289
  export {};
@@ -8,6 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { deserializeResponseBody } from '@datocms/rest-client-utils';
11
+ import { blockModelIdsReferencedInField } from './fieldsContainingReferences';
11
12
  /**
12
13
  * Repository for DatoCMS schema entities including item types, fields, and plugins.
13
14
  * Provides caching and efficient lookup functionality for schema-related operations.
@@ -90,6 +91,7 @@ export class SchemaRepository {
90
91
  this.pluginsPromise = null;
91
92
  this.pluginsById = new Map();
92
93
  this.pluginsByPackageName = new Map();
94
+ this.prefetchPromise = null;
93
95
  this.client = client;
94
96
  }
95
97
  /**
@@ -410,5 +412,118 @@ export class SchemaRepository {
410
412
  return plugin;
411
413
  });
412
414
  }
415
+ /**
416
+ * Prefetches all models and their fields in a single optimized API call.
417
+ * This method populates the internal caches for both item types and fields,
418
+ * making subsequent lookups very fast without additional API calls.
419
+ *
420
+ * This is more efficient than lazy loading when you know you'll need access
421
+ * to multiple models and fields, as it reduces the number of API requests
422
+ * from potentially dozens down to just one.
423
+ *
424
+ * @returns Promise that resolves when all data has been fetched and cached
425
+ */
426
+ prefetchAllModelsAndFields() {
427
+ return __awaiter(this, void 0, void 0, function* () {
428
+ if (this.prefetchPromise) {
429
+ return this.prefetchPromise;
430
+ }
431
+ const prefetch = () => __awaiter(this, void 0, void 0, function* () {
432
+ const { included } = yield this.client.site.rawFind({
433
+ include: 'item_types,item_types.fields',
434
+ });
435
+ if (!included) {
436
+ throw new Error('This should not happen');
437
+ }
438
+ const allItemTypes = included.filter((item) => item.type === 'item_type');
439
+ const allFields = included.filter((item) => item.type === 'field');
440
+ // Populate item types caches
441
+ this.itemTypesPromise = Promise.resolve(allItemTypes);
442
+ for (const itemType of allItemTypes) {
443
+ this.itemTypesByApiKey.set(itemType.attributes.api_key, itemType);
444
+ this.itemTypesById.set(itemType.id, itemType);
445
+ }
446
+ // Group fields by item type and populate fields cache
447
+ const fieldsByItemTypeId = new Map();
448
+ for (const field of allFields) {
449
+ const itemTypeId = field.relationships.item_type.data.id;
450
+ if (!fieldsByItemTypeId.has(itemTypeId)) {
451
+ fieldsByItemTypeId.set(itemTypeId, []);
452
+ }
453
+ fieldsByItemTypeId.get(itemTypeId).push(field);
454
+ }
455
+ // Populate the fields cache
456
+ for (const [itemTypeId, fields] of fieldsByItemTypeId) {
457
+ this.fieldsByItemType.set(itemTypeId, fields);
458
+ }
459
+ });
460
+ this.prefetchPromise = prefetch();
461
+ return this.prefetchPromise;
462
+ });
463
+ }
464
+ /**
465
+ * Gets all models that directly or indirectly embed the given block models.
466
+ * This method recursively traverses the schema to find all models that reference
467
+ * the provided blocks, either directly through block fields or indirectly through
468
+ * other block models that reference them.
469
+ *
470
+ * @param blocks - Array of block models to find references to
471
+ * @returns Promise that resolves to array of models that embed these blocks
472
+ */
473
+ getRawModelsEmbeddingBlocks(blocks) {
474
+ return __awaiter(this, void 0, void 0, function* () {
475
+ yield this.prefetchAllModelsAndFields();
476
+ const allItemTypes = yield this.getAllRawItemTypes();
477
+ const blockIds = new Set(blocks.map((block) => block.id));
478
+ const embeddingModels = [];
479
+ // Helper function to check if a model points to any of the target blocks
480
+ const modelPointsToBlocks = (itemType, alreadyExplored = new Set()) => __awaiter(this, void 0, void 0, function* () {
481
+ if (alreadyExplored.has(itemType.id)) {
482
+ return false;
483
+ }
484
+ alreadyExplored.add(itemType.id);
485
+ const fields = yield this.getRawItemTypeFields(itemType);
486
+ for (const field of fields) {
487
+ const referencedBlockIds = blockModelIdsReferencedInField(field);
488
+ // Check if this field directly references any of our target blocks
489
+ if (referencedBlockIds.some((id) => blockIds.has(id))) {
490
+ return true;
491
+ }
492
+ // Check if this field references other block models that might transitively reference our targets
493
+ const referencedBlocks = referencedBlockIds.map((id) => allItemTypes.find((it) => it.id === id));
494
+ for (const linkedBlock of referencedBlocks) {
495
+ if (yield modelPointsToBlocks(linkedBlock, new Set(alreadyExplored))) {
496
+ return true;
497
+ }
498
+ }
499
+ }
500
+ return false;
501
+ });
502
+ // Check each model to see if it embeds any of the target blocks
503
+ for (const itemType of allItemTypes) {
504
+ if (yield modelPointsToBlocks(itemType)) {
505
+ embeddingModels.push(itemType);
506
+ }
507
+ }
508
+ return embeddingModels;
509
+ });
510
+ }
511
+ /**
512
+ * Gets all models that directly or indirectly embed the given block models.
513
+ * This method recursively traverses the schema to find all models that reference
514
+ * the provided blocks, either directly through block fields or indirectly through
515
+ * other block models that reference them.
516
+ *
517
+ * @param blocks - Array of block models to find references to
518
+ * @returns Promise that resolves to array of models that embed these blocks
519
+ */
520
+ getModelsEmbeddingBlocks(blocks) {
521
+ return __awaiter(this, void 0, void 0, function* () {
522
+ const rawResult = yield this.getRawModelsEmbeddingBlocks(blocks);
523
+ return deserializeResponseBody({
524
+ data: rawResult,
525
+ });
526
+ });
527
+ }
413
528
  }
414
529
  //# sourceMappingURL=schemaRepository.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemaRepository.js","sourceRoot":"","sources":["../../../src/utilities/schemaRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemaRepository.js","sourceRoot":"","sources":["../../../src/utilities/schemaRepository.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,14 @@ interface GenericClient {
24
24
  data: RawApiTypes.Plugin[];
25
25
  }>;
26
26
  };
27
+ site: {
28
+ rawFind(params: {
29
+ include: string;
30
+ }): Promise<{
31
+ data: any;
32
+ included?: Array<RawApiTypes.ItemType | RawApiTypes.Field | any>;
33
+ }>;
34
+ };
27
35
  }
28
36
  /**
29
37
  * Repository for DatoCMS schema entities including item types, fields, and plugins.
@@ -103,6 +111,7 @@ export declare class SchemaRepository {
103
111
  private pluginsPromise;
104
112
  private pluginsById;
105
113
  private pluginsByPackageName;
114
+ private prefetchPromise;
106
115
  /**
107
116
  * Creates a new SchemaRepository instance.
108
117
  * @param client - The DatoCMS client instance
@@ -244,5 +253,37 @@ export declare class SchemaRepository {
244
253
  * @throws Error if the plugin is not found
245
254
  */
246
255
  getRawPluginByPackageName(packageName: string): Promise<RawApiTypes.Plugin>;
256
+ /**
257
+ * Prefetches all models and their fields in a single optimized API call.
258
+ * This method populates the internal caches for both item types and fields,
259
+ * making subsequent lookups very fast without additional API calls.
260
+ *
261
+ * This is more efficient than lazy loading when you know you'll need access
262
+ * to multiple models and fields, as it reduces the number of API requests
263
+ * from potentially dozens down to just one.
264
+ *
265
+ * @returns Promise that resolves when all data has been fetched and cached
266
+ */
267
+ prefetchAllModelsAndFields(): Promise<void>;
268
+ /**
269
+ * Gets all models that directly or indirectly embed the given block models.
270
+ * This method recursively traverses the schema to find all models that reference
271
+ * the provided blocks, either directly through block fields or indirectly through
272
+ * other block models that reference them.
273
+ *
274
+ * @param blocks - Array of block models to find references to
275
+ * @returns Promise that resolves to array of models that embed these blocks
276
+ */
277
+ getRawModelsEmbeddingBlocks(blocks: Array<ApiTypes.ItemType | RawApiTypes.ItemType>): Promise<Array<RawApiTypes.ItemType>>;
278
+ /**
279
+ * Gets all models that directly or indirectly embed the given block models.
280
+ * This method recursively traverses the schema to find all models that reference
281
+ * the provided blocks, either directly through block fields or indirectly through
282
+ * other block models that reference them.
283
+ *
284
+ * @param blocks - Array of block models to find references to
285
+ * @returns Promise that resolves to array of models that embed these blocks
286
+ */
287
+ getModelsEmbeddingBlocks(blocks: Array<ApiTypes.ItemType | RawApiTypes.ItemType>): Promise<Array<ApiTypes.ItemType>>;
247
288
  }
248
289
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datocms/cma-client",
3
- "version": "5.1.13",
3
+ "version": "5.1.15",
4
4
  "description": "JS client for DatoCMS REST Content Management API",
5
5
  "keywords": [
6
6
  "datocms",
@@ -45,5 +45,5 @@
45
45
  "@datocms/dashboard-client": "^5.1.13",
46
46
  "@types/uuid": "^9.0.7"
47
47
  },
48
- "gitHead": "966b5835bf69f9e87b34f2075a8596c9208e07c0"
48
+ "gitHead": "e7e829e9d0b769c0cc309b02332516a853f18bb3"
49
49
  }
@@ -147,7 +147,7 @@ export class Client {
147
147
  ...this.config,
148
148
  ...options,
149
149
  logFn: this.config.logFn || console.log,
150
- userAgent: '@datocms/cma-client v5.1.13',
150
+ userAgent: '@datocms/cma-client v5.1.15',
151
151
  baseUrl: this.baseUrl,
152
152
  preCallStack: new Error().stack,
153
153
  extraHeaders: {
@@ -1,6 +1,7 @@
1
1
  import { deserializeResponseBody } from '@datocms/rest-client-utils';
2
2
  import type * as ApiTypes from '../generated/ApiTypes';
3
3
  import type * as RawApiTypes from '../generated/RawApiTypes';
4
+ import { blockModelIdsReferencedInField } from './fieldsContainingReferences';
4
5
 
5
6
  interface GenericClient {
6
7
  itemTypes: {
@@ -16,6 +17,12 @@ interface GenericClient {
16
17
  plugins: {
17
18
  rawList(): Promise<{ data: RawApiTypes.Plugin[] }>;
18
19
  };
20
+ site: {
21
+ rawFind(params: { include: string }): Promise<{
22
+ data: any;
23
+ included?: Array<RawApiTypes.ItemType | RawApiTypes.Field | any>;
24
+ }>;
25
+ };
19
26
  }
20
27
 
21
28
  /**
@@ -96,6 +103,7 @@ export class SchemaRepository {
96
103
  private pluginsPromise: Promise<RawApiTypes.Plugin[]> | null = null;
97
104
  private pluginsById: Map<string, RawApiTypes.Plugin> = new Map();
98
105
  private pluginsByPackageName: Map<string, RawApiTypes.Plugin> = new Map();
106
+ private prefetchPromise: Promise<void> | null = null;
99
107
 
100
108
  /**
101
109
  * Creates a new SchemaRepository instance.
@@ -437,4 +445,148 @@ export class SchemaRepository {
437
445
 
438
446
  return plugin;
439
447
  }
448
+
449
+ /**
450
+ * Prefetches all models and their fields in a single optimized API call.
451
+ * This method populates the internal caches for both item types and fields,
452
+ * making subsequent lookups very fast without additional API calls.
453
+ *
454
+ * This is more efficient than lazy loading when you know you'll need access
455
+ * to multiple models and fields, as it reduces the number of API requests
456
+ * from potentially dozens down to just one.
457
+ *
458
+ * @returns Promise that resolves when all data has been fetched and cached
459
+ */
460
+ async prefetchAllModelsAndFields(): Promise<void> {
461
+ if (this.prefetchPromise) {
462
+ return this.prefetchPromise;
463
+ }
464
+
465
+ const prefetch = async () => {
466
+ const { included } = await this.client.site.rawFind({
467
+ include: 'item_types,item_types.fields',
468
+ });
469
+
470
+ if (!included) {
471
+ throw new Error('This should not happen');
472
+ }
473
+
474
+ const allItemTypes = included.filter(
475
+ (item): item is RawApiTypes.ItemType => item.type === 'item_type',
476
+ );
477
+ const allFields = included.filter(
478
+ (item): item is RawApiTypes.Field => item.type === 'field',
479
+ );
480
+
481
+ // Populate item types caches
482
+ this.itemTypesPromise = Promise.resolve(allItemTypes);
483
+ for (const itemType of allItemTypes) {
484
+ this.itemTypesByApiKey.set(itemType.attributes.api_key, itemType);
485
+ this.itemTypesById.set(itemType.id, itemType);
486
+ }
487
+
488
+ // Group fields by item type and populate fields cache
489
+ const fieldsByItemTypeId = new Map<string, RawApiTypes.Field[]>();
490
+ for (const field of allFields) {
491
+ const itemTypeId = field.relationships.item_type.data.id;
492
+ if (!fieldsByItemTypeId.has(itemTypeId)) {
493
+ fieldsByItemTypeId.set(itemTypeId, []);
494
+ }
495
+ fieldsByItemTypeId.get(itemTypeId)!.push(field);
496
+ }
497
+
498
+ // Populate the fields cache
499
+ for (const [itemTypeId, fields] of fieldsByItemTypeId) {
500
+ this.fieldsByItemType.set(itemTypeId, fields);
501
+ }
502
+ };
503
+
504
+ this.prefetchPromise = prefetch();
505
+
506
+ return this.prefetchPromise;
507
+ }
508
+
509
+ /**
510
+ * Gets all models that directly or indirectly embed the given block models.
511
+ * This method recursively traverses the schema to find all models that reference
512
+ * the provided blocks, either directly through block fields or indirectly through
513
+ * other block models that reference them.
514
+ *
515
+ * @param blocks - Array of block models to find references to
516
+ * @returns Promise that resolves to array of models that embed these blocks
517
+ */
518
+ async getRawModelsEmbeddingBlocks(
519
+ blocks: Array<ApiTypes.ItemType | RawApiTypes.ItemType>,
520
+ ): Promise<Array<RawApiTypes.ItemType>> {
521
+ await this.prefetchAllModelsAndFields();
522
+
523
+ const allItemTypes = await this.getAllRawItemTypes();
524
+ const blockIds = new Set(blocks.map((block) => block.id));
525
+ const embeddingModels: Array<RawApiTypes.ItemType> = [];
526
+
527
+ // Helper function to check if a model points to any of the target blocks
528
+ const modelPointsToBlocks = async (
529
+ itemType: RawApiTypes.ItemType,
530
+ alreadyExplored: Set<string> = new Set(),
531
+ ): Promise<boolean> => {
532
+ if (alreadyExplored.has(itemType.id)) {
533
+ return false;
534
+ }
535
+
536
+ alreadyExplored.add(itemType.id);
537
+
538
+ const fields = await this.getRawItemTypeFields(itemType);
539
+
540
+ for (const field of fields) {
541
+ const referencedBlockIds = blockModelIdsReferencedInField(field);
542
+
543
+ // Check if this field directly references any of our target blocks
544
+ if (referencedBlockIds.some((id) => blockIds.has(id))) {
545
+ return true;
546
+ }
547
+
548
+ // Check if this field references other block models that might transitively reference our targets
549
+ const referencedBlocks = referencedBlockIds.map(
550
+ (id) => allItemTypes.find((it) => it.id === id)!,
551
+ );
552
+
553
+ for (const linkedBlock of referencedBlocks) {
554
+ if (
555
+ await modelPointsToBlocks(linkedBlock, new Set(alreadyExplored))
556
+ ) {
557
+ return true;
558
+ }
559
+ }
560
+ }
561
+
562
+ return false;
563
+ };
564
+
565
+ // Check each model to see if it embeds any of the target blocks
566
+ for (const itemType of allItemTypes) {
567
+ if (await modelPointsToBlocks(itemType)) {
568
+ embeddingModels.push(itemType);
569
+ }
570
+ }
571
+
572
+ return embeddingModels;
573
+ }
574
+
575
+ /**
576
+ * Gets all models that directly or indirectly embed the given block models.
577
+ * This method recursively traverses the schema to find all models that reference
578
+ * the provided blocks, either directly through block fields or indirectly through
579
+ * other block models that reference them.
580
+ *
581
+ * @param blocks - Array of block models to find references to
582
+ * @returns Promise that resolves to array of models that embed these blocks
583
+ */
584
+ async getModelsEmbeddingBlocks(
585
+ blocks: Array<ApiTypes.ItemType | RawApiTypes.ItemType>,
586
+ ): Promise<Array<ApiTypes.ItemType>> {
587
+ const rawResult = await this.getRawModelsEmbeddingBlocks(blocks);
588
+ return deserializeResponseBody<ApiTypes.ItemType[]>({
589
+ data: rawResult,
590
+ });
591
+ }
440
592
  }