@stackbit/cms-contentstack 0.1.1-staging.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 (72) hide show
  1. package/README.md +1 -0
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/contentstack-api-client.d.ts +63 -0
  4. package/dist/contentstack-api-client.d.ts.map +1 -0
  5. package/dist/contentstack-api-client.js +295 -0
  6. package/dist/contentstack-api-client.js.map +1 -0
  7. package/dist/contentstack-content-poller.d.ts +46 -0
  8. package/dist/contentstack-content-poller.d.ts.map +1 -0
  9. package/dist/contentstack-content-poller.js +111 -0
  10. package/dist/contentstack-content-poller.js.map +1 -0
  11. package/dist/contentstack-content-source.d.ts +138 -0
  12. package/dist/contentstack-content-source.d.ts.map +1 -0
  13. package/dist/contentstack-content-source.js +544 -0
  14. package/dist/contentstack-content-source.js.map +1 -0
  15. package/dist/contentstack-conversion-utils.d.ts +41 -0
  16. package/dist/contentstack-conversion-utils.d.ts.map +1 -0
  17. package/dist/contentstack-conversion-utils.js +504 -0
  18. package/dist/contentstack-conversion-utils.js.map +1 -0
  19. package/dist/contentstack-entries-converter.d.ts +39 -0
  20. package/dist/contentstack-entries-converter.d.ts.map +1 -0
  21. package/dist/contentstack-entries-converter.js +333 -0
  22. package/dist/contentstack-entries-converter.js.map +1 -0
  23. package/dist/contentstack-operation-converter.d.ts +42 -0
  24. package/dist/contentstack-operation-converter.d.ts.map +1 -0
  25. package/dist/contentstack-operation-converter.js +535 -0
  26. package/dist/contentstack-operation-converter.js.map +1 -0
  27. package/dist/contentstack-schema-converter.d.ts +26 -0
  28. package/dist/contentstack-schema-converter.d.ts.map +1 -0
  29. package/dist/contentstack-schema-converter.js +379 -0
  30. package/dist/contentstack-schema-converter.js.map +1 -0
  31. package/dist/contentstack-types.d.ts +429 -0
  32. package/dist/contentstack-types.d.ts.map +1 -0
  33. package/dist/contentstack-types.js +3 -0
  34. package/dist/contentstack-types.js.map +1 -0
  35. package/dist/contentstack-utils.d.ts +31 -0
  36. package/dist/contentstack-utils.d.ts.map +1 -0
  37. package/dist/contentstack-utils.js +144 -0
  38. package/dist/contentstack-utils.js.map +1 -0
  39. package/dist/entries-converter.d.ts +10 -0
  40. package/dist/entries-converter.d.ts.map +1 -0
  41. package/dist/entries-converter.js +245 -0
  42. package/dist/entries-converter.js.map +1 -0
  43. package/dist/file-download.d.ts +2 -0
  44. package/dist/file-download.d.ts.map +1 -0
  45. package/dist/file-download.js +33 -0
  46. package/dist/file-download.js.map +1 -0
  47. package/dist/index.d.ts +4 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +14 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/schema-converter.d.ts +3 -0
  52. package/dist/schema-converter.d.ts.map +1 -0
  53. package/dist/schema-converter.js +169 -0
  54. package/dist/schema-converter.js.map +1 -0
  55. package/dist/transformation-utils.d.ts +41 -0
  56. package/dist/transformation-utils.d.ts.map +1 -0
  57. package/dist/transformation-utils.js +730 -0
  58. package/dist/transformation-utils.js.map +1 -0
  59. package/dist/types.d.ts +120 -0
  60. package/dist/types.d.ts.map +1 -0
  61. package/dist/types.js +3 -0
  62. package/dist/types.js.map +1 -0
  63. package/package.json +44 -0
  64. package/src/contentstack-api-client.ts +330 -0
  65. package/src/contentstack-content-poller.ts +157 -0
  66. package/src/contentstack-content-source.ts +687 -0
  67. package/src/contentstack-entries-converter.ts +438 -0
  68. package/src/contentstack-operation-converter.ts +703 -0
  69. package/src/contentstack-schema-converter.ts +486 -0
  70. package/src/contentstack-types.ts +527 -0
  71. package/src/contentstack-utils.ts +174 -0
  72. package/src/index.ts +3 -0
@@ -0,0 +1,379 @@
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.convertModels = exports.convertLocales = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ function convertLocales({ contentStackLocales, masterLocale, logger }) {
9
+ const locales = contentStackLocales.map((locale) => ({ code: locale.code }));
10
+ if (masterLocale) {
11
+ const defaultLocale = locales.find((locale) => locale.code === masterLocale);
12
+ if (defaultLocale) {
13
+ defaultLocale.default = true;
14
+ }
15
+ else {
16
+ throw new Error(`The 'masterLocale' '${masterLocale}' provided to ContentStackSource constructor ` +
17
+ `does not match any locale code: [${locales.map((locale) => locale.code).join(', ')}]`);
18
+ }
19
+ }
20
+ else if (locales.length === 1) {
21
+ logger.info(`The Contentstack stack has a single '${locales[0].code}' locale, using it as master locale`);
22
+ locales[0].default = true;
23
+ }
24
+ else {
25
+ throw new Error(`Stack has multiple locales: [${locales.map((locale) => locale.code).join(', ')}], ` +
26
+ `please specify which one should be used as the master locale using the 'masterLocale' property ` +
27
+ `in the ContentStackSource constructor options`);
28
+ }
29
+ return locales;
30
+ }
31
+ exports.convertLocales = convertLocales;
32
+ function convertModels({ contentStackModels }) {
33
+ const modelsToClone = [];
34
+ const models = contentStackModels.reduce((stackbitModels, contentStackModel) => {
35
+ const blockModels = [];
36
+ const stackbitModel = convertModel({
37
+ contentStackModel: contentStackModel,
38
+ addBlockModel: (model) => {
39
+ blockModels.push(model);
40
+ },
41
+ cloneModel: (options) => {
42
+ modelsToClone.push(options);
43
+ }
44
+ });
45
+ return stackbitModels.concat(stackbitModel, blockModels);
46
+ }, []);
47
+ const modelMap = lodash_1.default.keyBy(models, 'name');
48
+ const clonedModels = modelsToClone.map((options) => {
49
+ const model = modelMap[options.origModelUID];
50
+ if (!model) {
51
+ throw new Error(`could not clone model, model ${options.origModelUID} not found`);
52
+ }
53
+ return {
54
+ ...model,
55
+ name: options.newModelName,
56
+ label: options.label,
57
+ context: lodash_1.default.omitBy({
58
+ clonedFromModel: options.origModelUID,
59
+ referencedIn: options.referencedIn
60
+ }, lodash_1.default.isNil)
61
+ };
62
+ });
63
+ const linkModel = {
64
+ type: 'object',
65
+ name: 'CNTSTK_LINK_MODEL',
66
+ label: 'Link',
67
+ fields: [
68
+ { type: 'string', name: 'title', label: 'Title', default: '' },
69
+ { type: 'string', name: 'href', label: 'URL', default: '' }
70
+ ]
71
+ };
72
+ return [...models, ...clonedModels, linkModel];
73
+ }
74
+ exports.convertModels = convertModels;
75
+ function convertModel({ contentStackModel, addBlockModel, cloneModel, referencedIn }) {
76
+ var _a, _b;
77
+ const blockMap = {};
78
+ const isContentType = 'options' in contentStackModel;
79
+ return {
80
+ type: isContentType ? (((_a = contentStackModel.options) === null || _a === void 0 ? void 0 : _a.is_page) ? 'page' : 'data') : 'object',
81
+ name: contentStackModel.uid,
82
+ label: contentStackModel.title,
83
+ ...(lodash_1.default.isEmpty(contentStackModel.description) ? null : { description: contentStackModel.description }),
84
+ ...(isContentType ? { labelField: 'title' } : null),
85
+ ...(isContentType && ((_b = contentStackModel.options) === null || _b === void 0 ? void 0 : _b.singleton) ? { singleInstance: true } : null),
86
+ fields: convertFields({
87
+ contentStackFields: contentStackModel.schema,
88
+ parentModelName: contentStackModel.uid,
89
+ isNested: !!referencedIn,
90
+ fieldPath: [],
91
+ addBlockMap: ({ blockFieldPath, modelName, blockUID }) => {
92
+ if (!blockMap[blockFieldPath]) {
93
+ blockMap[blockFieldPath] = {
94
+ modelNameToBlockId: {},
95
+ blockIdToModelName: {}
96
+ };
97
+ }
98
+ blockMap[blockFieldPath].modelNameToBlockId[modelName] = blockUID;
99
+ blockMap[blockFieldPath].blockIdToModelName[blockUID] = modelName;
100
+ },
101
+ addBlockModel,
102
+ cloneModel
103
+ }),
104
+ context: lodash_1.default.omitBy({
105
+ ...(lodash_1.default.isEmpty(blockMap) ? null : { blockMap }),
106
+ referencedIn
107
+ }, lodash_1.default.isNil)
108
+ };
109
+ }
110
+ function convertFields(options) {
111
+ const { contentStackFields, fieldPath, ...rest } = options;
112
+ return contentStackFields.map((field) => convertField({
113
+ field,
114
+ fieldPath: fieldPath.concat(field.uid),
115
+ ...rest
116
+ }));
117
+ }
118
+ function convertField({ field, parentModelName, isNested, fieldPath, addBlockMap, addBlockModel, cloneModel }) {
119
+ var _a, _b, _c, _d, _e, _f, _g;
120
+ switch (field.data_type) {
121
+ case 'text': {
122
+ if ((_a = field.field_metadata) === null || _a === void 0 ? void 0 : _a.multiline) {
123
+ return toFieldOrListField(field, {
124
+ type: 'text'
125
+ });
126
+ }
127
+ else if ((_b = field.field_metadata) === null || _b === void 0 ? void 0 : _b.markdown) {
128
+ return toFieldOrListField(field, {
129
+ type: 'markdown'
130
+ });
131
+ }
132
+ else if ((_c = field.field_metadata) === null || _c === void 0 ? void 0 : _c.allow_rich_text) {
133
+ return toFieldOrListField(field, {
134
+ // Stackbit doesn't support HTML editor
135
+ // type: 'html'
136
+ type: 'text'
137
+ });
138
+ }
139
+ else if (field.enum) {
140
+ return toEnumField(field);
141
+ }
142
+ else if (field.uid === 'slug' || (field.uid === 'url' && ((_d = field.field_metadata) === null || _d === void 0 ? void 0 : _d._default) === true)) {
143
+ return toFieldOrListField(field, {
144
+ type: 'slug'
145
+ });
146
+ }
147
+ else {
148
+ return toFieldOrListField(field, {
149
+ type: 'string'
150
+ });
151
+ }
152
+ }
153
+ case 'boolean':
154
+ return toFieldOrListField(field, {
155
+ type: 'boolean'
156
+ });
157
+ case 'json':
158
+ if ((_e = field.field_metadata) === null || _e === void 0 ? void 0 : _e.allow_json_rte) {
159
+ return toFieldOrListField(field, {
160
+ type: 'richText'
161
+ });
162
+ }
163
+ return toFieldOrListField(field, {
164
+ type: 'json'
165
+ });
166
+ case 'file':
167
+ return toFieldOrListField(field, {
168
+ type: ((_f = field.field_metadata) === null || _f === void 0 ? void 0 : _f.image) ? 'image' : 'file'
169
+ });
170
+ case 'isodate': {
171
+ const fieldType = ((_g = field.field_metadata) === null || _g === void 0 ? void 0 : _g.hide_time) ? 'date' : 'datetime';
172
+ return toFieldOrListField(field, {
173
+ type: fieldType
174
+ }, (defaultValue) => {
175
+ if ((defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.custom) && (defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.date)) {
176
+ if (fieldType === 'datetime' && (defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.time)) {
177
+ return new Date(`${defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.date}T${defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.time}`).toISOString();
178
+ }
179
+ else {
180
+ return defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.date;
181
+ }
182
+ }
183
+ return undefined;
184
+ });
185
+ }
186
+ case 'number': {
187
+ if (field.enum) {
188
+ return toEnumField(field);
189
+ }
190
+ const min = !lodash_1.default.isNil(field.min) ? { min: field.min } : null;
191
+ const max = !lodash_1.default.isNil(field.max) ? { max: field.max } : null;
192
+ return toFieldOrListField(field, {
193
+ type: 'number',
194
+ ...min,
195
+ ...max
196
+ });
197
+ }
198
+ case 'link': {
199
+ return toFieldOrListField(field, {
200
+ type: 'model',
201
+ models: ['CNTSTK_LINK_MODEL']
202
+ }, (value) => {
203
+ // rewrite url property to href
204
+ if (!value) {
205
+ return value;
206
+ }
207
+ const { url, ...rest } = value;
208
+ return {
209
+ ...rest,
210
+ href: url
211
+ };
212
+ });
213
+ }
214
+ case 'group': {
215
+ return toFieldOrListField(field, {
216
+ type: 'object',
217
+ fields: convertFields({
218
+ contentStackFields: field.schema,
219
+ parentModelName: parentModelName,
220
+ isNested,
221
+ fieldPath,
222
+ addBlockMap,
223
+ addBlockModel,
224
+ cloneModel
225
+ })
226
+ });
227
+ }
228
+ case 'global_field': {
229
+ // ContentStack global fields can only reference one model
230
+ return toFieldOrListField(field, {
231
+ type: 'model',
232
+ models: field.reference_to ? [field.reference_to] : []
233
+ });
234
+ }
235
+ case 'reference': {
236
+ // in reference fields, the "field_metadata.ref_multiple" is responsible for marking the field as list, not "multiple".
237
+ return toFieldOrListField(field, {
238
+ type: 'reference',
239
+ models: field.reference_to || []
240
+ });
241
+ }
242
+ case 'blocks': {
243
+ const commonProps = getStackbitFieldPropsFromContentStackField(field, true);
244
+ // blocks, are always lists
245
+ const referencedModelCountMap = {};
246
+ return {
247
+ type: 'list',
248
+ ...commonProps,
249
+ items: {
250
+ type: 'model',
251
+ models: field.blocks.map((block) => {
252
+ const modelName = `${isNested ? '' : 'BLOCK_'}${parentModelName}__${fieldPath.length ? fieldPath.join('.') + '__' : ''}${block.uid}`;
253
+ if ('schema' in block) {
254
+ const contentStackModel = {
255
+ uid: modelName,
256
+ title: block.title,
257
+ schema: block.schema
258
+ };
259
+ const blockModel = convertModel({
260
+ contentStackModel,
261
+ addBlockModel,
262
+ cloneModel,
263
+ referencedIn: {
264
+ modelName: parentModelName,
265
+ fieldPath: fieldPath.join('.'),
266
+ blockUID: block.uid
267
+ }
268
+ });
269
+ addBlockModel(blockModel);
270
+ addBlockMap({ blockFieldPath: fieldPath.join('.'), modelName, blockUID: block.uid });
271
+ return modelName;
272
+ }
273
+ else if ('reference_to' in block) {
274
+ // Blocks can reference the same global field in different blocks (with different uid)
275
+ // If the referenced global field (object model) is defined only in one block,
276
+ // then don't create a new model and reuse the referenced model. Add a map entry between
277
+ // the block's uid and the model's name, so when a new object is added to this field,
278
+ // we will know to which block uid to assign.
279
+ if (typeof referencedModelCountMap[block.reference_to] === 'undefined') {
280
+ referencedModelCountMap[block.reference_to] = 1;
281
+ }
282
+ else {
283
+ referencedModelCountMap[block.reference_to] += 1;
284
+ }
285
+ if (referencedModelCountMap[block.reference_to] === 1) {
286
+ addBlockMap({ blockFieldPath: fieldPath.join('.'), modelName: block.reference_to, blockUID: block.uid });
287
+ return block.reference_to;
288
+ }
289
+ else {
290
+ // If the referenced global field is used more than once, then create a new model
291
+ // by cloning the original model and ad a mao entry between the block's uid and the
292
+ // cloned model name.
293
+ cloneModel({
294
+ origModelUID: block.reference_to,
295
+ newModelName: modelName,
296
+ label: block.title,
297
+ referencedIn: {
298
+ modelName: parentModelName,
299
+ fieldPath: fieldPath.join('.'),
300
+ blockUID: block.uid
301
+ }
302
+ });
303
+ addBlockMap({ blockFieldPath: fieldPath.join('.'), modelName, blockUID: block.uid });
304
+ return modelName;
305
+ }
306
+ }
307
+ else {
308
+ throw new Error(`block doesn't have 'schema' nor 'reference_to'`);
309
+ }
310
+ })
311
+ }
312
+ };
313
+ }
314
+ default: {
315
+ const _exhaustiveCheck = field;
316
+ return _exhaustiveCheck;
317
+ }
318
+ }
319
+ }
320
+ function toEnumField(field) {
321
+ const isList = field.multiple;
322
+ const commonProps = getStackbitFieldPropsFromContentStackField(field, isList);
323
+ const options = field.enum.advanced
324
+ ? field.enum.choices.map((choice) => ({ label: choice.key, value: choice.value }))
325
+ : field.enum.choices.map((choice) => choice.value);
326
+ if (isList) {
327
+ return {
328
+ type: 'list',
329
+ ...commonProps,
330
+ ...(field.display_type === 'checkbox' ? { controlType: 'checkbox' } : null),
331
+ items: {
332
+ type: 'enum',
333
+ options
334
+ }
335
+ };
336
+ }
337
+ else {
338
+ return {
339
+ type: 'enum',
340
+ ...commonProps,
341
+ controlType: field.display_type === 'radio' ? 'button-group' : 'dropdown',
342
+ options: options
343
+ };
344
+ }
345
+ }
346
+ function toFieldOrListField(field, fieldSpecificProps, resolveDefault) {
347
+ var _a;
348
+ // In reference fields, the "field_metadata.ref_multiple" is responsible for marking the field as list, not "multiple".
349
+ const isList = field.data_type === 'reference' ? (_a = field.field_metadata) === null || _a === void 0 ? void 0 : _a.ref_multiple : field.multiple;
350
+ // In lists resolve defaults to a list with a single value
351
+ const commonProps = getStackbitFieldPropsFromContentStackField(field, isList, resolveDefault);
352
+ if (isList) {
353
+ return {
354
+ type: 'list',
355
+ ...commonProps,
356
+ items: fieldSpecificProps
357
+ };
358
+ }
359
+ return {
360
+ ...fieldSpecificProps,
361
+ ...commonProps
362
+ };
363
+ }
364
+ function getStackbitFieldPropsFromContentStackField(field, isList, resolveDefault) {
365
+ var _a, _b;
366
+ const description = (_a = field.field_metadata) === null || _a === void 0 ? void 0 : _a.description;
367
+ const defaultValue = (_b = field.field_metadata) === null || _b === void 0 ? void 0 : _b.default_value;
368
+ const resolvedDefault = defaultValue === null || defaultValue === '' ? undefined : resolveDefault ? resolveDefault(defaultValue) : defaultValue;
369
+ return {
370
+ name: field.uid,
371
+ label: field.display_name,
372
+ ...lodash_1.default.omitBy({
373
+ description: description || undefined,
374
+ required: field.mandatory || undefined,
375
+ default: !lodash_1.default.isNil(resolvedDefault) && isList ? [resolvedDefault] : resolvedDefault
376
+ }, lodash_1.default.isNil)
377
+ };
378
+ }
379
+ //# sourceMappingURL=contentstack-schema-converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contentstack-schema-converter.js","sourceRoot":"","sources":["../src/contentstack-schema-converter.ts"],"names":[],"mappings":"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"}