@stackbit/utils
Advanced tools
| import { describe, test, expect } from '@jest/globals'; | ||
| import { DocumentWithSource } from '@stackbit/types'; | ||
| import { fieldPathToString, getDocumentFieldValueAtFieldPath, stringToFieldPath } from '../src'; | ||
| describe('test fieldPathToString', () => { | ||
| test('should convert single item fieldPath', () => { | ||
| const result = fieldPathToString(['title']); | ||
| expect(result).toEqual('title'); | ||
| }); | ||
| test('should separate multi item fieldPath with dot', () => { | ||
| const result = fieldPathToString(['section', 'title']); | ||
| expect(result).toEqual('section.title'); | ||
| }); | ||
| test('should wrap first non-alphanumeric field path item with square brackets and single quotes', () => { | ||
| const result = fieldPathToString(['hero-section', 'title']); | ||
| expect(result).toEqual("['hero-section'].title"); | ||
| }); | ||
| test('should wrap middle non-alphanumeric field path item with square brackets', () => { | ||
| const result = fieldPathToString(['sections', 'hero-section', 'title']); | ||
| expect(result).toEqual("sections['hero-section'].title"); | ||
| }); | ||
| test('should wrap successive non-alphanumeric field names with square brackets', () => { | ||
| const result = fieldPathToString(['banner', 'sub-component-1', 'sub.component.2']); | ||
| expect(result).toEqual("banner['sub-component-1']['sub.component.2']"); | ||
| }); | ||
| test('should wrap list indexes with square brackets', () => { | ||
| const result = fieldPathToString(['sections', 2, 'title']); | ||
| expect(result).toEqual('sections[2].title'); | ||
| }); | ||
| test('should not wrap string-numbers with square brackets', () => { | ||
| const result = fieldPathToString(['sections', '2', 'title']); | ||
| expect(result).toEqual('sections.2.title'); | ||
| }); | ||
| }); | ||
| describe('test stringToFieldPath', () => { | ||
| test('should convert single item fieldPath', () => { | ||
| const result = stringToFieldPath('title'); | ||
| expect(result).toEqual(['title']); | ||
| }); | ||
| test('should separate multi item fieldPath with dot', () => { | ||
| const result = stringToFieldPath('section.title'); | ||
| expect(result).toEqual(['section', 'title']); | ||
| }); | ||
| test('should unwrap first non-alphanumeric field path item from square brackets', () => { | ||
| const result = stringToFieldPath("['hero-section'].title"); | ||
| expect(result).toEqual(['hero-section', 'title']); | ||
| }); | ||
| test('should unwrap middle non-alphanumeric field path item from square brackets', () => { | ||
| const result = stringToFieldPath("sections['hero-section'].title"); | ||
| expect(result).toEqual(['sections', 'hero-section', 'title']); | ||
| }); | ||
| test('should wrap successive non-alphanumeric field names with square brackets', () => { | ||
| const result = stringToFieldPath("banner['sub-component-1']['sub.component.2']"); | ||
| expect(result).toEqual(['banner', 'sub-component-1', 'sub.component.2']); | ||
| }); | ||
| test('should wrap list indexes with square brackets', () => { | ||
| const result = stringToFieldPath('sections[2].title'); | ||
| expect(result).toEqual(['sections', 2, 'title']); | ||
| }); | ||
| test('should not wrap string-numbers with square brackets', () => { | ||
| const result = stringToFieldPath('sections.2.title'); | ||
| expect(result).toEqual(['sections', '2', 'title']); | ||
| }); | ||
| }); | ||
| describe('test getDocumentFieldValueAtFieldPath', () => { | ||
| const documents: DocumentWithSource[] = [ | ||
| { | ||
| type: 'document', | ||
| id: 'doc-1', | ||
| srcType: 'src-1', | ||
| srcProjectId: 'src-project-1', | ||
| manageUrl: 'https://www.example.com', | ||
| modelName: 'page', | ||
| status: 'published', | ||
| createdAt: '2025-01-01T10:00:00.000Z', | ||
| updatedAt: '2025-01-01T10:00:00.000Z', | ||
| context: null, | ||
| fields: { | ||
| title: { type: 'string', value: 'Title Value' }, | ||
| localizedString: { | ||
| type: 'string', | ||
| localized: true, | ||
| locales: { | ||
| en: { | ||
| locale: 'en', | ||
| value: 'Hello' | ||
| }, | ||
| es: { | ||
| locale: 'es', | ||
| value: 'Hola' | ||
| } | ||
| } | ||
| }, | ||
| modelField: { | ||
| type: 'model', | ||
| modelName: 'heroSection', | ||
| fields: { | ||
| label: { type: 'string', value: 'Label Value' } | ||
| } | ||
| }, | ||
| localizedModelField: { | ||
| type: 'model', | ||
| localized: true, | ||
| locales: { | ||
| en: { | ||
| locale: 'en', | ||
| modelName: 'heroSection', | ||
| fields: { | ||
| label: { type: 'string', value: 'Localized Label Value' }, | ||
| localizedString: { | ||
| type: 'string', | ||
| localized: true, | ||
| locales: { | ||
| es: { | ||
| locale: 'es', | ||
| value: 'Spanish value' | ||
| } | ||
| } | ||
| } | ||
| } | ||
| } | ||
| } | ||
| }, | ||
| listField: { | ||
| type: 'list', | ||
| items: [ | ||
| { | ||
| type: 'string', | ||
| value: 'one' | ||
| }, | ||
| { | ||
| type: 'string', | ||
| value: 'two' | ||
| } | ||
| ] | ||
| }, | ||
| referenceField: { | ||
| type: 'reference', | ||
| refType: 'document', | ||
| refId: 'doc-2' | ||
| } | ||
| } | ||
| }, | ||
| { | ||
| type: 'document', | ||
| id: 'doc-2', | ||
| srcType: 'src-1', | ||
| srcProjectId: 'src-project-1', | ||
| manageUrl: 'https://www.example.com', | ||
| modelName: 'page', | ||
| status: 'published', | ||
| createdAt: '2025-01-01T10:00:00.000Z', | ||
| updatedAt: '2025-01-01T10:00:00.000Z', | ||
| context: null, | ||
| fields: { | ||
| title: { type: 'string', value: 'Doc 2 Title Value' } | ||
| } | ||
| } | ||
| ]; | ||
| const document = documents[0]!; | ||
| function getDocumentById(options: { id: string; srcType?: string; srcProjectId?: string }) { | ||
| return documents.find((doc) => doc.id === options.id); | ||
| } | ||
| test('should throw an error if fieldPath is empty', () => { | ||
| expect(() => { | ||
| getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: '', | ||
| getDocumentById | ||
| }); | ||
| }).toThrow("Illegal fieldPath ''. The fieldPath cannot be empty"); | ||
| expect(() => { | ||
| getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: [], | ||
| getDocumentById | ||
| }); | ||
| }).toThrow("Illegal fieldPath ''. The fieldPath cannot be empty"); | ||
| }); | ||
| test('should return value of a string field', () => { | ||
| const result = getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: 'title', | ||
| getDocumentById | ||
| }); | ||
| expect(result).toEqual('Title Value'); | ||
| }); | ||
| test('should throw an error if a primitive field is followed by another field path', () => { | ||
| expect(() => { | ||
| getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: 'title.noField', | ||
| getDocumentById | ||
| }); | ||
| }).toThrow( | ||
| "Illegal fieldPath 'title.noField'. The field at path 'title' is a primitive field of type 'string' and cannot be followed by another field path." | ||
| ); | ||
| }); | ||
| test('should return undefined for non existing field', () => { | ||
| const result = getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: 'no_such_field', | ||
| getDocumentById | ||
| }); | ||
| expect(result).toBeUndefined(); | ||
| }); | ||
| test('should return value of a localized string field', () => { | ||
| const result = getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: 'localizedString.es', | ||
| getDocumentById | ||
| }); | ||
| expect(result).toEqual('Hola'); | ||
| }); | ||
| test('should return undefined for a non existing locale value of a localized field', () => { | ||
| const result = getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: 'localizedString.fr', | ||
| getDocumentById | ||
| }); | ||
| expect(result).toBeUndefined(); | ||
| }); | ||
| test('should throw if locale for a localized field was not specified', () => { | ||
| expect(() => { | ||
| getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: 'localizedString', | ||
| getDocumentById | ||
| }); | ||
| }).toThrow("Illegal fieldPath 'localizedString'. The field at path 'localizedString' is a localized field and must be followed by a locale specifier."); | ||
| }); | ||
| test('should return a flattened object of a model field', () => { | ||
| const result = getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: 'modelField', | ||
| getDocumentById | ||
| }); | ||
| expect(result).toEqual({ | ||
| __metadata: { modelName: 'heroSection' }, | ||
| label: 'Label Value' | ||
| }); | ||
| }); | ||
| test('should return a value of a field in a nested object', () => { | ||
| const result = getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: 'modelField.label', | ||
| getDocumentById | ||
| }); | ||
| expect(result).toEqual('Label Value'); | ||
| }); | ||
| test('should return undefined for a non-existing field in a nested object', () => { | ||
| const result = getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: 'modelField.noField', | ||
| getDocumentById | ||
| }); | ||
| expect(result).toBeUndefined(); | ||
| }); | ||
| test('should return undefined for a non-existing nested fields', () => { | ||
| const result = getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: 'noField1.noField2.noField3', | ||
| getDocumentById | ||
| }); | ||
| expect(result).toBeUndefined(); | ||
| }); | ||
| test('should return a flattened object of a localized model field', () => { | ||
| const result = getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: 'localizedModelField.en', | ||
| getDocumentById | ||
| }); | ||
| expect(result).toEqual({ | ||
| __metadata: { modelName: 'heroSection' }, | ||
| label: 'Localized Label Value' | ||
| }); | ||
| }); | ||
| test('should return a value of a field in a localized model field', () => { | ||
| const result = getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: 'localizedModelField.en.label', | ||
| getDocumentById | ||
| }); | ||
| expect(result).toEqual('Localized Label Value'); | ||
| }); | ||
| test('should return undefined for a non existing locale of a localized model field', () => { | ||
| const result = getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: 'localizedModelField.es', | ||
| getDocumentById | ||
| }); | ||
| expect(result).toBeUndefined(); | ||
| }); | ||
| test('should return a value for a localized string within a localized model field', () => { | ||
| const result = getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: 'localizedModelField.en.localizedString.es', | ||
| getDocumentById | ||
| }); | ||
| expect(result).toEqual('Spanish value'); | ||
| }); | ||
| test('should throw if locale for a localized model field was not specified', () => { | ||
| expect(() => { | ||
| getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: 'localizedModelField', | ||
| getDocumentById | ||
| }); | ||
| }).toThrow( | ||
| "Illegal fieldPath 'localizedModelField'. The field at path 'localizedModelField' is a localized field and must be followed by a locale specifier." | ||
| ); | ||
| }); | ||
| test('should return an item list value in a list at specified index', () => { | ||
| const result = getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: 'listField[1]', | ||
| getDocumentById | ||
| }); | ||
| expect(result).toEqual('two'); | ||
| }); | ||
| test('should throw an error if list field is not followed by index', () => { | ||
| expect(() => { | ||
| getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: 'listField.fieldName', | ||
| getDocumentById | ||
| }); | ||
| }).toThrow("Illegal fieldPath 'listField.fieldName'. The field at path 'listField' is a list field and must be followed by a list item index."); | ||
| }); | ||
| test('should return a document id of a reference field', () => { | ||
| const result = getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: 'referenceField', | ||
| getDocumentById | ||
| }); | ||
| expect(result).toEqual('doc-2'); | ||
| }); | ||
| test('should return a value of a field in a referenced document', () => { | ||
| const result = getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath: 'referenceField.title', | ||
| getDocumentById | ||
| }); | ||
| expect(result).toEqual('Doc 2 Title Value'); | ||
| }); | ||
| }); |
+8
-0
@@ -6,2 +6,10 @@ # Change Log | ||
| ## [0.8.1](https://github.com/stackbithq/utils/compare/@stackbit/utils@0.8.0...@stackbit/utils@0.8.1) (2025-03-12) | ||
| **Note:** Version bump only for package @stackbit/utils | ||
| # [0.8.0](https://github.com/stackbithq/utils/compare/@stackbit/utils@0.7.16-staging.1...@stackbit/utils@0.8.0) (2025-02-10) | ||
@@ -8,0 +16,0 @@ |
@@ -73,2 +73,22 @@ import type * as StackbitTypes from '@stackbit/types'; | ||
| }): FlatDocument; | ||
| /** | ||
| * Returns the value of a document field. | ||
| * | ||
| * If the document field is a primitive (string, url, slug, text, markdown, enum, date, number, boolean, etc.) | ||
| * then the value of the `value` property is returned. | ||
| * | ||
| * If the document is a field of type "object", "model" or "list", the value of the | ||
| * nested object is simplified and returned. | ||
| * | ||
| * If the document is a field of type "reference", the ID of the referenced | ||
| * document is returned. | ||
| * | ||
| * If the document field is localized, then the value for the provided "locale" | ||
| * is returned. If "locale" was not provided, or the document field does not | ||
| * have any values for the provided "locale", undefined is returned. | ||
| */ | ||
| export declare function getDocumentFieldValue({ documentField, locale }: { | ||
| documentField: StackbitTypes.DocumentField; | ||
| locale?: string; | ||
| }): any; | ||
| //# sourceMappingURL=document-utils.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"document-utils.d.ts","sourceRoot":"","sources":["../src/document-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,aAAa,MAAM,iBAAiB,CAAC;AAEtD,MAAM,MAAM,YAAY,GAAG;IACvB,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC,iBAAiB,EAAE,CAAC;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AACF,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG;IAAE,aAAa,CAAC,EAAE,KAAK,CAAC;IAAC,UAAU,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG,OAAO,CAAC;IAC5H,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC;CACvC,CAAC,CAAC;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC;IAC/H,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,YAAY,EAAE,CAAC;CAC7B,CAAC,CAAC;AAyEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;IAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CAOzH"} | ||
| {"version":3,"file":"document-utils.d.ts","sourceRoot":"","sources":["../src/document-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,aAAa,MAAM,iBAAiB,CAAC;AAEtD,MAAM,MAAM,YAAY,GAAG;IACvB,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC,iBAAiB,EAAE,CAAC;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AACF,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG;IAAE,aAAa,CAAC,EAAE,KAAK,CAAC;IAAC,UAAU,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG,OAAO,CAAC;IAC5H,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC;CACvC,CAAC,CAAC;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC;IAC/H,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,YAAY,EAAE,CAAC;CAC7B,CAAC,CAAC;AAyEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;IAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CAOzH;AAqBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE;IAAE,aAAa,EAAE,aAAa,CAAC,aAAa,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CAoErI"} |
@@ -6,3 +6,3 @@ "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.flattenDocument = exports.getCSIDocuments = void 0; | ||
| exports.getDocumentFieldValue = exports.flattenDocument = exports.getCSIDocuments = void 0; | ||
| const http_1 = __importDefault(require("http")); | ||
@@ -115,2 +115,18 @@ async function getCSIDocuments({ stackbitApiKey, srcDocumentIds, srcType, srcProjectId, documentSpecs, limit, offset, flatDocuments, flatLocale }) { | ||
| } | ||
| /** | ||
| * Returns the value of a document field. | ||
| * | ||
| * If the document field is a primitive (string, url, slug, text, markdown, enum, date, number, boolean, etc.) | ||
| * then the value of the `value` property is returned. | ||
| * | ||
| * If the document is a field of type "object", "model" or "list", the value of the | ||
| * nested object is simplified and returned. | ||
| * | ||
| * If the document is a field of type "reference", the ID of the referenced | ||
| * document is returned. | ||
| * | ||
| * If the document field is localized, then the value for the provided "locale" | ||
| * is returned. If "locale" was not provided, or the document field does not | ||
| * have any values for the provided "locale", undefined is returned. | ||
| */ | ||
| function getDocumentFieldValue({ documentField, locale }) { | ||
@@ -185,5 +201,6 @@ const nonLocalizedDocField = getLocalizedFieldForLocale(documentField, locale); | ||
| } | ||
| // This method was copied from @stackbit/utils => getLocalizedFieldForLocale | ||
| exports.getDocumentFieldValue = getDocumentFieldValue; | ||
| // This method was copied from @stackbit/types => getLocalizedFieldForLocale | ||
| // instead of importing it directly, to allow bundling this file (document-utils.ts) | ||
| // by Webpack without bundling the whole @stackbit/utils when it is imported | ||
| // by Webpack without bundling the whole @stackbit/types when it is imported | ||
| // inside frameworks like Next.js. | ||
@@ -190,0 +207,0 @@ function getLocalizedFieldForLocale(field, locale) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"document-utils.js","sourceRoot":"","sources":["../src/document-utils.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"document-utils.js","sourceRoot":"","sources":["../src/document-utils.ts"],"names":[],"mappings":"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"} |
@@ -1,2 +0,18 @@ | ||
| import type { Model, Field, FieldListItems, Document, DocumentField, DocumentFieldNonLocalized, DocumentListFieldItems } from '@stackbit/types'; | ||
| import type { Model, Field, FieldListItems, FieldPath, Document, DocumentWithSource, DocumentField, DocumentFieldNonLocalized, DocumentListFieldItems } from '@stackbit/types'; | ||
| /** | ||
| * Converts a FieldPath into a string. | ||
| * Puts complex strings inside single quotes '', | ||
| * and uses square brackets [] for number keys. | ||
| */ | ||
| export declare function fieldPathToString(fieldPath: FieldPath): string; | ||
| /** | ||
| * Converts string into FieldPath | ||
| * | ||
| * ```js | ||
| * stringToFieldPath("sections[0].button['button-label']") | ||
| * => | ||
| * ["sections", 0, "button", "button-label"] | ||
| * ``` | ||
| */ | ||
| export declare function stringToFieldPath(fieldPath: string): FieldPath; | ||
| export declare function getModelFieldAtFieldPath({ document, fieldPath, modelMap, locale }: { | ||
@@ -8,2 +24,15 @@ document: Document; | ||
| }): Field | FieldListItems; | ||
| export type GetDocumentFieldAtFieldPathOptions = { | ||
| document: Document; | ||
| fieldPath: FieldPath; | ||
| locale?: string; | ||
| isFullFieldPath?: boolean; | ||
| returnUndefined?: boolean; | ||
| }; | ||
| export type GetDocumentFieldAtFieldPathOptionsThrow = GetDocumentFieldAtFieldPathOptions & { | ||
| returnUndefined?: false; | ||
| }; | ||
| export type GetDocumentFieldAtFieldPathOptionsUndefined = GetDocumentFieldAtFieldPathOptions & { | ||
| returnUndefined: true; | ||
| }; | ||
| /** | ||
@@ -14,3 +43,3 @@ * This function receives a `document` and returns DocumentFieldNonLocalized at | ||
| * | ||
| * @example | ||
| * ```ts | ||
| * getDocumentFieldAtFieldPath({ | ||
@@ -21,2 +50,3 @@ * document, | ||
| * }) | ||
| * ``` | ||
| * | ||
@@ -27,14 +57,23 @@ * For improved localization support, use the getModelAndDocumentFieldForLocalizedFieldPath | ||
| * The `isFullFieldPath` flag specifies if the `fieldPath` includes container | ||
| * specifiers such as "fields" and "items". | ||
| * specifiers such as "fields" and "items": | ||
| * | ||
| * @example | ||
| * isFullFieldPath: false => fieldPath: ['sections', 1, 'title'] | ||
| * isFullFieldPath: true => fieldPath: ['fields', 'sections', 'items', 1, 'fields', 'title'] | ||
| * ```ts | ||
| * getDocumentFieldAtFieldPath({ | ||
| * document, | ||
| * isFullFieldPath: false, | ||
| * fieldPath: ['sections', 1, 'title'] | ||
| * }) | ||
| * getDocumentFieldAtFieldPath({ | ||
| * document, | ||
| * isFullFieldPath: true, | ||
| * fieldPath: ['fields', 'sections', 'items', 1, 'fields', 'title'] | ||
| * }) | ||
| * ``` | ||
| * | ||
| * By default, if the document field at the specified `fieldPath` not found, this | ||
| * function will throw exception. Setting `returnUndefined` to true will allow | ||
| * the function to return `undefined` if the document field is not found. | ||
| */ | ||
| export declare function getDocumentFieldAtFieldPath({ document, fieldPath, locale, isFullFieldPath }: { | ||
| document: Document; | ||
| fieldPath: (string | number)[]; | ||
| locale?: string; | ||
| isFullFieldPath?: boolean; | ||
| }): DocumentFieldNonLocalized; | ||
| export declare function getDocumentFieldAtFieldPath(options: GetDocumentFieldAtFieldPathOptionsThrow): DocumentFieldNonLocalized; | ||
| export declare function getDocumentFieldAtFieldPath(options: GetDocumentFieldAtFieldPathOptionsUndefined): DocumentFieldNonLocalized | undefined; | ||
| /** | ||
@@ -108,2 +147,45 @@ * This function receives a `document` and a `modelMap` and returns an object | ||
| }; | ||
| /** | ||
| * This function returns the value of a field in the specified `document` at the | ||
| * specified `fieldPath`. | ||
| * | ||
| * ```ts | ||
| * getDocumentFieldValueAtFieldPath({ | ||
| * document, | ||
| * fieldPath: 'sections[1].title' | ||
| * }) | ||
| * ``` | ||
| * | ||
| * The `fieldPath` can also contain locale specifiers for localized fields. | ||
| * | ||
| * ```ts | ||
| * getDocumentFieldValueAtFieldPath({ | ||
| * document, | ||
| * fieldPath: 'sections[1].title.es' | ||
| * }) | ||
| * ``` | ||
| * | ||
| * Note: getting a value of a localized field without using a locale specifier | ||
| * will throw an exception. | ||
| * | ||
| * The `fieldPath` can be a string following the standard JavaScript notation | ||
| * for getting nested properties and array values, or a {@link FieldPath}. | ||
| * | ||
| * If the document field at the specified `fieldPath` not found, undefined is returned. | ||
| * | ||
| * @param document The parent document | ||
| * @param fieldPath The field path to the target field | ||
| * @param getDocumentById A function | ||
| * @param isFullFieldPath | ||
| */ | ||
| export declare function getDocumentFieldValueAtFieldPath({ document, fieldPath, getDocumentById, isFullFieldPath }: { | ||
| document: DocumentWithSource; | ||
| fieldPath: FieldPath | string; | ||
| getDocumentById?: (options: { | ||
| id: string; | ||
| srcType?: string; | ||
| srcProjectId?: string; | ||
| }) => DocumentWithSource | undefined; | ||
| isFullFieldPath?: boolean; | ||
| }): unknown; | ||
| //# sourceMappingURL=field-path-utils.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"field-path-utils.d.ts","sourceRoot":"","sources":["../src/field-path-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,KAAK,EACL,KAAK,EACL,cAAc,EAGd,QAAQ,EACR,aAAa,EACb,yBAAyB,EACzB,sBAAsB,EACzB,MAAM,iBAAiB,CAAC;AAGzB,wBAAgB,wBAAwB,CAAC,EACrC,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,MAAM,EACT,EAAE;IACC,QAAQ,EAAE,QAAQ,CAAC;IACnB,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;CACnB,GAAG,KAAK,GAAG,cAAc,CAwGzB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,2BAA2B,CAAC,EACxC,QAAQ,EACR,SAAS,EACT,MAAM,EACN,eAAe,EAClB,EAAE;IACC,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG,yBAAyB,CAiG5B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,mCAAmC,CAAC,EAChD,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,MAAM,EACN,eAAe,EAClB,EAAE;IACC,QAAQ,EAAE,QAAQ,CAAC;IACnB,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,yBAAyB,CAAA;CAAE,CA6LnF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,6CAA6C,CAAC,EAC1D,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,eAAe,EAClB,EAAE;IACC,QAAQ,EAAE,QAAQ,CAAC;IACnB,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,CAAC,EAAE,aAAa,GAAG,sBAAsB,CAAA;CAAE,CAsMjG"} | ||
| {"version":3,"file":"field-path-utils.d.ts","sourceRoot":"","sources":["../src/field-path-utils.ts"],"names":[],"mappings":"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"} |
+266
-40
@@ -6,5 +6,67 @@ "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.getModelAndDocumentFieldForLocalizedFieldPath = exports.getDocumentAndModelFieldAtFieldPath = exports.getDocumentFieldAtFieldPath = exports.getModelFieldAtFieldPath = void 0; | ||
| exports.getDocumentFieldValueAtFieldPath = exports.getModelAndDocumentFieldForLocalizedFieldPath = exports.getDocumentAndModelFieldAtFieldPath = exports.getDocumentFieldAtFieldPath = exports.getModelFieldAtFieldPath = exports.stringToFieldPath = exports.fieldPathToString = void 0; | ||
| const lodash_1 = __importDefault(require("lodash")); | ||
| const types_1 = require("@stackbit/types"); | ||
| const document_utils_1 = require("./document-utils"); | ||
| /** | ||
| * Converts a FieldPath into a string. | ||
| * Puts complex strings inside single quotes '', | ||
| * and uses square brackets [] for number keys. | ||
| */ | ||
| function fieldPathToString(fieldPath) { | ||
| return lodash_1.default.reduce(fieldPath, (accumulator, fieldName, index) => { | ||
| if (lodash_1.default.isString(fieldName) && /\W/.test(fieldName)) { | ||
| // field name is a string with non-alphanumeric character | ||
| accumulator += `['${fieldName}']`; | ||
| } | ||
| else if (lodash_1.default.isNumber(fieldName)) { | ||
| accumulator += `[${fieldName}]`; | ||
| } | ||
| else { | ||
| if (index > 0) { | ||
| accumulator += '.'; | ||
| } | ||
| accumulator += fieldName; | ||
| } | ||
| return accumulator; | ||
| }, ''); | ||
| } | ||
| exports.fieldPathToString = fieldPathToString; | ||
| /** | ||
| * Converts string into FieldPath | ||
| * | ||
| * ```js | ||
| * stringToFieldPath("sections[0].button['button-label']") | ||
| * => | ||
| * ["sections", 0, "button", "button-label"] | ||
| * ``` | ||
| */ | ||
| function stringToFieldPath(fieldPath) { | ||
| const re = /\.|\[([^\]]+)\]\.?/g; | ||
| const result = []; | ||
| let match = null; | ||
| let prevLastIndex = 0; | ||
| while ((match = re.exec(fieldPath)) !== null) { | ||
| if (prevLastIndex < match.index) { | ||
| result.push(fieldPath.substring(prevLastIndex, match.index)); | ||
| } | ||
| if (match[1]) { | ||
| // matched [...] | ||
| if (/^\d+$/.test(match[1])) { | ||
| result.push(parseInt(match[1])); | ||
| } | ||
| else { | ||
| // remove quotes inside brackets | ||
| // "hero['field-name'][2]" => ["hero", "field-name", 2] | ||
| result.push(match[1].replace(/^'(.*)'$/, '$1').replace(/^"(.*)"$/, '$1')); | ||
| } | ||
| } | ||
| prevLastIndex = re.lastIndex; | ||
| } | ||
| if (prevLastIndex < fieldPath.length) { | ||
| result.push(fieldPath.substring(prevLastIndex)); | ||
| } | ||
| return result; | ||
| } | ||
| exports.stringToFieldPath = stringToFieldPath; | ||
| function getModelFieldAtFieldPath({ document, fieldPath, modelMap, locale }) { | ||
@@ -109,28 +171,16 @@ if (lodash_1.default.isEmpty(fieldPath)) { | ||
| exports.getModelFieldAtFieldPath = getModelFieldAtFieldPath; | ||
| /** | ||
| * This function receives a `document` and returns DocumentFieldNonLocalized at | ||
| * the specified `fieldPath` while resolving any localized fields with the | ||
| * specified `locale`. | ||
| * | ||
| * @example | ||
| * getDocumentFieldAtFieldPath({ | ||
| * document, | ||
| * locale, | ||
| * fieldPath: ['sections', 1, 'title'] | ||
| * }) | ||
| * | ||
| * For improved localization support, use the getModelAndDocumentFieldForLocalizedFieldPath | ||
| * method instead. | ||
| * | ||
| * The `isFullFieldPath` flag specifies if the `fieldPath` includes container | ||
| * specifiers such as "fields" and "items". | ||
| * | ||
| * @example | ||
| * isFullFieldPath: false => fieldPath: ['sections', 1, 'title'] | ||
| * isFullFieldPath: true => fieldPath: ['fields', 'sections', 'items', 1, 'fields', 'title'] | ||
| */ | ||
| function getDocumentFieldAtFieldPath({ document, fieldPath, locale, isFullFieldPath }) { | ||
| function getDocumentFieldAtFieldPath({ document, fieldPath, locale, isFullFieldPath, returnUndefined }) { | ||
| function throwOrReturnUndefined(errorMessage) { | ||
| if (returnUndefined) { | ||
| return undefined; | ||
| } | ||
| else { | ||
| throw new Error(errorMessage); | ||
| } | ||
| } | ||
| const origFieldPath = fieldPath; | ||
| const origFieldPathStr = fieldPath.join('.'); | ||
| if (isFullFieldPath) { | ||
| if (lodash_1.default.head(fieldPath) !== 'fields') { | ||
| throw new Error('fieldPath must start with "fields" specifier'); | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The fieldPath must start with "fields" specifier when 'isFullFieldPath' is set.`); | ||
| } | ||
@@ -140,8 +190,6 @@ fieldPath = lodash_1.default.tail(fieldPath); | ||
| if (lodash_1.default.isEmpty(fieldPath)) { | ||
| throw new Error('the fieldPath cannot be empty'); | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The fieldPath cannot be empty`); | ||
| } | ||
| const docId = document.id; | ||
| const modelName = document.modelName; | ||
| const origFieldPath = fieldPath; | ||
| const origFieldPathStr = fieldPath.join('.'); | ||
| function getPrefixOf(fieldPath, include = 0) { | ||
@@ -153,4 +201,4 @@ return origFieldPath.slice(0, origFieldPath.length - fieldPath.length + include).join('.'); | ||
| if (!localizedField) { | ||
| throw new Error(`the value of a field at fieldPath '${getPrefixOf(fieldPath)}' is undefined ` + | ||
| `for the document '${docId}' of type '${modelName}' for the '${locale}' locale.`); | ||
| return throwOrReturnUndefined(`Illegal fieldPath '${origFieldPathStr}'. The value of a field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `of a document '${docId}' (model: '${modelName}') for the '${locale}' locale is undefined.`); | ||
| } | ||
@@ -166,3 +214,4 @@ // if no more items in fieldPath return the found document and model fields | ||
| if (lodash_1.default.head(fieldPath) !== 'fields') { | ||
| throw new Error(`the fieldPath '${getPrefixOf(fieldPath, 1)}' must contain "fields" specifier before a field's name`); | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is an object field and must be followed by the "fields" specifier when 'isFullFieldPath' is set.`); | ||
| } | ||
@@ -173,3 +222,4 @@ fieldPath = lodash_1.default.tail(fieldPath); | ||
| if (typeof fieldName === 'undefined') { | ||
| throw new Error(`the fieldPath '${getPrefixOf(fieldPath, 1)}' of a document '${docId}' of type '${modelName}' must point to a field name`); | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `of a document '${docId}' (model: '${modelName}') is an object field and must be followed by a field name.`); | ||
| } | ||
@@ -179,3 +229,4 @@ fieldPath = lodash_1.default.tail(fieldPath); | ||
| if (!childDocField) { | ||
| throw new Error(`the fieldPath '${getPrefixOf(fieldPath)}' points to a non existing field in a document '${docId}' of type '${modelName}'`); | ||
| return throwOrReturnUndefined(`Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `of a document '${docId}' (model: '${modelName}') points to a non existing field.`); | ||
| } | ||
@@ -187,3 +238,4 @@ return getField(childDocField, fieldPath); | ||
| if (lodash_1.default.head(fieldPath) !== 'items') { | ||
| throw new Error(`fieldPath '${getPrefixOf(fieldPath, 1)}' must contain "items" specifier after a "list" field`); | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is a list field and must be followed by the "items" specifier when 'isFullFieldPath' is set.`); | ||
| } | ||
@@ -194,3 +246,4 @@ fieldPath = lodash_1.default.tail(fieldPath); | ||
| if (typeof itemIndex === 'undefined') { | ||
| throw new Error(`fieldPath '${getPrefixOf(fieldPath, 1)}' of a document '${docId}' of type '${modelName}' must point to a list item index`); | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `of a document '${docId}' (model: '${modelName}') is a list field and must be followed by a list item index.`); | ||
| } | ||
@@ -200,3 +253,4 @@ fieldPath = lodash_1.default.tail(fieldPath); | ||
| if (!listItem) { | ||
| throw new Error(`the fieldPath '${getPrefixOf(fieldPath)}' points to a non existing list item in a document '${docId}' of type '${modelName}'`); | ||
| return throwOrReturnUndefined(`Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `of a document '${docId}' (model: '${modelName}') points to a non existing list item.`); | ||
| } | ||
@@ -206,4 +260,4 @@ return getField(listItem, fieldPath); | ||
| default: { | ||
| const primitiveFieldName = origFieldPath[origFieldPath.length - fieldPath.length - 1]; | ||
| throw new Error(`the fieldPath '${origFieldPathStr}' is illegal, a primitive field '${primitiveFieldName}' of type '${localizedField.type}' cannot be followed by additional field paths`); | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is a primitive field of type '${docField.type}' and cannot be followed by another field path.`); | ||
| } | ||
@@ -215,7 +269,7 @@ } | ||
| if (typeof fieldName !== 'string') { | ||
| throw new Error('the first fieldPath item must be string'); | ||
| return throwOrReturnUndefined('the first fieldPath item must be string'); | ||
| } | ||
| const childDocField = document.fields[fieldName]; | ||
| if (!childDocField) { | ||
| throw new Error(`document '${docId}' of type '${modelName}' doesn't have a field named '${fieldName}'`); | ||
| return throwOrReturnUndefined(`document '${docId}' of type '${modelName}' doesn't have a field named '${fieldName}'`); | ||
| } | ||
@@ -596,2 +650,174 @@ return getField(childDocField, restFieldPath); | ||
| exports.getModelAndDocumentFieldForLocalizedFieldPath = getModelAndDocumentFieldForLocalizedFieldPath; | ||
| /** | ||
| * This function returns the value of a field in the specified `document` at the | ||
| * specified `fieldPath`. | ||
| * | ||
| * ```ts | ||
| * getDocumentFieldValueAtFieldPath({ | ||
| * document, | ||
| * fieldPath: 'sections[1].title' | ||
| * }) | ||
| * ``` | ||
| * | ||
| * The `fieldPath` can also contain locale specifiers for localized fields. | ||
| * | ||
| * ```ts | ||
| * getDocumentFieldValueAtFieldPath({ | ||
| * document, | ||
| * fieldPath: 'sections[1].title.es' | ||
| * }) | ||
| * ``` | ||
| * | ||
| * Note: getting a value of a localized field without using a locale specifier | ||
| * will throw an exception. | ||
| * | ||
| * The `fieldPath` can be a string following the standard JavaScript notation | ||
| * for getting nested properties and array values, or a {@link FieldPath}. | ||
| * | ||
| * If the document field at the specified `fieldPath` not found, undefined is returned. | ||
| * | ||
| * @param document The parent document | ||
| * @param fieldPath The field path to the target field | ||
| * @param getDocumentById A function | ||
| * @param isFullFieldPath | ||
| */ | ||
| function getDocumentFieldValueAtFieldPath({ document, fieldPath, getDocumentById, isFullFieldPath }) { | ||
| if (typeof fieldPath === 'string') { | ||
| fieldPath = stringToFieldPath(fieldPath); | ||
| } | ||
| const origFieldPath = fieldPath; | ||
| const origFieldPathStr = fieldPath.join('.'); | ||
| if (isFullFieldPath) { | ||
| if (lodash_1.default.head(fieldPath) !== 'fields') { | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The fieldPath must start with "fields" specifier when 'isFullFieldPath' is set.`); | ||
| } | ||
| fieldPath = lodash_1.default.tail(fieldPath); | ||
| } | ||
| if (lodash_1.default.isEmpty(fieldPath)) { | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The fieldPath cannot be empty`); | ||
| } | ||
| function getPrefixOf(fieldPath, include = 0) { | ||
| return origFieldPath.slice(0, origFieldPath.length - fieldPath.length + include).join('.'); | ||
| } | ||
| function getField(docField, fieldPath) { | ||
| if (docField.localized) { | ||
| if (isFullFieldPath) { | ||
| if (lodash_1.default.head(fieldPath) !== 'locales') { | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is a localized field and must be followed by the "locales" specifier when 'isFullFieldPath' is set.`); | ||
| } | ||
| fieldPath = lodash_1.default.tail(fieldPath); | ||
| } | ||
| const locale = lodash_1.default.head(fieldPath); | ||
| if (typeof locale !== 'string') { | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is a localized field and must be followed by a locale specifier.`); | ||
| } | ||
| fieldPath = lodash_1.default.tail(fieldPath); | ||
| const localizedDocField = (0, types_1.getLocalizedFieldForLocale)(docField, locale); | ||
| if (!localizedDocField) { | ||
| return undefined; | ||
| } | ||
| docField = localizedDocField; | ||
| } | ||
| // if no more items in fieldPath return the found document fields | ||
| if (fieldPath.length === 0) { | ||
| return (0, document_utils_1.getDocumentFieldValue)({ documentField: docField }); | ||
| } | ||
| switch (docField.type) { | ||
| case 'object': | ||
| case 'model': { | ||
| if (isFullFieldPath) { | ||
| if (lodash_1.default.head(fieldPath) !== 'fields') { | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is a '${docField.type}' field and must be followed by the "fields" specifier when 'isFullFieldPath' is set.`); | ||
| } | ||
| fieldPath = lodash_1.default.tail(fieldPath); | ||
| } | ||
| const fieldName = lodash_1.default.head(fieldPath); | ||
| if (typeof fieldName === 'undefined') { | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is an '${docField.type}' field and must be followed by a field name.`); | ||
| } | ||
| fieldPath = lodash_1.default.tail(fieldPath); | ||
| const childDocField = docField.fields[fieldName]; | ||
| if (!childDocField) { | ||
| return undefined; | ||
| } | ||
| return getField(childDocField, fieldPath); | ||
| } | ||
| case 'reference': { | ||
| if (docField.refType !== 'document') { | ||
| return undefined; | ||
| } | ||
| if (!getDocumentById) { | ||
| throw new Error(`Can't get the field value for a field at the fieldPath '${origFieldPathStr}'. ` + | ||
| `The getDocumentById() function was not provided, ` + | ||
| `and the field at path '${getPrefixOf(fieldPath)}' is a reference field.`); | ||
| } | ||
| const refDocument = getDocumentById({ | ||
| id: docField.refId, | ||
| srcType: document.srcType, | ||
| srcProjectId: document.srcProjectId | ||
| }); | ||
| if (!refDocument) { | ||
| return undefined; | ||
| } | ||
| if (isFullFieldPath) { | ||
| if (lodash_1.default.head(fieldPath) !== 'fields') { | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is a reference field and must be followed by the "fields" specifier when 'isFullFieldPath' is set.`); | ||
| } | ||
| fieldPath = lodash_1.default.tail(fieldPath); | ||
| } | ||
| const fieldName = lodash_1.default.head(fieldPath); | ||
| if (typeof fieldName === 'undefined') { | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is a reference field and must be followed by a field name.`); | ||
| } | ||
| fieldPath = lodash_1.default.tail(fieldPath); | ||
| const childDocField = refDocument.fields[fieldName]; | ||
| if (!childDocField) { | ||
| return undefined; | ||
| } | ||
| return getField(childDocField, fieldPath); | ||
| } | ||
| case 'list': { | ||
| if (isFullFieldPath) { | ||
| if (lodash_1.default.head(fieldPath) !== 'items') { | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is a list field and must be followed by the "items" specifier when 'isFullFieldPath' is set.`); | ||
| } | ||
| fieldPath = lodash_1.default.tail(fieldPath); | ||
| } | ||
| const itemIndex = lodash_1.default.head(fieldPath); | ||
| if (typeof itemIndex === 'undefined' || (typeof itemIndex !== 'number' && !/\d+/.test(itemIndex))) { | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is a list field and must be followed by a list item index.`); | ||
| } | ||
| fieldPath = lodash_1.default.tail(fieldPath); | ||
| const listItem = docField.items && docField.items[itemIndex]; | ||
| if (!listItem) { | ||
| return; | ||
| } | ||
| return getField(listItem, fieldPath); | ||
| } | ||
| default: { | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is a primitive field of type '${docField.type}' and cannot be followed by another field path.`); | ||
| } | ||
| } | ||
| } | ||
| const fieldName = lodash_1.default.head(fieldPath); | ||
| const childFieldPath = lodash_1.default.tail(fieldPath); | ||
| if (typeof fieldName !== 'string') { | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The first fieldPath item must be a string specifying a document's field name.`); | ||
| } | ||
| const childDocField = document.fields[fieldName]; | ||
| if (!childDocField) { | ||
| return undefined; | ||
| } | ||
| return getField(childDocField, childFieldPath); | ||
| } | ||
| exports.getDocumentFieldValueAtFieldPath = getDocumentFieldValueAtFieldPath; | ||
| //# sourceMappingURL=field-path-utils.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"field-path-utils.js","sourceRoot":"","sources":["../src/field-path-utils.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"field-path-utils.js","sourceRoot":"","sources":["../src/field-path-utils.ts"],"names":[],"mappings":"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"} |
+0
-1
@@ -1,4 +0,3 @@ | ||
| export declare function fieldPathToString(fieldPath: (string | number)[]): string; | ||
| export declare function failFunctionWithTag(tag: string): (message: string) => never; | ||
| export declare function assertFunctionWithFail(fail: (message: string) => void): (value: any, message: string) => void; | ||
| //# sourceMappingURL=utils.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,UAmB/D;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,aACb,MAAM,WAGvC;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,WACpC,GAAG,WAAW,MAAM,UAKrD"} | ||
| {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,aACb,MAAM,WAGvC;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,WACpC,GAAG,WAAW,MAAM,UAKrD"} |
+1
-24
| "use strict"; | ||
| var __importDefault = (this && this.__importDefault) || function (mod) { | ||
| return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.assertFunctionWithFail = exports.failFunctionWithTag = exports.fieldPathToString = void 0; | ||
| const lodash_1 = __importDefault(require("lodash")); | ||
| function fieldPathToString(fieldPath) { | ||
| return lodash_1.default.reduce(fieldPath, (accumulator, fieldName, index) => { | ||
| if (lodash_1.default.isString(fieldName) && /\W/.test(fieldName)) { | ||
| // field name is a string with non alphanumeric character | ||
| accumulator += `['${fieldName}']`; | ||
| } | ||
| else if (lodash_1.default.isNumber(fieldName)) { | ||
| accumulator += `[${fieldName}]`; | ||
| } | ||
| else { | ||
| if (index > 0) { | ||
| accumulator += '.'; | ||
| } | ||
| accumulator += fieldName; | ||
| } | ||
| return accumulator; | ||
| }, ''); | ||
| } | ||
| exports.fieldPathToString = fieldPathToString; | ||
| exports.assertFunctionWithFail = exports.failFunctionWithTag = void 0; | ||
| function failFunctionWithTag(tag) { | ||
@@ -28,0 +5,0 @@ return function fail(message) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AAEvB,SAAgB,iBAAiB,CAAC,SAA8B;IAC5D,OAAO,gBAAC,CAAC,MAAM,CACX,SAAS,EACT,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;QAC9B,IAAI,gBAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAC/C,yDAAyD;YACzD,WAAW,IAAI,KAAK,SAAS,IAAI,CAAC;SACrC;aAAM,IAAI,gBAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAC9B,WAAW,IAAI,IAAI,SAAS,GAAG,CAAC;SACnC;aAAM;YACH,IAAI,KAAK,GAAG,CAAC,EAAE;gBACX,WAAW,IAAI,GAAG,CAAC;aACtB;YACD,WAAW,IAAI,SAAS,CAAC;SAC5B;QACD,OAAO,WAAW,CAAC;IACvB,CAAC,EACD,EAAE,CACL,CAAC;AACN,CAAC;AAnBD,8CAmBC;AAED,SAAgB,mBAAmB,CAAC,GAAW;IAC3C,OAAO,SAAS,IAAI,CAAC,OAAe;QAChC,MAAM,IAAI,KAAK,CAAC,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC;AACN,CAAC;AAJD,kDAIC;AAED,SAAgB,sBAAsB,CAAC,IAA+B;IAClE,OAAO,SAAS,MAAM,CAAC,KAAU,EAAE,OAAe;QAC9C,IAAI,CAAC,KAAK,EAAE;YACR,IAAI,CAAC,OAAO,CAAC,CAAC;SACjB;IACL,CAAC,CAAC;AACN,CAAC;AAND,wDAMC"} | ||
| {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,SAAgB,mBAAmB,CAAC,GAAW;IAC3C,OAAO,SAAS,IAAI,CAAC,OAAe;QAChC,MAAM,IAAI,KAAK,CAAC,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC;AACN,CAAC;AAJD,kDAIC;AAED,SAAgB,sBAAsB,CAAC,IAA+B;IAClE,OAAO,SAAS,MAAM,CAAC,KAAU,EAAE,OAAe;QAC9C,IAAI,CAAC,KAAK,EAAE;YACR,IAAI,CAAC,OAAO,CAAC,CAAC;SACjB;IACL,CAAC,CAAC;AACN,CAAC;AAND,wDAMC"} |
+3
-3
| { | ||
| "name": "@stackbit/utils", | ||
| "version": "0.8.1-staging.1", | ||
| "version": "0.8.1", | ||
| "description": "Stackbit utilities", | ||
@@ -30,3 +30,3 @@ "main": "dist/index.js", | ||
| "@notionhq/client": "^2.2.15", | ||
| "@stackbit/types": "2.1.15-staging.1", | ||
| "@stackbit/types": "2.1.14", | ||
| "axios": "^1.7.7", | ||
@@ -46,3 +46,3 @@ "eventsource": "^2.0.2", | ||
| }, | ||
| "gitHead": "10f179eaffbb19523eb7df47a7ffb3fe3ee1dd6b" | ||
| "gitHead": "ea6512cb172c274f7bf39be153c6cea8a67840ea" | ||
| } |
@@ -165,3 +165,19 @@ import http, { IncomingMessage } from 'http'; | ||
| function getDocumentFieldValue({ documentField, locale }: { documentField: StackbitTypes.DocumentField; locale?: string }): any { | ||
| /** | ||
| * Returns the value of a document field. | ||
| * | ||
| * If the document field is a primitive (string, url, slug, text, markdown, enum, date, number, boolean, etc.) | ||
| * then the value of the `value` property is returned. | ||
| * | ||
| * If the document is a field of type "object", "model" or "list", the value of the | ||
| * nested object is simplified and returned. | ||
| * | ||
| * If the document is a field of type "reference", the ID of the referenced | ||
| * document is returned. | ||
| * | ||
| * If the document field is localized, then the value for the provided "locale" | ||
| * is returned. If "locale" was not provided, or the document field does not | ||
| * have any values for the provided "locale", undefined is returned. | ||
| */ | ||
| export function getDocumentFieldValue({ documentField, locale }: { documentField: StackbitTypes.DocumentField; locale?: string }): any { | ||
| const nonLocalizedDocField = getLocalizedFieldForLocale(documentField, locale); | ||
@@ -236,5 +252,5 @@ if (typeof nonLocalizedDocField === 'undefined') { | ||
| // This method was copied from @stackbit/utils => getLocalizedFieldForLocale | ||
| // This method was copied from @stackbit/types => getLocalizedFieldForLocale | ||
| // instead of importing it directly, to allow bundling this file (document-utils.ts) | ||
| // by Webpack without bundling the whole @stackbit/utils when it is imported | ||
| // by Webpack without bundling the whole @stackbit/types when it is imported | ||
| // inside frameworks like Next.js. | ||
@@ -241,0 +257,0 @@ function getLocalizedFieldForLocale<Type extends StackbitTypes.FieldType>( |
+361
-33
| import _ from 'lodash'; | ||
| import { getLocalizedFieldForLocale } from '@stackbit/types'; | ||
| import type { | ||
@@ -8,3 +9,5 @@ Model, | ||
| FieldObjectProps, | ||
| FieldPath, | ||
| Document, | ||
| DocumentWithSource, | ||
| DocumentField, | ||
@@ -14,4 +17,66 @@ DocumentFieldNonLocalized, | ||
| } from '@stackbit/types'; | ||
| import { getLocalizedFieldForLocale } from '@stackbit/types'; | ||
| import { getDocumentFieldValue } from './document-utils'; | ||
| /** | ||
| * Converts a FieldPath into a string. | ||
| * Puts complex strings inside single quotes '', | ||
| * and uses square brackets [] for number keys. | ||
| */ | ||
| export function fieldPathToString(fieldPath: FieldPath) { | ||
| return _.reduce( | ||
| fieldPath, | ||
| (accumulator, fieldName, index) => { | ||
| if (_.isString(fieldName) && /\W/.test(fieldName)) { | ||
| // field name is a string with non-alphanumeric character | ||
| accumulator += `['${fieldName}']`; | ||
| } else if (_.isNumber(fieldName)) { | ||
| accumulator += `[${fieldName}]`; | ||
| } else { | ||
| if (index > 0) { | ||
| accumulator += '.'; | ||
| } | ||
| accumulator += fieldName; | ||
| } | ||
| return accumulator; | ||
| }, | ||
| '' | ||
| ); | ||
| } | ||
| /** | ||
| * Converts string into FieldPath | ||
| * | ||
| * ```js | ||
| * stringToFieldPath("sections[0].button['button-label']") | ||
| * => | ||
| * ["sections", 0, "button", "button-label"] | ||
| * ``` | ||
| */ | ||
| export function stringToFieldPath(fieldPath: string): FieldPath { | ||
| const re = /\.|\[([^\]]+)\]\.?/g; | ||
| const result = []; | ||
| let match: RegExpExecArray | null = null; | ||
| let prevLastIndex = 0; | ||
| while ((match = re.exec(fieldPath)) !== null) { | ||
| if (prevLastIndex < match.index) { | ||
| result.push(fieldPath.substring(prevLastIndex, match.index)); | ||
| } | ||
| if (match[1]) { | ||
| // matched [...] | ||
| if (/^\d+$/.test(match[1])) { | ||
| result.push(parseInt(match[1])); | ||
| } else { | ||
| // remove quotes inside brackets | ||
| // "hero['field-name'][2]" => ["hero", "field-name", 2] | ||
| result.push(match[1].replace(/^'(.*)'$/, '$1').replace(/^"(.*)"$/, '$1')); | ||
| } | ||
| } | ||
| prevLastIndex = re.lastIndex; | ||
| } | ||
| if (prevLastIndex < fieldPath.length) { | ||
| result.push(fieldPath.substring(prevLastIndex)); | ||
| } | ||
| return result; | ||
| } | ||
| export function getModelFieldAtFieldPath({ | ||
@@ -133,2 +198,16 @@ document, | ||
| export type GetDocumentFieldAtFieldPathOptions = { | ||
| document: Document; | ||
| fieldPath: FieldPath; | ||
| locale?: string; | ||
| isFullFieldPath?: boolean; | ||
| returnUndefined?: boolean; | ||
| }; | ||
| export type GetDocumentFieldAtFieldPathOptionsThrow = GetDocumentFieldAtFieldPathOptions & { | ||
| returnUndefined?: false; | ||
| }; | ||
| export type GetDocumentFieldAtFieldPathOptionsUndefined = GetDocumentFieldAtFieldPathOptions & { | ||
| returnUndefined: true; | ||
| }; | ||
| /** | ||
@@ -139,3 +218,3 @@ * This function receives a `document` and returns DocumentFieldNonLocalized at | ||
| * | ||
| * @example | ||
| * ```ts | ||
| * getDocumentFieldAtFieldPath({ | ||
@@ -146,2 +225,3 @@ * document, | ||
| * }) | ||
| * ``` | ||
| * | ||
@@ -152,8 +232,23 @@ * For improved localization support, use the getModelAndDocumentFieldForLocalizedFieldPath | ||
| * The `isFullFieldPath` flag specifies if the `fieldPath` includes container | ||
| * specifiers such as "fields" and "items". | ||
| * specifiers such as "fields" and "items": | ||
| * | ||
| * @example | ||
| * isFullFieldPath: false => fieldPath: ['sections', 1, 'title'] | ||
| * isFullFieldPath: true => fieldPath: ['fields', 'sections', 'items', 1, 'fields', 'title'] | ||
| * ```ts | ||
| * getDocumentFieldAtFieldPath({ | ||
| * document, | ||
| * isFullFieldPath: false, | ||
| * fieldPath: ['sections', 1, 'title'] | ||
| * }) | ||
| * getDocumentFieldAtFieldPath({ | ||
| * document, | ||
| * isFullFieldPath: true, | ||
| * fieldPath: ['fields', 'sections', 'items', 1, 'fields', 'title'] | ||
| * }) | ||
| * ``` | ||
| * | ||
| * By default, if the document field at the specified `fieldPath` not found, this | ||
| * function will throw exception. Setting `returnUndefined` to true will allow | ||
| * the function to return `undefined` if the document field is not found. | ||
| */ | ||
| export function getDocumentFieldAtFieldPath(options: GetDocumentFieldAtFieldPathOptionsThrow): DocumentFieldNonLocalized; | ||
| export function getDocumentFieldAtFieldPath(options: GetDocumentFieldAtFieldPathOptionsUndefined): DocumentFieldNonLocalized | undefined; | ||
| export function getDocumentFieldAtFieldPath({ | ||
@@ -163,12 +258,19 @@ document, | ||
| locale, | ||
| isFullFieldPath | ||
| }: { | ||
| document: Document; | ||
| fieldPath: (string | number)[]; | ||
| locale?: string; | ||
| isFullFieldPath?: boolean; | ||
| }): DocumentFieldNonLocalized { | ||
| isFullFieldPath, | ||
| returnUndefined | ||
| }: GetDocumentFieldAtFieldPathOptions): DocumentFieldNonLocalized | undefined { | ||
| function throwOrReturnUndefined(errorMessage: string) { | ||
| if (returnUndefined) { | ||
| return undefined; | ||
| } else { | ||
| throw new Error(errorMessage); | ||
| } | ||
| } | ||
| const origFieldPath = fieldPath; | ||
| const origFieldPathStr = fieldPath.join('.'); | ||
| if (isFullFieldPath) { | ||
| if (_.head(fieldPath) !== 'fields') { | ||
| throw new Error('fieldPath must start with "fields" specifier'); | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The fieldPath must start with "fields" specifier when 'isFullFieldPath' is set.`); | ||
| } | ||
@@ -179,3 +281,3 @@ fieldPath = _.tail(fieldPath); | ||
| if (_.isEmpty(fieldPath)) { | ||
| throw new Error('the fieldPath cannot be empty'); | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The fieldPath cannot be empty`); | ||
| } | ||
@@ -185,15 +287,13 @@ | ||
| const modelName = document.modelName; | ||
| const origFieldPath = fieldPath; | ||
| const origFieldPathStr = fieldPath.join('.'); | ||
| function getPrefixOf(fieldPath: (string | number)[], include = 0) { | ||
| function getPrefixOf(fieldPath: FieldPath, include = 0) { | ||
| return origFieldPath.slice(0, origFieldPath.length - fieldPath.length + include).join('.'); | ||
| } | ||
| function getField(docField: DocumentField | DocumentListFieldItems, fieldPath: (string | number)[]): DocumentFieldNonLocalized { | ||
| function getField(docField: DocumentField | DocumentListFieldItems, fieldPath: FieldPath): DocumentFieldNonLocalized | undefined { | ||
| const localizedField = getLocalizedFieldForLocale(docField, locale); | ||
| if (!localizedField) { | ||
| throw new Error( | ||
| `the value of a field at fieldPath '${getPrefixOf(fieldPath)}' is undefined ` + | ||
| `for the document '${docId}' of type '${modelName}' for the '${locale}' locale.` | ||
| return throwOrReturnUndefined( | ||
| `Illegal fieldPath '${origFieldPathStr}'. The value of a field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `of a document '${docId}' (model: '${modelName}') for the '${locale}' locale is undefined.` | ||
| ); | ||
@@ -212,3 +312,6 @@ } | ||
| if (_.head(fieldPath) !== 'fields') { | ||
| throw new Error(`the fieldPath '${getPrefixOf(fieldPath, 1)}' must contain "fields" specifier before a field's name`); | ||
| throw new Error( | ||
| `Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is an object field and must be followed by the "fields" specifier when 'isFullFieldPath' is set.` | ||
| ); | ||
| } | ||
@@ -219,3 +322,6 @@ fieldPath = _.tail(fieldPath); | ||
| if (typeof fieldName === 'undefined') { | ||
| throw new Error(`the fieldPath '${getPrefixOf(fieldPath, 1)}' of a document '${docId}' of type '${modelName}' must point to a field name`); | ||
| throw new Error( | ||
| `Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `of a document '${docId}' (model: '${modelName}') is an object field and must be followed by a field name.` | ||
| ); | ||
| } | ||
@@ -225,3 +331,6 @@ fieldPath = _.tail(fieldPath); | ||
| if (!childDocField) { | ||
| throw new Error(`the fieldPath '${getPrefixOf(fieldPath)}' points to a non existing field in a document '${docId}' of type '${modelName}'`); | ||
| return throwOrReturnUndefined( | ||
| `Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `of a document '${docId}' (model: '${modelName}') points to a non existing field.` | ||
| ); | ||
| } | ||
@@ -233,3 +342,6 @@ return getField(childDocField, fieldPath); | ||
| if (_.head(fieldPath) !== 'items') { | ||
| throw new Error(`fieldPath '${getPrefixOf(fieldPath, 1)}' must contain "items" specifier after a "list" field`); | ||
| throw new Error( | ||
| `Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is a list field and must be followed by the "items" specifier when 'isFullFieldPath' is set.` | ||
| ); | ||
| } | ||
@@ -240,3 +352,6 @@ fieldPath = _.tail(fieldPath); | ||
| if (typeof itemIndex === 'undefined') { | ||
| throw new Error(`fieldPath '${getPrefixOf(fieldPath, 1)}' of a document '${docId}' of type '${modelName}' must point to a list item index`); | ||
| throw new Error( | ||
| `Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `of a document '${docId}' (model: '${modelName}') is a list field and must be followed by a list item index.` | ||
| ); | ||
| } | ||
@@ -246,4 +361,5 @@ fieldPath = _.tail(fieldPath); | ||
| if (!listItem) { | ||
| throw new Error( | ||
| `the fieldPath '${getPrefixOf(fieldPath)}' points to a non existing list item in a document '${docId}' of type '${modelName}'` | ||
| return throwOrReturnUndefined( | ||
| `Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `of a document '${docId}' (model: '${modelName}') points to a non existing list item.` | ||
| ); | ||
@@ -254,5 +370,5 @@ } | ||
| default: { | ||
| const primitiveFieldName = origFieldPath[origFieldPath.length - fieldPath.length - 1]; | ||
| throw new Error( | ||
| `the fieldPath '${origFieldPathStr}' is illegal, a primitive field '${primitiveFieldName}' of type '${localizedField.type}' cannot be followed by additional field paths` | ||
| `Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is a primitive field of type '${docField.type}' and cannot be followed by another field path.` | ||
| ); | ||
@@ -267,3 +383,3 @@ } | ||
| if (typeof fieldName !== 'string') { | ||
| throw new Error('the first fieldPath item must be string'); | ||
| return throwOrReturnUndefined('the first fieldPath item must be string'); | ||
| } | ||
@@ -273,3 +389,3 @@ | ||
| if (!childDocField) { | ||
| throw new Error(`document '${docId}' of type '${modelName}' doesn't have a field named '${fieldName}'`); | ||
| return throwOrReturnUndefined(`document '${docId}' of type '${modelName}' doesn't have a field named '${fieldName}'`); | ||
| } | ||
@@ -741,1 +857,213 @@ | ||
| } | ||
| /** | ||
| * This function returns the value of a field in the specified `document` at the | ||
| * specified `fieldPath`. | ||
| * | ||
| * ```ts | ||
| * getDocumentFieldValueAtFieldPath({ | ||
| * document, | ||
| * fieldPath: 'sections[1].title' | ||
| * }) | ||
| * ``` | ||
| * | ||
| * The `fieldPath` can also contain locale specifiers for localized fields. | ||
| * | ||
| * ```ts | ||
| * getDocumentFieldValueAtFieldPath({ | ||
| * document, | ||
| * fieldPath: 'sections[1].title.es' | ||
| * }) | ||
| * ``` | ||
| * | ||
| * Note: getting a value of a localized field without using a locale specifier | ||
| * will throw an exception. | ||
| * | ||
| * The `fieldPath` can be a string following the standard JavaScript notation | ||
| * for getting nested properties and array values, or a {@link FieldPath}. | ||
| * | ||
| * If the document field at the specified `fieldPath` not found, undefined is returned. | ||
| * | ||
| * @param document The parent document | ||
| * @param fieldPath The field path to the target field | ||
| * @param getDocumentById A function | ||
| * @param isFullFieldPath | ||
| */ | ||
| export function getDocumentFieldValueAtFieldPath({ | ||
| document, | ||
| fieldPath, | ||
| getDocumentById, | ||
| isFullFieldPath | ||
| }: { | ||
| document: DocumentWithSource; | ||
| fieldPath: FieldPath | string; | ||
| getDocumentById?: (options: { id: string; srcType?: string; srcProjectId?: string }) => DocumentWithSource | undefined; | ||
| isFullFieldPath?: boolean; | ||
| }): unknown { | ||
| if (typeof fieldPath === 'string') { | ||
| fieldPath = stringToFieldPath(fieldPath); | ||
| } | ||
| const origFieldPath = fieldPath; | ||
| const origFieldPathStr = fieldPath.join('.'); | ||
| if (isFullFieldPath) { | ||
| if (_.head(fieldPath) !== 'fields') { | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The fieldPath must start with "fields" specifier when 'isFullFieldPath' is set.`); | ||
| } | ||
| fieldPath = _.tail(fieldPath); | ||
| } | ||
| if (_.isEmpty(fieldPath)) { | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The fieldPath cannot be empty`); | ||
| } | ||
| function getPrefixOf(fieldPath: FieldPath, include = 0) { | ||
| return origFieldPath.slice(0, origFieldPath.length - fieldPath.length + include).join('.'); | ||
| } | ||
| function getField(docField: DocumentField | DocumentListFieldItems, fieldPath: FieldPath): unknown { | ||
| if (docField.localized) { | ||
| if (isFullFieldPath) { | ||
| if (_.head(fieldPath) !== 'locales') { | ||
| throw new Error( | ||
| `Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is a localized field and must be followed by the "locales" specifier when 'isFullFieldPath' is set.` | ||
| ); | ||
| } | ||
| fieldPath = _.tail(fieldPath); | ||
| } | ||
| const locale = _.head(fieldPath); | ||
| if (typeof locale !== 'string') { | ||
| throw new Error( | ||
| `Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is a localized field and must be followed by a locale specifier.` | ||
| ); | ||
| } | ||
| fieldPath = _.tail(fieldPath); | ||
| const localizedDocField = getLocalizedFieldForLocale(docField, locale); | ||
| if (!localizedDocField) { | ||
| return undefined; | ||
| } | ||
| docField = localizedDocField; | ||
| } | ||
| // if no more items in fieldPath return the found document fields | ||
| if (fieldPath.length === 0) { | ||
| return getDocumentFieldValue({ documentField: docField }); | ||
| } | ||
| switch (docField.type) { | ||
| case 'object': | ||
| case 'model': { | ||
| if (isFullFieldPath) { | ||
| if (_.head(fieldPath) !== 'fields') { | ||
| throw new Error( | ||
| `Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is a '${docField.type}' field and must be followed by the "fields" specifier when 'isFullFieldPath' is set.` | ||
| ); | ||
| } | ||
| fieldPath = _.tail(fieldPath); | ||
| } | ||
| const fieldName = _.head(fieldPath); | ||
| if (typeof fieldName === 'undefined') { | ||
| throw new Error( | ||
| `Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is an '${docField.type}' field and must be followed by a field name.` | ||
| ); | ||
| } | ||
| fieldPath = _.tail(fieldPath); | ||
| const childDocField = docField.fields[fieldName]; | ||
| if (!childDocField) { | ||
| return undefined; | ||
| } | ||
| return getField(childDocField, fieldPath); | ||
| } | ||
| case 'reference': { | ||
| if (docField.refType !== 'document') { | ||
| return undefined; | ||
| } | ||
| if (!getDocumentById) { | ||
| throw new Error( | ||
| `Can't get the field value for a field at the fieldPath '${origFieldPathStr}'. ` + | ||
| `The getDocumentById() function was not provided, ` + | ||
| `and the field at path '${getPrefixOf(fieldPath)}' is a reference field.` | ||
| ); | ||
| } | ||
| const refDocument = getDocumentById({ | ||
| id: docField.refId, | ||
| srcType: document.srcType, | ||
| srcProjectId: document.srcProjectId | ||
| }); | ||
| if (!refDocument) { | ||
| return undefined; | ||
| } | ||
| if (isFullFieldPath) { | ||
| if (_.head(fieldPath) !== 'fields') { | ||
| throw new Error( | ||
| `Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is a reference field and must be followed by the "fields" specifier when 'isFullFieldPath' is set.` | ||
| ); | ||
| } | ||
| fieldPath = _.tail(fieldPath); | ||
| } | ||
| const fieldName = _.head(fieldPath); | ||
| if (typeof fieldName === 'undefined') { | ||
| throw new Error( | ||
| `Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is a reference field and must be followed by a field name.` | ||
| ); | ||
| } | ||
| fieldPath = _.tail(fieldPath); | ||
| const childDocField = refDocument.fields[fieldName]; | ||
| if (!childDocField) { | ||
| return undefined; | ||
| } | ||
| return getField(childDocField, fieldPath); | ||
| } | ||
| case 'list': { | ||
| if (isFullFieldPath) { | ||
| if (_.head(fieldPath) !== 'items') { | ||
| throw new Error( | ||
| `Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is a list field and must be followed by the "items" specifier when 'isFullFieldPath' is set.` | ||
| ); | ||
| } | ||
| fieldPath = _.tail(fieldPath); | ||
| } | ||
| const itemIndex = _.head(fieldPath) as number; | ||
| if (typeof itemIndex === 'undefined' || (typeof itemIndex !== 'number' && !/\d+/.test(itemIndex))) { | ||
| throw new Error( | ||
| `Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is a list field and must be followed by a list item index.` | ||
| ); | ||
| } | ||
| fieldPath = _.tail(fieldPath); | ||
| const listItem = docField.items && docField.items[itemIndex]; | ||
| if (!listItem) { | ||
| return; | ||
| } | ||
| return getField(listItem, fieldPath); | ||
| } | ||
| default: { | ||
| throw new Error( | ||
| `Illegal fieldPath '${origFieldPathStr}'. The field at path '${getPrefixOf(fieldPath)}' ` + | ||
| `is a primitive field of type '${docField.type}' and cannot be followed by another field path.` | ||
| ); | ||
| } | ||
| } | ||
| } | ||
| const fieldName = _.head(fieldPath); | ||
| const childFieldPath = _.tail(fieldPath); | ||
| if (typeof fieldName !== 'string') { | ||
| throw new Error(`Illegal fieldPath '${origFieldPathStr}'. The first fieldPath item must be a string specifying a document's field name.`); | ||
| } | ||
| const childDocField: DocumentField | undefined = document.fields[fieldName]; | ||
| if (!childDocField) { | ||
| return undefined; | ||
| } | ||
| return getField(childDocField, childFieldPath); | ||
| } |
+0
-23
@@ -1,24 +0,1 @@ | ||
| import _ from 'lodash'; | ||
| export function fieldPathToString(fieldPath: (string | number)[]) { | ||
| return _.reduce( | ||
| fieldPath, | ||
| (accumulator, fieldName, index) => { | ||
| if (_.isString(fieldName) && /\W/.test(fieldName)) { | ||
| // field name is a string with non alphanumeric character | ||
| accumulator += `['${fieldName}']`; | ||
| } else if (_.isNumber(fieldName)) { | ||
| accumulator += `[${fieldName}]`; | ||
| } else { | ||
| if (index > 0) { | ||
| accumulator += '.'; | ||
| } | ||
| accumulator += fieldName; | ||
| } | ||
| return accumulator; | ||
| }, | ||
| '' | ||
| ); | ||
| } | ||
| export function failFunctionWithTag(tag: string) { | ||
@@ -25,0 +2,0 @@ return function fail(message: string) { |
Network access
Supply chain riskThis module accesses the network.
Found 2 instances in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 4 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 2 instances in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 2 instances in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 4 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 2 instances in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
608330
8.62%93
1.09%11345
9.39%+ Added
- Removed
Updated