@stackbit/cms-core 0.1.1 → 0.1.3-alpha.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 (34) hide show
  1. package/dist/content-source-interface.d.ts +3 -11
  2. package/dist/content-source-interface.d.ts.map +1 -1
  3. package/dist/content-source-interface.js.map +1 -1
  4. package/dist/content-store-types.d.ts +15 -24
  5. package/dist/content-store-types.d.ts.map +1 -1
  6. package/dist/content-store-utils.d.ts +9 -0
  7. package/dist/content-store-utils.d.ts.map +1 -0
  8. package/dist/content-store-utils.js +139 -0
  9. package/dist/content-store-utils.js.map +1 -0
  10. package/dist/content-store.d.ts +0 -1
  11. package/dist/content-store.d.ts.map +1 -1
  12. package/dist/content-store.js +99 -945
  13. package/dist/content-store.js.map +1 -1
  14. package/dist/utils/create-update-csi-docs.d.ts +68 -0
  15. package/dist/utils/create-update-csi-docs.d.ts.map +1 -0
  16. package/dist/utils/create-update-csi-docs.js +376 -0
  17. package/dist/utils/create-update-csi-docs.js.map +1 -0
  18. package/dist/utils/csi-to-store-docs-converter.d.ts +15 -0
  19. package/dist/utils/csi-to-store-docs-converter.d.ts.map +1 -0
  20. package/dist/utils/csi-to-store-docs-converter.js +287 -0
  21. package/dist/utils/csi-to-store-docs-converter.js.map +1 -0
  22. package/dist/utils/store-to-api-docs-converter.d.ts +5 -0
  23. package/dist/utils/store-to-api-docs-converter.d.ts.map +1 -0
  24. package/dist/utils/store-to-api-docs-converter.js +247 -0
  25. package/dist/utils/store-to-api-docs-converter.js.map +1 -0
  26. package/package.json +4 -4
  27. package/src/content-source-interface.ts +4 -13
  28. package/src/content-store-types.ts +12 -10
  29. package/src/content-store-utils.ts +149 -0
  30. package/src/content-store.ts +57 -1073
  31. package/src/index.ts +1 -1
  32. package/src/utils/create-update-csi-docs.ts +440 -0
  33. package/src/utils/csi-to-store-docs-converter.ts +365 -0
  34. package/src/utils/store-to-api-docs-converter.ts +246 -0
@@ -0,0 +1,376 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.convertOperationField = exports.createDocumentRecursively = exports.getCreateDocumentThunk = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const slugify_1 = __importDefault(require("slugify"));
9
+ const utils_1 = require("@stackbit/utils");
10
+ function getCreateDocumentThunk({ csiModelMap, locale, userContext, contentSourceInstance }) {
11
+ return async ({ updateOperationFields, modelName }) => {
12
+ // When passing model and modelMap to contentSourceInstance, we have to pass
13
+ // the original models (i.e., csiModel and csiModelMap) that we've received
14
+ // from that contentSourceInstance. We can't pass internal models as they
15
+ // might
16
+ const csiModel = csiModelMap[modelName];
17
+ if (!csiModel) {
18
+ throw new Error(`no model with name '${modelName}' was found`);
19
+ }
20
+ return await contentSourceInstance.createDocument({
21
+ updateOperationFields: updateOperationFields,
22
+ model: csiModel,
23
+ modelMap: csiModelMap,
24
+ locale,
25
+ userContext
26
+ });
27
+ };
28
+ }
29
+ exports.getCreateDocumentThunk = getCreateDocumentThunk;
30
+ /**
31
+ * Receives a plain `object`, and creates a map of `CSITypes.UpdateOperationField`
32
+ * by recursively iterating the `object` fields. Then invokes the `createDocument`
33
+ * callback to delegate the creation if CSI document.
34
+ *
35
+ * If the `object` has fields of type `reference` or `model` with the special
36
+ * `$$type` property holding the model name of the nested object, this function
37
+ * will recursively create new documents and nested objects for these fields.
38
+ * Other fields of will be used to populate the fields of the new document or
39
+ * nested object.
40
+ *
41
+ * @example
42
+ * {
43
+ * title: 'hello world',
44
+ * button: {
45
+ * $$type: 'Button', // a new nested object of type Button will be
46
+ * label: 'Click me' // created with 'label' field set to 'Click me'
47
+ * }
48
+ * }
49
+ *
50
+ * If the `object` has fields of type `reference` or `image` with the special
51
+ * `$$ref` property holding an ID of an existing document, this function will
52
+ * link an existing documents or assets with that ID.
53
+ *
54
+ * @example
55
+ * {
56
+ * title: 'hello world',
57
+ * author: {
58
+ * $$ref: 'xyz' // the 'author' field will be linked to a document
59
+ * // with ID 'xyz'
60
+ * }
61
+ * }
62
+ *
63
+ * Returns an object with two fields:
64
+ * 1. `document` holding the created CSITypes.Document for the passed object.
65
+ * 2. `newRefDocuments` holding list of created CSITypes.Document that were
66
+ * created recursively for `reference` fields having the `$$type` property.
67
+ */
68
+ async function createDocumentRecursively({ object, modelName, modelMap, createDocument }) {
69
+ var _a;
70
+ const model = modelMap[modelName];
71
+ if (!model) {
72
+ throw new Error(`no model with name '${modelName}' was found`);
73
+ }
74
+ if (model.type === 'page') {
75
+ const tokens = extractTokensFromString(String(model.urlPath));
76
+ const slugField = lodash_1.default.last(tokens);
77
+ if (object && slugField && slugField in object) {
78
+ const slugFieldValue = object[slugField];
79
+ object[slugField] = sanitizeSlug(slugFieldValue);
80
+ }
81
+ }
82
+ const nestedResult = await createNestedObjectRecursively({
83
+ object,
84
+ modelFields: (_a = model.fields) !== null && _a !== void 0 ? _a : [],
85
+ fieldPath: [],
86
+ modelMap,
87
+ createDocument
88
+ });
89
+ const document = await createDocument({
90
+ updateOperationFields: nestedResult.fields,
91
+ modelName: modelName
92
+ });
93
+ return {
94
+ document: document,
95
+ newRefDocuments: nestedResult.newRefDocuments
96
+ };
97
+ }
98
+ exports.createDocumentRecursively = createDocumentRecursively;
99
+ function extractTokensFromString(input) {
100
+ return input.match(/(?<={)[^}]+(?=})/g) || [];
101
+ }
102
+ function sanitizeSlug(slug) {
103
+ return slug
104
+ .split('/')
105
+ .map((part) => (0, slugify_1.default)(part, { lower: true }))
106
+ .join('/');
107
+ }
108
+ async function createNestedObjectRecursively({ object, modelFields, fieldPath, modelMap, createDocument }) {
109
+ object = object !== null && object !== void 0 ? object : {};
110
+ const result = {
111
+ fields: {},
112
+ newRefDocuments: []
113
+ };
114
+ const objectFieldNames = Object.keys(object);
115
+ for (const modelField of modelFields) {
116
+ const fieldName = modelField.name;
117
+ let value;
118
+ if (fieldName in object) {
119
+ value = object[fieldName];
120
+ lodash_1.default.pull(objectFieldNames, fieldName);
121
+ }
122
+ else if (modelField.const) {
123
+ value = modelField.const;
124
+ }
125
+ else if (!lodash_1.default.isNil(modelField.default)) {
126
+ value = modelField.default;
127
+ }
128
+ if (!lodash_1.default.isNil(value)) {
129
+ const fieldResult = await createNestedField({
130
+ value,
131
+ modelField,
132
+ fieldPath: fieldPath.concat(fieldName),
133
+ modelMap,
134
+ createDocument
135
+ });
136
+ result.fields[fieldName] = fieldResult.field;
137
+ result.newRefDocuments = result.newRefDocuments.concat(fieldResult.newRefDocuments);
138
+ }
139
+ }
140
+ if (objectFieldNames.length > 0) {
141
+ throw new Error(`no model fields found when creating a document with fields: '${objectFieldNames.join(', ')}'`);
142
+ }
143
+ return result;
144
+ }
145
+ async function createNestedField({ value, modelField, fieldPath, modelMap, createDocument }) {
146
+ var _a;
147
+ if (modelField.type === 'object') {
148
+ const result = await createNestedObjectRecursively({
149
+ object: value,
150
+ modelFields: modelField.fields,
151
+ fieldPath,
152
+ modelMap,
153
+ createDocument
154
+ });
155
+ return {
156
+ field: {
157
+ type: 'object',
158
+ fields: result.fields
159
+ },
160
+ newRefDocuments: result.newRefDocuments
161
+ };
162
+ }
163
+ else if (modelField.type === 'model') {
164
+ let { $$type, ...rest } = value;
165
+ const modelNames = modelField.models;
166
+ // for backward compatibility check if the object has 'type' instead of '$$type' because older projects use
167
+ // the 'type' property in default values
168
+ if (!$$type && 'type' in rest) {
169
+ $$type = rest.type;
170
+ rest = lodash_1.default.omit(rest, 'type');
171
+ }
172
+ const modelName = $$type !== null && $$type !== void 0 ? $$type : (modelNames.length === 1 ? modelNames[0] : null);
173
+ if (!modelName) {
174
+ throw new Error(`no $$type was specified for nested model`);
175
+ }
176
+ const model = modelMap[modelName];
177
+ if (!model) {
178
+ throw new Error(`no model with name '${modelName}' was found`);
179
+ }
180
+ const result = await createNestedObjectRecursively({
181
+ object: rest,
182
+ modelFields: (_a = model.fields) !== null && _a !== void 0 ? _a : [],
183
+ fieldPath,
184
+ modelMap,
185
+ createDocument
186
+ });
187
+ return {
188
+ field: {
189
+ type: 'model',
190
+ modelName: modelName,
191
+ fields: result.fields
192
+ },
193
+ newRefDocuments: result.newRefDocuments
194
+ };
195
+ }
196
+ else if (modelField.type === 'image') {
197
+ let refId;
198
+ if (lodash_1.default.isPlainObject(value)) {
199
+ refId = value.$$ref;
200
+ }
201
+ else {
202
+ refId = value;
203
+ }
204
+ if (!refId) {
205
+ throw new Error(`reference field must specify a value`);
206
+ }
207
+ return {
208
+ field: {
209
+ type: 'reference',
210
+ refType: 'asset',
211
+ refId: refId
212
+ },
213
+ newRefDocuments: []
214
+ };
215
+ }
216
+ else if (modelField.type === 'reference') {
217
+ let { $$ref: refId = null, $$type: modelName = null, ...rest } = lodash_1.default.isPlainObject(value) ? value : { $$ref: value };
218
+ if (refId) {
219
+ return {
220
+ field: {
221
+ type: 'reference',
222
+ refType: 'document',
223
+ refId: refId
224
+ },
225
+ newRefDocuments: []
226
+ };
227
+ }
228
+ else {
229
+ const modelNames = modelField.models;
230
+ if (!modelName) {
231
+ // for backward compatibility check if the object has 'type' instead of '$$type' because older projects use
232
+ // the 'type' property in default values
233
+ if ('type' in rest) {
234
+ modelName = rest.type;
235
+ rest = lodash_1.default.omit(rest, 'type');
236
+ }
237
+ else if (modelNames.length === 1) {
238
+ modelName = modelNames[0];
239
+ }
240
+ }
241
+ const { document, newRefDocuments } = await createDocumentRecursively({
242
+ object: rest,
243
+ modelName,
244
+ modelMap,
245
+ createDocument
246
+ });
247
+ return {
248
+ field: {
249
+ type: 'reference',
250
+ refType: 'document',
251
+ refId: document.id
252
+ },
253
+ newRefDocuments: [document, ...newRefDocuments]
254
+ };
255
+ }
256
+ }
257
+ else if (modelField.type === 'list') {
258
+ if (!Array.isArray(value)) {
259
+ throw new Error(`value for list field must be array`);
260
+ }
261
+ const itemsField = modelField.items;
262
+ if (!itemsField) {
263
+ throw new Error(`list field does not define items`);
264
+ }
265
+ const arrayResult = await (0, utils_1.mapPromise)(value, async (item, index) => {
266
+ return createNestedField({
267
+ value: item,
268
+ modelField: itemsField,
269
+ fieldPath: fieldPath.concat(index),
270
+ modelMap,
271
+ createDocument
272
+ });
273
+ });
274
+ return {
275
+ field: {
276
+ type: 'list',
277
+ items: arrayResult.map((result) => result.field)
278
+ },
279
+ newRefDocuments: arrayResult.reduce((result, { newRefDocuments }) => result.concat(newRefDocuments), [])
280
+ };
281
+ }
282
+ return {
283
+ field: {
284
+ type: modelField.type,
285
+ value: value
286
+ },
287
+ newRefDocuments: []
288
+ };
289
+ }
290
+ async function convertOperationField({ operationField, fieldPath, modelField, modelMap, createDocument }) {
291
+ // for insert operations, the modelField will be of the list, so get the modelField of the list items
292
+ const modelFieldOrListItems = modelField.type === 'list' ? modelField.items : modelField;
293
+ switch (operationField.type) {
294
+ case 'object': {
295
+ const result = await createNestedObjectRecursively({
296
+ object: operationField.object,
297
+ modelFields: modelFieldOrListItems.fields,
298
+ fieldPath: fieldPath,
299
+ modelMap,
300
+ createDocument
301
+ });
302
+ return {
303
+ type: operationField.type,
304
+ fields: result.fields
305
+ };
306
+ }
307
+ case 'model': {
308
+ const model = modelMap[operationField.modelName];
309
+ if (!model) {
310
+ throw new Error(`error updating document, could not find document model: '${operationField.modelName}'`);
311
+ }
312
+ const result = await createNestedObjectRecursively({
313
+ object: operationField.object,
314
+ modelFields: model.fields,
315
+ fieldPath,
316
+ modelMap,
317
+ createDocument
318
+ });
319
+ return {
320
+ type: operationField.type,
321
+ modelName: operationField.modelName,
322
+ fields: result.fields
323
+ };
324
+ }
325
+ case 'list': {
326
+ if (modelField.type !== 'list') {
327
+ throw new Error(`'the operation field type '${operationField.type}' does not match the model field type '${modelField.type}'`);
328
+ }
329
+ const result = await (0, utils_1.mapPromise)(operationField.items, async (item) => {
330
+ const result = await createNestedField({
331
+ value: item,
332
+ modelField: modelField.items,
333
+ fieldPath,
334
+ modelMap,
335
+ createDocument
336
+ });
337
+ return result.field;
338
+ });
339
+ return {
340
+ type: operationField.type,
341
+ items: result
342
+ };
343
+ }
344
+ case 'string':
345
+ // When inserting new string value into a list, the client does not
346
+ // send value. Set an empty string value.
347
+ if (typeof operationField.value !== 'string') {
348
+ return {
349
+ type: operationField.type,
350
+ value: ''
351
+ };
352
+ }
353
+ return operationField;
354
+ case 'enum':
355
+ // When inserting new enum value into a list, the client does not
356
+ // send value. Set first option as the value.
357
+ if (typeof operationField.value !== 'string') {
358
+ if (modelFieldOrListItems.type !== 'enum') {
359
+ throw new Error(`'the operation field type 'enum' does not match the model field type '${modelFieldOrListItems.type}'`);
360
+ }
361
+ const option = modelFieldOrListItems.options[0];
362
+ const optionValue = typeof option === 'object' ? option.value : option;
363
+ return {
364
+ type: operationField.type,
365
+ value: optionValue
366
+ };
367
+ }
368
+ return operationField;
369
+ case 'image':
370
+ return operationField;
371
+ default:
372
+ return operationField;
373
+ }
374
+ }
375
+ exports.convertOperationField = convertOperationField;
376
+ //# sourceMappingURL=create-update-csi-docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-update-csi-docs.js","sourceRoot":"","sources":["../../src/utils/create-update-csi-docs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { Model } from '@stackbit/sdk';
2
+ import * as CSITypes from '../content-source-interface';
3
+ import * as ContentStoreTypes from '../content-store-types';
4
+ export declare function mapCSIAssetsToStoreAssets({ csiAssets, contentSourceInstance, defaultLocaleCode }: {
5
+ csiAssets: CSITypes.Asset[];
6
+ contentSourceInstance: CSITypes.ContentSourceInterface;
7
+ defaultLocaleCode?: string;
8
+ }): ContentStoreTypes.Asset[];
9
+ export declare function mapCSIDocumentsToStoreDocuments({ csiDocuments, contentSourceInstance, modelMap, defaultLocaleCode }: {
10
+ csiDocuments: CSITypes.Document[];
11
+ contentSourceInstance: CSITypes.ContentSourceInterface;
12
+ modelMap: Record<string, Model>;
13
+ defaultLocaleCode?: string;
14
+ }): ContentStoreTypes.Document[];
15
+ //# sourceMappingURL=csi-to-store-docs-converter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csi-to-store-docs-converter.d.ts","sourceRoot":"","sources":["../../src/utils/csi-to-store-docs-converter.ts"],"names":[],"mappings":"AACA,OAAO,EAAgF,KAAK,EAAE,MAAM,eAAe,CAAC;AAEpH,OAAO,KAAK,QAAQ,MAAM,6BAA6B,CAAC;AACxD,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAC;AAG5D,wBAAgB,yBAAyB,CAAC,EACtC,SAAS,EACT,qBAAqB,EACrB,iBAAiB,EACpB,EAAE;IACC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC5B,qBAAqB,EAAE,QAAQ,CAAC,sBAAsB,CAAC;IACvD,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B,GAAG,iBAAiB,CAAC,KAAK,EAAE,CAS5B;AAsCD,wBAAgB,+BAA+B,CAAC,EAC5C,YAAY,EACZ,qBAAqB,EACrB,QAAQ,EACR,iBAAiB,EACpB,EAAE;IACC,YAAY,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAClC,qBAAqB,EAAE,QAAQ,CAAC,sBAAsB,CAAC;IACvD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAW/B"}