@wix/patterns-cms 1.14.0 → 1.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/adapter/__tests__/cmsFieldActions.spec.js.map +1 -1
- package/dist/cjs/adapter/__tests__/createCmsBackend.spec.js +107 -14
- package/dist/cjs/adapter/__tests__/createCmsBackend.spec.js.map +1 -1
- package/dist/cjs/adapter/__tests__/filterUtils.spec.js +7 -7
- package/dist/cjs/adapter/__tests__/filterUtils.spec.js.map +1 -1
- package/dist/cjs/adapter/__tests__/searchUtils.spec.js.map +1 -1
- package/dist/cjs/adapter/__tests__/sortUtils.spec.js.map +1 -1
- package/dist/cjs/adapter/__tests__/transformCmsSchema.spec.js.map +1 -1
- package/dist/cjs/adapter/__tests__/useCmsSchemaSource.spec.js +47 -11
- package/dist/cjs/adapter/__tests__/useCmsSchemaSource.spec.js.map +1 -1
- package/dist/cjs/adapter/cmsBackup.js.map +1 -1
- package/dist/cjs/adapter/cmsFieldTypeMap.js.map +1 -1
- package/dist/cjs/adapter/cmsPermissions.js.map +1 -1
- package/dist/cjs/adapter/constants.js.map +1 -1
- package/dist/cjs/adapter/createCmsBackend.js +33 -10
- package/dist/cjs/adapter/createCmsBackend.js.map +1 -1
- package/dist/cjs/adapter/createCmsFieldActions.js.map +1 -1
- package/dist/cjs/adapter/fetchExternalDbConnections.js.map +1 -1
- package/dist/cjs/adapter/filterUtils.js +7 -7
- package/dist/cjs/adapter/filterUtils.js.map +1 -1
- package/dist/cjs/adapter/loadCmsSchema.js.map +1 -1
- package/dist/cjs/adapter/searchUtils.js.map +1 -1
- package/dist/cjs/adapter/sortUtils.js.map +1 -1
- package/dist/cjs/adapter/transformCmsSchema.js.map +1 -1
- package/dist/cjs/adapter/useCmsSchemaSource.js +36 -11
- package/dist/cjs/adapter/useCmsSchemaSource.js.map +1 -1
- package/dist/cjs/testkit/cmsFetchMocks.js +2 -2
- package/dist/cjs/testkit/cmsFetchMocks.js.map +1 -1
- package/dist/esm/adapter/__tests__/cmsFieldActions.spec.js +15 -3
- package/dist/esm/adapter/__tests__/cmsFieldActions.spec.js.map +1 -1
- package/dist/esm/adapter/__tests__/createCmsBackend.spec.js +68 -12
- package/dist/esm/adapter/__tests__/createCmsBackend.spec.js.map +1 -1
- package/dist/esm/adapter/__tests__/filterUtils.spec.js +1 -1
- package/dist/esm/adapter/__tests__/filterUtils.spec.js.map +1 -1
- package/dist/esm/adapter/__tests__/searchUtils.spec.js.map +1 -1
- package/dist/esm/adapter/__tests__/sortUtils.spec.js.map +1 -1
- package/dist/esm/adapter/__tests__/useCmsSchemaSource.spec.js +45 -6
- package/dist/esm/adapter/__tests__/useCmsSchemaSource.spec.js.map +1 -1
- package/dist/esm/adapter/createCmsBackend.js +33 -10
- package/dist/esm/adapter/createCmsBackend.js.map +1 -1
- package/dist/esm/adapter/createCmsFieldActions.js.map +1 -1
- package/dist/esm/adapter/filterUtils.js +2 -2
- package/dist/esm/adapter/filterUtils.js.map +1 -1
- package/dist/esm/adapter/loadCmsSchema.js.map +1 -1
- package/dist/esm/adapter/searchUtils.js.map +1 -1
- package/dist/esm/adapter/sortUtils.js.map +1 -1
- package/dist/esm/adapter/transformCmsSchema.js.map +1 -1
- package/dist/esm/adapter/useCmsSchemaSource.js +39 -8
- package/dist/esm/adapter/useCmsSchemaSource.js.map +1 -1
- package/dist/esm/testkit/cmsFetchMocks.js +1 -1
- package/dist/esm/testkit/cmsFetchMocks.js.map +1 -1
- package/dist/types/adapter/cmsBackup.d.ts +1 -1
- package/dist/types/adapter/cmsFieldTypeMap.d.ts +1 -1
- package/dist/types/adapter/cmsPermissions.d.ts +1 -1
- package/dist/types/adapter/constants.d.ts +1 -1
- package/dist/types/adapter/createCmsBackend.d.ts +1 -1
- package/dist/types/adapter/createCmsBackend.d.ts.map +1 -1
- package/dist/types/adapter/createCmsFieldActions.d.ts +1 -1
- package/dist/types/adapter/createCmsFieldActions.d.ts.map +1 -1
- package/dist/types/adapter/fetchExternalDbConnections.d.ts +1 -1
- package/dist/types/adapter/filterUtils.d.ts +2 -1
- package/dist/types/adapter/filterUtils.d.ts.map +1 -1
- package/dist/types/adapter/loadCmsSchema.d.ts +2 -1
- package/dist/types/adapter/loadCmsSchema.d.ts.map +1 -1
- package/dist/types/adapter/searchUtils.d.ts +2 -1
- package/dist/types/adapter/searchUtils.d.ts.map +1 -1
- package/dist/types/adapter/sortUtils.d.ts +2 -1
- package/dist/types/adapter/sortUtils.d.ts.map +1 -1
- package/dist/types/adapter/transformCmsSchema.d.ts +1 -1
- package/dist/types/adapter/transformCmsSchema.d.ts.map +1 -1
- package/dist/types/adapter/useCmsSchemaSource.d.ts +4 -1
- package/dist/types/adapter/useCmsSchemaSource.d.ts.map +1 -1
- package/dist/types/testkit/cmsFetchMocks.d.ts +2 -2
- package/dist/types/testkit/cmsFetchMocks.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_data","require","_bexCore","_filterUtils","_constants","_wixDataQueryRecorder","jest","mock","recorder","items","query","fn","createQueryRecorder","filter","makeQuery","filters","describe","beforeEach","clearAllMocks","numberFields","numberField","id","type","displayName","capabilities","supportedQueryOperators","sortable","it","dataQuery","addFiltersToDataQuery","from","to","fields","expect","firstCallArgs","toEqual","wasCalled","toBe","booleanFields","booleanField","BooleanFilters","checked","unchecked","andArgs","toBeDefined","falseFilter","eqValues","calls","c","method","map","args","toContain","richContentFields","richField","HasValueFilters","hasValue","noValue","tagsField","textFields","textField","operator","FilterOperator","CONTAINS","value","IS_EMPTY","EXISTS","NOT_CONTAINS","notArgs","innerFilter","addressField"],"sources":["../../../../src/adapter/__tests__/filterUtils.spec.ts"],"sourcesContent":["import { items } from '@wix/data';\nimport { FilterOperator } from '@wix/bex-core';\nimport type { OffsetQuery, Schema } from '@wix/bex-core';\nimport { addFiltersToDataQuery } from '../filterUtils';\nimport { BooleanFilters, HasValueFilters } from '../constants';\nimport {\n firstCallArgs,\n wasCalled,\n type QueryRecorder,\n} from './wixDataQueryRecorder';\n\n// Replace the `@wix/data` `items` builders with chainable recorders so we can\n// assert which WQL operator methods the util produced.\njest.mock('@wix/data', () => {\n const recorder = require('./wixDataQueryRecorder');\n return {\n items: {\n query: jest.fn(() => recorder.createQueryRecorder()),\n filter: jest.fn(() => recorder.createQueryRecorder()),\n },\n };\n});\n\ntype SchemaFields = Schema['fields'];\n\nconst makeQuery = (filters: Record<string, unknown>): OffsetQuery =>\n ({ filters } as unknown as OffsetQuery);\n\ndescribe('addFiltersToDataQuery', () => {\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n const numberFields: SchemaFields = {\n numberField: {\n id: 'numberField',\n type: 'NUMBER',\n displayName: 'Number Field',\n capabilities: { supportedQueryOperators: ['GTE', 'LTE'], sortable: true },\n },\n };\n\n it('applies a number range filter as ge (from) and le (to)', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({ numberField: { from: 5, to: 10 } }),\n fields: numberFields,\n });\n\n expect(firstCallArgs(dataQuery, 'ge')).toEqual(['numberField', 5]);\n expect(firstCallArgs(dataQuery, 'le')).toEqual(['numberField', 10]);\n });\n\n it('ignores range props whose operator is not supported by the field', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({ numberField: { from: 5, to: 10 } }),\n fields: {\n numberField: {\n id: 'numberField',\n type: 'NUMBER',\n displayName: 'Number Field',\n // Only EQ supported → GTE/LTE range props are dropped.\n capabilities: { supportedQueryOperators: ['EQ'], sortable: true },\n },\n },\n });\n\n expect(wasCalled(dataQuery, 'ge')).toBe(false);\n expect(wasCalled(dataQuery, 'le')).toBe(false);\n });\n\n describe('BOOLEAN array filter', () => {\n const booleanFields: SchemaFields = {\n booleanField: {\n id: 'booleanField',\n type: 'BOOLEAN',\n displayName: 'Boolean Field',\n capabilities: { supportedQueryOperators: ['EQ'], sortable: true },\n },\n };\n\n it('applies eq(field, true) when \"checked\" is selected', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({ booleanField: [{ id: BooleanFilters.checked }] }),\n fields: booleanFields,\n });\n\n expect(firstCallArgs(dataQuery, 'eq')).toEqual(['booleanField', true]);\n });\n\n it('applies and(eq false OR eq undefined) when \"checked\" is not selected', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({ booleanField: [{ id: BooleanFilters.unchecked }] }),\n fields: booleanFields,\n });\n\n // No direct eq(true) on the data query — the false-or-undefined branch wraps in .and().\n expect(wasCalled(dataQuery, 'eq')).toBe(false);\n const andArgs = firstCallArgs(dataQuery, 'and');\n expect(andArgs).toBeDefined();\n\n // The argument is the `falseFilter.or(undefinedFilter)` recorder.\n const falseFilter = andArgs![0] as QueryRecorder;\n const eqValues = falseFilter.calls\n .filter((c) => c.method === 'eq')\n .map((c) => c.args[1]);\n expect(eqValues).toContain(false);\n expect(wasCalled(falseFilter, 'or')).toBe(true);\n });\n });\n\n describe('HAS_VALUE array filter', () => {\n const richContentFields: SchemaFields = {\n richField: {\n id: 'richField',\n type: 'RICH_CONTENT',\n displayName: 'Rich Field',\n capabilities: { supportedQueryOperators: [], sortable: false },\n },\n };\n\n it('applies isNotEmpty when only \"hasValue\" is selected', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({ richField: [{ id: HasValueFilters.hasValue }] }),\n fields: richContentFields,\n });\n\n expect(firstCallArgs(dataQuery, 'isNotEmpty')).toEqual(['richField']);\n expect(wasCalled(dataQuery, 'isEmpty')).toBe(false);\n });\n\n it('applies isEmpty when only \"noValue\" is selected', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({ richField: [{ id: HasValueFilters.noValue }] }),\n fields: richContentFields,\n });\n\n expect(firstCallArgs(dataQuery, 'isEmpty')).toEqual(['richField']);\n expect(wasCalled(dataQuery, 'isNotEmpty')).toBe(false);\n });\n\n it('applies neither when both hasValue and noValue are selected', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({\n richField: [\n { id: HasValueFilters.hasValue },\n { id: HasValueFilters.noValue },\n ],\n }),\n fields: richContentFields,\n });\n\n expect(wasCalled(dataQuery, 'isEmpty')).toBe(false);\n expect(wasCalled(dataQuery, 'isNotEmpty')).toBe(false);\n });\n });\n\n it('applies hasSome for a generic (non-boolean, non-has-value) array filter', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({\n tagsField: [{ id: 'a' }, { id: 'b' }],\n }),\n fields: {\n tagsField: {\n id: 'tagsField',\n type: 'SHORT_TEXT',\n displayName: 'Tags Field',\n capabilities: { supportedQueryOperators: [], sortable: false },\n },\n },\n });\n\n expect(firstCallArgs(dataQuery, 'hasSome')).toEqual([\n 'tagsField',\n ['a', 'b'],\n ]);\n });\n\n describe('operator object filter', () => {\n const textFields: SchemaFields = {\n textField: {\n id: 'textField',\n type: 'SHORT_TEXT',\n displayName: 'Text Field',\n capabilities: { supportedQueryOperators: [], sortable: false },\n },\n };\n\n it('maps CONTAINS to .contains', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({\n textField: { operator: FilterOperator.CONTAINS, value: 'foo' },\n }),\n fields: textFields,\n });\n\n expect(firstCallArgs(dataQuery, 'contains')).toEqual([\n 'textField',\n 'foo',\n ]);\n });\n\n it('maps IS_EMPTY to .isEmpty(field) (no value argument)', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({\n textField: { operator: FilterOperator.IS_EMPTY },\n }),\n fields: textFields,\n });\n\n expect(firstCallArgs(dataQuery, 'isEmpty')).toEqual(['textField']);\n });\n\n it('maps EXISTS to .isNotEmpty(field)', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({\n textField: { operator: FilterOperator.EXISTS },\n }),\n fields: textFields,\n });\n\n expect(firstCallArgs(dataQuery, 'isNotEmpty')).toEqual(['textField']);\n });\n\n it('maps NOT_CONTAINS to .not(filter().contains(...))', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({\n textField: { operator: FilterOperator.NOT_CONTAINS, value: 'bar' },\n }),\n fields: textFields,\n });\n\n const notArgs = firstCallArgs(dataQuery, 'not');\n expect(notArgs).toBeDefined();\n const innerFilter = notArgs![0] as QueryRecorder;\n expect(firstCallArgs(innerFilter, 'contains')).toEqual([\n 'textField',\n 'bar',\n ]);\n });\n\n it('queries the .formatted nested property for ADDRESS text operators', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({\n addressField: { operator: FilterOperator.CONTAINS, value: 'NYC' },\n }),\n fields: {\n addressField: {\n id: 'addressField',\n type: 'ADDRESS',\n displayName: 'Address Field',\n capabilities: { supportedQueryOperators: [], sortable: false },\n },\n },\n });\n\n expect(firstCallArgs(dataQuery, 'contains')).toEqual([\n 'addressField.formatted',\n 'NYC',\n ]);\n });\n\n it('queries the ADDRESS field directly for existence operators (no .formatted)', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({\n addressField: { operator: FilterOperator.IS_EMPTY },\n }),\n fields: {\n addressField: {\n id: 'addressField',\n type: 'ADDRESS',\n displayName: 'Address Field',\n capabilities: { supportedQueryOperators: [], sortable: false },\n },\n },\n });\n\n expect(firstCallArgs(dataQuery, 'isEmpty')).toEqual(['addressField']);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_data","require","_patterns","_filterUtils","_constants","_wixDataQueryRecorder","jest","mock","recorder","items","query","fn","createQueryRecorder","filter","makeQuery","filters","describe","beforeEach","clearAllMocks","numberFields","numberField","id","type","displayName","capabilities","supportedQueryOperators","sortable","it","dataQuery","addFiltersToDataQuery","from","to","fields","expect","firstCallArgs","toEqual","wasCalled","toBe","booleanFields","booleanField","BooleanFilters","checked","unchecked","andArgs","toBeDefined","falseFilter","eqValues","calls","c","method","map","args","toContain","richContentFields","richField","HasValueFilters","hasValue","noValue","tagsField","textFields","textField","operator","FilterOperator","CONTAINS","value","IS_EMPTY","EXISTS","NOT_CONTAINS","notArgs","innerFilter","addressField"],"sources":["../../../../src/adapter/__tests__/filterUtils.spec.ts"],"sourcesContent":["import { items } from '@wix/data';\nimport { FilterOperator } from '@wix/patterns';\nimport type { OffsetQuery } from '@wix/patterns';\nimport type { Schema } from '@wix/patterns/schema';\nimport { addFiltersToDataQuery } from '../filterUtils';\nimport { BooleanFilters, HasValueFilters } from '../constants';\nimport {\n firstCallArgs,\n wasCalled,\n type QueryRecorder,\n} from './wixDataQueryRecorder';\n\n// Replace the `@wix/data` `items` builders with chainable recorders so we can\n// assert which WQL operator methods the util produced.\njest.mock('@wix/data', () => {\n const recorder = require('./wixDataQueryRecorder');\n return {\n items: {\n query: jest.fn(() => recorder.createQueryRecorder()),\n filter: jest.fn(() => recorder.createQueryRecorder()),\n },\n };\n});\n\ntype SchemaFields = Schema['fields'];\n\nconst makeQuery = (filters: Record<string, unknown>): OffsetQuery =>\n ({ filters } as unknown as OffsetQuery);\n\ndescribe('addFiltersToDataQuery', () => {\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n const numberFields: SchemaFields = {\n numberField: {\n id: 'numberField',\n type: 'NUMBER',\n displayName: 'Number Field',\n capabilities: { supportedQueryOperators: ['GTE', 'LTE'], sortable: true },\n },\n };\n\n it('applies a number range filter as ge (from) and le (to)', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({ numberField: { from: 5, to: 10 } }),\n fields: numberFields,\n });\n\n expect(firstCallArgs(dataQuery, 'ge')).toEqual(['numberField', 5]);\n expect(firstCallArgs(dataQuery, 'le')).toEqual(['numberField', 10]);\n });\n\n it('ignores range props whose operator is not supported by the field', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({ numberField: { from: 5, to: 10 } }),\n fields: {\n numberField: {\n id: 'numberField',\n type: 'NUMBER',\n displayName: 'Number Field',\n // Only EQ supported → GTE/LTE range props are dropped.\n capabilities: { supportedQueryOperators: ['EQ'], sortable: true },\n },\n },\n });\n\n expect(wasCalled(dataQuery, 'ge')).toBe(false);\n expect(wasCalled(dataQuery, 'le')).toBe(false);\n });\n\n describe('BOOLEAN array filter', () => {\n const booleanFields: SchemaFields = {\n booleanField: {\n id: 'booleanField',\n type: 'BOOLEAN',\n displayName: 'Boolean Field',\n capabilities: { supportedQueryOperators: ['EQ'], sortable: true },\n },\n };\n\n it('applies eq(field, true) when \"checked\" is selected', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({ booleanField: [{ id: BooleanFilters.checked }] }),\n fields: booleanFields,\n });\n\n expect(firstCallArgs(dataQuery, 'eq')).toEqual(['booleanField', true]);\n });\n\n it('applies and(eq false OR eq undefined) when \"checked\" is not selected', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({ booleanField: [{ id: BooleanFilters.unchecked }] }),\n fields: booleanFields,\n });\n\n // No direct eq(true) on the data query — the false-or-undefined branch wraps in .and().\n expect(wasCalled(dataQuery, 'eq')).toBe(false);\n const andArgs = firstCallArgs(dataQuery, 'and');\n expect(andArgs).toBeDefined();\n\n // The argument is the `falseFilter.or(undefinedFilter)` recorder.\n const falseFilter = andArgs![0] as QueryRecorder;\n const eqValues = falseFilter.calls\n .filter((c) => c.method === 'eq')\n .map((c) => c.args[1]);\n expect(eqValues).toContain(false);\n expect(wasCalled(falseFilter, 'or')).toBe(true);\n });\n });\n\n describe('HAS_VALUE array filter', () => {\n const richContentFields: SchemaFields = {\n richField: {\n id: 'richField',\n type: 'RICH_CONTENT',\n displayName: 'Rich Field',\n capabilities: { supportedQueryOperators: [], sortable: false },\n },\n };\n\n it('applies isNotEmpty when only \"hasValue\" is selected', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({ richField: [{ id: HasValueFilters.hasValue }] }),\n fields: richContentFields,\n });\n\n expect(firstCallArgs(dataQuery, 'isNotEmpty')).toEqual(['richField']);\n expect(wasCalled(dataQuery, 'isEmpty')).toBe(false);\n });\n\n it('applies isEmpty when only \"noValue\" is selected', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({ richField: [{ id: HasValueFilters.noValue }] }),\n fields: richContentFields,\n });\n\n expect(firstCallArgs(dataQuery, 'isEmpty')).toEqual(['richField']);\n expect(wasCalled(dataQuery, 'isNotEmpty')).toBe(false);\n });\n\n it('applies neither when both hasValue and noValue are selected', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({\n richField: [\n { id: HasValueFilters.hasValue },\n { id: HasValueFilters.noValue },\n ],\n }),\n fields: richContentFields,\n });\n\n expect(wasCalled(dataQuery, 'isEmpty')).toBe(false);\n expect(wasCalled(dataQuery, 'isNotEmpty')).toBe(false);\n });\n });\n\n it('applies hasSome for a generic (non-boolean, non-has-value) array filter', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({\n tagsField: [{ id: 'a' }, { id: 'b' }],\n }),\n fields: {\n tagsField: {\n id: 'tagsField',\n type: 'SHORT_TEXT',\n displayName: 'Tags Field',\n capabilities: { supportedQueryOperators: [], sortable: false },\n },\n },\n });\n\n expect(firstCallArgs(dataQuery, 'hasSome')).toEqual([\n 'tagsField',\n ['a', 'b'],\n ]);\n });\n\n describe('operator object filter', () => {\n const textFields: SchemaFields = {\n textField: {\n id: 'textField',\n type: 'SHORT_TEXT',\n displayName: 'Text Field',\n capabilities: { supportedQueryOperators: [], sortable: false },\n },\n };\n\n it('maps CONTAINS to .contains', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({\n textField: { operator: FilterOperator.CONTAINS, value: 'foo' },\n }),\n fields: textFields,\n });\n\n expect(firstCallArgs(dataQuery, 'contains')).toEqual([\n 'textField',\n 'foo',\n ]);\n });\n\n it('maps IS_EMPTY to .isEmpty(field) (no value argument)', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({\n textField: { operator: FilterOperator.IS_EMPTY },\n }),\n fields: textFields,\n });\n\n expect(firstCallArgs(dataQuery, 'isEmpty')).toEqual(['textField']);\n });\n\n it('maps EXISTS to .isNotEmpty(field)', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({\n textField: { operator: FilterOperator.EXISTS },\n }),\n fields: textFields,\n });\n\n expect(firstCallArgs(dataQuery, 'isNotEmpty')).toEqual(['textField']);\n });\n\n it('maps NOT_CONTAINS to .not(filter().contains(...))', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({\n textField: { operator: FilterOperator.NOT_CONTAINS, value: 'bar' },\n }),\n fields: textFields,\n });\n\n const notArgs = firstCallArgs(dataQuery, 'not');\n expect(notArgs).toBeDefined();\n const innerFilter = notArgs![0] as QueryRecorder;\n expect(firstCallArgs(innerFilter, 'contains')).toEqual([\n 'textField',\n 'bar',\n ]);\n });\n\n it('queries the .formatted nested property for ADDRESS text operators', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({\n addressField: { operator: FilterOperator.CONTAINS, value: 'NYC' },\n }),\n fields: {\n addressField: {\n id: 'addressField',\n type: 'ADDRESS',\n displayName: 'Address Field',\n capabilities: { supportedQueryOperators: [], sortable: false },\n },\n },\n });\n\n expect(firstCallArgs(dataQuery, 'contains')).toEqual([\n 'addressField.formatted',\n 'NYC',\n ]);\n });\n\n it('queries the ADDRESS field directly for existence operators (no .formatted)', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addFiltersToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery({\n addressField: { operator: FilterOperator.IS_EMPTY },\n }),\n fields: {\n addressField: {\n id: 'addressField',\n type: 'ADDRESS',\n displayName: 'Address Field',\n capabilities: { supportedQueryOperators: [], sortable: false },\n },\n },\n });\n\n expect(firstCallArgs(dataQuery, 'isEmpty')).toEqual(['addressField']);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_data","require","_searchUtils","_wixDataQueryRecorder","jest","mock","recorder","items","query","fn","createQueryRecorder","filter","makeQuery","search","textField","id","type","displayName","capabilities","supportedQueryOperators","sortable","numberField","collectContains","direct","calls","c","method","map","args","nested","flatMap","a","Array","isArray","describe","beforeEach","clearAllMocks","it","dataQuery","addSearchToDataQuery","fields","shortTextField","nonShortTextField","searchableFieldIds","andArgs","firstCallArgs","expect","toBeDefined","searchFilter","containsPairs","toEqual","wasCalled","toBe","ShortTextField1","ShortTextField2","arrayContaining","toHaveLength"],"sources":["../../../../src/adapter/__tests__/searchUtils.spec.ts"],"sourcesContent":["import { items } from '@wix/data';\nimport type { OffsetQuery
|
|
1
|
+
{"version":3,"names":["_data","require","_searchUtils","_wixDataQueryRecorder","jest","mock","recorder","items","query","fn","createQueryRecorder","filter","makeQuery","search","textField","id","type","displayName","capabilities","supportedQueryOperators","sortable","numberField","collectContains","direct","calls","c","method","map","args","nested","flatMap","a","Array","isArray","describe","beforeEach","clearAllMocks","it","dataQuery","addSearchToDataQuery","fields","shortTextField","nonShortTextField","searchableFieldIds","andArgs","firstCallArgs","expect","toBeDefined","searchFilter","containsPairs","toEqual","wasCalled","toBe","ShortTextField1","ShortTextField2","arrayContaining","toHaveLength"],"sources":["../../../../src/adapter/__tests__/searchUtils.spec.ts"],"sourcesContent":["import { items } from '@wix/data';\nimport type { OffsetQuery } from '@wix/patterns';\nimport type { Schema } from '@wix/patterns/schema';\nimport { addSearchToDataQuery } from '../searchUtils';\nimport {\n firstCallArgs,\n wasCalled,\n type QueryRecorder,\n} from './wixDataQueryRecorder';\n\njest.mock('@wix/data', () => {\n const recorder = require('./wixDataQueryRecorder');\n return {\n items: {\n query: jest.fn(() => recorder.createQueryRecorder()),\n filter: jest.fn(() => recorder.createQueryRecorder()),\n },\n };\n});\n\ntype SchemaFields = Schema['fields'];\n\nconst makeQuery = (search: string): OffsetQuery =>\n ({ search } as unknown as OffsetQuery);\n\nconst textField = (id: string): SchemaFields[string] => ({\n id,\n type: 'SHORT_TEXT',\n displayName: id,\n capabilities: { supportedQueryOperators: [], sortable: true },\n});\n\nconst numberField = (id: string): SchemaFields[string] => ({\n id,\n type: 'NUMBER',\n displayName: id,\n capabilities: { supportedQueryOperators: [], sortable: true },\n});\n\n/** Recursively collect every `contains` arg pair across a recorder and any nested filter recorders. */\nconst collectContains = (recorder: QueryRecorder): unknown[][] => {\n const direct = recorder.calls\n .filter((c) => c.method === 'contains')\n .map((c) => c.args);\n const nested = recorder.calls\n .filter((c) => c.method === 'or' || c.method === 'and')\n .flatMap((c) =>\n c.args\n .filter(\n (a): a is QueryRecorder =>\n !!a && Array.isArray((a as QueryRecorder).calls),\n )\n .flatMap(collectContains),\n );\n return [...direct, ...nested];\n};\n\ndescribe('addSearchToDataQuery', () => {\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n it('applies a contains filter over a searchable text field', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addSearchToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery('test'),\n fields: {\n shortTextField: textField('shortTextField'),\n nonShortTextField: numberField('nonShortTextField'),\n },\n searchableFieldIds: ['shortTextField', 'nonShortTextField'],\n });\n\n // The search filter is attached to the data query via .and(...).\n const andArgs = firstCallArgs(dataQuery, 'and');\n expect(andArgs).toBeDefined();\n const searchFilter = andArgs![0] as QueryRecorder;\n\n const containsPairs = collectContains(searchFilter);\n // Only the text field is searched — the NUMBER field is ignored.\n expect(containsPairs).toEqual([['shortTextField', 'test']]);\n });\n\n it('ignores non-text fields even when listed in searchableFieldIds', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addSearchToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery('test'),\n fields: {\n shortTextField: textField('shortTextField'),\n nonShortTextField: numberField('nonShortTextField'),\n },\n searchableFieldIds: ['nonShortTextField'],\n });\n\n // No text field is searchable → no .and() filter is attached.\n expect(wasCalled(dataQuery, 'and')).toBe(false);\n });\n\n it('ORs a contains filter for each searchable text field', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addSearchToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery('test'),\n fields: {\n ShortTextField1: textField('ShortTextField1'),\n ShortTextField2: textField('ShortTextField2'),\n },\n searchableFieldIds: ['ShortTextField1', 'ShortTextField2'],\n });\n\n const andArgs = firstCallArgs(dataQuery, 'and');\n expect(andArgs).toBeDefined();\n const searchFilter = andArgs![0] as QueryRecorder;\n\n // The two field filters are combined with .or(...).\n expect(wasCalled(searchFilter, 'or')).toBe(true);\n\n const containsPairs = collectContains(searchFilter);\n expect(containsPairs).toEqual(\n expect.arrayContaining([\n ['ShortTextField1', 'test'],\n ['ShortTextField2', 'test'],\n ]),\n );\n expect(containsPairs).toHaveLength(2);\n });\n\n it('does nothing for an empty search term', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addSearchToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery(''),\n fields: { shortTextField: textField('shortTextField') },\n searchableFieldIds: ['shortTextField'],\n });\n\n expect(dataQuery.calls).toHaveLength(0);\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_data","require","_sortUtils","_wixDataQueryRecorder","jest","mock","recorder","items","query","fn","createQueryRecorder","filter","makeQuery","sort","sortableField","id","sortable","type","displayName","capabilities","supportedQueryOperators","describe","beforeEach","clearAllMocks","it","dataQuery","addSortToDataQuery","fieldName","order","fields","numberField","expect","firstCallArgs","toEqual","wasCalled","toBe","calls","toHaveLength","shortTextField","calledMethods"],"sources":["../../../../src/adapter/__tests__/sortUtils.spec.ts"],"sourcesContent":["import { items } from '@wix/data';\nimport type { OffsetQuery
|
|
1
|
+
{"version":3,"names":["_data","require","_sortUtils","_wixDataQueryRecorder","jest","mock","recorder","items","query","fn","createQueryRecorder","filter","makeQuery","sort","sortableField","id","sortable","type","displayName","capabilities","supportedQueryOperators","describe","beforeEach","clearAllMocks","it","dataQuery","addSortToDataQuery","fieldName","order","fields","numberField","expect","firstCallArgs","toEqual","wasCalled","toBe","calls","toHaveLength","shortTextField","calledMethods"],"sources":["../../../../src/adapter/__tests__/sortUtils.spec.ts"],"sourcesContent":["import { items } from '@wix/data';\nimport type { OffsetQuery } from '@wix/patterns';\nimport type { Schema } from '@wix/patterns/schema';\nimport { addSortToDataQuery } from '../sortUtils';\nimport {\n calledMethods,\n firstCallArgs,\n wasCalled,\n type QueryRecorder,\n} from './wixDataQueryRecorder';\n\njest.mock('@wix/data', () => {\n const recorder = require('./wixDataQueryRecorder');\n return {\n items: {\n query: jest.fn(() => recorder.createQueryRecorder()),\n filter: jest.fn(() => recorder.createQueryRecorder()),\n },\n };\n});\n\ntype SchemaFields = Schema['fields'];\n\nconst makeQuery = (\n sort: { fieldName: string; order: 'asc' | 'desc' }[],\n): OffsetQuery => ({ sort } as unknown as OffsetQuery);\n\nconst sortableField = (id: string, sortable = true): SchemaFields[string] => ({\n id,\n type: 'NUMBER',\n displayName: id,\n capabilities: { supportedQueryOperators: [], sortable },\n});\n\ndescribe('addSortToDataQuery', () => {\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n it('applies .ascending for an asc sort on a sortable field', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addSortToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery([{ fieldName: 'numberField', order: 'asc' }]),\n fields: { numberField: sortableField('numberField') },\n });\n\n expect(firstCallArgs(dataQuery, 'ascending')).toEqual(['numberField']);\n expect(wasCalled(dataQuery, 'descending')).toBe(false);\n });\n\n it('applies .descending for a desc sort on a sortable field', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addSortToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery([{ fieldName: 'numberField', order: 'desc' }]),\n fields: { numberField: sortableField('numberField') },\n });\n\n expect(firstCallArgs(dataQuery, 'descending')).toEqual(['numberField']);\n expect(wasCalled(dataQuery, 'ascending')).toBe(false);\n });\n\n it('ignores sorts on non-sortable fields', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addSortToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery([{ fieldName: 'numberField', order: 'asc' }]),\n fields: { numberField: sortableField('numberField', false) },\n });\n\n expect(dataQuery.calls).toHaveLength(0);\n });\n\n it('applies multiple sort fields in order', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addSortToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery([\n { fieldName: 'numberField', order: 'asc' },\n { fieldName: 'shortTextField', order: 'desc' },\n ]),\n fields: {\n numberField: sortableField('numberField'),\n shortTextField: {\n id: 'shortTextField',\n type: 'SHORT_TEXT',\n displayName: 'shortTextField',\n capabilities: { supportedQueryOperators: [], sortable: true },\n },\n },\n });\n\n expect(calledMethods(dataQuery)).toEqual(['ascending', 'descending']);\n expect(firstCallArgs(dataQuery, 'ascending')).toEqual(['numberField']);\n expect(firstCallArgs(dataQuery, 'descending')).toEqual(['shortTextField']);\n });\n\n it('ignores a sort whose field is not in the schema', () => {\n const dataQuery = items.query('collectionId') as unknown as QueryRecorder;\n\n addSortToDataQuery({\n dataQuery: dataQuery as never,\n query: makeQuery([{ fieldName: 'unknownField', order: 'asc' }]),\n fields: { numberField: sortableField('numberField') },\n });\n\n expect(dataQuery.calls).toHaveLength(0);\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_data","require","_transformCmsSchema","refMeta","field","referenceMetadata","COLLECTION_ID","makeField","overrides","key","type","collections","Type","TEXT","systemField","encrypted","plugins","displayName","capabilities","queryOperators","sortable","makeCollection","fields","_id","collectionType","dataOperations","permissions","read","insert","update","remove","describe","it","_schema$fields$field","_schema$fields$field2","_schema$fields$field3","_schema$fields$field4","_schema$fields$field5","_schema$fields$field6","_schema$fields$field7","_schema$fields$field8","collection","QueryOperator","EQ","NUMBER","GTE","LTE","BOOLEAN","schema","transformCmsSchema","expect","toBeDefined","Object","keys","length","toBe","toHaveProperty","not","field1","supportedQueryOperators","toEqual","field2","_schema$fields$title","_schema$fields$other","displayField","id","idField","title","isPrimary","other","_schema$fields$secret","_schema$fields$secret2","_schema$fields$secret3","description","secret","isPii","helpText","isSystem","_schema$fields$key","_schema$fields$num","_schema$fields$num2","_schema$fields$text","required","numberRange","min","max","stringLengthRange","minLength","maxLength","num","validation","text","_schema$fields$weird","weird","_schema$fields$ref","_refMeta","REFERENCE","typeMetadata","reference","referencedCollectionId","ref","_schema$fields$multiR","_refMeta2","MULTI_REFERENCE","multiReference","multiRef","_schema$fields$dangli","danglingRef","toBeUndefined","userPermissions","schemaPermissions","createField","updateField","deleteField","itemPermissions","createItem","updateItem","deleteItem"],"sources":["../../../../src/adapter/__tests__/transformCmsSchema.spec.ts"],"sourcesContent":["import { collections } from '@wix/data';\nimport type { Field } from '@wix/bex-core';\nimport { transformCmsSchema } from '../transformCmsSchema';\n\n/** Reads referenceMetadata off a (possibly non-reference) Field for assertions. */\nconst refMeta = (field: Field | undefined) =>\n (field as { referenceMetadata?: { referencedCollectionId: string } })\n ?.referenceMetadata;\n\nconst COLLECTION_ID = 'collection-1';\n\nconst makeField = (\n overrides: Partial<collections.Field> = {},\n): collections.Field => ({\n key: 'field',\n type: collections.Type.TEXT,\n systemField: false,\n encrypted: false,\n plugins: [],\n displayName: 'Field',\n capabilities: { queryOperators: [], sortable: false },\n ...overrides,\n});\n\nconst makeCollection = (\n fields: collections.Field[],\n overrides: Partial<collections.DataCollection> = {},\n): collections.DataCollection => ({\n _id: COLLECTION_ID,\n collectionType: 'NATIVE',\n capabilities: { dataOperations: ['SAVE', 'UPDATE', 'REMOVE'] },\n permissions: {\n read: 'ANYONE',\n insert: 'SITE_MEMBER',\n update: 'SITE_MEMBER',\n remove: 'SITE_MEMBER',\n },\n plugins: [],\n fields,\n ...overrides,\n});\n\ndescribe('transformCmsSchema', () => {\n it('maps CMS fields to the source-neutral Schema and drops keyless fields', () => {\n const collection = makeCollection([\n makeField({\n key: 'field1',\n type: collections.Type.TEXT,\n displayName: 'Field 1',\n capabilities: {\n queryOperators: [collections.QueryOperator.EQ],\n sortable: true,\n },\n }),\n makeField({\n key: 'field2',\n type: collections.Type.NUMBER,\n displayName: 'Field 2',\n capabilities: {\n queryOperators: [\n collections.QueryOperator.GTE,\n collections.QueryOperator.LTE,\n ],\n sortable: true,\n },\n }),\n makeField({\n key: '',\n type: collections.Type.BOOLEAN,\n displayName: 'Empty Key Field',\n capabilities: { queryOperators: [], sortable: false },\n }),\n ]);\n\n const schema = transformCmsSchema(collection);\n\n expect(schema.fields).toBeDefined();\n expect(Object.keys(schema.fields).length).toBe(2);\n expect(schema.fields).toHaveProperty('field1');\n expect(schema.fields).toHaveProperty('field2');\n expect(schema.fields).not.toHaveProperty('');\n\n expect(schema.fields.field1?.type).toBe('SHORT_TEXT');\n expect(schema.fields.field1?.displayName).toBe('Field 1');\n expect(schema.fields.field1?.capabilities?.sortable).toBe(true);\n expect(schema.fields.field1?.capabilities?.supportedQueryOperators).toEqual(\n [collections.QueryOperator.EQ],\n );\n\n expect(schema.fields.field2?.type).toBe('NUMBER');\n expect(schema.fields.field2?.displayName).toBe('Field 2');\n expect(schema.fields.field2?.capabilities?.sortable).toBe(true);\n expect(schema.fields.field2?.capabilities?.supportedQueryOperators).toEqual(\n [collections.QueryOperator.GTE, collections.QueryOperator.LTE],\n );\n });\n\n it('sets id, idField and displayField from the collection', () => {\n const schema = transformCmsSchema(\n makeCollection(\n [makeField({ key: 'title' }), makeField({ key: 'other' })],\n { displayField: 'title' },\n ),\n );\n\n expect(schema.id).toBe(COLLECTION_ID);\n expect(schema.idField).toBe('_id');\n expect(schema.displayField).toBe('title');\n expect(schema.fields.title?.isPrimary).toBe(true);\n expect(schema.fields.other?.isPrimary).toBe(false);\n });\n\n it('defaults displayField to \"_id\" when the collection has none', () => {\n const schema = transformCmsSchema(makeCollection([makeField()]));\n\n expect(schema.displayField).toBe('_id');\n });\n\n it('maps encrypted → isPii, description → helpText and systemField → isSystem', () => {\n const schema = transformCmsSchema(\n makeCollection([\n makeField({\n key: 'secret',\n encrypted: true,\n description: 'A hint',\n systemField: true,\n }),\n ]),\n );\n\n expect(schema.fields.secret?.isPii).toBe(true);\n expect(schema.fields.secret?.helpText).toBe('A hint');\n expect(schema.fields.secret?.isSystem).toBe(true);\n });\n\n it('treats the manual-sort field as system even when not flagged by @wix/data', () => {\n const key = '_manualSort_48382113-d33d-415b-b416-b65642f65483';\n const schema = transformCmsSchema(\n makeCollection([makeField({ key, systemField: false })]),\n );\n\n expect(schema.fields[key]?.isSystem).toBe(true);\n });\n\n it('maps validation ranges and required', () => {\n const schema = transformCmsSchema(\n makeCollection([\n makeField({\n key: 'num',\n type: collections.Type.NUMBER,\n required: true,\n numberRange: { min: 0, max: 10 },\n }),\n makeField({\n key: 'text',\n type: collections.Type.TEXT,\n stringLengthRange: { minLength: 1, maxLength: 5 },\n }),\n ]),\n );\n\n expect(schema.fields.num?.validation?.required).toBe(true);\n expect(schema.fields.num?.validation?.numberRange).toEqual({\n min: 0,\n max: 10,\n });\n expect(schema.fields.text?.validation?.stringLengthRange).toEqual({\n minLength: 1,\n maxLength: 5,\n });\n });\n\n it('resolves an unmapped CMS field type to UNKNOWN', () => {\n const schema = transformCmsSchema(\n makeCollection([\n makeField({\n key: 'weird',\n type: 'SOME_FUTURE_TYPE' as collections.Type,\n }),\n ]),\n );\n\n expect(schema.fields.weird?.type).toBe('UNKNOWN');\n });\n\n it('attaches referenceMetadata for a REFERENCE field with a target collection', () => {\n const schema = transformCmsSchema(\n makeCollection([\n makeField({\n key: 'ref',\n type: collections.Type.REFERENCE,\n typeMetadata: {\n reference: { referencedCollectionId: 'other-collection' },\n },\n }),\n ]),\n );\n\n expect(schema.fields.ref?.type).toBe('REFERENCE');\n expect(refMeta(schema.fields.ref)?.referencedCollectionId).toBe(\n 'other-collection',\n );\n });\n\n it('attaches referenceMetadata for a MULTI_REFERENCE field with a target collection', () => {\n const schema = transformCmsSchema(\n makeCollection([\n makeField({\n key: 'multiRef',\n type: collections.Type.MULTI_REFERENCE,\n typeMetadata: {\n multiReference: { referencedCollectionId: 'other-collection' },\n },\n }),\n ]),\n );\n\n expect(schema.fields.multiRef?.type).toBe('MULTI_REFERENCE');\n expect(refMeta(schema.fields.multiRef)?.referencedCollectionId).toBe(\n 'other-collection',\n );\n });\n\n it('degrades a reference field without a target collection to UNKNOWN', () => {\n const schema = transformCmsSchema(\n makeCollection([\n makeField({ key: 'danglingRef', type: collections.Type.REFERENCE }),\n ]),\n );\n\n expect(schema.fields.danglingRef?.type).toBe('UNKNOWN');\n expect(refMeta(schema.fields.danglingRef)).toBeUndefined();\n });\n\n it('projects permissions from the collection and user permissions', () => {\n const schema = transformCmsSchema(makeCollection([makeField()]), {\n userPermissions: [\n 'WIX_DATA.CREATE_COLLECTION_FIELD',\n 'WIX_DATA.UPDATE_COLLECTION_FIELD',\n 'WIX_DATA.DELETE_COLLECTION_FIELD',\n 'WIX_DATA.INSERT',\n 'WIX_DATA.UPDATE',\n 'WIX_DATA.REMOVE',\n ],\n });\n\n expect(schema.schemaPermissions).toEqual({\n createField: true,\n updateField: true,\n deleteField: true,\n });\n expect(schema.itemPermissions).toEqual({\n createItem: true,\n updateItem: true,\n deleteItem: true,\n });\n });\n\n it('leaves schemaPermissions undefined for a shared (non-editable) collection', () => {\n const schema = transformCmsSchema(\n makeCollection([makeField()], { plugins: [{ type: 'SHARED' }] }),\n {\n userPermissions: [\n 'WIX_DATA.CREATE_COLLECTION_FIELD',\n 'WIX_DATA.UPDATE_COLLECTION_FIELD',\n 'WIX_DATA.DELETE_COLLECTION_FIELD',\n ],\n },\n );\n\n expect(schema.schemaPermissions).toBeUndefined();\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_data","require","_transformCmsSchema","refMeta","field","referenceMetadata","COLLECTION_ID","makeField","overrides","key","type","collections","Type","TEXT","systemField","encrypted","plugins","displayName","capabilities","queryOperators","sortable","makeCollection","fields","_id","collectionType","dataOperations","permissions","read","insert","update","remove","describe","it","_schema$fields$field","_schema$fields$field2","_schema$fields$field3","_schema$fields$field4","_schema$fields$field5","_schema$fields$field6","_schema$fields$field7","_schema$fields$field8","collection","QueryOperator","EQ","NUMBER","GTE","LTE","BOOLEAN","schema","transformCmsSchema","expect","toBeDefined","Object","keys","length","toBe","toHaveProperty","not","field1","supportedQueryOperators","toEqual","field2","_schema$fields$title","_schema$fields$other","displayField","id","idField","title","isPrimary","other","_schema$fields$secret","_schema$fields$secret2","_schema$fields$secret3","description","secret","isPii","helpText","isSystem","_schema$fields$key","_schema$fields$num","_schema$fields$num2","_schema$fields$text","required","numberRange","min","max","stringLengthRange","minLength","maxLength","num","validation","text","_schema$fields$weird","weird","_schema$fields$ref","_refMeta","REFERENCE","typeMetadata","reference","referencedCollectionId","ref","_schema$fields$multiR","_refMeta2","MULTI_REFERENCE","multiReference","multiRef","_schema$fields$dangli","danglingRef","toBeUndefined","userPermissions","schemaPermissions","createField","updateField","deleteField","itemPermissions","createItem","updateItem","deleteItem"],"sources":["../../../../src/adapter/__tests__/transformCmsSchema.spec.ts"],"sourcesContent":["import { collections } from '@wix/data';\nimport type { Field } from '@wix/patterns';\nimport { transformCmsSchema } from '../transformCmsSchema';\n\n/** Reads referenceMetadata off a (possibly non-reference) Field for assertions. */\nconst refMeta = (field: Field | undefined) =>\n (field as { referenceMetadata?: { referencedCollectionId: string } })\n ?.referenceMetadata;\n\nconst COLLECTION_ID = 'collection-1';\n\nconst makeField = (\n overrides: Partial<collections.Field> = {},\n): collections.Field => ({\n key: 'field',\n type: collections.Type.TEXT,\n systemField: false,\n encrypted: false,\n plugins: [],\n displayName: 'Field',\n capabilities: { queryOperators: [], sortable: false },\n ...overrides,\n});\n\nconst makeCollection = (\n fields: collections.Field[],\n overrides: Partial<collections.DataCollection> = {},\n): collections.DataCollection => ({\n _id: COLLECTION_ID,\n collectionType: 'NATIVE',\n capabilities: { dataOperations: ['SAVE', 'UPDATE', 'REMOVE'] },\n permissions: {\n read: 'ANYONE',\n insert: 'SITE_MEMBER',\n update: 'SITE_MEMBER',\n remove: 'SITE_MEMBER',\n },\n plugins: [],\n fields,\n ...overrides,\n});\n\ndescribe('transformCmsSchema', () => {\n it('maps CMS fields to the source-neutral Schema and drops keyless fields', () => {\n const collection = makeCollection([\n makeField({\n key: 'field1',\n type: collections.Type.TEXT,\n displayName: 'Field 1',\n capabilities: {\n queryOperators: [collections.QueryOperator.EQ],\n sortable: true,\n },\n }),\n makeField({\n key: 'field2',\n type: collections.Type.NUMBER,\n displayName: 'Field 2',\n capabilities: {\n queryOperators: [\n collections.QueryOperator.GTE,\n collections.QueryOperator.LTE,\n ],\n sortable: true,\n },\n }),\n makeField({\n key: '',\n type: collections.Type.BOOLEAN,\n displayName: 'Empty Key Field',\n capabilities: { queryOperators: [], sortable: false },\n }),\n ]);\n\n const schema = transformCmsSchema(collection);\n\n expect(schema.fields).toBeDefined();\n expect(Object.keys(schema.fields).length).toBe(2);\n expect(schema.fields).toHaveProperty('field1');\n expect(schema.fields).toHaveProperty('field2');\n expect(schema.fields).not.toHaveProperty('');\n\n expect(schema.fields.field1?.type).toBe('SHORT_TEXT');\n expect(schema.fields.field1?.displayName).toBe('Field 1');\n expect(schema.fields.field1?.capabilities?.sortable).toBe(true);\n expect(schema.fields.field1?.capabilities?.supportedQueryOperators).toEqual(\n [collections.QueryOperator.EQ],\n );\n\n expect(schema.fields.field2?.type).toBe('NUMBER');\n expect(schema.fields.field2?.displayName).toBe('Field 2');\n expect(schema.fields.field2?.capabilities?.sortable).toBe(true);\n expect(schema.fields.field2?.capabilities?.supportedQueryOperators).toEqual(\n [collections.QueryOperator.GTE, collections.QueryOperator.LTE],\n );\n });\n\n it('sets id, idField and displayField from the collection', () => {\n const schema = transformCmsSchema(\n makeCollection(\n [makeField({ key: 'title' }), makeField({ key: 'other' })],\n { displayField: 'title' },\n ),\n );\n\n expect(schema.id).toBe(COLLECTION_ID);\n expect(schema.idField).toBe('_id');\n expect(schema.displayField).toBe('title');\n expect(schema.fields.title?.isPrimary).toBe(true);\n expect(schema.fields.other?.isPrimary).toBe(false);\n });\n\n it('defaults displayField to \"_id\" when the collection has none', () => {\n const schema = transformCmsSchema(makeCollection([makeField()]));\n\n expect(schema.displayField).toBe('_id');\n });\n\n it('maps encrypted → isPii, description → helpText and systemField → isSystem', () => {\n const schema = transformCmsSchema(\n makeCollection([\n makeField({\n key: 'secret',\n encrypted: true,\n description: 'A hint',\n systemField: true,\n }),\n ]),\n );\n\n expect(schema.fields.secret?.isPii).toBe(true);\n expect(schema.fields.secret?.helpText).toBe('A hint');\n expect(schema.fields.secret?.isSystem).toBe(true);\n });\n\n it('treats the manual-sort field as system even when not flagged by @wix/data', () => {\n const key = '_manualSort_48382113-d33d-415b-b416-b65642f65483';\n const schema = transformCmsSchema(\n makeCollection([makeField({ key, systemField: false })]),\n );\n\n expect(schema.fields[key]?.isSystem).toBe(true);\n });\n\n it('maps validation ranges and required', () => {\n const schema = transformCmsSchema(\n makeCollection([\n makeField({\n key: 'num',\n type: collections.Type.NUMBER,\n required: true,\n numberRange: { min: 0, max: 10 },\n }),\n makeField({\n key: 'text',\n type: collections.Type.TEXT,\n stringLengthRange: { minLength: 1, maxLength: 5 },\n }),\n ]),\n );\n\n expect(schema.fields.num?.validation?.required).toBe(true);\n expect(schema.fields.num?.validation?.numberRange).toEqual({\n min: 0,\n max: 10,\n });\n expect(schema.fields.text?.validation?.stringLengthRange).toEqual({\n minLength: 1,\n maxLength: 5,\n });\n });\n\n it('resolves an unmapped CMS field type to UNKNOWN', () => {\n const schema = transformCmsSchema(\n makeCollection([\n makeField({\n key: 'weird',\n type: 'SOME_FUTURE_TYPE' as collections.Type,\n }),\n ]),\n );\n\n expect(schema.fields.weird?.type).toBe('UNKNOWN');\n });\n\n it('attaches referenceMetadata for a REFERENCE field with a target collection', () => {\n const schema = transformCmsSchema(\n makeCollection([\n makeField({\n key: 'ref',\n type: collections.Type.REFERENCE,\n typeMetadata: {\n reference: { referencedCollectionId: 'other-collection' },\n },\n }),\n ]),\n );\n\n expect(schema.fields.ref?.type).toBe('REFERENCE');\n expect(refMeta(schema.fields.ref)?.referencedCollectionId).toBe(\n 'other-collection',\n );\n });\n\n it('attaches referenceMetadata for a MULTI_REFERENCE field with a target collection', () => {\n const schema = transformCmsSchema(\n makeCollection([\n makeField({\n key: 'multiRef',\n type: collections.Type.MULTI_REFERENCE,\n typeMetadata: {\n multiReference: { referencedCollectionId: 'other-collection' },\n },\n }),\n ]),\n );\n\n expect(schema.fields.multiRef?.type).toBe('MULTI_REFERENCE');\n expect(refMeta(schema.fields.multiRef)?.referencedCollectionId).toBe(\n 'other-collection',\n );\n });\n\n it('degrades a reference field without a target collection to UNKNOWN', () => {\n const schema = transformCmsSchema(\n makeCollection([\n makeField({ key: 'danglingRef', type: collections.Type.REFERENCE }),\n ]),\n );\n\n expect(schema.fields.danglingRef?.type).toBe('UNKNOWN');\n expect(refMeta(schema.fields.danglingRef)).toBeUndefined();\n });\n\n it('projects permissions from the collection and user permissions', () => {\n const schema = transformCmsSchema(makeCollection([makeField()]), {\n userPermissions: [\n 'WIX_DATA.CREATE_COLLECTION_FIELD',\n 'WIX_DATA.UPDATE_COLLECTION_FIELD',\n 'WIX_DATA.DELETE_COLLECTION_FIELD',\n 'WIX_DATA.INSERT',\n 'WIX_DATA.UPDATE',\n 'WIX_DATA.REMOVE',\n ],\n });\n\n expect(schema.schemaPermissions).toEqual({\n createField: true,\n updateField: true,\n deleteField: true,\n });\n expect(schema.itemPermissions).toEqual({\n createItem: true,\n updateItem: true,\n deleteItem: true,\n });\n });\n\n it('leaves schemaPermissions undefined for a shared (non-editable) collection', () => {\n const schema = transformCmsSchema(\n makeCollection([makeField()], { plugins: [{ type: 'SHARED' }] }),\n {\n userPermissions: [\n 'WIX_DATA.CREATE_COLLECTION_FIELD',\n 'WIX_DATA.UPDATE_COLLECTION_FIELD',\n 'WIX_DATA.DELETE_COLLECTION_FIELD',\n ],\n },\n );\n\n expect(schema.schemaPermissions).toBeUndefined();\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _patterns = require("@wix/patterns");
|
|
4
|
+
var _schema = require("@wix/patterns/schema");
|
|
4
5
|
var _data = require("@wix/data");
|
|
5
6
|
var _useCmsSchemaSource = require("../useCmsSchemaSource");
|
|
6
7
|
var _fetchUserPermissions = require("../fetchUserPermissions");
|
|
@@ -88,31 +89,66 @@ describe('useCmsSchemaSource', () => {
|
|
|
88
89
|
fetchUserPermissionsMock.mockResolvedValue([]);
|
|
89
90
|
fetchExternalDbConnectionsMock.mockResolvedValue([]);
|
|
90
91
|
});
|
|
91
|
-
it('declares the creatable types in display order
|
|
92
|
-
const source = (0,
|
|
92
|
+
it('declares the creatable types in display order, with CMS labels, subtitles and groups', () => {
|
|
93
|
+
const source = (0, _schema.defineSchemaSource)((0, _useCmsSchemaSource.cmsSchemaSourceInput)({
|
|
93
94
|
collectionId: 'Pokemon',
|
|
94
95
|
httpClient
|
|
95
96
|
}));
|
|
97
|
+
const essentials = 'Essentials';
|
|
98
|
+
const timeAndLocation = 'Time and location';
|
|
96
99
|
expect(source.creatableFieldTypes).toEqual([{
|
|
97
|
-
patternsType: 'SHORT_TEXT'
|
|
100
|
+
patternsType: 'SHORT_TEXT',
|
|
101
|
+
label: 'Text',
|
|
102
|
+
subtitle: 'Titles, paragraph',
|
|
103
|
+
group: essentials
|
|
98
104
|
}, {
|
|
99
|
-
patternsType: 'NUMBER'
|
|
105
|
+
patternsType: 'NUMBER',
|
|
106
|
+
label: 'Number',
|
|
107
|
+
subtitle: 'ID, rating, order number',
|
|
108
|
+
group: essentials
|
|
100
109
|
}, {
|
|
101
|
-
patternsType: 'BOOLEAN'
|
|
110
|
+
patternsType: 'BOOLEAN',
|
|
111
|
+
label: 'Boolean',
|
|
112
|
+
subtitle: 'Yes or no, true or false',
|
|
113
|
+
group: essentials
|
|
102
114
|
}, {
|
|
103
|
-
patternsType: 'DATE'
|
|
115
|
+
patternsType: 'DATE',
|
|
116
|
+
label: 'Date',
|
|
117
|
+
subtitle: 'Date of event, date added',
|
|
118
|
+
group: timeAndLocation
|
|
104
119
|
}]);
|
|
105
120
|
});
|
|
106
121
|
it('builds an offset source keyed by the collectionId', () => {
|
|
107
|
-
const source = (0,
|
|
122
|
+
const source = (0, _schema.defineSchemaSource)((0, _useCmsSchemaSource.cmsSchemaSourceInput)({
|
|
108
123
|
collectionId: 'Pokemon',
|
|
109
124
|
httpClient
|
|
110
125
|
}));
|
|
111
126
|
expect(source.collectionId).toBe('Pokemon');
|
|
112
127
|
expect(source.paginationMode).toBe('offset');
|
|
113
128
|
});
|
|
129
|
+
it('carries consumer-defined field types through to the source', () => {
|
|
130
|
+
const rating = (0, _patterns.defineFieldType)({
|
|
131
|
+
type: 'app.rating',
|
|
132
|
+
display: {
|
|
133
|
+
label: 'Rating',
|
|
134
|
+
icons: {
|
|
135
|
+
Small: () => null,
|
|
136
|
+
Medium: () => null
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
filter: {
|
|
140
|
+
filterable: false
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
const source = (0, _schema.defineSchemaSource)((0, _useCmsSchemaSource.cmsSchemaSourceInput)({
|
|
144
|
+
collectionId: 'Pokemon',
|
|
145
|
+
httpClient,
|
|
146
|
+
fieldTypes: [rating]
|
|
147
|
+
}));
|
|
148
|
+
expect(source.fieldTypes).toEqual([rating]);
|
|
149
|
+
});
|
|
114
150
|
it('auto-builds a reference source per reference field once the schema loads', async () => {
|
|
115
|
-
const source = (0,
|
|
151
|
+
const source = (0, _schema.defineSchemaSource)((0, _useCmsSchemaSource.cmsSchemaSourceInput)({
|
|
116
152
|
collectionId: 'Products',
|
|
117
153
|
httpClient
|
|
118
154
|
}));
|
|
@@ -124,11 +160,11 @@ describe('useCmsSchemaSource', () => {
|
|
|
124
160
|
expect(source.references.Camels.collectionId).toBe('Camels');
|
|
125
161
|
});
|
|
126
162
|
it('keeps a seeded reference source instead of auto-building it', async () => {
|
|
127
|
-
const seeded = (0,
|
|
163
|
+
const seeded = (0, _schema.defineSchemaSource)((0, _useCmsSchemaSource.cmsSchemaSourceInput)({
|
|
128
164
|
collectionId: 'Camels',
|
|
129
165
|
httpClient
|
|
130
166
|
}));
|
|
131
|
-
const source = (0,
|
|
167
|
+
const source = (0, _schema.defineSchemaSource)((0, _useCmsSchemaSource.cmsSchemaSourceInput)({
|
|
132
168
|
collectionId: 'Products',
|
|
133
169
|
httpClient,
|
|
134
170
|
references: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_bexCore","require","_data","_useCmsSchemaSource","_fetchUserPermissions","_fetchExternalDbConnections","jest","mock","errorHandler","withErrorHandler","fn","actual","requireActual","collections","getDataCollection","fetchUserPermissions","fetchExternalDbConnections","fetchUserPermissionsMock","fetchExternalDbConnectionsMock","httpClient","collectionWithReference","_id","collectionType","displayField","capabilities","dataOperations","permissions","read","insert","update","remove","plugins","fields","key","type","Type","TEXT","systemField","encrypted","displayName","queryOperators","sortable","REFERENCE","typeMetadata","reference","referencedCollectionId","describe","beforeEach","clearAllMocks","mockResolvedValue","it","source","defineSchemaSource","cmsSchemaSourceInput","collectionId","expect","creatableFieldTypes","toEqual","patternsType","toBe","paginationMode","references","loadSchema","Camels","toBeDefined","seeded"],"sources":["../../../../src/adapter/__tests__/useCmsSchemaSource.spec.ts"],"sourcesContent":["import { defineSchemaSource } from '@wix/bex-core';\nimport { collections } from '@wix/data';\nimport { cmsSchemaSourceInput } from '../useCmsSchemaSource';\nimport { fetchUserPermissions } from '../fetchUserPermissions';\nimport { fetchExternalDbConnections } from '../fetchExternalDbConnections';\n\n// loadCmsSchema imports errorHandler at evaluation time; stub it so importing\n// the source builder is side-effect free.\njest.mock('@wix/essentials', () => ({\n errorHandler: {\n withErrorHandler: (fn: () => unknown) => fn(),\n },\n}));\n\n// Keep @wix/data real (cmsFieldTypeMap reads `collections.Type` at evaluation\n// time) and stub only the collection fetch, so loadSchema runs the real\n// loader + transform against a fixed collection.\njest.mock('@wix/data', () => {\n const actual = jest.requireActual('@wix/data');\n return {\n ...actual,\n collections: {\n ...actual.collections,\n getDataCollection: jest.fn(),\n },\n };\n});\njest.mock('../fetchUserPermissions', () => ({\n fetchUserPermissions: jest.fn(),\n}));\njest.mock('../fetchExternalDbConnections', () => ({\n fetchExternalDbConnections: jest.fn(),\n}));\n\nconst getDataCollection = collections.getDataCollection as unknown as jest.Mock;\nconst fetchUserPermissionsMock = fetchUserPermissions as unknown as jest.Mock;\nconst fetchExternalDbConnectionsMock =\n fetchExternalDbConnections as unknown as jest.Mock;\n\nconst httpClient = {} as unknown as Parameters<\n typeof cmsSchemaSourceInput\n>[0]['httpClient'];\n\n// A collection with one reference field pointing at \"Camels\".\nconst collectionWithReference = (): collections.DataCollection => ({\n _id: 'Products',\n collectionType: 'NATIVE',\n displayField: 'title',\n capabilities: { dataOperations: ['SAVE', 'UPDATE', 'REMOVE'] },\n permissions: {\n read: 'ANYONE',\n insert: 'SITE_MEMBER',\n update: 'SITE_MEMBER',\n remove: 'SITE_MEMBER',\n },\n plugins: [],\n fields: [\n {\n key: 'title',\n type: collections.Type.TEXT,\n systemField: false,\n encrypted: false,\n plugins: [],\n displayName: 'Title',\n capabilities: { queryOperators: [], sortable: true },\n },\n {\n key: 'supplier',\n type: collections.Type.REFERENCE,\n systemField: false,\n encrypted: false,\n plugins: [],\n displayName: 'Supplier',\n capabilities: { queryOperators: [], sortable: false },\n typeMetadata: { reference: { referencedCollectionId: 'Camels' } },\n },\n ],\n});\n\ndescribe('useCmsSchemaSource', () => {\n beforeEach(() => {\n jest.clearAllMocks();\n getDataCollection.mockResolvedValue(collectionWithReference());\n fetchUserPermissionsMock.mockResolvedValue([]);\n fetchExternalDbConnectionsMock.mockResolvedValue([]);\n });\n\n it('declares the creatable types in display order — labels come from the standard names in the UI', () => {\n const source = defineSchemaSource(\n cmsSchemaSourceInput({\n collectionId: 'Pokemon',\n httpClient,\n }),\n );\n\n expect(source.creatableFieldTypes).toEqual([\n { patternsType: 'SHORT_TEXT' },\n { patternsType: 'NUMBER' },\n { patternsType: 'BOOLEAN' },\n { patternsType: 'DATE' },\n ]);\n });\n\n it('builds an offset source keyed by the collectionId', () => {\n const source = defineSchemaSource(\n cmsSchemaSourceInput({\n collectionId: 'Pokemon',\n httpClient,\n }),\n );\n\n expect(source.collectionId).toBe('Pokemon');\n expect(source.paginationMode).toBe('offset');\n });\n\n it('auto-builds a reference source per reference field once the schema loads', async () => {\n const source = defineSchemaSource(\n cmsSchemaSourceInput({ collectionId: 'Products', httpClient }),\n );\n\n // Nothing is wired until the schema (and its reference fields) is known.\n expect(source.references).toEqual({});\n\n await source.loadSchema();\n\n expect(source.references.Camels).toBeDefined();\n expect(source.references.Camels.collectionId).toBe('Camels');\n });\n\n it('keeps a seeded reference source instead of auto-building it', async () => {\n const seeded = defineSchemaSource(\n cmsSchemaSourceInput({ collectionId: 'Camels', httpClient }),\n );\n const source = defineSchemaSource(\n cmsSchemaSourceInput({\n collectionId: 'Products',\n httpClient,\n references: { Camels: seeded },\n }),\n );\n\n await source.loadSchema();\n\n expect(source.references.Camels).toBe(seeded);\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_patterns","require","_schema","_data","_useCmsSchemaSource","_fetchUserPermissions","_fetchExternalDbConnections","jest","mock","errorHandler","withErrorHandler","fn","actual","requireActual","collections","getDataCollection","fetchUserPermissions","fetchExternalDbConnections","fetchUserPermissionsMock","fetchExternalDbConnectionsMock","httpClient","collectionWithReference","_id","collectionType","displayField","capabilities","dataOperations","permissions","read","insert","update","remove","plugins","fields","key","type","Type","TEXT","systemField","encrypted","displayName","queryOperators","sortable","REFERENCE","typeMetadata","reference","referencedCollectionId","describe","beforeEach","clearAllMocks","mockResolvedValue","it","source","defineSchemaSource","cmsSchemaSourceInput","collectionId","essentials","timeAndLocation","expect","creatableFieldTypes","toEqual","patternsType","label","subtitle","group","toBe","paginationMode","rating","defineFieldType","display","icons","Small","Medium","filter","filterable","fieldTypes","references","loadSchema","Camels","toBeDefined","seeded"],"sources":["../../../../src/adapter/__tests__/useCmsSchemaSource.spec.ts"],"sourcesContent":["import { defineFieldType } from '@wix/patterns';\nimport { defineSchemaSource } from '@wix/patterns/schema';\nimport { collections } from '@wix/data';\nimport { cmsSchemaSourceInput } from '../useCmsSchemaSource';\nimport { fetchUserPermissions } from '../fetchUserPermissions';\nimport { fetchExternalDbConnections } from '../fetchExternalDbConnections';\n\n// loadCmsSchema imports errorHandler at evaluation time; stub it so importing\n// the source builder is side-effect free.\njest.mock('@wix/essentials', () => ({\n errorHandler: {\n withErrorHandler: (fn: () => unknown) => fn(),\n },\n}));\n\n// Keep @wix/data real (cmsFieldTypeMap reads `collections.Type` at evaluation\n// time) and stub only the collection fetch, so loadSchema runs the real\n// loader + transform against a fixed collection.\njest.mock('@wix/data', () => {\n const actual = jest.requireActual('@wix/data');\n return {\n ...actual,\n collections: {\n ...actual.collections,\n getDataCollection: jest.fn(),\n },\n };\n});\njest.mock('../fetchUserPermissions', () => ({\n fetchUserPermissions: jest.fn(),\n}));\njest.mock('../fetchExternalDbConnections', () => ({\n fetchExternalDbConnections: jest.fn(),\n}));\n\nconst getDataCollection = collections.getDataCollection as unknown as jest.Mock;\nconst fetchUserPermissionsMock = fetchUserPermissions as unknown as jest.Mock;\nconst fetchExternalDbConnectionsMock =\n fetchExternalDbConnections as unknown as jest.Mock;\n\nconst httpClient = {} as unknown as Parameters<\n typeof cmsSchemaSourceInput\n>[0]['httpClient'];\n\n// A collection with one reference field pointing at \"Camels\".\nconst collectionWithReference = (): collections.DataCollection => ({\n _id: 'Products',\n collectionType: 'NATIVE',\n displayField: 'title',\n capabilities: { dataOperations: ['SAVE', 'UPDATE', 'REMOVE'] },\n permissions: {\n read: 'ANYONE',\n insert: 'SITE_MEMBER',\n update: 'SITE_MEMBER',\n remove: 'SITE_MEMBER',\n },\n plugins: [],\n fields: [\n {\n key: 'title',\n type: collections.Type.TEXT,\n systemField: false,\n encrypted: false,\n plugins: [],\n displayName: 'Title',\n capabilities: { queryOperators: [], sortable: true },\n },\n {\n key: 'supplier',\n type: collections.Type.REFERENCE,\n systemField: false,\n encrypted: false,\n plugins: [],\n displayName: 'Supplier',\n capabilities: { queryOperators: [], sortable: false },\n typeMetadata: { reference: { referencedCollectionId: 'Camels' } },\n },\n ],\n});\n\ndescribe('useCmsSchemaSource', () => {\n beforeEach(() => {\n jest.clearAllMocks();\n getDataCollection.mockResolvedValue(collectionWithReference());\n fetchUserPermissionsMock.mockResolvedValue([]);\n fetchExternalDbConnectionsMock.mockResolvedValue([]);\n });\n\n it('declares the creatable types in display order, with CMS labels, subtitles and groups', () => {\n const source = defineSchemaSource(\n cmsSchemaSourceInput({\n collectionId: 'Pokemon',\n httpClient,\n }),\n );\n\n const essentials = 'Essentials';\n const timeAndLocation = 'Time and location';\n expect(source.creatableFieldTypes).toEqual([\n {\n patternsType: 'SHORT_TEXT',\n label: 'Text',\n subtitle: 'Titles, paragraph',\n group: essentials,\n },\n {\n patternsType: 'NUMBER',\n label: 'Number',\n subtitle: 'ID, rating, order number',\n group: essentials,\n },\n {\n patternsType: 'BOOLEAN',\n label: 'Boolean',\n subtitle: 'Yes or no, true or false',\n group: essentials,\n },\n {\n patternsType: 'DATE',\n label: 'Date',\n subtitle: 'Date of event, date added',\n group: timeAndLocation,\n },\n ]);\n });\n\n it('builds an offset source keyed by the collectionId', () => {\n const source = defineSchemaSource(\n cmsSchemaSourceInput({\n collectionId: 'Pokemon',\n httpClient,\n }),\n );\n\n expect(source.collectionId).toBe('Pokemon');\n expect(source.paginationMode).toBe('offset');\n });\n\n it('carries consumer-defined field types through to the source', () => {\n const rating = defineFieldType<number>({\n type: 'app.rating',\n display: {\n label: 'Rating',\n icons: { Small: () => null, Medium: () => null },\n },\n filter: { filterable: false },\n });\n const source = defineSchemaSource(\n cmsSchemaSourceInput({\n collectionId: 'Pokemon',\n httpClient,\n fieldTypes: [rating],\n }),\n );\n\n expect(source.fieldTypes).toEqual([rating]);\n });\n\n it('auto-builds a reference source per reference field once the schema loads', async () => {\n const source = defineSchemaSource(\n cmsSchemaSourceInput({ collectionId: 'Products', httpClient }),\n );\n\n // Nothing is wired until the schema (and its reference fields) is known.\n expect(source.references).toEqual({});\n\n await source.loadSchema();\n\n expect(source.references.Camels).toBeDefined();\n expect(source.references.Camels.collectionId).toBe('Camels');\n });\n\n it('keeps a seeded reference source instead of auto-building it', async () => {\n const seeded = defineSchemaSource(\n cmsSchemaSourceInput({ collectionId: 'Camels', httpClient }),\n );\n const source = defineSchemaSource(\n cmsSchemaSourceInput({\n collectionId: 'Products',\n httpClient,\n references: { Camels: seeded },\n }),\n );\n\n await source.loadSchema();\n\n expect(source.references.Camels).toBe(seeded);\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_data","require","_essentials","_pollUntilReady","createCmsBackupConfig","create","_response$backup","response","errorHandler","withErrorHandler","backups","createBackup","backupId","backup","_id","waitForCompletion","options","pollUntilReady","list","listBackups","found","find","b","status","signal","restore","_response$restoration","restoreBackup","restorationId","restoration","waitForRestoration","restorations","listRestorations","r"],"sources":["../../../src/adapter/cmsBackup.ts"],"sourcesContent":["import { backups } from '@wix/data';\nimport { errorHandler } from '@wix/essentials';\nimport type { BackupConfig } from '@wix/
|
|
1
|
+
{"version":3,"names":["_data","require","_essentials","_pollUntilReady","createCmsBackupConfig","create","_response$backup","response","errorHandler","withErrorHandler","backups","createBackup","backupId","backup","_id","waitForCompletion","options","pollUntilReady","list","listBackups","found","find","b","status","signal","restore","_response$restoration","restoreBackup","restorationId","restoration","waitForRestoration","restorations","listRestorations","r"],"sources":["../../../src/adapter/cmsBackup.ts"],"sourcesContent":["import { backups } from '@wix/data';\nimport { errorHandler } from '@wix/essentials';\nimport type { BackupConfig } from '@wix/patterns';\nimport { pollUntilReady } from './pollUntilReady';\n\n/**\n * Builds the `BackupConfig` over `@wix/data` backups: `create`/`restore` return an id,\n * `waitFor*` poll the list endpoint until a terminal status (`READY`/`COMPLETED`/`FAILED`).\n */\nexport function createCmsBackupConfig(): BackupConfig {\n return {\n create: async () => {\n const response = await errorHandler.withErrorHandler(\n async () => backups.createBackup(),\n {},\n );\n return { backupId: response?.backup?._id! };\n },\n\n waitForCompletion: async (backupId, options) => {\n await pollUntilReady(\n async () => {\n const { backups: list } = await errorHandler.withErrorHandler(\n () => backups.listBackups(),\n {},\n );\n const found = list?.find((b) => b._id === backupId);\n return found?.status === 'READY' || found?.status === 'FAILED';\n },\n { signal: options?.signal },\n );\n },\n\n restore: async (backupId: string) => {\n const response = await errorHandler.withErrorHandler(\n async () => backups.restoreBackup(backupId),\n {},\n );\n return { restorationId: response?.restoration?._id! };\n },\n\n waitForRestoration: async (restorationId, options) => {\n await pollUntilReady(\n async () => {\n const { restorations: list } = await errorHandler.withErrorHandler(\n () => backups.listRestorations(),\n {},\n );\n const found = list?.find((r) => r._id === restorationId);\n return found?.status === 'COMPLETED' || found?.status === 'FAILED';\n },\n { signal: options?.signal },\n );\n },\n };\n}\n"],"mappings":";;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,eAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACO,SAASG,qBAAqBA,CAAA,EAAiB;EACpD,OAAO;IACLC,MAAM,EAAE,MAAAA,CAAA,KAAY;MAAA,IAAAC,gBAAA;MAClB,MAAMC,QAAQ,GAAG,MAAMC,wBAAY,CAACC,gBAAgB,CAClD,YAAYC,aAAO,CAACC,YAAY,CAAC,CAAC,EAClC,CAAC,CACH,CAAC;MACD,OAAO;QAAEC,QAAQ,EAAEL,QAAQ,aAAAD,gBAAA,GAARC,QAAQ,CAAEM,MAAM,qBAAhBP,gBAAA,CAAkBQ;MAAK,CAAC;IAC7C,CAAC;IAEDC,iBAAiB,EAAE,MAAAA,CAAOH,QAAQ,EAAEI,OAAO,KAAK;MAC9C,MAAM,IAAAC,8BAAc,EAClB,YAAY;QACV,MAAM;UAAEP,OAAO,EAAEQ;QAAK,CAAC,GAAG,MAAMV,wBAAY,CAACC,gBAAgB,CAC3D,MAAMC,aAAO,CAACS,WAAW,CAAC,CAAC,EAC3B,CAAC,CACH,CAAC;QACD,MAAMC,KAAK,GAAGF,IAAI,oBAAJA,IAAI,CAAEG,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACR,GAAG,KAAKF,QAAQ,CAAC;QACnD,OAAO,CAAAQ,KAAK,oBAALA,KAAK,CAAEG,MAAM,MAAK,OAAO,IAAI,CAAAH,KAAK,oBAALA,KAAK,CAAEG,MAAM,MAAK,QAAQ;MAChE,CAAC,EACD;QAAEC,MAAM,EAAER,OAAO,oBAAPA,OAAO,CAAEQ;MAAO,CAC5B,CAAC;IACH,CAAC;IAEDC,OAAO,EAAE,MAAOb,QAAgB,IAAK;MAAA,IAAAc,qBAAA;MACnC,MAAMnB,QAAQ,GAAG,MAAMC,wBAAY,CAACC,gBAAgB,CAClD,YAAYC,aAAO,CAACiB,aAAa,CAACf,QAAQ,CAAC,EAC3C,CAAC,CACH,CAAC;MACD,OAAO;QAAEgB,aAAa,EAAErB,QAAQ,aAAAmB,qBAAA,GAARnB,QAAQ,CAAEsB,WAAW,qBAArBH,qBAAA,CAAuBZ;MAAK,CAAC;IACvD,CAAC;IAEDgB,kBAAkB,EAAE,MAAAA,CAAOF,aAAa,EAAEZ,OAAO,KAAK;MACpD,MAAM,IAAAC,8BAAc,EAClB,YAAY;QACV,MAAM;UAAEc,YAAY,EAAEb;QAAK,CAAC,GAAG,MAAMV,wBAAY,CAACC,gBAAgB,CAChE,MAAMC,aAAO,CAACsB,gBAAgB,CAAC,CAAC,EAChC,CAAC,CACH,CAAC;QACD,MAAMZ,KAAK,GAAGF,IAAI,oBAAJA,IAAI,CAAEG,IAAI,CAAEY,CAAC,IAAKA,CAAC,CAACnB,GAAG,KAAKc,aAAa,CAAC;QACxD,OAAO,CAAAR,KAAK,oBAALA,KAAK,CAAEG,MAAM,MAAK,WAAW,IAAI,CAAAH,KAAK,oBAALA,KAAK,CAAEG,MAAM,MAAK,QAAQ;MACpE,CAAC,EACD;QAAEC,MAAM,EAAER,OAAO,oBAAPA,OAAO,CAAEQ;MAAO,CAC5B,CAAC;IACH;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_data","require","CMS_EMAIL_TYPE","exports","CmsFieldTypeToPatternsFieldType","collections","Type","TEXT","DATE","DATETIME","TIME","NUMBER","BOOLEAN","URL","ADDRESS","OBJECT","RICH_TEXT","RICH_CONTENT","ARRAY","ARRAY_STRING","REFERENCE","MULTI_REFERENCE","IMAGE","VIDEO","MEDIA_GALLERY","DOCUMENT","ARRAY_DOCUMENT","AUDIO","LEGACY_COLOR","PatternsFieldTypeToCmsFieldType","SHORT_TEXT"],"sources":["../../../src/adapter/cmsFieldTypeMap.ts"],"sourcesContent":["import { collections } from '@wix/data';\nimport type { PatternsFieldType } from '@wix/
|
|
1
|
+
{"version":3,"names":["_data","require","CMS_EMAIL_TYPE","exports","CmsFieldTypeToPatternsFieldType","collections","Type","TEXT","DATE","DATETIME","TIME","NUMBER","BOOLEAN","URL","ADDRESS","OBJECT","RICH_TEXT","RICH_CONTENT","ARRAY","ARRAY_STRING","REFERENCE","MULTI_REFERENCE","IMAGE","VIDEO","MEDIA_GALLERY","DOCUMENT","ARRAY_DOCUMENT","AUDIO","LEGACY_COLOR","PatternsFieldTypeToCmsFieldType","SHORT_TEXT"],"sources":["../../../src/adapter/cmsFieldTypeMap.ts"],"sourcesContent":["import { collections } from '@wix/data';\nimport type { PatternsFieldType } from '@wix/patterns';\n\n// CMS returns 'EMAIL' but `collections.Type` doesn't expose it yet — cast as a workaround.\nexport const CMS_EMAIL_TYPE = 'EMAIL' as collections.Type;\n\n/** Raw CMS field type → `PatternsFieldType`. Unlisted types resolve to `'UNKNOWN'`. */\nexport const CmsFieldTypeToPatternsFieldType: Partial<\n Record<collections.Type, PatternsFieldType>\n> = {\n [collections.Type.TEXT]: 'SHORT_TEXT',\n [collections.Type.DATE]: 'DATE',\n [collections.Type.DATETIME]: 'DATETIME',\n [collections.Type.TIME]: 'TIME',\n [collections.Type.NUMBER]: 'NUMBER',\n [collections.Type.BOOLEAN]: 'BOOLEAN',\n [collections.Type.URL]: 'URL',\n [collections.Type.ADDRESS]: 'ADDRESS',\n [collections.Type.OBJECT]: 'OBJECT',\n [collections.Type.RICH_TEXT]: 'RICH_TEXT',\n [collections.Type.RICH_CONTENT]: 'RICH_CONTENT',\n [collections.Type.ARRAY]: 'ARRAY',\n [collections.Type.ARRAY_STRING]: 'ARRAY',\n [collections.Type.REFERENCE]: 'REFERENCE',\n [collections.Type.MULTI_REFERENCE]: 'MULTI_REFERENCE',\n [collections.Type.IMAGE]: 'IMAGE',\n [collections.Type.VIDEO]: 'VIDEO',\n [collections.Type.MEDIA_GALLERY]: 'MEDIA_GALLERY',\n [collections.Type.DOCUMENT]: 'DOCUMENT',\n [collections.Type.ARRAY_DOCUMENT]: 'MULTI_DOCUMENT',\n [collections.Type.AUDIO]: 'AUDIO',\n [CMS_EMAIL_TYPE]: 'EMAIL',\n [collections.Type.LEGACY_COLOR]: 'COLOR',\n};\n\n/** Reverse map — only these are creatable via `addField`; others throw \"not supported\". */\nexport const PatternsFieldTypeToCmsFieldType: Partial<\n Record<PatternsFieldType, collections.Type>\n> = {\n SHORT_TEXT: collections.Type.TEXT,\n NUMBER: collections.Type.NUMBER,\n BOOLEAN: collections.Type.BOOLEAN,\n DATE: collections.Type.DATE,\n};\n"],"mappings":";;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAGA;AACO,MAAMC,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAG,OAA2B;;AAEzD;AACO,MAAME,+BAEZ,GAAAD,OAAA,CAAAC,+BAAA,GAAG;EACF,CAACC,iBAAW,CAACC,IAAI,CAACC,IAAI,GAAG,YAAY;EACrC,CAACF,iBAAW,CAACC,IAAI,CAACE,IAAI,GAAG,MAAM;EAC/B,CAACH,iBAAW,CAACC,IAAI,CAACG,QAAQ,GAAG,UAAU;EACvC,CAACJ,iBAAW,CAACC,IAAI,CAACI,IAAI,GAAG,MAAM;EAC/B,CAACL,iBAAW,CAACC,IAAI,CAACK,MAAM,GAAG,QAAQ;EACnC,CAACN,iBAAW,CAACC,IAAI,CAACM,OAAO,GAAG,SAAS;EACrC,CAACP,iBAAW,CAACC,IAAI,CAACO,GAAG,GAAG,KAAK;EAC7B,CAACR,iBAAW,CAACC,IAAI,CAACQ,OAAO,GAAG,SAAS;EACrC,CAACT,iBAAW,CAACC,IAAI,CAACS,MAAM,GAAG,QAAQ;EACnC,CAACV,iBAAW,CAACC,IAAI,CAACU,SAAS,GAAG,WAAW;EACzC,CAACX,iBAAW,CAACC,IAAI,CAACW,YAAY,GAAG,cAAc;EAC/C,CAACZ,iBAAW,CAACC,IAAI,CAACY,KAAK,GAAG,OAAO;EACjC,CAACb,iBAAW,CAACC,IAAI,CAACa,YAAY,GAAG,OAAO;EACxC,CAACd,iBAAW,CAACC,IAAI,CAACc,SAAS,GAAG,WAAW;EACzC,CAACf,iBAAW,CAACC,IAAI,CAACe,eAAe,GAAG,iBAAiB;EACrD,CAAChB,iBAAW,CAACC,IAAI,CAACgB,KAAK,GAAG,OAAO;EACjC,CAACjB,iBAAW,CAACC,IAAI,CAACiB,KAAK,GAAG,OAAO;EACjC,CAAClB,iBAAW,CAACC,IAAI,CAACkB,aAAa,GAAG,eAAe;EACjD,CAACnB,iBAAW,CAACC,IAAI,CAACmB,QAAQ,GAAG,UAAU;EACvC,CAACpB,iBAAW,CAACC,IAAI,CAACoB,cAAc,GAAG,gBAAgB;EACnD,CAACrB,iBAAW,CAACC,IAAI,CAACqB,KAAK,GAAG,OAAO;EACjC,CAACzB,cAAc,GAAG,OAAO;EACzB,CAACG,iBAAW,CAACC,IAAI,CAACsB,YAAY,GAAG;AACnC,CAAC;;AAED;AACO,MAAMC,+BAEZ,GAAA1B,OAAA,CAAA0B,+BAAA,GAAG;EACFC,UAAU,EAAEzB,iBAAW,CAACC,IAAI,CAACC,IAAI;EACjCI,MAAM,EAAEN,iBAAW,CAACC,IAAI,CAACK,MAAM;EAC/BC,OAAO,EAAEP,iBAAW,CAACC,IAAI,CAACM,OAAO;EACjCJ,IAAI,EAAEH,iBAAW,CAACC,IAAI,CAACE;AACzB,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["WIX_FORMS","FORM_APP","WIX_DATA","CREATE_FIELD","UPDATE_FIELD","DELETE_FIELD","INSERT","UPDATE","REMOVE","SCHEMA_FIELD_PERMISSIONS","externalNamespaceFromId","collectionId","index","lastIndexOf","substring","isCollectionShared","schema","_schema$plugins","plugins","some","p","type","isFormsCollection","ownerAppId","isWixAppReadOnly","collectionType","isExternalEditable","externalDbConnections","_connection$capabilit","_connection$capabilit2","namespace","_id","connection","find","c","undefined","capabilities","collectionModificationsSupported","fieldTypes","length","isSchemaEditable","canEditSchemaFields","userPermissions","every","includes","computeItemPermissions","_schema$capabilities","createItem","updateItem","deleteItem","ops","dataOperations","roles","permissions","allowed","allowedDataPermissions","hasAbacOrAnyone","role","abacPermission","notDataRestricted","key","update","remove","computeCmsPermissions","schemaEditable","canEditFields","schemaPermissions","createField","updateField","deleteField","itemPermissions","exports"],"sources":["../../../src/adapter/cmsPermissions.ts"],"sourcesContent":["import { collections } from '@wix/data';\nimport type { ItemPermissions, SchemaPermissions } from '@wix/
|
|
1
|
+
{"version":3,"names":["WIX_FORMS","FORM_APP","WIX_DATA","CREATE_FIELD","UPDATE_FIELD","DELETE_FIELD","INSERT","UPDATE","REMOVE","SCHEMA_FIELD_PERMISSIONS","externalNamespaceFromId","collectionId","index","lastIndexOf","substring","isCollectionShared","schema","_schema$plugins","plugins","some","p","type","isFormsCollection","ownerAppId","isWixAppReadOnly","collectionType","isExternalEditable","externalDbConnections","_connection$capabilit","_connection$capabilit2","namespace","_id","connection","find","c","undefined","capabilities","collectionModificationsSupported","fieldTypes","length","isSchemaEditable","canEditSchemaFields","userPermissions","every","includes","computeItemPermissions","_schema$capabilities","createItem","updateItem","deleteItem","ops","dataOperations","roles","permissions","allowed","allowedDataPermissions","hasAbacOrAnyone","role","abacPermission","notDataRestricted","key","update","remove","computeCmsPermissions","schemaEditable","canEditFields","schemaPermissions","createField","updateField","deleteField","itemPermissions","exports"],"sources":["../../../src/adapter/cmsPermissions.ts"],"sourcesContent":["import { collections } from '@wix/data';\nimport type { ItemPermissions, SchemaPermissions } from '@wix/patterns';\n\nconst WIX_FORMS = '14ce1214-b278-a7e4-1373-00cebd1bef7c';\nconst FORM_APP = '225dd912-7dea-4738-8688-4b8c6955ffc2';\n\nconst WIX_DATA = {\n CREATE_FIELD: 'WIX_DATA.CREATE_COLLECTION_FIELD',\n UPDATE_FIELD: 'WIX_DATA.UPDATE_COLLECTION_FIELD',\n DELETE_FIELD: 'WIX_DATA.DELETE_COLLECTION_FIELD',\n INSERT: 'WIX_DATA.INSERT',\n UPDATE: 'WIX_DATA.UPDATE',\n REMOVE: 'WIX_DATA.REMOVE',\n};\n\nconst SCHEMA_FIELD_PERMISSIONS = [\n WIX_DATA.CREATE_FIELD,\n WIX_DATA.UPDATE_FIELD,\n WIX_DATA.DELETE_FIELD,\n];\n\n/** An external-database connection; determines whether an EXTERNAL collection is editable. */\nexport interface ExternalDbConnection {\n namespace: string;\n capabilities?: {\n collectionModificationsSupported?: boolean;\n fieldTypes?: string[];\n };\n}\n\n// `allowedDataPermissions` is an internal-only field on the v2 `getDataCollection`\n// response (stripped from the public `@wix/data` typings); cast to read it.\ninterface AllowedDataPermissions {\n itemInsert?: boolean;\n itemUpdate?: boolean;\n itemRemove?: boolean;\n}\ntype DataCollectionWithAllowed = collections.DataCollection & {\n allowedDataPermissions?: AllowedDataPermissions;\n};\n\n// EXTERNAL collection ids are `connectionName/dataCollectionId`; match the\n// converter's lastIndexOf('/') split.\nconst externalNamespaceFromId = (\n collectionId: string | undefined,\n): string | null => {\n if (!collectionId) {\n return null;\n }\n const index = collectionId.lastIndexOf('/');\n return index === -1 ? null : collectionId.substring(0, index);\n};\n\nconst isCollectionShared = (schema: collections.DataCollection): boolean =>\n schema.plugins?.some((p) => p.type === 'SHARED') ?? false;\n\nconst isFormsCollection = (schema: collections.DataCollection): boolean =>\n schema.ownerAppId === WIX_FORMS || schema.ownerAppId === FORM_APP;\n\nconst isWixAppReadOnly = (schema: collections.DataCollection): boolean =>\n schema.collectionType === 'WIX_APP' &&\n schema.ownerAppId !== 'SiteMembers' &&\n !isFormsCollection(schema);\n\nconst isExternalEditable = (\n schema: collections.DataCollection,\n externalDbConnections: ExternalDbConnection[],\n): boolean => {\n const namespace = externalNamespaceFromId(schema._id);\n const connection = namespace\n ? externalDbConnections.find((c) => c.namespace === namespace)\n : undefined;\n return (\n !!connection?.capabilities?.collectionModificationsSupported &&\n (connection.capabilities.fieldTypes?.length ?? 0) > 0\n );\n};\n\nconst isSchemaEditable = (\n schema: collections.DataCollection,\n externalDbConnections: ExternalDbConnection[],\n): boolean => {\n if (isCollectionShared(schema)) {\n return false;\n }\n if (schema.collectionType === 'NATIVE') {\n return true;\n }\n if (schema.collectionType === 'EXTERNAL') {\n return isExternalEditable(schema, externalDbConnections);\n }\n return false;\n};\n\nconst canEditSchemaFields = (userPermissions: string[]): boolean =>\n SCHEMA_FIELD_PERMISSIONS.every((p) => userPermissions.includes(p));\n\nconst computeItemPermissions = (\n schema: collections.DataCollection,\n userPermissions: string[],\n): ItemPermissions => {\n if (isCollectionShared(schema) || isWixAppReadOnly(schema)) {\n return { createItem: false, updateItem: false, deleteItem: false };\n }\n\n const ops = schema.capabilities?.dataOperations ?? [];\n const roles = schema.permissions;\n const allowed = (schema as DataCollectionWithAllowed).allowedDataPermissions;\n\n const hasAbacOrAnyone = (role: string | undefined, abacPermission: string) =>\n role === 'ANYONE' || userPermissions.includes(abacPermission);\n const notDataRestricted = (key: keyof AllowedDataPermissions) =>\n allowed?.[key] !== false;\n\n return {\n // cms-web does NOT apply the ANYONE bypass for insert (raw ABAC check).\n createItem:\n ops.includes('SAVE') &&\n notDataRestricted('itemInsert') &&\n userPermissions.includes(WIX_DATA.INSERT),\n updateItem:\n ops.includes('UPDATE') &&\n notDataRestricted('itemUpdate') &&\n hasAbacOrAnyone(roles?.update, WIX_DATA.UPDATE),\n deleteItem:\n ops.includes('REMOVE') &&\n notDataRestricted('itemRemove') &&\n hasAbacOrAnyone(roles?.remove, WIX_DATA.REMOVE),\n };\n};\n\nexport interface CmsPermissions {\n /** `undefined` when the schema's fields cannot be edited. */\n schemaPermissions?: SchemaPermissions;\n itemPermissions: ItemPermissions;\n}\n\n/**\n * Computes the source-neutral permissions from the CMS collection and the\n * user's ABAC permissions.\n */\nexport const computeCmsPermissions = (\n schema: collections.DataCollection,\n userPermissions: string[] = [],\n externalDbConnections: ExternalDbConnection[] = [],\n): CmsPermissions => {\n const schemaEditable = isSchemaEditable(schema, externalDbConnections);\n const canEditFields = schemaEditable && canEditSchemaFields(userPermissions);\n\n return {\n schemaPermissions: schemaEditable\n ? {\n createField: canEditFields,\n updateField: canEditFields,\n deleteField: canEditFields,\n }\n : undefined,\n itemPermissions: computeItemPermissions(schema, userPermissions),\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["FilterPropToOperator","exports","from","to","BooleanFilters","checked","unchecked","HasValueFilters","hasValue","noValue","HAS_VALUE_FILTER_TYPES"],"sources":["../../../src/adapter/constants.ts"],"sourcesContent":["import type { QueryOperator } from '@wix/
|
|
1
|
+
{"version":3,"names":["FilterPropToOperator","exports","from","to","BooleanFilters","checked","unchecked","HasValueFilters","hasValue","noValue","HAS_VALUE_FILTER_TYPES"],"sources":["../../../src/adapter/constants.ts"],"sourcesContent":["import type { QueryOperator } from '@wix/patterns';\n\n/** Range-filter property keys produced by the UI query layer. */\nexport type FilterProp = 'from' | 'to';\n\nexport const FilterPropToOperator: Record<FilterProp, QueryOperator> = {\n from: 'GTE',\n to: 'LTE',\n};\n\nexport const BooleanFilters = {\n checked: 'checked',\n unchecked: 'unchecked',\n};\n\nexport const HasValueFilters = {\n hasValue: 'hasValue',\n noValue: 'noValue',\n};\n\nexport const HAS_VALUE_FILTER_TYPES = [\n 'RICH_CONTENT',\n 'TIME',\n 'DOCUMENT',\n 'MULTI_DOCUMENT',\n 'AUDIO',\n 'IMAGE',\n 'OBJECT',\n 'ARRAY',\n 'MEDIA_GALLERY',\n 'COLOR',\n];\n"],"mappings":";;;;AAEA;;AAGO,MAAMA,oBAAuD,GAAAC,OAAA,CAAAD,oBAAA,GAAG;EACrEE,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE;AACN,CAAC;AAEM,MAAMC,cAAc,GAAAH,OAAA,CAAAG,cAAA,GAAG;EAC5BC,OAAO,EAAE,SAAS;EAClBC,SAAS,EAAE;AACb,CAAC;AAEM,MAAMC,eAAe,GAAAN,OAAA,CAAAM,eAAA,GAAG;EAC7BC,QAAQ,EAAE,UAAU;EACpBC,OAAO,EAAE;AACX,CAAC;AAEM,MAAMC,sBAAsB,GAAAT,OAAA,CAAAS,sBAAA,GAAG,CACpC,cAAc,EACd,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,OAAO,EACP,QAAQ,EACR,OAAO,EACP,eAAe,EACf,OAAO,CACR","ignoreList":[]}
|