@builttocreate/engine-utils 2.11.0-beta.v1364.0 → 3.0.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 (2) hide show
  1. package/dist/joyDocHelper.js +30 -109
  2. package/package.json +2 -1
@@ -83,7 +83,8 @@ var getDefaultJoyDoc = exports.getDefaultJoyDoc = function getDefaultJoyDoc() {
83
83
  identifier: "doc_".concat(id),
84
84
  name: 'New Doc',
85
85
  files: [getDefaultJoyDocFile(fileDefaults, pageDefaults)],
86
- fields: []
86
+ fields: [],
87
+ formulas: []
87
88
  }, defaults);
88
89
  };
89
90
 
@@ -138,9 +139,9 @@ var getFieldId = function getFieldId(existingId, type, doc) {
138
139
  * @param {Object} doc
139
140
  * @returns {Object}
140
141
  */
141
- var getCleanedJoyDoc = exports.getCleanedJoyDoc = function getCleanedJoyDoc(doc, licenseValidation) {
142
+ var getCleanedJoyDoc = exports.getCleanedJoyDoc = function getCleanedJoyDoc(doc) {
142
143
  if (!doc) return getDefaultJoyDoc();
143
- var _removeOrphanedFields = removeOrphanedFieldsFromJoydoc(doc, licenseValidation),
144
+ var _removeOrphanedFields = removeOrphanedFieldsFromJoydoc(doc),
144
145
  nextDoc = _removeOrphanedFields.nextDoc;
145
146
 
146
147
  /**
@@ -166,20 +167,6 @@ var getCleanedJoyDoc = exports.getCleanedJoyDoc = function getCleanedJoyDoc(doc,
166
167
  return nextField;
167
168
  });
168
169
  }
169
-
170
- /**
171
- * Step 1.3: Filter collection fields based on license validation
172
- */
173
- if (nextDoc.fields && nextDoc.fields.length > 0) {
174
- // Check if collection fields should be removed based on license validation
175
- var shouldRemoveCollectionFields = !licenseValidation || !licenseValidation.decodedData || licenseValidation.decodedData.collectionField === false;
176
- if (shouldRemoveCollectionFields) {
177
- // Remove collection fields from the fields array
178
- nextDoc.fields = nextDoc.fields.filter(function (field) {
179
- return field.type !== _FieldTypes["default"].collection;
180
- });
181
- }
182
- }
183
170
  if (nextDoc.files && nextDoc.files.length > 0) {
184
171
  nextDoc.files = nextDoc.files.map(function (file) {
185
172
  var _nextFile$views;
@@ -194,7 +181,7 @@ var getCleanedJoyDoc = exports.getCleanedJoyDoc = function getCleanedJoyDoc(doc,
194
181
  /**
195
182
  * Step 1.4: Replace page ids and field ids if they are not valid
196
183
  */
197
- nextFile.pages = getCleanedJoyDocPages(nextFile.pages, nextDoc, licenseValidation);
184
+ nextFile.pages = getCleanedJoyDocPages(nextFile.pages, nextDoc);
198
185
  nextFile.pageOrder = cleanPageOrder(getPageOrder(nextFile.pageOrder, nextFile.pages), nextFile.pages);
199
186
 
200
187
  /**
@@ -203,7 +190,7 @@ var getCleanedJoyDoc = exports.getCleanedJoyDoc = function getCleanedJoyDoc(doc,
203
190
  if ((nextFile === null || nextFile === void 0 ? void 0 : (_nextFile$views = nextFile.views) === null || _nextFile$views === void 0 ? void 0 : _nextFile$views.length) > 0) {
204
191
  nextFile.views = nextFile.views.map(function (view) {
205
192
  var nextView = _objectSpread({}, view);
206
- nextView.pages = getCleanedJoyDocPages(nextView.pages, nextDoc, licenseValidation);
193
+ nextView.pages = getCleanedJoyDocPages(nextView.pages, nextDoc);
207
194
  nextView.pageOrder = cleanPageOrder(getPageOrder(nextView.pageOrder, nextView.pages), nextView.pages);
208
195
  return nextView;
209
196
  });
@@ -220,76 +207,33 @@ var getCleanedJoyDoc = exports.getCleanedJoyDoc = function getCleanedJoyDoc(doc,
220
207
  * Remove orphaned fields from doc
221
208
  */
222
209
 
223
- var removeOrphanedFieldsFromJoydoc = exports.removeOrphanedFieldsFromJoydoc = function removeOrphanedFieldsFromJoydoc(doc, licenseValidation) {
210
+ var removeOrphanedFieldsFromJoydoc = exports.removeOrphanedFieldsFromJoydoc = function removeOrphanedFieldsFromJoydoc(doc) {
224
211
  var _nextDoc$files;
225
212
  if (!doc) return getDefaultJoyDoc();
226
213
  var nextDoc = _objectSpread({}, doc);
227
214
  var associatedFieldIdLookup = {};
228
- var shouldRemoveCollectionFields = !licenseValidation || !licenseValidation.decodedData || licenseValidation.decodedData.collectionField === false;
229
215
  nextDoc === null || nextDoc === void 0 ? void 0 : (_nextDoc$files = nextDoc.files) === null || _nextDoc$files === void 0 ? void 0 : _nextDoc$files.forEach(function (file) {
230
- var _file$pages, _file$views;
216
+ var _file$header, _file$header$fieldPos, _file$footer, _file$footer$fieldPos, _file$pages, _file$views;
231
217
  /**
232
- * Header
218
+ * Header
233
219
  */
234
- if (file.header) {
235
- var _file$header, _file$header$fieldPos2;
236
- if (shouldRemoveCollectionFields) {
237
- var _file$header$fieldPos;
238
- // Filter collection field positions from header
239
- file.header.fieldPositions = ((_file$header$fieldPos = file.header.fieldPositions) === null || _file$header$fieldPos === void 0 ? void 0 : _file$header$fieldPos.filter(function (fieldPosition) {
240
- var _nextDoc$fields;
241
- var referencedField = (_nextDoc$fields = nextDoc.fields) === null || _nextDoc$fields === void 0 ? void 0 : _nextDoc$fields.find(function (field) {
242
- return field._id === fieldPosition.field;
243
- });
244
- // Keep field position only if the referenced field exists AND is not a collection field
245
- return referencedField && referencedField.type !== _FieldTypes["default"].collection;
246
- })) || [];
247
- }
248
- (_file$header = file.header) === null || _file$header === void 0 ? void 0 : (_file$header$fieldPos2 = _file$header.fieldPositions) === null || _file$header$fieldPos2 === void 0 ? void 0 : _file$header$fieldPos2.forEach(function (fieldPosition) {
249
- return associatedFieldIdLookup[fieldPosition.field] = true;
250
- });
251
- }
220
+ if (file.header) (_file$header = file.header) === null || _file$header === void 0 ? void 0 : (_file$header$fieldPos = _file$header.fieldPositions) === null || _file$header$fieldPos === void 0 ? void 0 : _file$header$fieldPos.forEach(function (fieldPosition) {
221
+ return associatedFieldIdLookup[fieldPosition.field] = true;
222
+ });
252
223
 
253
224
  /**
254
225
  * Footer
255
226
  */
256
- if (file.footer) {
257
- var _file$footer, _file$footer$fieldPos2;
258
- if (shouldRemoveCollectionFields) {
259
- var _file$footer$fieldPos;
260
- // Filter collection field positions from footer
261
- file.footer.fieldPositions = ((_file$footer$fieldPos = file.footer.fieldPositions) === null || _file$footer$fieldPos === void 0 ? void 0 : _file$footer$fieldPos.filter(function (fieldPosition) {
262
- var _nextDoc$fields2;
263
- var referencedField = (_nextDoc$fields2 = nextDoc.fields) === null || _nextDoc$fields2 === void 0 ? void 0 : _nextDoc$fields2.find(function (field) {
264
- return field._id === fieldPosition.field;
265
- });
266
- // Keep field position only if the referenced field exists AND is not a collection field
267
- return referencedField && referencedField.type !== _FieldTypes["default"].collection;
268
- })) || [];
269
- }
270
- (_file$footer = file.footer) === null || _file$footer === void 0 ? void 0 : (_file$footer$fieldPos2 = _file$footer.fieldPositions) === null || _file$footer$fieldPos2 === void 0 ? void 0 : _file$footer$fieldPos2.forEach(function (fieldPosition) {
271
- return associatedFieldIdLookup[fieldPosition.field] = true;
272
- });
273
- }
227
+ if (file.footer) (_file$footer = file.footer) === null || _file$footer === void 0 ? void 0 : (_file$footer$fieldPos = _file$footer.fieldPositions) === null || _file$footer$fieldPos === void 0 ? void 0 : _file$footer$fieldPos.forEach(function (fieldPosition) {
228
+ return associatedFieldIdLookup[fieldPosition.field] = true;
229
+ });
274
230
 
275
231
  /**
276
232
  * Primary view
277
233
  */
278
234
  (_file$pages = file.pages) === null || _file$pages === void 0 ? void 0 : _file$pages.forEach(function (page) {
279
- var _page$fieldPositions2;
280
- if (shouldRemoveCollectionFields) {
281
- var _page$fieldPositions;
282
- // Filter collection field positions from primary view pages
283
- page.fieldPositions = ((_page$fieldPositions = page.fieldPositions) === null || _page$fieldPositions === void 0 ? void 0 : _page$fieldPositions.filter(function (fieldPosition) {
284
- var _nextDoc$fields3;
285
- var referencedField = (_nextDoc$fields3 = nextDoc.fields) === null || _nextDoc$fields3 === void 0 ? void 0 : _nextDoc$fields3.find(function (field) {
286
- return field._id === fieldPosition.field;
287
- });
288
- // Keep field position only if the referenced field exists AND is not a collection field
289
- return referencedField && referencedField.type !== _FieldTypes["default"].collection;
290
- })) || [];
291
- }
292
- page === null || page === void 0 ? void 0 : (_page$fieldPositions2 = page.fieldPositions) === null || _page$fieldPositions2 === void 0 ? void 0 : _page$fieldPositions2.forEach(function (fieldPosition) {
235
+ var _page$fieldPositions;
236
+ page === null || page === void 0 ? void 0 : (_page$fieldPositions = page.fieldPositions) === null || _page$fieldPositions === void 0 ? void 0 : _page$fieldPositions.forEach(function (fieldPosition) {
293
237
  return associatedFieldIdLookup[fieldPosition.field] = true;
294
238
  });
295
239
  });
@@ -300,20 +244,8 @@ var removeOrphanedFieldsFromJoydoc = exports.removeOrphanedFieldsFromJoydoc = fu
300
244
  (_file$views = file.views) === null || _file$views === void 0 ? void 0 : _file$views.forEach(function (view) {
301
245
  var _view$pages;
302
246
  view === null || view === void 0 ? void 0 : (_view$pages = view.pages) === null || _view$pages === void 0 ? void 0 : _view$pages.forEach(function (page) {
303
- var _page$fieldPositions4;
304
- if (shouldRemoveCollectionFields) {
305
- var _page$fieldPositions3;
306
- // Filter collection field positions from alternative view pages
307
- page.fieldPositions = ((_page$fieldPositions3 = page.fieldPositions) === null || _page$fieldPositions3 === void 0 ? void 0 : _page$fieldPositions3.filter(function (fieldPosition) {
308
- var _nextDoc$fields4;
309
- var referencedField = (_nextDoc$fields4 = nextDoc.fields) === null || _nextDoc$fields4 === void 0 ? void 0 : _nextDoc$fields4.find(function (field) {
310
- return field._id === fieldPosition.field;
311
- });
312
- // Keep field position only if the referenced field exists AND is not a collection field
313
- return referencedField && referencedField.type !== _FieldTypes["default"].collection;
314
- })) || [];
315
- }
316
- page === null || page === void 0 ? void 0 : (_page$fieldPositions4 = page.fieldPositions) === null || _page$fieldPositions4 === void 0 ? void 0 : _page$fieldPositions4.forEach(function (fieldPosition) {
247
+ var _page$fieldPositions2;
248
+ page === null || page === void 0 ? void 0 : (_page$fieldPositions2 = page.fieldPositions) === null || _page$fieldPositions2 === void 0 ? void 0 : _page$fieldPositions2.forEach(function (fieldPosition) {
317
249
  return associatedFieldIdLookup[fieldPosition.field] = true;
318
250
  });
319
251
  });
@@ -346,10 +278,9 @@ var removeOrphanedFieldsFromJoydoc = exports.removeOrphanedFieldsFromJoydoc = fu
346
278
  *
347
279
  * @param {Array} pages
348
280
  * @param {Object} doc - The full document (needed for readableId generation)
349
- * @param {Object} licenseValidation - License validation object for filtering collection fields
350
281
  * @returns {Object}
351
282
  */
352
- var getCleanedJoyDocPages = exports.getCleanedJoyDocPages = function getCleanedJoyDocPages(pages, doc, licenseValidation) {
283
+ var getCleanedJoyDocPages = exports.getCleanedJoyDocPages = function getCleanedJoyDocPages(pages, doc) {
353
284
  if ((pages === null || pages === void 0 ? void 0 : pages.length) > 0) {
354
285
  return pages.map(function (page) {
355
286
  /**
@@ -358,21 +289,7 @@ var getCleanedJoyDocPages = exports.getCleanedJoyDocPages = function getCleanedJ
358
289
  var nextPage = _objectSpread({}, page);
359
290
  if (nextPage._id && !(0, _validateObjectId["default"])(nextPage._id) && !(0, _validateReadableId["default"])(nextPage._id)) nextPage._id = (0, _generateObjectId["default"])();
360
291
  if (nextPage.fieldPositions && nextPage.fieldPositions.length > 0) {
361
- // First, filter out collection field positions based on license validation
362
- var shouldRemoveCollectionFields = !licenseValidation || !licenseValidation.decodedData || licenseValidation.decodedData.collectionField === false;
363
- var filteredFieldPositions = nextPage.fieldPositions;
364
- if (shouldRemoveCollectionFields) {
365
- // Remove field positions that reference collection fields
366
- filteredFieldPositions = nextPage.fieldPositions.filter(function (fieldPosition) {
367
- var _doc$fields;
368
- var referencedField = (_doc$fields = doc.fields) === null || _doc$fields === void 0 ? void 0 : _doc$fields.find(function (field) {
369
- return field._id === fieldPosition.field;
370
- });
371
- // Keep field position only if the referenced field exists AND is not a collection field
372
- return referencedField && referencedField.type !== _FieldTypes["default"].collection;
373
- });
374
- }
375
- nextPage.fieldPositions = filteredFieldPositions.map(function (fieldPosition) {
292
+ nextPage.fieldPositions = nextPage.fieldPositions.map(function (fieldPosition) {
376
293
  /**
377
294
  * Step 1.2: Replace fieldPosition _id and field reference if they are not valid
378
295
  * Use simplified approach: respect ObjectIds, otherwise generate readable IDs
@@ -521,7 +438,8 @@ var getDocumentFromTemplate = exports.getDocumentFromTemplate = function getDocu
521
438
  template: temp.identifier,
522
439
  source: temp.identifier,
523
440
  files: temp.files,
524
- fields: temp.fields
441
+ fields: temp.fields,
442
+ formulas: temp.formulas
525
443
  };
526
444
  };
527
445
 
@@ -535,8 +453,9 @@ var getDocumentFromTemplate = exports.getDocumentFromTemplate = function getDocu
535
453
  * @returns {Object}
536
454
  */
537
455
  var duplicateDocumentPage = exports.duplicateDocumentPage = function duplicateDocumentPage(doc, fileId, pageId) {
538
- var _nextDoc$fields5;
456
+ var _nextDoc$fields;
539
457
  var pageDefaults = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
458
+ var config = arguments.length > 4 ? arguments[4] : undefined;
540
459
  var changelogInfo = {
541
460
  primaryPages: {
542
461
  targetIndex: 0,
@@ -545,13 +464,14 @@ var duplicateDocumentPage = exports.duplicateDocumentPage = function duplicateDo
545
464
  viewPages: [],
546
465
  fields: []
547
466
  };
467
+ var useReadableIds = (config === null || config === void 0 ? void 0 : config.useReadableIds) || false;
548
468
  var nextDoc = JSON.parse(JSON.stringify(doc));
549
469
  var fileIndex = nextDoc.files.findIndex(function (file) {
550
470
  return file._id === fileId;
551
471
  });
552
472
  var newPageId = (0, _generateObjectId["default"])();
553
473
  var fieldLookup = {};
554
- (_nextDoc$fields5 = nextDoc.fields) === null || _nextDoc$fields5 === void 0 ? void 0 : _nextDoc$fields5.forEach(function (field) {
474
+ (_nextDoc$fields = nextDoc.fields) === null || _nextDoc$fields === void 0 ? void 0 : _nextDoc$fields.forEach(function (field) {
555
475
  fieldLookup[field._id] = field;
556
476
  });
557
477
 
@@ -602,12 +522,13 @@ var duplicateDocumentPage = exports.duplicateDocumentPage = function duplicateDo
602
522
  // Generate readable ID using current fields plus already duplicated fields
603
523
  var allFields = [].concat((0, _toConsumableArray2["default"])(nextDoc.fields), (0, _toConsumableArray2["default"])(duplicatedFields));
604
524
  var duplicateField = _objectSpread(_objectSpread({}, field), {}, {
605
- _id: (0, _generateReadableId.generateReadableId)({
525
+ _id: useReadableIds ? (0, _generateReadableId.generateReadableId)({
606
526
  fields: allFields,
607
527
  pages: (_nextDoc$files$fileIn = nextDoc.files[fileIndex]) === null || _nextDoc$files$fileIn === void 0 ? void 0 : _nextDoc$files$fileIn.pages,
608
528
  views: (_nextDoc$files$fileIn2 = nextDoc.files[fileIndex]) === null || _nextDoc$files$fileIn2 === void 0 ? void 0 : _nextDoc$files$fileIn2.views
609
- }, field.type)
529
+ }, field.type) : (0, _generateObjectId["default"])()
610
530
  });
531
+
611
532
  // Remove formulas property when duplicating
612
533
  delete duplicateField.formulas;
613
534
  duplicatedFields.push(duplicateField);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@builttocreate/engine-utils",
3
- "version": "2.11.0-beta.v1364.0",
3
+ "version": "3.0.0",
4
4
  "description": "Utility library for common logic shared across web and mobile",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -36,6 +36,7 @@
36
36
  "@babel/plugin-transform-regenerator": "^7.12.1",
37
37
  "@babel/plugin-transform-runtime": "^7.12.10",
38
38
  "@babel/preset-env": "^7.12.11",
39
+ "@babel/runtime": "^7.28.6",
39
40
  "babel-eslint": "^10.1.0",
40
41
  "cross-env": "^7.0.3",
41
42
  "eslint": "^7.18.0",