@stackbit/cms-contentstack 0.2.5-develop.1 → 0.2.5-develop.3

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 (51) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contentstack-api-client.d.ts +2 -1
  3. package/dist/contentstack-api-client.d.ts.map +1 -1
  4. package/dist/contentstack-api-client.js +6 -0
  5. package/dist/contentstack-api-client.js.map +1 -1
  6. package/dist/contentstack-content-source.d.ts.map +1 -1
  7. package/dist/contentstack-content-source.js +25 -16
  8. package/dist/contentstack-content-source.js.map +1 -1
  9. package/dist/contentstack-conversion-utils.d.ts +41 -0
  10. package/dist/contentstack-conversion-utils.d.ts.map +1 -0
  11. package/dist/contentstack-conversion-utils.js +504 -0
  12. package/dist/contentstack-conversion-utils.js.map +1 -0
  13. package/dist/contentstack-entries-converter.d.ts.map +1 -1
  14. package/dist/contentstack-entries-converter.js +13 -0
  15. package/dist/contentstack-entries-converter.js.map +1 -1
  16. package/dist/contentstack-operation-converter.d.ts.map +1 -1
  17. package/dist/contentstack-operation-converter.js +37 -7
  18. package/dist/contentstack-operation-converter.js.map +1 -1
  19. package/dist/contentstack-schema-converter.d.ts +2 -1
  20. package/dist/contentstack-schema-converter.d.ts.map +1 -1
  21. package/dist/contentstack-schema-converter.js +29 -3
  22. package/dist/contentstack-schema-converter.js.map +1 -1
  23. package/dist/contentstack-types.d.ts +21 -0
  24. package/dist/contentstack-types.d.ts.map +1 -1
  25. package/dist/entries-converter.d.ts +10 -0
  26. package/dist/entries-converter.d.ts.map +1 -0
  27. package/dist/entries-converter.js +245 -0
  28. package/dist/entries-converter.js.map +1 -0
  29. package/dist/file-download.d.ts +2 -0
  30. package/dist/file-download.d.ts.map +1 -0
  31. package/dist/file-download.js +33 -0
  32. package/dist/file-download.js.map +1 -0
  33. package/dist/schema-converter.d.ts +3 -0
  34. package/dist/schema-converter.d.ts.map +1 -0
  35. package/dist/schema-converter.js +169 -0
  36. package/dist/schema-converter.js.map +1 -0
  37. package/dist/transformation-utils.d.ts +41 -0
  38. package/dist/transformation-utils.d.ts.map +1 -0
  39. package/dist/transformation-utils.js +730 -0
  40. package/dist/transformation-utils.js.map +1 -0
  41. package/dist/types.d.ts +120 -0
  42. package/dist/types.d.ts.map +1 -0
  43. package/dist/types.js +3 -0
  44. package/dist/types.js.map +1 -0
  45. package/package.json +3 -3
  46. package/src/contentstack-api-client.ts +8 -1
  47. package/src/contentstack-content-source.ts +25 -16
  48. package/src/contentstack-entries-converter.ts +13 -0
  49. package/src/contentstack-operation-converter.ts +42 -4
  50. package/src/contentstack-schema-converter.ts +37 -1
  51. package/src/contentstack-types.ts +31 -0
@@ -69,12 +69,19 @@ export function convertLocales({
69
69
  return locales;
70
70
  }
71
71
 
72
- export function convertModels({ contentStackModels }: { contentStackModels: (ContentType | GlobalField)[] }): ModelWithContext[] {
72
+ export function convertModels({
73
+ contentStackModels,
74
+ cloudinaryExtensionUID
75
+ }: {
76
+ contentStackModels: (ContentType | GlobalField)[];
77
+ cloudinaryExtensionUID: string | undefined;
78
+ }): ModelWithContext[] {
73
79
  const modelsToClone: CloneModelOptions[] = [];
74
80
  const models = contentStackModels.reduce((stackbitModels: ModelWithContext[], contentStackModel) => {
75
81
  const blockModels: ModelWithContext[] = [];
76
82
  const stackbitModel = convertModel({
77
83
  contentStackModel: contentStackModel,
84
+ cloudinaryExtensionUID,
78
85
  addBlockModel: (model: ModelWithContext) => {
79
86
  blockModels.push(model);
80
87
  },
@@ -117,11 +124,13 @@ export function convertModels({ contentStackModels }: { contentStackModels: (Con
117
124
 
118
125
  function convertModel({
119
126
  contentStackModel,
127
+ cloudinaryExtensionUID,
120
128
  addBlockModel,
121
129
  cloneModel,
122
130
  referencedIn
123
131
  }: {
124
132
  contentStackModel: ContentType | GlobalField;
133
+ cloudinaryExtensionUID: string | undefined;
125
134
  addBlockModel: AddBlockModel;
126
135
  cloneModel: CloneModel;
127
136
  referencedIn?: ReferencedIn;
@@ -140,6 +149,7 @@ function convertModel({
140
149
  parentModelName: contentStackModel.uid,
141
150
  isNested: !!referencedIn,
142
151
  fieldPath: [],
152
+ cloudinaryExtensionUID,
143
153
  addBlockMap: ({ blockFieldPath, modelName, blockUID }) => {
144
154
  if (!blockMap[blockFieldPath]) {
145
155
  blockMap[blockFieldPath] = {
@@ -168,6 +178,7 @@ function convertFields(options: {
168
178
  parentModelName: string;
169
179
  isNested: boolean;
170
180
  fieldPath: string[];
181
+ cloudinaryExtensionUID: string | undefined;
171
182
  addBlockMap: AddBlockMap;
172
183
  addBlockModel: AddBlockModel;
173
184
  cloneModel: CloneModel;
@@ -187,6 +198,7 @@ function convertField({
187
198
  parentModelName,
188
199
  isNested,
189
200
  fieldPath,
201
+ cloudinaryExtensionUID,
190
202
  addBlockMap,
191
203
  addBlockModel,
192
204
  cloneModel
@@ -195,6 +207,7 @@ function convertField({
195
207
  parentModelName: string;
196
208
  isNested: boolean;
197
209
  fieldPath: string[];
210
+ cloudinaryExtensionUID: string | undefined;
198
211
  addBlockMap: AddBlockMap;
199
212
  addBlockModel: AddBlockModel;
200
213
  cloneModel: CloneModel;
@@ -238,6 +251,27 @@ function convertField({
238
251
  return toFieldOrListField(field, {
239
252
  type: 'richText'
240
253
  });
254
+ } else if (field.field_metadata.extension && field.extension_uid === cloudinaryExtensionUID) {
255
+ // In Contentstack, custom Cloudinary images are always stored in arrays.
256
+ // If the custom cloudinary field is configured with "advanced.max_limit: 1",
257
+ // then treat it as a regular 'image' field. Otherwise, treat it as list of images.
258
+ const cloudinaryImageProps = {
259
+ type: 'image',
260
+ source: 'cloudinary'
261
+ } as const;
262
+ if (field.config?.advanced?.max_limit === 1) {
263
+ const commonProps = getStackbitFieldPropsFromContentStackField(field, false);
264
+ return {
265
+ ...cloudinaryImageProps,
266
+ ...commonProps
267
+ };
268
+ }
269
+ const commonProps = getStackbitFieldPropsFromContentStackField(field, true);
270
+ return {
271
+ type: 'list',
272
+ ...commonProps,
273
+ items: cloudinaryImageProps
274
+ };
241
275
  }
242
276
  return toFieldOrListField(field, {
243
277
  type: 'json'
@@ -309,6 +343,7 @@ function convertField({
309
343
  parentModelName: parentModelName,
310
344
  isNested,
311
345
  fieldPath,
346
+ cloudinaryExtensionUID,
312
347
  addBlockMap,
313
348
  addBlockModel,
314
349
  cloneModel
@@ -351,6 +386,7 @@ function convertField({
351
386
  } as GlobalField;
352
387
  const blockModel = convertModel({
353
388
  contentStackModel,
389
+ cloudinaryExtensionUID,
354
390
  addBlockModel,
355
391
  cloneModel,
356
392
  referencedIn: {
@@ -1,5 +1,6 @@
1
1
  import type { Stack as ContentStackStack } from '@contentstack/management/types/stack';
2
2
  import type { User as ContentStackUser } from '@contentstack/management/types/user';
3
+ import type { Extension as ContentStackExtension } from '@contentstack/management/types/stack/extension';
3
4
  import type { ContentType as ContentStackContentType } from '@contentstack/management/types/stack/contentType';
4
5
  import type { GlobalField as ContentStackGlobalField } from '@contentstack/management/types/stack/globalField';
5
6
  import type { Environment as ContentStackEnvironment } from '@contentstack/management/types/stack/environment';
@@ -34,6 +35,30 @@ export type User = ContentStackUser & {
34
35
  active?: boolean;
35
36
  };
36
37
 
38
+ // Extensions
39
+ // ==========
40
+
41
+ export type Extension = ContentStackExtension & {
42
+ uid: string;
43
+ urlPath?: string;
44
+ // e.g.: "Cloudinary"
45
+ title?: string;
46
+ app_installation_uid?: string;
47
+ app_uid?: string;
48
+ config?: any;
49
+ // e.g.: "field"
50
+ type?: string;
51
+ // e.g.: "json"
52
+ data_type?: string;
53
+ multiple?: boolean;
54
+ src?: string;
55
+ created_at?: string;
56
+ updated_at?: string;
57
+ signed?: boolean;
58
+ _version?: number;
59
+ _branch?: string;
60
+ };
61
+
37
62
  // Models
38
63
  // ======
39
64
 
@@ -104,11 +129,17 @@ export type ContentStackFieldCommon = {
104
129
  multiple: boolean;
105
130
  non_localizable: boolean;
106
131
  unique: boolean;
132
+ // extension uid (custom field id)
133
+ extension_uid?: string;
134
+ // extension config (custom field config)
135
+ config?: any;
107
136
  field_metadata: {
108
137
  description?: string;
109
138
  placeholder?: string;
110
139
  instruction?: string;
111
140
  default_value?: any;
141
+ // extension => custom field
142
+ extension?: boolean;
112
143
  };
113
144
  };
114
145