@stackbit/cms-core 0.8.6-staging.2 → 0.8.6

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.
@@ -0,0 +1,12 @@
1
+ import * as ContentStoreTypes from '../types';
2
+ import { SearchFilterItem } from '../types';
3
+ import { ScheduledAction } from '@stackbit/types';
4
+ import { SchemaForSearch } from './search-utils';
5
+ declare type CustomFilterMethod = (filter: SearchFilterItem, document: ContentStoreTypes.Document, opts: {
6
+ locale?: string;
7
+ schema: SchemaForSearch;
8
+ activeScheduledActionsByDocumentId: Record<string, ScheduledAction[]>;
9
+ }) => boolean;
10
+ export declare const CUSTOM_FILTERS: Record<string, CustomFilterMethod>;
11
+ export {};
12
+ //# sourceMappingURL=custom-search-filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-search-filters.d.ts","sourceRoot":"","sources":["../../src/utils/custom-search-filters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,iBAAiB,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAqB,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAiE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEhH,aAAK,kBAAkB,GAAG,CACtB,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EACpC,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,eAAe,CAAC;IAAC,kCAAkC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAA;CAAE,KACxH,OAAO,CAAC;AAEb,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAwC7D,CAAC"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CUSTOM_FILTERS = void 0;
4
+ const search_utils_1 = require("./search-utils");
5
+ exports.CUSTOM_FILTERS = {
6
+ hasSchedules: (filter, document, opts) => {
7
+ var _a;
8
+ const field = {
9
+ type: 'boolean',
10
+ value: !!((_a = opts.activeScheduledActionsByDocumentId[document.srcObjectId]) === null || _a === void 0 ? void 0 : _a.length)
11
+ };
12
+ return (0, search_utils_1.isBooleanFieldMatches)({ field, filter, locale: opts.locale });
13
+ },
14
+ scheduledActionId: (filter, document, opts) => {
15
+ var _a, _b;
16
+ const field = {
17
+ type: 'list',
18
+ items: (_b = (_a = opts.activeScheduledActionsByDocumentId[document.srcObjectId]) === null || _a === void 0 ? void 0 : _a.map((scheduledAction) => ({
19
+ type: 'string',
20
+ value: scheduledAction.id
21
+ }))) !== null && _b !== void 0 ? _b : []
22
+ };
23
+ const model = {
24
+ type: 'object',
25
+ name: '',
26
+ fields: [
27
+ {
28
+ name: '',
29
+ type: 'list',
30
+ items: {
31
+ type: 'string'
32
+ }
33
+ }
34
+ ]
35
+ };
36
+ return (0, search_utils_1.isListFieldMatches)({ field, filter, model, locale: opts.locale, document });
37
+ },
38
+ scheduledActionDate: (filter, document, opts) => {
39
+ var _a, _b;
40
+ return ((_b = (_a = opts.activeScheduledActionsByDocumentId[document.srcObjectId]) === null || _a === void 0 ? void 0 : _a.some((scheduledAction) => {
41
+ const field = { type: 'date', value: scheduledAction.executeAt };
42
+ return (0, search_utils_1.isDateFieldMatches)({ field, filter, locale: opts.locale });
43
+ })) !== null && _b !== void 0 ? _b : false);
44
+ }
45
+ };
46
+ //# sourceMappingURL=custom-search-filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-search-filters.js","sourceRoot":"","sources":["../../src/utils/custom-search-filters.ts"],"names":[],"mappings":";;;AAIA,iDAAgH;AAQnG,QAAA,cAAc,GAAuC;IAC9D,YAAY,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;;QACrC,MAAM,KAAK,GAAG;YACV,IAAI,EAAE,SAAkB;YACxB,KAAK,EAAE,CAAC,CAAC,CAAA,MAAA,IAAI,CAAC,kCAAkC,CAAC,QAAQ,CAAC,WAAW,CAAC,0CAAE,MAAM,CAAA;SACjF,CAAC;QACF,OAAO,IAAA,oCAAqB,EAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,iBAAiB,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;;QAC1C,MAAM,KAAK,GAAsB;YAC7B,IAAI,EAAE,MAAM;YACZ,KAAK,EACD,MAAA,MAAA,IAAI,CAAC,kCAAkC,CAAC,QAAQ,CAAC,WAAW,CAAC,0CAAE,GAAG,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;gBACrF,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,eAAe,CAAC,EAAE;aAC5B,CAAC,CAAC,mCAAI,EAAE;SAChB,CAAC;QACF,MAAM,KAAK,GAAU;YACjB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,EAAE;YACR,MAAM,EAAE;gBACJ;oBACI,IAAI,EAAE,EAAE;oBACR,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE;wBACH,IAAI,EAAE,QAAQ;qBACjB;iBACJ;aACJ;SACJ,CAAC;QACF,OAAO,IAAA,iCAAkB,EAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,mBAAmB,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;;QAC5C,OAAO,CACH,MAAA,MAAA,IAAI,CAAC,kCAAkC,CAAC,QAAQ,CAAC,WAAW,CAAC,0CAAE,IAAI,CAAC,CAAC,eAAe,EAAE,EAAE;YACpF,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,MAAe,EAAE,KAAK,EAAE,eAAe,CAAC,SAAS,EAAE,CAAC;YAC1E,OAAO,IAAA,iCAAkB,EAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,mCAAI,KAAK,CACd,CAAC;IACN,CAAC;CACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stackbit/cms-core",
3
- "version": "0.8.6-staging.2",
3
+ "version": "0.8.6",
4
4
  "description": "stackbit-dev",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -25,9 +25,9 @@
25
25
  "@babel/parser": "^7.11.5",
26
26
  "@babel/traverse": "^7.11.5",
27
27
  "@iarna/toml": "^2.2.3",
28
- "@stackbit/sdk": "0.7.6-staging.2",
29
- "@stackbit/types": "0.10.2-staging.2",
30
- "@stackbit/utils": "0.3.6-staging.1",
28
+ "@stackbit/sdk": "0.7.6",
29
+ "@stackbit/types": "0.10.2",
30
+ "@stackbit/utils": "0.3.6",
31
31
  "chalk": "^4.0.1",
32
32
  "content-engine": "0.0.19",
33
33
  "esm": "^3.2.25",
@@ -43,5 +43,5 @@
43
43
  "slugify": "^1.6.5",
44
44
  "uuid": "^9.0.0"
45
45
  },
46
- "gitHead": "5e536e4d22929c7d114f65ccad6f5cd623ba984d"
46
+ "gitHead": "740ef5463f017421712ffe60c2819a1f757b9948"
47
47
  }
@@ -1,101 +0,0 @@
1
- import { Model } from '@stackbit/sdk';
2
- import { Field, FieldListItems } from '@stackbit/types';
3
- import * as ContentStoreTypes from '../types';
4
- export declare function getModelFieldAtFieldPath(document: ContentStoreTypes.Document, fieldPath: (string | number)[], modelMap: Record<string, Model>, locale?: string): Field | FieldListItems;
5
- /**
6
- * This function receives a `document` and returns DocumentFieldNonLocalized at
7
- * the specified `fieldPath` while resolving any localized fields with the
8
- * specified `locale`.
9
- *
10
- * @example
11
- * getDocumentFieldAtFieldPath({
12
- * document,
13
- * locale,
14
- * fieldPath: ['sections', 1, 'title']
15
- * })
16
- *
17
- * For improved localization support, use the getModelAndDocumentFieldForLocalizedFieldPath
18
- * method instead.
19
- *
20
- * The `isFullFieldPath` flag specifies if the `fieldPath` includes container
21
- * specifiers such as "fields" and "items".
22
- *
23
- * @example
24
- * isFullFieldPath: false => fieldPath: ['sections', 1, 'title']
25
- * isFullFieldPath: true => fieldPath: ['fields', 'sections', 'items', 1, 'fields', 'title']
26
- */
27
- export declare function getDocumentFieldAtFieldPath({ document, fieldPath, locale, isFullFieldPath }: {
28
- document: ContentStoreTypes.Document;
29
- fieldPath: (string | number)[];
30
- locale?: string;
31
- isFullFieldPath?: boolean;
32
- }): ContentStoreTypes.DocumentFieldNonLocalized;
33
- /**
34
- * This function receives a `document` and a `modelMap` and returns an object
35
- * with DocumentFieldNonLocalized and a model Field at the specified `fieldPath`
36
- * while resolving any localized fields with the specified `locale`.
37
- *
38
- * @example
39
- * getDocumentAndModelFieldAtFieldPath({
40
- * document,
41
- * locale,
42
- * modelMap,
43
- * fieldPath: ['sections', 1, 'title']
44
- * })
45
- *
46
- * For improved localization support, use the getModelAndDocumentFieldForLocalizedFieldPath
47
- * method instead.
48
- *
49
- * The `isFullFieldPath` flag specifies if the `fieldPath` includes container
50
- * specifiers such as "fields" and "items".
51
- *
52
- * @example
53
- * isFullFieldPath: false => fieldPath: ['sections', 1, 'title']
54
- * isFullFieldPath: true => fieldPath: ['fields', 'sections', 'items', 1, 'fields', 'title']
55
- */
56
- export declare function getDocumentAndModelFieldAtFieldPath({ document, fieldPath, modelMap, locale, isFullFieldPath }: {
57
- document: ContentStoreTypes.Document;
58
- fieldPath: (string | number)[];
59
- modelMap: Record<string, Model>;
60
- locale?: string;
61
- isFullFieldPath?: boolean;
62
- }): {
63
- modelField: Field | FieldListItems;
64
- documentField: ContentStoreTypes.DocumentFieldNonLocalized;
65
- };
66
- /**
67
- * This function receives a `document` and a `modelMap` and returns an object
68
- * with DocumentField and a model Field at the specified `fieldPath`.
69
- *
70
- * If some fields along the fieldPath are localized, the `fieldPath` must
71
- * contain the locale of the field under the "locales" property. The locales
72
- * along the field path don't have to be the same.
73
- *
74
- * @example
75
- * fieldPath: ['fields', 'button', 'locales', 'en', 'fields', 'title', 'locales', 'es']
76
- *
77
- * If the provided `fieldPath` points to a list item, the returned model field
78
- * and document field will belong to a list item. In this case, the model field
79
- * will contain only field-specific properties and the document field will be
80
- * localized.
81
- *
82
- * @example
83
- * fieldPath: ['fields', 'buttons', 'items', 2]
84
- *
85
- * The `isFullFieldPath` flag specifies if the `fieldPath` includes container
86
- * specifiers such as "fields" and "items".
87
- *
88
- * @example
89
- * isFullFieldPath: false => fieldPath: ['sections', 1, 'title', 'es']
90
- * isFullFieldPath: true => fieldPath: ['fields', 'sections', 'items', 1, 'fields', 'title', 'locales', 'es']
91
- */
92
- export declare function getModelAndDocumentFieldForLocalizedFieldPath({ document, fieldPath, modelMap, isFullFieldPath }: {
93
- document: ContentStoreTypes.Document;
94
- fieldPath: (string | number)[];
95
- modelMap: Record<string, Model>;
96
- isFullFieldPath?: boolean;
97
- }): {
98
- modelField: Field | FieldListItems;
99
- documentField: ContentStoreTypes.DocumentField | ContentStoreTypes.DocumentListFieldItems;
100
- };
101
- //# sourceMappingURL=field-path-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"field-path-utils.d.ts","sourceRoot":"","sources":["../../src/utils/field-path-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,cAAc,EAAoC,MAAM,iBAAiB,CAAC;AAC1F,OAAO,KAAK,iBAAiB,MAAM,UAAU,CAAC;AAG9C,wBAAgB,wBAAwB,CACpC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EACpC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAC/B,MAAM,CAAC,EAAE,MAAM,GAChB,KAAK,GAAG,cAAc,CA8GxB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,2BAA2B,CAAC,EACxC,QAAQ,EACR,SAAS,EACT,MAAM,EACN,eAAe,EAClB,EAAE;IACC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC;IACrC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG,iBAAiB,CAAC,yBAAyB,CAyG9C;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,mCAAmC,CAAC,EAChD,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,MAAM,EACN,eAAe,EAClB,EAAE;IACC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC;IACrC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG;IAAE,UAAU,EAAE,KAAK,GAAG,cAAc,CAAC;IAAC,aAAa,EAAE,iBAAiB,CAAC,yBAAyB,CAAA;CAAE,CAuMrG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,6CAA6C,CAAC,EAC1D,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,eAAe,EAClB,EAAE;IACC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC;IACrC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG;IAAE,UAAU,EAAE,KAAK,GAAG,cAAc,CAAC;IAAC,aAAa,EAAE,iBAAiB,CAAC,aAAa,GAAG,iBAAiB,CAAC,sBAAsB,CAAA;CAAE,CA8MpI"}
@@ -1,603 +0,0 @@
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.getModelAndDocumentFieldForLocalizedFieldPath = exports.getDocumentAndModelFieldAtFieldPath = exports.getDocumentFieldAtFieldPath = exports.getModelFieldAtFieldPath = void 0;
7
- const lodash_1 = __importDefault(require("lodash"));
8
- const content_store_utils_1 = require("../content-store-utils");
9
- function getModelFieldAtFieldPath(document, fieldPath, modelMap, locale) {
10
- if (lodash_1.default.isEmpty(fieldPath)) {
11
- throw new Error('the fieldPath can not be empty');
12
- }
13
- const model = modelMap[document.srcModelName];
14
- if (!model) {
15
- throw new Error(`model with name '${document.srcModelName}' of a document '${document.srcObjectId}' not found`);
16
- }
17
- function getField(docField, modelField, fieldPath) {
18
- const fieldName = lodash_1.default.head(fieldPath);
19
- if (typeof fieldName === 'undefined') {
20
- throw new Error('the first fieldPath item must be string');
21
- }
22
- const childFieldPath = lodash_1.default.tail(fieldPath);
23
- let childDocField;
24
- let childModelField;
25
- switch (docField.type) {
26
- case 'object': {
27
- const localizedObjectField = (0, content_store_utils_1.getDocumentFieldForLocale)(docField, locale);
28
- if (!localizedObjectField) {
29
- throw new Error(`locale for field was not found`);
30
- }
31
- if (localizedObjectField.isUnset) {
32
- throw new Error(`field is not set`);
33
- }
34
- childDocField = localizedObjectField.fields[fieldName];
35
- childModelField = lodash_1.default.find(modelField.fields, (field) => field.name === fieldName);
36
- if (!childDocField || !childModelField) {
37
- throw new Error(`field ${fieldName} doesn't exist`);
38
- }
39
- if (childFieldPath.length === 0) {
40
- return childModelField;
41
- }
42
- return getField(childDocField, childModelField, childFieldPath);
43
- }
44
- case 'model': {
45
- const localizedModelField = (0, content_store_utils_1.getDocumentFieldForLocale)(docField, locale);
46
- if (!localizedModelField) {
47
- throw new Error(`locale for field was not found`);
48
- }
49
- if (localizedModelField.isUnset) {
50
- throw new Error(`field is not set`);
51
- }
52
- const modelName = localizedModelField.srcModelName;
53
- const childModel = modelMap[modelName];
54
- if (!childModel) {
55
- throw new Error(`model ${modelName} doesn't exist`);
56
- }
57
- childModelField = lodash_1.default.find(childModel.fields, (field) => field.name === fieldName);
58
- childDocField = localizedModelField.fields[fieldName];
59
- if (!childDocField || !childModelField) {
60
- throw new Error(`field ${fieldName} doesn't exist`);
61
- }
62
- if (childFieldPath.length === 0) {
63
- return childModelField;
64
- }
65
- return getField(childDocField, childModelField, childFieldPath);
66
- }
67
- case 'list': {
68
- const localizedListField = (0, content_store_utils_1.getDocumentFieldForLocale)(docField, locale);
69
- if (!localizedListField) {
70
- throw new Error(`locale for field was not found`);
71
- }
72
- const listItem = localizedListField.items && localizedListField.items[fieldName];
73
- const listItemsModel = modelField.items;
74
- if (!listItem || !listItemsModel) {
75
- throw new Error(`field ${fieldName} doesn't exist`);
76
- }
77
- if (childFieldPath.length === 0) {
78
- return listItemsModel;
79
- }
80
- if (!Array.isArray(listItemsModel)) {
81
- return getField(listItem, listItemsModel, childFieldPath);
82
- }
83
- else {
84
- const fieldListItems = listItemsModel.find((listItemsModel) => listItemsModel.type === listItem.type);
85
- if (!fieldListItems) {
86
- throw new Error('cannot find matching field model');
87
- }
88
- return getField(listItem, fieldListItems, childFieldPath);
89
- }
90
- }
91
- default:
92
- if (!lodash_1.default.isEmpty(childFieldPath)) {
93
- throw new Error('illegal fieldPath');
94
- }
95
- return modelField;
96
- }
97
- }
98
- const fieldName = lodash_1.default.head(fieldPath);
99
- const childFieldPath = lodash_1.default.tail(fieldPath);
100
- if (typeof fieldName !== 'string') {
101
- throw new Error('the first fieldPath item must be string');
102
- }
103
- const childDocField = document.fields[fieldName];
104
- const childModelField = lodash_1.default.find(model.fields, { name: fieldName });
105
- if (!childDocField || !childModelField) {
106
- throw new Error(`field ${fieldName} doesn't exist`);
107
- }
108
- if (childFieldPath.length === 0) {
109
- return childModelField;
110
- }
111
- return getField(childDocField, childModelField, childFieldPath);
112
- }
113
- exports.getModelFieldAtFieldPath = getModelFieldAtFieldPath;
114
- /**
115
- * This function receives a `document` and returns DocumentFieldNonLocalized at
116
- * the specified `fieldPath` while resolving any localized fields with the
117
- * specified `locale`.
118
- *
119
- * @example
120
- * getDocumentFieldAtFieldPath({
121
- * document,
122
- * locale,
123
- * fieldPath: ['sections', 1, 'title']
124
- * })
125
- *
126
- * For improved localization support, use the getModelAndDocumentFieldForLocalizedFieldPath
127
- * method instead.
128
- *
129
- * The `isFullFieldPath` flag specifies if the `fieldPath` includes container
130
- * specifiers such as "fields" and "items".
131
- *
132
- * @example
133
- * isFullFieldPath: false => fieldPath: ['sections', 1, 'title']
134
- * isFullFieldPath: true => fieldPath: ['fields', 'sections', 'items', 1, 'fields', 'title']
135
- */
136
- function getDocumentFieldAtFieldPath({ document, fieldPath, locale, isFullFieldPath }) {
137
- if (isFullFieldPath) {
138
- if (lodash_1.default.head(fieldPath) !== 'fields') {
139
- throw new Error('fieldPath must start with "fields" specifier');
140
- }
141
- fieldPath = lodash_1.default.tail(fieldPath);
142
- }
143
- if (lodash_1.default.isEmpty(fieldPath)) {
144
- throw new Error('the fieldPath cannot be empty');
145
- }
146
- const docId = document.srcObjectId;
147
- const modelName = document.srcModelName;
148
- const origFieldPath = fieldPath;
149
- const origFieldPathStr = fieldPath.join('.');
150
- function getPrefixOf(fieldPath, include = 0) {
151
- return origFieldPath.slice(0, origFieldPath.length - fieldPath.length + include).join('.');
152
- }
153
- function getField(docField, fieldPath) {
154
- const localizedField = (0, content_store_utils_1.getDocumentFieldForLocale)(docField, locale);
155
- if (!localizedField) {
156
- throw new Error(`the value of a field at fieldPath '${getPrefixOf(fieldPath)}' is undefined ` +
157
- `for the document '${docId}' of type '${modelName}' for the '${locale}' locale.`);
158
- }
159
- // if no more items in fieldPath return the found document and model fields
160
- if (fieldPath.length === 0) {
161
- return localizedField;
162
- }
163
- switch (localizedField.type) {
164
- case 'object':
165
- case 'model': {
166
- if (localizedField.isUnset) {
167
- throw new Error(`the fieldPath '${getPrefixOf(fieldPath, 1)}' of a document '${docId}' of type '${modelName}' points into an object that is not set`);
168
- }
169
- if (isFullFieldPath) {
170
- if (lodash_1.default.head(fieldPath) !== 'fields') {
171
- throw new Error(`the fieldPath '${getPrefixOf(fieldPath, 1)}' must contain "fields" specifier before a field's name`);
172
- }
173
- fieldPath = lodash_1.default.tail(fieldPath);
174
- }
175
- const fieldName = lodash_1.default.head(fieldPath);
176
- if (typeof fieldName === 'undefined') {
177
- throw new Error(`the fieldPath '${getPrefixOf(fieldPath, 1)}' of a document '${docId}' of type '${modelName}' must point to a field name`);
178
- }
179
- fieldPath = lodash_1.default.tail(fieldPath);
180
- const childDocField = localizedField.fields[fieldName];
181
- if (!childDocField) {
182
- throw new Error(`the fieldPath '${getPrefixOf(fieldPath)}' points to a non existing field in a document '${docId}' of type '${modelName}'`);
183
- }
184
- return getField(childDocField, fieldPath);
185
- }
186
- case 'list': {
187
- if (isFullFieldPath) {
188
- if (lodash_1.default.head(fieldPath) !== 'items') {
189
- throw new Error(`fieldPath '${getPrefixOf(fieldPath, 1)}' must contain "items" specifier after a "list" field`);
190
- }
191
- fieldPath = lodash_1.default.tail(fieldPath);
192
- }
193
- const itemIndex = lodash_1.default.head(fieldPath);
194
- if (typeof itemIndex === 'undefined') {
195
- throw new Error(`fieldPath '${getPrefixOf(fieldPath, 1)}' of a document '${docId}' of type '${modelName}' must point to a list item index`);
196
- }
197
- fieldPath = lodash_1.default.tail(fieldPath);
198
- const listItem = localizedField.items && localizedField.items[itemIndex];
199
- if (!listItem) {
200
- throw new Error(`the fieldPath '${getPrefixOf(fieldPath)}' points to a non existing list item in a document '${docId}' of type '${modelName}'`);
201
- }
202
- return getField(listItem, fieldPath);
203
- }
204
- default: {
205
- const primitiveFieldName = origFieldPath[origFieldPath.length - fieldPath.length - 1];
206
- throw new Error(`the fieldPath '${origFieldPathStr}' is illegal, a primitive field '${primitiveFieldName}' of type '${localizedField.type}' cannot be followed by additional field paths`);
207
- }
208
- }
209
- }
210
- const fieldName = lodash_1.default.head(fieldPath);
211
- const restFieldPath = lodash_1.default.tail(fieldPath);
212
- if (typeof fieldName !== 'string') {
213
- throw new Error('the first fieldPath item must be string');
214
- }
215
- const childDocField = document.fields[fieldName];
216
- if (!childDocField) {
217
- throw new Error(`document '${docId}' of type '${modelName}' doesn't have a field named '${fieldName}'`);
218
- }
219
- return getField(childDocField, restFieldPath);
220
- }
221
- exports.getDocumentFieldAtFieldPath = getDocumentFieldAtFieldPath;
222
- /**
223
- * This function receives a `document` and a `modelMap` and returns an object
224
- * with DocumentFieldNonLocalized and a model Field at the specified `fieldPath`
225
- * while resolving any localized fields with the specified `locale`.
226
- *
227
- * @example
228
- * getDocumentAndModelFieldAtFieldPath({
229
- * document,
230
- * locale,
231
- * modelMap,
232
- * fieldPath: ['sections', 1, 'title']
233
- * })
234
- *
235
- * For improved localization support, use the getModelAndDocumentFieldForLocalizedFieldPath
236
- * method instead.
237
- *
238
- * The `isFullFieldPath` flag specifies if the `fieldPath` includes container
239
- * specifiers such as "fields" and "items".
240
- *
241
- * @example
242
- * isFullFieldPath: false => fieldPath: ['sections', 1, 'title']
243
- * isFullFieldPath: true => fieldPath: ['fields', 'sections', 'items', 1, 'fields', 'title']
244
- */
245
- function getDocumentAndModelFieldAtFieldPath({ document, fieldPath, modelMap, locale, isFullFieldPath }) {
246
- if (isFullFieldPath) {
247
- if (lodash_1.default.head(fieldPath) !== 'fields') {
248
- throw new Error('fieldPath must start with "fields" specifier');
249
- }
250
- fieldPath = lodash_1.default.tail(fieldPath);
251
- }
252
- if (lodash_1.default.isEmpty(fieldPath)) {
253
- throw new Error('the fieldPath cannot be empty');
254
- }
255
- const docId = document.srcObjectId;
256
- const docModelName = document.srcModelName;
257
- const origFieldPath = fieldPath;
258
- const origFieldPathStr = fieldPath.join('.');
259
- let parentModel = modelMap[docModelName];
260
- let fieldPathFromParentModel = fieldPath;
261
- if (!parentModel) {
262
- throw new Error(`model with name '${docModelName}' of a document '${docId}' not found`);
263
- }
264
- function getPrefixOf(fieldPath, include = 0) {
265
- return origFieldPath.slice(0, origFieldPath.length - fieldPath.length + include).join('.');
266
- }
267
- function getModelPrefixOf(fieldPath, include = 0) {
268
- return fieldPathFromParentModel.slice(0, fieldPathFromParentModel.length - fieldPath.length + include).join('.');
269
- }
270
- function getField(docField, modelField, fieldPath) {
271
- const localizedField = (0, content_store_utils_1.getDocumentFieldForLocale)(docField, locale);
272
- if (!localizedField) {
273
- throw new Error(`the value of a field at fieldPath '${getPrefixOf(fieldPath)}' is undefined ` +
274
- `for the document '${docId}' of type '${docModelName}' for the '${locale}' locale.`);
275
- }
276
- // if no more items in fieldPath return the found document and model fields
277
- if (fieldPath.length === 0) {
278
- return {
279
- modelField: modelField,
280
- documentField: localizedField
281
- };
282
- }
283
- switch (localizedField.type) {
284
- case 'object': {
285
- if (localizedField.isUnset) {
286
- throw new Error(`the fieldPath '${getPrefixOf(fieldPath, 1)}' of a document '${docId}' of type '${docModelName}' points into an object that is not set`);
287
- }
288
- if (isFullFieldPath) {
289
- if (lodash_1.default.head(fieldPath) !== 'fields') {
290
- throw new Error(`the fieldPath '${getPrefixOf(fieldPath, 1)}' must contain "fields" specifier before a field's name`);
291
- }
292
- fieldPath = lodash_1.default.tail(fieldPath);
293
- }
294
- const fieldName = lodash_1.default.head(fieldPath);
295
- if (typeof fieldName === 'undefined') {
296
- throw new Error(`the fieldPath '${getPrefixOf(fieldPath, 1)}' of a document '${docId}' of type '${docModelName}' must point to a field name`);
297
- }
298
- fieldPath = lodash_1.default.tail(fieldPath);
299
- const childDocField = localizedField.fields[fieldName];
300
- if (!childDocField) {
301
- throw new Error(`the fieldPath '${getPrefixOf(fieldPath)}' points to a non existing field in a document '${docId}' of type '${docModelName}'`);
302
- }
303
- if (modelField.type !== 'object') {
304
- throw new Error(`model field of type '${modelField.type}' of model '${parentModel.name}' at field path '${getModelPrefixOf(fieldPath)}' ` +
305
- `doesn't match document field of type 'object' of document '${docId}' at field path '${getPrefixOf(fieldPath)}'`);
306
- }
307
- const childModelField = lodash_1.default.find(modelField.fields, (field) => field.name === fieldName);
308
- if (!childModelField) {
309
- throw new Error(`model '${parentModel.name}' doesn't have a field at path: '${getModelPrefixOf(fieldPath)}'`);
310
- }
311
- return getField(childDocField, childModelField, fieldPath);
312
- }
313
- case 'model': {
314
- if (localizedField.isUnset) {
315
- throw new Error(`the fieldPath '${getPrefixOf(fieldPath, 1)}' of a document '${docId}' of type '${docModelName}' points into an object that is not set`);
316
- }
317
- fieldPathFromParentModel = fieldPath;
318
- if (isFullFieldPath) {
319
- if (lodash_1.default.head(fieldPath) !== 'fields') {
320
- throw new Error(`the fieldPath '${getPrefixOf(fieldPath, 1)}' must contain "fields" specifier before a field's name`);
321
- }
322
- fieldPath = lodash_1.default.tail(fieldPath);
323
- }
324
- const fieldName = lodash_1.default.head(fieldPath);
325
- if (typeof fieldName === 'undefined') {
326
- throw new Error(`the fieldPath '${getPrefixOf(fieldPath, 1)}' of a document '${docId}' of type '${docModelName}' must point to a field name`);
327
- }
328
- fieldPath = lodash_1.default.tail(fieldPath);
329
- const childDocField = localizedField.fields[fieldName];
330
- if (!childDocField) {
331
- throw new Error(`the fieldPath '${getPrefixOf(fieldPath)}' points to a non existing field in a document '${docId}' of type '${docModelName}'`);
332
- }
333
- const modelName = localizedField.srcModelName;
334
- const childModel = modelMap[modelName];
335
- if (!childModel) {
336
- throw new Error(`the "model" field at path '${getPrefixOf(fieldPath)}' of a document '${docId}' of type '${docModelName}' ` +
337
- `contains an object with type of non existing model '${modelName}'`);
338
- }
339
- parentModel = childModel;
340
- const childModelField = lodash_1.default.find(childModel.fields, (field) => field.name === fieldName);
341
- if (!childModelField) {
342
- throw new Error(`model '${childModel.name}' doesn't have a field at path: '${getModelPrefixOf(fieldPath)}'`);
343
- }
344
- return getField(childDocField, childModelField, fieldPath);
345
- }
346
- case 'list': {
347
- if (isFullFieldPath) {
348
- if (lodash_1.default.head(fieldPath) !== 'items') {
349
- throw new Error(`the fieldPath '${getPrefixOf(fieldPath, 1)}' must contain "items" specifier before a list item index`);
350
- }
351
- fieldPath = lodash_1.default.tail(fieldPath);
352
- }
353
- const itemIndex = lodash_1.default.head(fieldPath);
354
- if (typeof itemIndex === 'undefined') {
355
- throw new Error(`the fieldPath '${getPrefixOf(fieldPath, 1)}' of a document '${docId}' of type '${docModelName}' must point to a list item index`);
356
- }
357
- fieldPath = lodash_1.default.tail(fieldPath);
358
- const listItem = localizedField.items && localizedField.items[itemIndex];
359
- if (!listItem) {
360
- throw new Error(`the fieldPath '${getPrefixOf(fieldPath)}' points to a non existing list item in a document '${docId}' of type '${docModelName}'`);
361
- }
362
- if (modelField.type !== 'list') {
363
- throw new Error(`model field of type '${modelField.type}' of model '${parentModel.name}' at field path '${getModelPrefixOf(fieldPath)}' ` +
364
- `doesn't match document field of type 'list' of document '${docId}' at field path '${getPrefixOf(fieldPath)}'`);
365
- }
366
- const listItemsModel = modelField.items;
367
- if (!Array.isArray(listItemsModel)) {
368
- return getField(listItem, listItemsModel, fieldPath);
369
- }
370
- else {
371
- const fieldListItems = listItemsModel.find((listItemsModel) => listItemsModel.type === listItem.type);
372
- if (!fieldListItems) {
373
- throw new Error(`cannot find list item model for list item of type '${listItem.type}' for model '${parentModel.name}' ` +
374
- `at field path '${getModelPrefixOf(fieldPath)}'`);
375
- }
376
- return getField(listItem, fieldListItems, fieldPath);
377
- }
378
- }
379
- default: {
380
- const primitiveFieldName = origFieldPath[origFieldPath.length - fieldPath.length - 1];
381
- throw new Error(`the fieldPath '${origFieldPathStr}' is illegal, a primitive field '${primitiveFieldName}' of type '${localizedField.type}' cannot be followed by additional field paths`);
382
- }
383
- }
384
- }
385
- const fieldName = lodash_1.default.head(fieldPath);
386
- const restFieldPath = lodash_1.default.tail(fieldPath);
387
- if (typeof fieldName !== 'string') {
388
- throw new Error('the first fieldPath item must be string');
389
- }
390
- const childDocField = document.fields[fieldName];
391
- if (!childDocField) {
392
- throw new Error(`document '${docId}' of type '${docModelName}' doesn't have a field named '${fieldName}'`);
393
- }
394
- const childModelField = lodash_1.default.find(parentModel.fields, { name: fieldName });
395
- if (!childModelField) {
396
- throw new Error(`model '${docModelName}' doesn't have a field named '${fieldName}'`);
397
- }
398
- return getField(childDocField, childModelField, restFieldPath);
399
- }
400
- exports.getDocumentAndModelFieldAtFieldPath = getDocumentAndModelFieldAtFieldPath;
401
- /**
402
- * This function receives a `document` and a `modelMap` and returns an object
403
- * with DocumentField and a model Field at the specified `fieldPath`.
404
- *
405
- * If some fields along the fieldPath are localized, the `fieldPath` must
406
- * contain the locale of the field under the "locales" property. The locales
407
- * along the field path don't have to be the same.
408
- *
409
- * @example
410
- * fieldPath: ['fields', 'button', 'locales', 'en', 'fields', 'title', 'locales', 'es']
411
- *
412
- * If the provided `fieldPath` points to a list item, the returned model field
413
- * and document field will belong to a list item. In this case, the model field
414
- * will contain only field-specific properties and the document field will be
415
- * localized.
416
- *
417
- * @example
418
- * fieldPath: ['fields', 'buttons', 'items', 2]
419
- *
420
- * The `isFullFieldPath` flag specifies if the `fieldPath` includes container
421
- * specifiers such as "fields" and "items".
422
- *
423
- * @example
424
- * isFullFieldPath: false => fieldPath: ['sections', 1, 'title', 'es']
425
- * isFullFieldPath: true => fieldPath: ['fields', 'sections', 'items', 1, 'fields', 'title', 'locales', 'es']
426
- */
427
- function getModelAndDocumentFieldForLocalizedFieldPath({ document, fieldPath, modelMap, isFullFieldPath }) {
428
- if (isFullFieldPath) {
429
- if (lodash_1.default.head(fieldPath) !== 'fields') {
430
- throw new Error('fieldPath must start with "fields" specifier');
431
- }
432
- fieldPath = lodash_1.default.tail(fieldPath);
433
- }
434
- if (lodash_1.default.isEmpty(fieldPath)) {
435
- throw new Error('the fieldPath cannot be empty');
436
- }
437
- const docId = document.srcObjectId;
438
- const origModelName = document.srcModelName;
439
- const origFieldPath = fieldPath;
440
- const origFieldPathStr = fieldPath.join('.');
441
- const model = modelMap[origModelName];
442
- if (!model) {
443
- throw new Error(`model with name '${origModelName}' of a document '${docId}' not found`);
444
- }
445
- let parentModel = model;
446
- let fieldPathFromParentModel = fieldPath;
447
- function getPrefixOf(fieldPath, include = 0) {
448
- return origFieldPath.slice(0, origFieldPath.length - fieldPath.length + include).join('.');
449
- }
450
- function getModelPrefixOf(fieldPath, include = 0) {
451
- return fieldPathFromParentModel.slice(0, fieldPathFromParentModel.length - fieldPath.length + include).join('.');
452
- }
453
- function getField(docField, modelField, fieldPath) {
454
- // if no more items in fieldPath return the found document and model fields
455
- if (fieldPath.length === 0) {
456
- return {
457
- modelField: modelField,
458
- documentField: docField
459
- };
460
- }
461
- if (docField.localized) {
462
- if (isFullFieldPath) {
463
- if (lodash_1.default.head(fieldPath) !== 'locales') {
464
- throw new Error(`fieldPath '${origFieldPath.join('.')}' must contain "locales" specifier for localized field`);
465
- }
466
- fieldPath = lodash_1.default.tail(fieldPath);
467
- }
468
- const locale = lodash_1.default.head(fieldPath);
469
- if (typeof locale !== 'string') {
470
- throw new Error(`the locale specifier must be string in fieldPath '${origFieldPath.join('.')}'`);
471
- }
472
- fieldPath = lodash_1.default.tail(fieldPath);
473
- const localizedDocField = (0, content_store_utils_1.getDocumentFieldForLocale)(docField, locale);
474
- if (!localizedDocField) {
475
- throw new Error(`fieldPath '${origFieldPath.join('.')}' doesn't specify the locale`);
476
- }
477
- docField = localizedDocField;
478
- }
479
- switch (docField.type) {
480
- case 'object': {
481
- if (docField.isUnset) {
482
- throw new Error(`the fieldPath '${getPrefixOf(fieldPath)}' of document ${docId} points ` +
483
- `into the fields of an empty 'object' field, full fieldPath '${origFieldPathStr}'.`);
484
- }
485
- if (isFullFieldPath) {
486
- if (lodash_1.default.head(fieldPath) !== 'fields') {
487
- throw new Error(`fieldPath '${getPrefixOf(fieldPath, 1)}' must contain "fields" specifier after an "object" field`);
488
- }
489
- fieldPath = lodash_1.default.tail(fieldPath);
490
- }
491
- const fieldName = lodash_1.default.head(fieldPath);
492
- if (typeof fieldName === 'undefined') {
493
- throw new Error(`fieldPath '${getPrefixOf(fieldPath, 1)}' must specify a field name for an "object" field`);
494
- }
495
- fieldPath = lodash_1.default.tail(fieldPath);
496
- const childDocField = docField.fields[fieldName];
497
- if (!childDocField) {
498
- throw new Error(`document '${docId}' of type '${origModelName}' doesn't have a field at path: '${getPrefixOf(fieldPath)}'`);
499
- }
500
- if (modelField.type !== 'object') {
501
- throw new Error(`model field of type '${modelField.type}' of model '${parentModel.name}' at field path '${getModelPrefixOf(fieldPath)}' ` +
502
- `doesn't match document field of type 'object' of document '${docId}' at field path '${getPrefixOf(fieldPath)}'`);
503
- }
504
- const childModelField = lodash_1.default.find(modelField.fields, (field) => field.name === fieldName);
505
- if (!childModelField) {
506
- throw new Error(`model '${parentModel.name}' doesn't have a field at path: '${getModelPrefixOf(fieldPath)}'`);
507
- }
508
- return getField(childDocField, childModelField, fieldPath);
509
- }
510
- case 'model': {
511
- if (docField.isUnset) {
512
- throw new Error(`the fieldPath '${getPrefixOf(fieldPath, 1)}' of document ${docId} points ` +
513
- `into the fields of an empty "model" field, full fieldPath '${origFieldPathStr}'`);
514
- }
515
- fieldPathFromParentModel = fieldPath;
516
- if (isFullFieldPath) {
517
- if (lodash_1.default.head(fieldPath) !== 'fields') {
518
- throw new Error(`fieldPath '${getPrefixOf(fieldPath, 1)}' must contain "fields" specifier after a "model" field`);
519
- }
520
- fieldPath = lodash_1.default.tail(fieldPath);
521
- }
522
- const fieldName = lodash_1.default.head(fieldPath);
523
- if (typeof fieldName === 'undefined') {
524
- throw new Error(`fieldPath '${getPrefixOf(fieldPath, 1)}' must specify a field name for an "model" field`);
525
- }
526
- fieldPath = lodash_1.default.tail(fieldPath);
527
- const modelName = docField.srcModelName;
528
- const childModel = modelMap[modelName];
529
- if (!childModel) {
530
- throw new Error(`a "model" field of a document '${docId}' at path '${getPrefixOf(fieldPath)}' ` +
531
- `contains an object with non existing modelName '${modelName}'`);
532
- }
533
- parentModel = childModel;
534
- const childDocField = docField.fields[fieldName];
535
- if (!childDocField) {
536
- throw new Error(`document '${docId}' of type '${origModelName}' doesn't have a field at path: '${getPrefixOf(fieldPath)}'`);
537
- }
538
- const childModelField = lodash_1.default.find(childModel.fields, (field) => field.name === fieldName);
539
- if (!childModelField) {
540
- throw new Error(`model '${childModel.name}' doesn't have a field at path: '${getModelPrefixOf(fieldPath)}'`);
541
- }
542
- return getField(childDocField, childModelField, fieldPath);
543
- }
544
- case 'list': {
545
- if (isFullFieldPath) {
546
- if (lodash_1.default.head(fieldPath) !== 'items') {
547
- throw new Error(`fieldPath '${getPrefixOf(fieldPath, 1)}' must contain "items" specifier after a "list" field`);
548
- }
549
- fieldPath = lodash_1.default.tail(fieldPath);
550
- }
551
- const itemIndex = lodash_1.default.head(fieldPath);
552
- if (typeof itemIndex === 'undefined') {
553
- throw new Error(`fieldPath '${getPrefixOf(fieldPath, 1)}' must specify a list item index for a "list" field`);
554
- }
555
- fieldPath = lodash_1.default.tail(fieldPath);
556
- const listItem = docField.items && docField.items[itemIndex];
557
- if (!listItem) {
558
- throw new Error(`document '${docId}' of type '${origModelName}' doesn't have a list item at path: '${getPrefixOf(fieldPath)}'`);
559
- }
560
- if (modelField.type !== 'list') {
561
- throw new Error(`model field type '${modelField.type}' of a model '${parentModel.name}' at field path '${getModelPrefixOf(fieldPath)}' ` +
562
- `doesn't match document field of type 'list' of document '${docId}' at field path '${getPrefixOf(fieldPath)}'`);
563
- }
564
- const listItemsModel = modelField.items;
565
- if (!Array.isArray(listItemsModel)) {
566
- return getField(listItem, listItemsModel, fieldPath);
567
- }
568
- else {
569
- const fieldListItems = listItemsModel.find((listItemsModel) => listItemsModel.type === listItem.type);
570
- if (!fieldListItems) {
571
- throw new Error(`cannot find list item model for document list item of type '${listItem.type}' for model '${parentModel.name}' ` +
572
- `at field path '${getModelPrefixOf(fieldPath, 1)}'`);
573
- }
574
- return getField(listItem, fieldListItems, fieldPath);
575
- }
576
- }
577
- default:
578
- if (!lodash_1.default.isEmpty(fieldPath)) {
579
- throw new Error(`illegal fieldPath, a primitive field of type '${docField.type}' was found in the middle of the fieldPath '${origFieldPathStr}'`);
580
- }
581
- return {
582
- modelField,
583
- documentField: docField
584
- };
585
- }
586
- }
587
- const fieldName = lodash_1.default.head(fieldPath);
588
- const childFieldPath = lodash_1.default.tail(fieldPath);
589
- if (typeof fieldName !== 'string') {
590
- throw new Error('the first fieldPath item must be string');
591
- }
592
- const childDocField = document.fields[fieldName];
593
- const childModelField = lodash_1.default.find(model.fields, { name: fieldName });
594
- if (!childDocField) {
595
- throw new Error(`document '${docId}' of type '${model.name}' doesn't have a field named '${fieldName}'`);
596
- }
597
- if (!childModelField) {
598
- throw new Error(`model '${model.name}' doesn't have a field named '${fieldName}'`);
599
- }
600
- return getField(childDocField, childModelField, childFieldPath);
601
- }
602
- exports.getModelAndDocumentFieldForLocalizedFieldPath = getModelAndDocumentFieldForLocalizedFieldPath;
603
- //# sourceMappingURL=field-path-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"field-path-utils.js","sourceRoot":"","sources":["../../src/utils/field-path-utils.ts"],"names":[],"mappings":"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"}