@wix/bex-core 2.363.0 → 2.365.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.
@@ -14,7 +14,7 @@ function getExperimentsCompat(essentials) {
14
14
  experiments.enabled('dummy');
15
15
  return experiments;
16
16
  } catch (e) {
17
- console.error(e);
17
+ console.warn(e);
18
18
  return experimentsFallbackApi();
19
19
  }
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"names":["getWixPatternsWindowExperiments","window","__CAIRO_EXPERIMENTS__","getExperimentsCompat","essentials","experiments","experimentsFallbackApi","enabled","e","console","error","ready","Promise","resolve","get","exports"],"sources":["../../../src/services/experiments.ts"],"sourcesContent":["export interface Experiments {\n enabled(key: string): boolean;\n ready(): Promise<any>;\n get(key: string): any;\n}\n\nexport interface ExperimentsBag {\n [key: string]: string | boolean;\n}\n\nexport function getWixPatternsWindowExperiments(): ExperimentsBag | undefined {\n return (window as any).__CAIRO_EXPERIMENTS__;\n}\n\nexport function getExperimentsCompat(essentials: {\n experiments: Experiments;\n}): Experiments {\n try {\n const experiments = essentials.experiments ?? experimentsFallbackApi();\n // When external users in WixCli run it we get exception and we need to use the fallback API\n experiments.enabled('dummy');\n\n return experiments;\n } catch (e) {\n console.error(e);\n return experimentsFallbackApi();\n }\n}\n\nexport const experimentsFallbackApi = (): Experiments => ({\n enabled: () => false,\n ready: () => Promise.resolve(true),\n get: () => '',\n});\n"],"mappings":";;;;;;AAUO,SAASA,+BAA+BA,CAAA,EAA+B;EAC5E,OAAQC,MAAM,CAASC,qBAAqB;AAC9C;AAEO,SAASC,oBAAoBA,CAACC,UAEpC,EAAe;EACd,IAAI;IACF,MAAMC,WAAW,GAAGD,UAAU,CAACC,WAAW,IAAIC,sBAAsB,CAAC,CAAC;IACtE;IACAD,WAAW,CAACE,OAAO,CAAC,OAAO,CAAC;IAE5B,OAAOF,WAAW;EACpB,CAAC,CAAC,OAAOG,CAAC,EAAE;IACVC,OAAO,CAACC,KAAK,CAACF,CAAC,CAAC;IAChB,OAAOF,sBAAsB,CAAC,CAAC;EACjC;AACF;AAEO,MAAMA,sBAAsB,GAAGA,CAAA,MAAoB;EACxDC,OAAO,EAAEA,CAAA,KAAM,KAAK;EACpBI,KAAK,EAAEA,CAAA,KAAMC,OAAO,CAACC,OAAO,CAAC,IAAI,CAAC;EAClCC,GAAG,EAAEA,CAAA,KAAM;AACb,CAAC,CAAC;AAACC,OAAA,CAAAT,sBAAA,GAAAA,sBAAA","ignoreList":[]}
1
+ {"version":3,"names":["getWixPatternsWindowExperiments","window","__CAIRO_EXPERIMENTS__","getExperimentsCompat","essentials","experiments","experimentsFallbackApi","enabled","e","console","warn","ready","Promise","resolve","get","exports"],"sources":["../../../src/services/experiments.ts"],"sourcesContent":["export interface Experiments {\n enabled(key: string): boolean;\n ready(): Promise<any>;\n get(key: string): any;\n}\n\nexport interface ExperimentsBag {\n [key: string]: string | boolean;\n}\n\nexport function getWixPatternsWindowExperiments(): ExperimentsBag | undefined {\n return (window as any).__CAIRO_EXPERIMENTS__;\n}\n\nexport function getExperimentsCompat(essentials: {\n experiments: Experiments;\n}): Experiments {\n try {\n const experiments = essentials.experiments ?? experimentsFallbackApi();\n // When external users in WixCli run it we get exception and we need to use the fallback API\n experiments.enabled('dummy');\n\n return experiments;\n } catch (e) {\n console.warn(e);\n return experimentsFallbackApi();\n }\n}\n\nexport const experimentsFallbackApi = (): Experiments => ({\n enabled: () => false,\n ready: () => Promise.resolve(true),\n get: () => '',\n});\n"],"mappings":";;;;;;AAUO,SAASA,+BAA+BA,CAAA,EAA+B;EAC5E,OAAQC,MAAM,CAASC,qBAAqB;AAC9C;AAEO,SAASC,oBAAoBA,CAACC,UAEpC,EAAe;EACd,IAAI;IACF,MAAMC,WAAW,GAAGD,UAAU,CAACC,WAAW,IAAIC,sBAAsB,CAAC,CAAC;IACtE;IACAD,WAAW,CAACE,OAAO,CAAC,OAAO,CAAC;IAE5B,OAAOF,WAAW;EACpB,CAAC,CAAC,OAAOG,CAAC,EAAE;IACVC,OAAO,CAACC,IAAI,CAACF,CAAC,CAAC;IACf,OAAOF,sBAAsB,CAAC,CAAC;EACjC;AACF;AAEO,MAAMA,sBAAsB,GAAGA,CAAA,MAAoB;EACxDC,OAAO,EAAEA,CAAA,KAAM,KAAK;EACpBI,KAAK,EAAEA,CAAA,KAAMC,OAAO,CAACC,OAAO,CAAC,IAAI,CAAC;EAClCC,GAAG,EAAEA,CAAA,KAAM;AACb,CAAC,CAAC;AAACC,OAAA,CAAAT,sBAAA,GAAAA,sBAAA","ignoreList":[]}
@@ -133,17 +133,20 @@ class SourceState {
133
133
  }
134
134
  /** Replaces the loaded schema's fields with the map returned by a mutation. */
135
135
  mergeFields(fields) {
136
+ var _this$source$setLoade, _this$source;
136
137
  const current = this.loadedSchema;
137
138
  if (!current) {
138
139
  return;
139
140
  }
141
+ const schema = {
142
+ ...current.schema,
143
+ fields
144
+ };
140
145
  this.loadedSchema = {
141
146
  ...current,
142
- schema: {
143
- ...current.schema,
144
- fields
145
- }
147
+ schema
146
148
  };
149
+ (_this$source$setLoade = (_this$source = this.source).setLoadedSchema) == null || _this$source$setLoade.call(_this$source, schema);
147
150
  }
148
151
  }
149
152
  exports.SourceState = SourceState;
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","_TaskState","SourceState","constructor","params","_defineProperty2","default","TaskState","undefined","loaded","source","loadSchema","runInAction","loadedSchema","fieldId","_this$fieldActions","run","fieldActions","makePrimary","runFieldMutation","makePrimaryTask","successMessage","successBi","errorMessage","errorBi","_this$fieldActions2","duplicateField","duplicateTask","_this$fieldActions3","duplicateFieldWithContent","duplicateWithContentTask","task","toasts","retry","status","isLoading","fields","mergeFields","isSuccess","notify","type","message","biName","isError","action","text","onClick","removeToastOnClick","config","_this$currentToastRem","show","container","showToast","currentToastRemove","call","remove","makeObservable","observable","ref","schema","computed","_this$loadedSchema","_this$loadedSchema2","_this$schema","Object","values","filter","f","Boolean","current","exports"],"sources":["../../../src/state/SourceState.ts"],"sourcesContent":["import {\n action,\n computed,\n makeObservable,\n observable,\n runInAction,\n} from 'mobx';\nimport type { Field } from '../types/Field';\nimport type { LoadedSchema, Schema } from '../types/Schema';\nimport type { SchemaSource } from '../types/SchemaSource';\nimport type { RemoveToast, ToastConfig } from '../model/toast';\nimport { TaskState } from './TaskState';\nimport type { WixPatternsContainer } from './WixPatternsContainer';\n\nexport interface SourceStateParams<T> {\n container: WixPatternsContainer;\n source: SchemaSource<T>;\n}\n\n/**\n * Holds a source's loaded schema, page-neutral: loads it once, exposes its\n * fields, and runs the source's field mutations with toasts and retry. Page\n * adapters (collection page, entity page) read from it.\n */\nexport class SourceState<T = Record<string, unknown>> {\n readonly container: WixPatternsContainer;\n readonly source: SchemaSource<T>;\n readonly makePrimaryTask = new TaskState();\n readonly duplicateTask = new TaskState();\n readonly duplicateWithContentTask = new TaskState();\n\n loadedSchema?: LoadedSchema<T> = undefined;\n\n constructor(params: SourceStateParams<T>) {\n this.container = params.container;\n this.source = params.source;\n\n makeObservable(this, {\n loadedSchema: observable.ref,\n schema: computed,\n fields: computed,\n mergeFields: action,\n });\n }\n\n get schema(): Schema | undefined {\n return this.loadedSchema?.schema;\n }\n\n get fieldActions() {\n return this.loadedSchema?.fieldActions;\n }\n\n get fields(): Field[] {\n const fields = this.schema?.fields ?? {};\n return Object.values(fields).filter((f): f is Field => Boolean(f));\n }\n\n /** Loads the schema. The consuming page adapter runs this, tracks its status,\n * and shows a retry toast on failure. */\n load = async (): Promise<void> => {\n const loaded = await this.source.loadSchema();\n runInAction(() => {\n this.loadedSchema = loaded;\n });\n };\n\n /** Replaces the loaded schema's fields with the map returned by a mutation. */\n mergeFields(fields: Schema['fields']) {\n const current = this.loadedSchema;\n if (!current) {\n return;\n }\n this.loadedSchema = {\n ...current,\n schema: { ...current.schema, fields },\n };\n }\n\n makePrimary = (fieldId: string): void => {\n const run = this.fieldActions?.makePrimary;\n if (!run) {\n return;\n }\n void this.runFieldMutation(\n this.makePrimaryTask,\n () => run(fieldId),\n {\n successMessage: 'Primary field updated',\n successBi: 'cairo-field-action-make-primary-success',\n errorMessage: \"Couldn't update primary field\",\n errorBi: 'cairo-field-action-make-primary-error',\n },\n () => this.makePrimary(fieldId),\n );\n };\n\n duplicateField = (fieldId: string): void => {\n const run = this.fieldActions?.duplicateField;\n if (!run) {\n return;\n }\n void this.runFieldMutation(\n this.duplicateTask,\n () => run(fieldId),\n {\n successMessage: 'Field duplicated',\n successBi: 'cairo-field-action-duplicate-success',\n errorMessage: \"Couldn't duplicate field\",\n errorBi: 'cairo-field-action-duplicate-error',\n },\n () => this.duplicateField(fieldId),\n );\n };\n\n duplicateFieldWithContent = (fieldId: string): void => {\n const run = this.fieldActions?.duplicateFieldWithContent;\n if (!run) {\n return;\n }\n void this.runFieldMutation(\n this.duplicateWithContentTask,\n () => run(fieldId),\n {\n successMessage: 'Field duplicated with content',\n successBi: 'cairo-field-action-duplicate-with-content-success',\n errorMessage: \"Couldn't duplicate field with content\",\n errorBi: 'cairo-field-action-duplicate-with-content-error',\n },\n () => this.duplicateFieldWithContent(fieldId),\n );\n };\n\n // makePrimary/duplicate return the updated fields map (like add/edit/delete),\n // so merge it locally — same path as the modal actions, no full re-fetch.\n // Toasts + loading mirror the field-management actions, so the header and the\n // side panel report the same outcome.\n private runFieldMutation = async (\n task: TaskState<unknown>,\n run: () => Promise<Schema['fields']>,\n toasts: {\n successMessage: string;\n successBi: string;\n errorMessage: string;\n errorBi: string;\n },\n retry: () => void,\n ) => {\n if (task.status.isLoading) {\n return;\n }\n await task.run(async () => {\n const fields = await run();\n runInAction(() => this.mergeFields(fields));\n });\n if (task.status.isSuccess) {\n this.notify({\n type: 'SUCCESS',\n message: toasts.successMessage,\n biName: toasts.successBi,\n });\n } else if (task.status.isError) {\n this.notify({\n type: 'ERROR',\n message: toasts.errorMessage,\n biName: toasts.errorBi,\n action: {\n text: 'Try again',\n onClick: retry,\n removeToastOnClick: true,\n },\n });\n }\n };\n\n private currentToastRemove: RemoveToast | undefined;\n\n // Shared by the source's field mutations (make-primary / duplicate / delete) to\n // surface a toast; deduped against the previous one.\n notify = (config: ToastConfig) => {\n const show = this.container.showToast;\n if (!show) {\n return;\n }\n this.currentToastRemove?.();\n this.currentToastRemove = show(config).remove;\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_mobx","require","_TaskState","SourceState","constructor","params","_defineProperty2","default","TaskState","undefined","loaded","source","loadSchema","runInAction","loadedSchema","fieldId","_this$fieldActions","run","fieldActions","makePrimary","runFieldMutation","makePrimaryTask","successMessage","successBi","errorMessage","errorBi","_this$fieldActions2","duplicateField","duplicateTask","_this$fieldActions3","duplicateFieldWithContent","duplicateWithContentTask","task","toasts","retry","status","isLoading","fields","mergeFields","isSuccess","notify","type","message","biName","isError","action","text","onClick","removeToastOnClick","config","_this$currentToastRem","show","container","showToast","currentToastRemove","call","remove","makeObservable","observable","ref","schema","computed","_this$loadedSchema","_this$loadedSchema2","_this$schema","Object","values","filter","f","Boolean","_this$source$setLoade","_this$source","current","setLoadedSchema","exports"],"sources":["../../../src/state/SourceState.ts"],"sourcesContent":["import {\n action,\n computed,\n makeObservable,\n observable,\n runInAction,\n} from 'mobx';\nimport type { Field } from '../types/Field';\nimport type { LoadedSchema, Schema } from '../types/Schema';\nimport type { SchemaSource } from '../types/SchemaSource';\nimport type { RemoveToast, ToastConfig } from '../model/toast';\nimport { TaskState } from './TaskState';\nimport type { WixPatternsContainer } from './WixPatternsContainer';\n\nexport interface SourceStateParams<T> {\n container: WixPatternsContainer;\n source: SchemaSource<T>;\n}\n\n/**\n * Holds a source's loaded schema, page-neutral: loads it once, exposes its\n * fields, and runs the source's field mutations with toasts and retry. Page\n * adapters (collection page, entity page) read from it.\n */\nexport class SourceState<T = Record<string, unknown>> {\n readonly container: WixPatternsContainer;\n readonly source: SchemaSource<T>;\n readonly makePrimaryTask = new TaskState();\n readonly duplicateTask = new TaskState();\n readonly duplicateWithContentTask = new TaskState();\n\n loadedSchema?: LoadedSchema<T> = undefined;\n\n constructor(params: SourceStateParams<T>) {\n this.container = params.container;\n this.source = params.source;\n\n makeObservable(this, {\n loadedSchema: observable.ref,\n schema: computed,\n fields: computed,\n mergeFields: action,\n });\n }\n\n get schema(): Schema | undefined {\n return this.loadedSchema?.schema;\n }\n\n get fieldActions() {\n return this.loadedSchema?.fieldActions;\n }\n\n get fields(): Field[] {\n const fields = this.schema?.fields ?? {};\n return Object.values(fields).filter((f): f is Field => Boolean(f));\n }\n\n /** Loads the schema. The consuming page adapter runs this, tracks its status,\n * and shows a retry toast on failure. */\n load = async (): Promise<void> => {\n const loaded = await this.source.loadSchema();\n runInAction(() => {\n this.loadedSchema = loaded;\n });\n };\n\n /** Replaces the loaded schema's fields with the map returned by a mutation. */\n mergeFields(fields: Schema['fields']) {\n const current = this.loadedSchema;\n if (!current) {\n return;\n }\n const schema = { ...current.schema, fields };\n this.loadedSchema = {\n ...current,\n schema,\n };\n this.source.setLoadedSchema?.(schema);\n }\n\n makePrimary = (fieldId: string): void => {\n const run = this.fieldActions?.makePrimary;\n if (!run) {\n return;\n }\n void this.runFieldMutation(\n this.makePrimaryTask,\n () => run(fieldId),\n {\n successMessage: 'Primary field updated',\n successBi: 'cairo-field-action-make-primary-success',\n errorMessage: \"Couldn't update primary field\",\n errorBi: 'cairo-field-action-make-primary-error',\n },\n () => this.makePrimary(fieldId),\n );\n };\n\n duplicateField = (fieldId: string): void => {\n const run = this.fieldActions?.duplicateField;\n if (!run) {\n return;\n }\n void this.runFieldMutation(\n this.duplicateTask,\n () => run(fieldId),\n {\n successMessage: 'Field duplicated',\n successBi: 'cairo-field-action-duplicate-success',\n errorMessage: \"Couldn't duplicate field\",\n errorBi: 'cairo-field-action-duplicate-error',\n },\n () => this.duplicateField(fieldId),\n );\n };\n\n duplicateFieldWithContent = (fieldId: string): void => {\n const run = this.fieldActions?.duplicateFieldWithContent;\n if (!run) {\n return;\n }\n void this.runFieldMutation(\n this.duplicateWithContentTask,\n () => run(fieldId),\n {\n successMessage: 'Field duplicated with content',\n successBi: 'cairo-field-action-duplicate-with-content-success',\n errorMessage: \"Couldn't duplicate field with content\",\n errorBi: 'cairo-field-action-duplicate-with-content-error',\n },\n () => this.duplicateFieldWithContent(fieldId),\n );\n };\n\n // makePrimary/duplicate return the updated fields map (like add/edit/delete),\n // so merge it locally — same path as the modal actions, no full re-fetch.\n // Toasts + loading mirror the field-management actions, so the header and the\n // side panel report the same outcome.\n private runFieldMutation = async (\n task: TaskState<unknown>,\n run: () => Promise<Schema['fields']>,\n toasts: {\n successMessage: string;\n successBi: string;\n errorMessage: string;\n errorBi: string;\n },\n retry: () => void,\n ) => {\n if (task.status.isLoading) {\n return;\n }\n await task.run(async () => {\n const fields = await run();\n runInAction(() => this.mergeFields(fields));\n });\n if (task.status.isSuccess) {\n this.notify({\n type: 'SUCCESS',\n message: toasts.successMessage,\n biName: toasts.successBi,\n });\n } else if (task.status.isError) {\n this.notify({\n type: 'ERROR',\n message: toasts.errorMessage,\n biName: toasts.errorBi,\n action: {\n text: 'Try again',\n onClick: retry,\n removeToastOnClick: true,\n },\n });\n }\n };\n\n private currentToastRemove: RemoveToast | undefined;\n\n // Shared by the source's field mutations (make-primary / duplicate / delete) to\n // surface a toast; deduped against the previous one.\n notify = (config: ToastConfig) => {\n const show = this.container.showToast;\n if (!show) {\n return;\n }\n this.currentToastRemove?.();\n this.currentToastRemove = show(config).remove;\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -50,22 +50,32 @@ function defineSchemaSource(input) {
50
50
  getReferencedCollectionSource
51
51
  } = input;
52
52
  let loaded;
53
- let schema;
53
+ let resolved;
54
54
  const loadSchema = () => loaded ?? (loaded = input.loadSchema().then(result => {
55
- schema = result.schema;
55
+ resolved = result;
56
56
  return result;
57
57
  }).catch(error => {
58
58
  loaded = undefined;
59
59
  throw error;
60
60
  }));
61
+ const setLoadedSchema = schema => {
62
+ if (!resolved) {
63
+ return;
64
+ }
65
+ resolved = {
66
+ ...resolved,
67
+ schema
68
+ };
69
+ loaded = Promise.resolve(resolved);
70
+ };
61
71
  const searchableFieldIds = input.searchableFieldIds ?? (s => [s.displayField]);
62
72
  const itemKey = input.itemKey ?? (item => {
63
- var _schema;
64
- return String(item[((_schema = schema) == null ? void 0 : _schema.idField) ?? '_id'] ?? '');
73
+ var _resolved;
74
+ return String(item[((_resolved = resolved) == null ? void 0 : _resolved.schema.idField) ?? '_id'] ?? '');
65
75
  });
66
76
  const itemName = input.itemName ?? (item => {
67
- var _schema2;
68
- return String(item[((_schema2 = schema) == null ? void 0 : _schema2.displayField) ?? '_id'] ?? '');
77
+ var _resolved2;
78
+ return String(item[((_resolved2 = resolved) == null ? void 0 : _resolved2.schema.displayField) ?? '_id'] ?? '');
69
79
  });
70
80
  const canAddFields = input.canAddFields ?? (s => {
71
81
  var _s$schemaPermissions;
@@ -107,7 +117,8 @@ function defineSchemaSource(input) {
107
117
  fieldPermissions,
108
118
  supportsPii,
109
119
  getFieldValue,
110
- setFieldValue
120
+ setFieldValue,
121
+ setLoadedSchema
111
122
  };
112
123
  }
113
124
  //# sourceMappingURL=SchemaSource.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["sourceFetchData","source","query","backend","schema","loadSchema","visibleColumns","columns","find","searchableFieldIds","length","defineSchemaSource","input","collectionId","paginationMode","fieldModal","fieldTypes","fieldPermissions","supportsPii","references","getReferencedCollectionSource","loaded","then","result","catch","error","undefined","s","displayField","itemKey","item","_schema","String","idField","itemName","_schema2","canAddFields","_s$schemaPermissions","schemaPermissions","createField","canEditField","field","_s$schemaPermissions2","updateField","isSystem","canDeleteField","_s$schemaPermissions3","deleteField","getFieldValue","id","setFieldValue","value","text","loadReferenceableCollectionOptions","types"],"sources":["../../../src/types/SchemaSource.ts"],"sourcesContent":["import type { Field, PatternsFieldType } from './Field';\nimport type { FieldTypeDefinition } from './FieldTypeDefinition';\nimport type { Schema, LoadedSchema, FindOptions } from './Schema';\nimport type {\n FieldModalText,\n FieldModalCollectionInput,\n FieldModalCollectionOptionsLoader,\n FieldPermissions,\n FieldPiiWarning,\n FieldSettingsSection,\n} from './FieldsSource';\nimport type {\n OffsetQuery,\n OffsetQueryResult,\n} from '../hooks/paginationModeConfig';\n\n/** A field type the add/edit field modal offers, with everything that type\n * brings to it. Declare one entry per `patternsType` — the type is the entry's\n * identity. Nothing here reaches the table or the filters; that is `fieldTypes`\n * (`FieldTypeDefinition[]`). */\nexport interface FieldTypeOption {\n patternsType: PatternsFieldType;\n /** Custom display name. Absent ⇒ the UI's standard name for this type. */\n label?: string;\n /** Custom name-input placeholder. Absent ⇒ the UI's standard placeholder. */\n namePlaceholder?: string;\n /** A one-line description shown under the type in the add-field menu. */\n subtitle?: string;\n /** The group heading this type is listed under in the add-field menu, in\n * first-seen order. Types sharing a heading form one group. Absent ⇒\n * ungrouped. */\n group?: string;\n /** Whether a field of this type can be marked PII. Absent ⇒ follows the\n * source's `supportsPii`. */\n supportsPii?: boolean;\n /** Warning shown while the PII toggle is on. Read on every render, so it can\n * use data that only exists once the schema has loaded. Default: none. */\n piiWarning?: () => FieldPiiWarning | undefined;\n /** This type's own part of the collapsible section in the add/edit field\n * modal. Default: none. */\n settingsSection?: FieldSettingsSection;\n /** Collection picker shown in the main add/edit field form. */\n collectionInput?: FieldModalCollectionInput;\n}\n\n/** Everything the add/edit field modal shows for this source. */\nexport interface FieldModalInput {\n /** Title and subtitle. Default: generic titles. */\n text?: FieldModalText;\n /** Default option loader for reference-like built-in field types. */\n loadReferenceableCollectionOptions?: FieldModalCollectionOptionsLoader;\n /** The types the modal offers, in display order. Default: none. */\n types?: FieldTypeOption[];\n}\n\n/** What a caller passes. Only `collectionId` and `loadSchema` are required. */\nexport interface SchemaSourceInput<T> {\n collectionId: string;\n loadSchema: () => Promise<LoadedSchema<T>>;\n /** Sources for collections this one references, keyed by the referenced\n * collection id. A renderer resolves a reference field through the matching\n * entry — its `loadSchema` gives the referenced schema and `sourceFetchData`\n * queries the referenced items. Default: none. */\n references?: Record<string, SchemaSource<any>>;\n /** Lazy source lookup for a referenced collection that is not in `references`.\n * Is used when a reference field is created in the add field modal.\n * The returned source owns its own async schema/item loading. */\n getReferencedCollectionSource?: (\n collectionId: string,\n ) => SchemaSource<any> | undefined;\n paginationMode?: 'offset';\n /** Stable row identity. Default: `row[idField]`. */\n itemKey?: (item: T) => string;\n /** Row display label. Default: `row[displayField]`. */\n itemName?: (item: T) => string;\n /** Fields free-text search runs against. Default: `[displayField]`. */\n searchableFieldIds?: (schema: Schema) => string[];\n /** What the add/edit field modal shows. Default: no types, generic titles. */\n fieldModal?: FieldModalInput;\n /** Consumer-defined field types: how a field of that type renders, filters and\n * validates wherever it appears. A field with `type: 'CUSTOM'` resolves its\n * definition here by `customType`. The add/edit field modal never reads this\n * — see `fieldModal`. Default: none. */\n fieldTypes?: FieldTypeDefinition[];\n /** Default: `schemaPermissions.createField`. */\n canAddFields?: (schema: Schema) => boolean;\n /** Default: `schemaPermissions.updateField && !field.isSystem`. */\n canEditField?: (field: Field, schema: Schema) => boolean;\n /** Default: `schemaPermissions.deleteField && !field.isSystem`. */\n canDeleteField?: (field: Field, schema: Schema) => boolean;\n /** Permission defaults shown in the modal. Absent ⇒ no permissions section. */\n fieldPermissions?: FieldPermissions;\n /** Default: `false`. */\n supportsPii?: boolean;\n /** The value of a field on an item. Default: `item[field.id]`. */\n getFieldValue?: (item: T, field: Field) => unknown;\n /** Writes a field's value on an item, returning the updated item.\n * Default: `{ ...item, [field.id]: value }`. */\n setFieldValue?: (item: T, field: Field, value: unknown) => T;\n}\n\n/** The resolved source: defaults filled, `loadSchema` memoized. */\nexport interface SchemaSource<T> {\n readonly collectionId: string;\n loadSchema: () => Promise<LoadedSchema<T>>;\n readonly paginationMode: 'offset';\n /** Stable row identity. */\n itemKey: (item: T) => string;\n /** Row display label. */\n itemName: (item: T) => string;\n /** Sources for referenced collections, keyed by referenced collection id. */\n readonly references: Record<string, SchemaSource<any>>;\n getReferencedCollectionSource?: (\n collectionId: string,\n ) => SchemaSource<any> | undefined;\n readonly fieldModal: {\n text?: FieldModalText;\n loadReferenceableCollectionOptions?: FieldModalCollectionOptionsLoader;\n types: FieldTypeOption[];\n };\n readonly fieldTypes: FieldTypeDefinition[];\n searchableFieldIds: (schema: Schema) => string[];\n canAddFields: (schema: Schema) => boolean;\n canEditField: (field: Field, schema: Schema) => boolean;\n canDeleteField: (field: Field, schema: Schema) => boolean;\n readonly fieldPermissions?: FieldPermissions;\n readonly supportsPii: boolean;\n /** The value of a field on an item. */\n getFieldValue: (item: T, field: Field) => unknown;\n /** Writes a field's value on an item, returning the updated item. */\n setFieldValue: (item: T, field: Field, value: unknown) => T;\n}\n\ntype OffsetFind<T> = (\n query: OffsetQuery,\n options?: FindOptions,\n) => Promise<OffsetQueryResult<T>>;\n\n/** The collection fetch derived from a source: loads once, then queries the\n * backend's `find`.\n *\n * Free-text search covers the columns the page is showing: the table keeps\n * `query.columns` in sync with them, so the scope comes off the query rather\n * than being threaded in. Falls back to the source's own `searchableFieldIds`\n * before any columns are known (or with no table attached). */\nexport function sourceFetchData<T>(\n source: SchemaSource<T>,\n): (query: OffsetQuery) => Promise<OffsetQueryResult<T>> {\n return async (query) => {\n const { backend, schema } = await source.loadSchema();\n // `columns` is the visible-column list; `fields` is the projection, which a\n // source-driven table doesn't set.\n const visibleColumns = query.columns;\n return (backend.find as OffsetFind<T>)(query, {\n searchableFieldIds: visibleColumns?.length\n ? visibleColumns\n : source.searchableFieldIds(schema),\n });\n };\n}\n\n/** Fills source-neutral defaults over `input` and memoizes the load so the collection\n * query and the table columns share a single fetch. */\nexport function defineSchemaSource<T>(\n input: SchemaSourceInput<T>,\n): SchemaSource<T> {\n const {\n collectionId,\n paginationMode = 'offset',\n fieldModal = {},\n fieldTypes = [],\n fieldPermissions,\n supportsPii = false,\n references = {},\n getReferencedCollectionSource,\n } = input;\n\n let loaded: Promise<LoadedSchema<T>> | undefined;\n let schema: Schema | undefined;\n\n const loadSchema = () =>\n (loaded ??= input\n .loadSchema()\n .then((result) => {\n schema = result.schema;\n return result;\n })\n .catch((error) => {\n loaded = undefined;\n throw error;\n }));\n\n const searchableFieldIds =\n input.searchableFieldIds ?? ((s) => [s.displayField]);\n\n const itemKey =\n input.itemKey ??\n ((item) =>\n String(\n (item as Record<string, unknown>)[schema?.idField ?? '_id'] ?? '',\n ));\n const itemName =\n input.itemName ??\n ((item) =>\n String(\n (item as Record<string, unknown>)[schema?.displayField ?? '_id'] ?? '',\n ));\n const canAddFields =\n input.canAddFields ?? ((s) => s.schemaPermissions?.createField ?? false);\n const canEditField =\n input.canEditField ??\n ((field, s) =>\n (s.schemaPermissions?.updateField ?? false) && !field.isSystem);\n const canDeleteField =\n input.canDeleteField ??\n ((field, s) =>\n (s.schemaPermissions?.deleteField ?? false) && !field.isSystem);\n const getFieldValue =\n input.getFieldValue ??\n ((item, field) => (item as Record<string, unknown>)[field.id]);\n const setFieldValue =\n input.setFieldValue ??\n ((item, field, value) => ({ ...item, [field.id]: value } as T));\n\n return {\n collectionId,\n loadSchema,\n paginationMode,\n itemKey,\n itemName,\n references,\n ...(getReferencedCollectionSource && { getReferencedCollectionSource }),\n fieldModal: {\n text: fieldModal.text,\n loadReferenceableCollectionOptions:\n fieldModal.loadReferenceableCollectionOptions,\n types: fieldModal.types ?? [],\n },\n fieldTypes,\n searchableFieldIds,\n canAddFields,\n canEditField,\n canDeleteField,\n fieldPermissions,\n supportsPii,\n getFieldValue,\n setFieldValue,\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["sourceFetchData","source","query","backend","schema","loadSchema","visibleColumns","columns","find","searchableFieldIds","length","defineSchemaSource","input","collectionId","paginationMode","fieldModal","fieldTypes","fieldPermissions","supportsPii","references","getReferencedCollectionSource","loaded","resolved","then","result","catch","error","undefined","setLoadedSchema","Promise","resolve","s","displayField","itemKey","item","_resolved","String","idField","itemName","_resolved2","canAddFields","_s$schemaPermissions","schemaPermissions","createField","canEditField","field","_s$schemaPermissions2","updateField","isSystem","canDeleteField","_s$schemaPermissions3","deleteField","getFieldValue","id","setFieldValue","value","text","loadReferenceableCollectionOptions","types"],"sources":["../../../src/types/SchemaSource.ts"],"sourcesContent":["import type { Field, PatternsFieldType } from './Field';\nimport type { FieldTypeDefinition } from './FieldTypeDefinition';\nimport type { Schema, LoadedSchema, FindOptions } from './Schema';\nimport type {\n FieldModalText,\n FieldModalCollectionInput,\n FieldModalCollectionOptionsLoader,\n FieldPermissions,\n FieldPiiWarning,\n FieldSettingsSection,\n} from './FieldsSource';\nimport type {\n OffsetQuery,\n OffsetQueryResult,\n} from '../hooks/paginationModeConfig';\n\n/** A field type the add/edit field modal offers, with everything that type\n * brings to it. Declare one entry per `patternsType` — the type is the entry's\n * identity. Nothing here reaches the table or the filters; that is `fieldTypes`\n * (`FieldTypeDefinition[]`). */\nexport interface FieldTypeOption {\n patternsType: PatternsFieldType;\n /** Custom display name. Absent ⇒ the UI's standard name for this type. */\n label?: string;\n /** Custom name-input placeholder. Absent ⇒ the UI's standard placeholder. */\n namePlaceholder?: string;\n /** A one-line description shown under the type in the add-field menu. */\n subtitle?: string;\n /** The group heading this type is listed under in the add-field menu, in\n * first-seen order. Types sharing a heading form one group. Absent ⇒\n * ungrouped. */\n group?: string;\n /** Whether a field of this type can be marked PII. Absent ⇒ follows the\n * source's `supportsPii`. */\n supportsPii?: boolean;\n /** Warning shown while the PII toggle is on. Read on every render, so it can\n * use data that only exists once the schema has loaded. Default: none. */\n piiWarning?: () => FieldPiiWarning | undefined;\n /** This type's own part of the collapsible section in the add/edit field\n * modal. Default: none. */\n settingsSection?: FieldSettingsSection;\n /** Collection picker shown in the main add/edit field form. */\n collectionInput?: FieldModalCollectionInput;\n}\n\n/** Everything the add/edit field modal shows for this source. */\nexport interface FieldModalInput {\n /** Title and subtitle. Default: generic titles. */\n text?: FieldModalText;\n /** Default option loader for reference-like built-in field types. */\n loadReferenceableCollectionOptions?: FieldModalCollectionOptionsLoader;\n /** The types the modal offers, in display order. Default: none. */\n types?: FieldTypeOption[];\n}\n\n/** What a caller passes. Only `collectionId` and `loadSchema` are required. */\nexport interface SchemaSourceInput<T> {\n collectionId: string;\n loadSchema: () => Promise<LoadedSchema<T>>;\n /** Sources for collections this one references, keyed by the referenced\n * collection id. A renderer resolves a reference field through the matching\n * entry — its `loadSchema` gives the referenced schema and `sourceFetchData`\n * queries the referenced items. Default: none. */\n references?: Record<string, SchemaSource<any>>;\n /** Lazy source lookup for a referenced collection that is not in `references`.\n * Is used when a reference field is created in the add field modal.\n * The returned source owns its own async schema/item loading. */\n getReferencedCollectionSource?: (\n collectionId: string,\n ) => SchemaSource<any> | undefined;\n paginationMode?: 'offset';\n /** Stable row identity. Default: `row[idField]`. */\n itemKey?: (item: T) => string;\n /** Row display label. Default: `row[displayField]`. */\n itemName?: (item: T) => string;\n /** Fields free-text search runs against. Default: `[displayField]`. */\n searchableFieldIds?: (schema: Schema) => string[];\n /** What the add/edit field modal shows. Default: no types, generic titles. */\n fieldModal?: FieldModalInput;\n /** Consumer-defined field types: how a field of that type renders, filters and\n * validates wherever it appears. A field with `type: 'CUSTOM'` resolves its\n * definition here by `customType`. The add/edit field modal never reads this\n * — see `fieldModal`. Default: none. */\n fieldTypes?: FieldTypeDefinition[];\n /** Default: `schemaPermissions.createField`. */\n canAddFields?: (schema: Schema) => boolean;\n /** Default: `schemaPermissions.updateField && !field.isSystem`. */\n canEditField?: (field: Field, schema: Schema) => boolean;\n /** Default: `schemaPermissions.deleteField && !field.isSystem`. */\n canDeleteField?: (field: Field, schema: Schema) => boolean;\n /** Permission defaults shown in the modal. Absent ⇒ no permissions section. */\n fieldPermissions?: FieldPermissions;\n /** Default: `false`. */\n supportsPii?: boolean;\n /** The value of a field on an item. Default: `item[field.id]`. */\n getFieldValue?: (item: T, field: Field) => unknown;\n /** Writes a field's value on an item, returning the updated item.\n * Default: `{ ...item, [field.id]: value }`. */\n setFieldValue?: (item: T, field: Field, value: unknown) => T;\n}\n\n/** The resolved source: defaults filled, `loadSchema` memoized. */\nexport interface SchemaSource<T> {\n readonly collectionId: string;\n loadSchema: () => Promise<LoadedSchema<T>>;\n readonly paginationMode: 'offset';\n /** Stable row identity. */\n itemKey: (item: T) => string;\n /** Row display label. */\n itemName: (item: T) => string;\n /** Sources for referenced collections, keyed by referenced collection id. */\n readonly references: Record<string, SchemaSource<any>>;\n getReferencedCollectionSource?: (\n collectionId: string,\n ) => SchemaSource<any> | undefined;\n readonly fieldModal: {\n text?: FieldModalText;\n loadReferenceableCollectionOptions?: FieldModalCollectionOptionsLoader;\n types: FieldTypeOption[];\n };\n readonly fieldTypes: FieldTypeDefinition[];\n searchableFieldIds: (schema: Schema) => string[];\n canAddFields: (schema: Schema) => boolean;\n canEditField: (field: Field, schema: Schema) => boolean;\n canDeleteField: (field: Field, schema: Schema) => boolean;\n readonly fieldPermissions?: FieldPermissions;\n readonly supportsPii: boolean;\n /** The value of a field on an item. */\n getFieldValue: (item: T, field: Field) => unknown;\n /** Writes a field's value on an item, returning the updated item. */\n setFieldValue: (item: T, field: Field, value: unknown) => T;\n /** Replaces the memoized schema returned by later `loadSchema()` calls.\n * No-op before the first successful load. */\n setLoadedSchema?: (schema: Schema) => void;\n}\n\ntype OffsetFind<T> = (\n query: OffsetQuery,\n options?: FindOptions,\n) => Promise<OffsetQueryResult<T>>;\n\n/** The collection fetch derived from a source: loads once, then queries the\n * backend's `find`.\n *\n * Free-text search covers the columns the page is showing: the table keeps\n * `query.columns` in sync with them, so the scope comes off the query rather\n * than being threaded in. Falls back to the source's own `searchableFieldIds`\n * before any columns are known (or with no table attached). */\nexport function sourceFetchData<T>(\n source: SchemaSource<T>,\n): (query: OffsetQuery) => Promise<OffsetQueryResult<T>> {\n return async (query) => {\n const { backend, schema } = await source.loadSchema();\n // `columns` is the visible-column list; `fields` is the projection, which a\n // source-driven table doesn't set.\n const visibleColumns = query.columns;\n return (backend.find as OffsetFind<T>)(query, {\n searchableFieldIds: visibleColumns?.length\n ? visibleColumns\n : source.searchableFieldIds(schema),\n });\n };\n}\n\n/** Fills source-neutral defaults over `input` and memoizes the load so the collection\n * query and the table columns share a single fetch. */\nexport function defineSchemaSource<T>(\n input: SchemaSourceInput<T>,\n): SchemaSource<T> {\n const {\n collectionId,\n paginationMode = 'offset',\n fieldModal = {},\n fieldTypes = [],\n fieldPermissions,\n supportsPii = false,\n references = {},\n getReferencedCollectionSource,\n } = input;\n\n let loaded: Promise<LoadedSchema<T>> | undefined;\n let resolved: LoadedSchema<T> | undefined;\n\n const loadSchema = () =>\n (loaded ??= input\n .loadSchema()\n .then((result) => {\n resolved = result;\n return result;\n })\n .catch((error) => {\n loaded = undefined;\n throw error;\n }));\n\n const setLoadedSchema = (schema: Schema) => {\n if (!resolved) {\n return;\n }\n resolved = { ...resolved, schema };\n loaded = Promise.resolve(resolved);\n };\n\n const searchableFieldIds =\n input.searchableFieldIds ?? ((s) => [s.displayField]);\n\n const itemKey =\n input.itemKey ??\n ((item) =>\n String(\n (item as Record<string, unknown>)[resolved?.schema.idField ?? '_id'] ??\n '',\n ));\n const itemName =\n input.itemName ??\n ((item) =>\n String(\n (item as Record<string, unknown>)[\n resolved?.schema.displayField ?? '_id'\n ] ?? '',\n ));\n const canAddFields =\n input.canAddFields ?? ((s) => s.schemaPermissions?.createField ?? false);\n const canEditField =\n input.canEditField ??\n ((field, s) =>\n (s.schemaPermissions?.updateField ?? false) && !field.isSystem);\n const canDeleteField =\n input.canDeleteField ??\n ((field, s) =>\n (s.schemaPermissions?.deleteField ?? false) && !field.isSystem);\n const getFieldValue =\n input.getFieldValue ??\n ((item, field) => (item as Record<string, unknown>)[field.id]);\n const setFieldValue =\n input.setFieldValue ??\n ((item, field, value) => ({ ...item, [field.id]: value } as T));\n\n return {\n collectionId,\n loadSchema,\n paginationMode,\n itemKey,\n itemName,\n references,\n ...(getReferencedCollectionSource && { getReferencedCollectionSource }),\n fieldModal: {\n text: fieldModal.text,\n loadReferenceableCollectionOptions:\n fieldModal.loadReferenceableCollectionOptions,\n types: fieldModal.types ?? [],\n },\n fieldTypes,\n searchableFieldIds,\n canAddFields,\n canEditField,\n canDeleteField,\n fieldPermissions,\n supportsPii,\n getFieldValue,\n setFieldValue,\n setLoadedSchema,\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+
3
+ var _SchemaSource = require("../SchemaSource");
4
+ const field = id => ({
5
+ id,
6
+ displayName: id,
7
+ type: 'SHORT_TEXT'
8
+ });
9
+ const fieldsMap = (...ids) => Object.fromEntries(ids.map(id => [id, field(id)]));
10
+ const schema = (...fieldIds) => ({
11
+ id: 'c1',
12
+ fields: fieldsMap(...fieldIds),
13
+ displayField: 'name',
14
+ idField: '_id'
15
+ });
16
+ describe('defineSchemaSource — setLoadedSchema (CMS-3482)', () => {
17
+ it('makes a later loadSchema() resolve to the replacement schema', async () => {
18
+ const backend = {
19
+ find: async () => ({
20
+ items: []
21
+ })
22
+ };
23
+ const fieldActions = {};
24
+ const loader = jest.fn(async () => ({
25
+ schema: schema('name'),
26
+ backend,
27
+ fieldActions
28
+ }));
29
+ const source = (0, _SchemaSource.defineSchemaSource)({
30
+ collectionId: 'c1',
31
+ loadSchema: loader
32
+ });
33
+ await source.loadSchema();
34
+ const replacement = {
35
+ ...schema('name', 'color'),
36
+ displayField: 'color'
37
+ };
38
+ source.setLoadedSchema(replacement);
39
+ const loaded = await source.loadSchema();
40
+ expect(loaded.schema).toBe(replacement);
41
+ expect(loaded.backend).toBe(backend);
42
+ expect(loaded.fieldActions).toBe(fieldActions);
43
+ expect(loader).toHaveBeenCalledTimes(1);
44
+ });
45
+ it('applies repeated replacements synchronously', async () => {
46
+ const source = (0, _SchemaSource.defineSchemaSource)({
47
+ collectionId: 'c1',
48
+ loadSchema: async () => ({
49
+ schema: schema('name'),
50
+ backend: {}
51
+ })
52
+ });
53
+ await source.loadSchema();
54
+ const first = schema('name', 'color');
55
+ const second = schema('name', 'size');
56
+ source.setLoadedSchema(first);
57
+ source.setLoadedSchema(second);
58
+ expect((await source.loadSchema()).schema).toBe(second);
59
+ });
60
+ it('is a no-op before the first load', async () => {
61
+ const source = (0, _SchemaSource.defineSchemaSource)({
62
+ collectionId: 'c1',
63
+ loadSchema: async () => ({
64
+ schema: schema('name'),
65
+ backend: {}
66
+ })
67
+ });
68
+ source.setLoadedSchema(schema('name', 'color'));
69
+ const loaded = await source.loadSchema();
70
+ expect(Object.keys(loaded.schema.fields)).toEqual(['name']);
71
+ });
72
+ it('is a no-op while the first load is in flight', async () => {
73
+ let resolveLoad;
74
+ const loader = jest.fn(() => new Promise(resolve => {
75
+ resolveLoad = resolve;
76
+ }));
77
+ const source = (0, _SchemaSource.defineSchemaSource)({
78
+ collectionId: 'c1',
79
+ loadSchema: loader
80
+ });
81
+ const pending = source.loadSchema();
82
+ source.setLoadedSchema(schema('name', 'color'));
83
+ const initial = {
84
+ schema: schema('name'),
85
+ backend: {}
86
+ };
87
+ resolveLoad(initial);
88
+ await expect(pending).resolves.toBe(initial);
89
+ await expect(source.loadSchema()).resolves.toBe(initial);
90
+ });
91
+ it('keeps the retry path intact when nothing has loaded', async () => {
92
+ const loader = jest.fn().mockRejectedValueOnce(new Error('boom')).mockResolvedValue({
93
+ schema: schema('name'),
94
+ backend: {}
95
+ });
96
+ const source = (0, _SchemaSource.defineSchemaSource)({
97
+ collectionId: 'c1',
98
+ loadSchema: loader
99
+ });
100
+ await expect(source.loadSchema()).rejects.toThrow('boom');
101
+ source.setLoadedSchema(schema('name', 'color'));
102
+ const loaded = await source.loadSchema();
103
+ expect(Object.keys(loaded.schema.fields)).toEqual(['name']);
104
+ expect(loader).toHaveBeenCalledTimes(2);
105
+ });
106
+ });
107
+ //# sourceMappingURL=defineSchemaSource.setLoadedSchema.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_SchemaSource","require","field","id","displayName","type","fieldsMap","ids","Object","fromEntries","map","schema","fieldIds","fields","displayField","idField","describe","it","backend","find","items","fieldActions","loader","jest","fn","source","defineSchemaSource","collectionId","loadSchema","replacement","setLoadedSchema","loaded","expect","toBe","toHaveBeenCalledTimes","first","second","keys","toEqual","resolveLoad","Promise","resolve","pending","initial","resolves","mockRejectedValueOnce","Error","mockResolvedValue","rejects","toThrow"],"sources":["../../../../src/types/__tests__/defineSchemaSource.setLoadedSchema.spec.ts"],"sourcesContent":["import { defineSchemaSource } from '../SchemaSource';\nimport type { Field } from '../Field';\nimport type { Schema } from '../Schema';\n\nconst field = (id: string): Field =>\n ({ id, displayName: id, type: 'SHORT_TEXT' } as Field);\n\nconst fieldsMap = (...ids: string[]): Schema['fields'] =>\n Object.fromEntries(ids.map((id) => [id, field(id)]));\n\nconst schema = (...fieldIds: string[]): Schema =>\n ({\n id: 'c1',\n fields: fieldsMap(...fieldIds),\n displayField: 'name',\n idField: '_id',\n } as Schema);\n\ndescribe('defineSchemaSource — setLoadedSchema (CMS-3482)', () => {\n it('makes a later loadSchema() resolve to the replacement schema', async () => {\n const backend = { find: async () => ({ items: [] }) } as never;\n const fieldActions = {} as never;\n const loader = jest.fn(async () => ({\n schema: schema('name'),\n backend,\n fieldActions,\n }));\n const source = defineSchemaSource({\n collectionId: 'c1',\n loadSchema: loader,\n });\n await source.loadSchema();\n const replacement = {\n ...schema('name', 'color'),\n displayField: 'color',\n } as Schema;\n\n source.setLoadedSchema!(replacement);\n\n const loaded = await source.loadSchema();\n expect(loaded.schema).toBe(replacement);\n expect(loaded.backend).toBe(backend);\n expect(loaded.fieldActions).toBe(fieldActions);\n expect(loader).toHaveBeenCalledTimes(1);\n });\n\n it('applies repeated replacements synchronously', async () => {\n const source = defineSchemaSource({\n collectionId: 'c1',\n loadSchema: async () => ({\n schema: schema('name'),\n backend: {} as never,\n }),\n });\n await source.loadSchema();\n const first = schema('name', 'color');\n const second = schema('name', 'size');\n\n source.setLoadedSchema!(first);\n source.setLoadedSchema!(second);\n\n expect((await source.loadSchema()).schema).toBe(second);\n });\n\n it('is a no-op before the first load', async () => {\n const source = defineSchemaSource({\n collectionId: 'c1',\n loadSchema: async () => ({\n schema: schema('name'),\n backend: {} as never,\n }),\n });\n\n source.setLoadedSchema!(schema('name', 'color'));\n\n const loaded = await source.loadSchema();\n expect(Object.keys(loaded.schema.fields)).toEqual(['name']);\n });\n\n it('is a no-op while the first load is in flight', async () => {\n type Result = { schema: Schema; backend: never };\n let resolveLoad!: (result: Result) => void;\n const loader = jest.fn(\n () =>\n new Promise<Result>((resolve) => {\n resolveLoad = resolve;\n }),\n );\n const source = defineSchemaSource({\n collectionId: 'c1',\n loadSchema: loader,\n });\n const pending = source.loadSchema();\n\n source.setLoadedSchema!(schema('name', 'color'));\n const initial = { schema: schema('name'), backend: {} as never };\n resolveLoad(initial);\n\n await expect(pending).resolves.toBe(initial);\n await expect(source.loadSchema()).resolves.toBe(initial);\n });\n\n it('keeps the retry path intact when nothing has loaded', async () => {\n const loader = jest\n .fn<Promise<{ schema: Schema; backend: never }>, []>()\n .mockRejectedValueOnce(new Error('boom'))\n .mockResolvedValue({ schema: schema('name'), backend: {} as never });\n const source = defineSchemaSource({\n collectionId: 'c1',\n loadSchema: loader,\n });\n\n await expect(source.loadSchema()).rejects.toThrow('boom');\n source.setLoadedSchema!(schema('name', 'color'));\n\n const loaded = await source.loadSchema();\n expect(Object.keys(loaded.schema.fields)).toEqual(['name']);\n expect(loader).toHaveBeenCalledTimes(2);\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -9,7 +9,7 @@ export function getExperimentsCompat(essentials) {
9
9
  return experiments;
10
10
  }
11
11
  catch (e) {
12
- console.error(e);
12
+ console.warn(e);
13
13
  return experimentsFallbackApi();
14
14
  }
15
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"experiments.js","sourceRoot":"","sources":["../../../src/services/experiments.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,+BAA+B;IAC7C,OAAQ,MAAc,CAAC,qBAAqB,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,UAEpC;IACC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,IAAI,sBAAsB,EAAE,CAAC;QACvE,4FAA4F;QAC5F,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE7B,OAAO,WAAW,CAAC;IACrB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,sBAAsB,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAgB,EAAE,CAAC,CAAC;IACxD,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK;IACpB,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;CACd,CAAC,CAAC"}
1
+ {"version":3,"file":"experiments.js","sourceRoot":"","sources":["../../../src/services/experiments.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,+BAA+B;IAC7C,OAAQ,MAAc,CAAC,qBAAqB,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,UAEpC;IACC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,IAAI,sBAAsB,EAAE,CAAC;QACvE,4FAA4F;QAC5F,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE7B,OAAO,WAAW,CAAC;IACrB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO,sBAAsB,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAgB,EAAE,CAAC,CAAC;IACxD,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK;IACpB,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;CACd,CAAC,CAAC"}
@@ -122,10 +122,12 @@ export class SourceState {
122
122
  if (!current) {
123
123
  return;
124
124
  }
125
+ const schema = { ...current.schema, fields };
125
126
  this.loadedSchema = {
126
127
  ...current,
127
- schema: { ...current.schema, fields },
128
+ schema,
128
129
  };
130
+ this.source.setLoadedSchema?.(schema);
129
131
  }
130
132
  }
131
133
  //# sourceMappingURL=SourceState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SourceState.js","sourceRoot":"","sources":["../../../src/state/SourceState.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,QAAQ,EACR,cAAc,EACd,UAAU,EACV,WAAW,GACZ,MAAM,MAAM,CAAC;AAKd,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQxC;;;;GAIG;AACH,MAAM,OAAO,WAAW;IAStB,YAAY,MAA4B;QAN/B,oBAAe,GAAG,IAAI,SAAS,EAAE,CAAC;QAClC,kBAAa,GAAG,IAAI,SAAS,EAAE,CAAC;QAChC,6BAAwB,GAAG,IAAI,SAAS,EAAE,CAAC;QAEpD,iBAAY,GAAqB,SAAS,CAAC;QA2B3C;kDAC0C;QAC1C,SAAI,GAAG,KAAK,IAAmB,EAAE;YAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC9C,WAAW,CAAC,GAAG,EAAE;gBACf,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;YAC7B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAcF,gBAAW,GAAG,CAAC,OAAe,EAAQ,EAAE;YACtC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;YAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO;YACT,CAAC;YACD,KAAK,IAAI,CAAC,gBAAgB,CACxB,IAAI,CAAC,eAAe,EACpB,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAClB;gBACE,cAAc,EAAE,uBAAuB;gBACvC,SAAS,EAAE,yCAAyC;gBACpD,YAAY,EAAE,+BAA+B;gBAC7C,OAAO,EAAE,uCAAuC;aACjD,EACD,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAChC,CAAC;QACJ,CAAC,CAAC;QAEF,mBAAc,GAAG,CAAC,OAAe,EAAQ,EAAE;YACzC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC;YAC9C,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO;YACT,CAAC;YACD,KAAK,IAAI,CAAC,gBAAgB,CACxB,IAAI,CAAC,aAAa,EAClB,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAClB;gBACE,cAAc,EAAE,kBAAkB;gBAClC,SAAS,EAAE,sCAAsC;gBACjD,YAAY,EAAE,0BAA0B;gBACxC,OAAO,EAAE,oCAAoC;aAC9C,EACD,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CACnC,CAAC;QACJ,CAAC,CAAC;QAEF,8BAAyB,GAAG,CAAC,OAAe,EAAQ,EAAE;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,yBAAyB,CAAC;YACzD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO;YACT,CAAC;YACD,KAAK,IAAI,CAAC,gBAAgB,CACxB,IAAI,CAAC,wBAAwB,EAC7B,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAClB;gBACE,cAAc,EAAE,+BAA+B;gBAC/C,SAAS,EAAE,mDAAmD;gBAC9D,YAAY,EAAE,uCAAuC;gBACrD,OAAO,EAAE,iDAAiD;aAC3D,EACD,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAC9C,CAAC;QACJ,CAAC,CAAC;QAEF,8EAA8E;QAC9E,0EAA0E;QAC1E,8EAA8E;QAC9E,sCAAsC;QAC9B,qBAAgB,GAAG,KAAK,EAC9B,IAAwB,EACxB,GAAoC,EACpC,MAKC,EACD,KAAiB,EACjB,EAAE;YACF,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC1B,OAAO;YACT,CAAC;YACD,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;gBACxB,MAAM,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;gBAC3B,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC;oBACV,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,MAAM,CAAC,cAAc;oBAC9B,MAAM,EAAE,MAAM,CAAC,SAAS;iBACzB,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC/B,IAAI,CAAC,MAAM,CAAC;oBACV,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,MAAM,CAAC,YAAY;oBAC5B,MAAM,EAAE,MAAM,CAAC,OAAO;oBACtB,MAAM,EAAE;wBACN,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,KAAK;wBACd,kBAAkB,EAAE,IAAI;qBACzB;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;QAIF,gFAAgF;QAChF,qDAAqD;QACrD,WAAM,GAAG,CAAC,MAAmB,EAAE,EAAE;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YACtC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAChD,CAAC,CAAC;QAxJA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAE5B,cAAc,CAAC,IAAI,EAAE;YACnB,YAAY,EAAE,UAAU,CAAC,GAAG;YAC5B,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;IACnC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC;IACzC,CAAC;IAED,IAAI,MAAM;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;QACzC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAc,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IAWD,+EAA+E;IAC/E,WAAW,CAAC,MAAwB;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,IAAI,CAAC,YAAY,GAAG;YAClB,GAAG,OAAO;YACV,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE;SACtC,CAAC;IACJ,CAAC;CA8GF"}
1
+ {"version":3,"file":"SourceState.js","sourceRoot":"","sources":["../../../src/state/SourceState.ts"],"names":[],"mappings":"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"}
@@ -23,22 +23,30 @@ export function sourceFetchData(source) {
23
23
  export function defineSchemaSource(input) {
24
24
  const { collectionId, paginationMode = 'offset', fieldModal = {}, fieldTypes = [], fieldPermissions, supportsPii = false, references = {}, getReferencedCollectionSource, } = input;
25
25
  let loaded;
26
- let schema;
26
+ let resolved;
27
27
  const loadSchema = () => (loaded ??= input
28
28
  .loadSchema()
29
29
  .then((result) => {
30
- schema = result.schema;
30
+ resolved = result;
31
31
  return result;
32
32
  })
33
33
  .catch((error) => {
34
34
  loaded = undefined;
35
35
  throw error;
36
36
  }));
37
+ const setLoadedSchema = (schema) => {
38
+ if (!resolved) {
39
+ return;
40
+ }
41
+ resolved = { ...resolved, schema };
42
+ loaded = Promise.resolve(resolved);
43
+ };
37
44
  const searchableFieldIds = input.searchableFieldIds ?? ((s) => [s.displayField]);
38
45
  const itemKey = input.itemKey ??
39
- ((item) => String(item[schema?.idField ?? '_id'] ?? ''));
46
+ ((item) => String(item[resolved?.schema.idField ?? '_id'] ??
47
+ ''));
40
48
  const itemName = input.itemName ??
41
- ((item) => String(item[schema?.displayField ?? '_id'] ?? ''));
49
+ ((item) => String(item[resolved?.schema.displayField ?? '_id'] ?? ''));
42
50
  const canAddFields = input.canAddFields ?? ((s) => s.schemaPermissions?.createField ?? false);
43
51
  const canEditField = input.canEditField ??
44
52
  ((field, s) => (s.schemaPermissions?.updateField ?? false) && !field.isSystem);
@@ -70,6 +78,7 @@ export function defineSchemaSource(input) {
70
78
  supportsPii,
71
79
  getFieldValue,
72
80
  setFieldValue,
81
+ setLoadedSchema,
73
82
  };
74
83
  }
75
84
  //# sourceMappingURL=SchemaSource.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaSource.js","sourceRoot":"","sources":["../../../src/types/SchemaSource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SchemaSource.js","sourceRoot":"","sources":["../../../src/types/SchemaSource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ import { defineSchemaSource } from '../SchemaSource';
2
+ const field = (id) => ({ id, displayName: id, type: 'SHORT_TEXT' });
3
+ const fieldsMap = (...ids) => Object.fromEntries(ids.map((id) => [id, field(id)]));
4
+ const schema = (...fieldIds) => ({
5
+ id: 'c1',
6
+ fields: fieldsMap(...fieldIds),
7
+ displayField: 'name',
8
+ idField: '_id',
9
+ });
10
+ describe('defineSchemaSource — setLoadedSchema (CMS-3482)', () => {
11
+ it('makes a later loadSchema() resolve to the replacement schema', async () => {
12
+ const backend = { find: async () => ({ items: [] }) };
13
+ const fieldActions = {};
14
+ const loader = jest.fn(async () => ({
15
+ schema: schema('name'),
16
+ backend,
17
+ fieldActions,
18
+ }));
19
+ const source = defineSchemaSource({
20
+ collectionId: 'c1',
21
+ loadSchema: loader,
22
+ });
23
+ await source.loadSchema();
24
+ const replacement = {
25
+ ...schema('name', 'color'),
26
+ displayField: 'color',
27
+ };
28
+ source.setLoadedSchema(replacement);
29
+ const loaded = await source.loadSchema();
30
+ expect(loaded.schema).toBe(replacement);
31
+ expect(loaded.backend).toBe(backend);
32
+ expect(loaded.fieldActions).toBe(fieldActions);
33
+ expect(loader).toHaveBeenCalledTimes(1);
34
+ });
35
+ it('applies repeated replacements synchronously', async () => {
36
+ const source = defineSchemaSource({
37
+ collectionId: 'c1',
38
+ loadSchema: async () => ({
39
+ schema: schema('name'),
40
+ backend: {},
41
+ }),
42
+ });
43
+ await source.loadSchema();
44
+ const first = schema('name', 'color');
45
+ const second = schema('name', 'size');
46
+ source.setLoadedSchema(first);
47
+ source.setLoadedSchema(second);
48
+ expect((await source.loadSchema()).schema).toBe(second);
49
+ });
50
+ it('is a no-op before the first load', async () => {
51
+ const source = defineSchemaSource({
52
+ collectionId: 'c1',
53
+ loadSchema: async () => ({
54
+ schema: schema('name'),
55
+ backend: {},
56
+ }),
57
+ });
58
+ source.setLoadedSchema(schema('name', 'color'));
59
+ const loaded = await source.loadSchema();
60
+ expect(Object.keys(loaded.schema.fields)).toEqual(['name']);
61
+ });
62
+ it('is a no-op while the first load is in flight', async () => {
63
+ let resolveLoad;
64
+ const loader = jest.fn(() => new Promise((resolve) => {
65
+ resolveLoad = resolve;
66
+ }));
67
+ const source = defineSchemaSource({
68
+ collectionId: 'c1',
69
+ loadSchema: loader,
70
+ });
71
+ const pending = source.loadSchema();
72
+ source.setLoadedSchema(schema('name', 'color'));
73
+ const initial = { schema: schema('name'), backend: {} };
74
+ resolveLoad(initial);
75
+ await expect(pending).resolves.toBe(initial);
76
+ await expect(source.loadSchema()).resolves.toBe(initial);
77
+ });
78
+ it('keeps the retry path intact when nothing has loaded', async () => {
79
+ const loader = jest
80
+ .fn()
81
+ .mockRejectedValueOnce(new Error('boom'))
82
+ .mockResolvedValue({ schema: schema('name'), backend: {} });
83
+ const source = defineSchemaSource({
84
+ collectionId: 'c1',
85
+ loadSchema: loader,
86
+ });
87
+ await expect(source.loadSchema()).rejects.toThrow('boom');
88
+ source.setLoadedSchema(schema('name', 'color'));
89
+ const loaded = await source.loadSchema();
90
+ expect(Object.keys(loaded.schema.fields)).toEqual(['name']);
91
+ expect(loader).toHaveBeenCalledTimes(2);
92
+ });
93
+ });
94
+ //# sourceMappingURL=defineSchemaSource.setLoadedSchema.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defineSchemaSource.setLoadedSchema.spec.js","sourceRoot":"","sources":["../../../../src/types/__tests__/defineSchemaSource.setLoadedSchema.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SourceState.d.ts","sourceRoot":"","sources":["../../../src/state/SourceState.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,SAAS,EAAE,oBAAoB,CAAC;IAChC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;CACzB;AAED;;;;GAIG;AACH,qBAAa,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClD,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACjC,QAAQ,CAAC,eAAe,qBAAmB;IAC3C,QAAQ,CAAC,aAAa,qBAAmB;IACzC,QAAQ,CAAC,wBAAwB,qBAAmB;IAEpD,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAa;gBAE/B,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAYxC,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAED,IAAI,YAAY,uDAEf;IAED,IAAI,MAAM,IAAI,KAAK,EAAE,CAGpB;IAED;8CAC0C;IAC1C,IAAI,QAAa,OAAO,CAAC,IAAI,CAAC,CAK5B;IAEF,+EAA+E;IAC/E,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;IAWpC,WAAW,GAAI,SAAS,MAAM,KAAG,IAAI,CAgBnC;IAEF,cAAc,GAAI,SAAS,MAAM,KAAG,IAAI,CAgBtC;IAEF,yBAAyB,GAAI,SAAS,MAAM,KAAG,IAAI,CAgBjD;IAMF,OAAO,CAAC,gBAAgB,CAoCtB;IAEF,OAAO,CAAC,kBAAkB,CAA0B;IAIpD,MAAM,GAAI,QAAQ,WAAW,UAO3B;CACH"}
1
+ {"version":3,"file":"SourceState.d.ts","sourceRoot":"","sources":["../../../src/state/SourceState.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,SAAS,EAAE,oBAAoB,CAAC;IAChC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;CACzB;AAED;;;;GAIG;AACH,qBAAa,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClD,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACjC,QAAQ,CAAC,eAAe,qBAAmB;IAC3C,QAAQ,CAAC,aAAa,qBAAmB;IACzC,QAAQ,CAAC,wBAAwB,qBAAmB;IAEpD,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAa;gBAE/B,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAYxC,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAED,IAAI,YAAY,uDAEf;IAED,IAAI,MAAM,IAAI,KAAK,EAAE,CAGpB;IAED;8CAC0C;IAC1C,IAAI,QAAa,OAAO,CAAC,IAAI,CAAC,CAK5B;IAEF,+EAA+E;IAC/E,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;IAapC,WAAW,GAAI,SAAS,MAAM,KAAG,IAAI,CAgBnC;IAEF,cAAc,GAAI,SAAS,MAAM,KAAG,IAAI,CAgBtC;IAEF,yBAAyB,GAAI,SAAS,MAAM,KAAG,IAAI,CAgBjD;IAMF,OAAO,CAAC,gBAAgB,CAoCtB;IAEF,OAAO,CAAC,kBAAkB,CAA0B;IAIpD,MAAM,GAAI,QAAQ,WAAW,UAO3B;CACH"}
@@ -111,6 +111,9 @@ export interface SchemaSource<T> {
111
111
  getFieldValue: (item: T, field: Field) => unknown;
112
112
  /** Writes a field's value on an item, returning the updated item. */
113
113
  setFieldValue: (item: T, field: Field, value: unknown) => T;
114
+ /** Replaces the memoized schema returned by later `loadSchema()` calls.
115
+ * No-op before the first successful load. */
116
+ setLoadedSchema?: (schema: Schema) => void;
114
117
  }
115
118
  /** The collection fetch derived from a source: loads once, then queries the
116
119
  * backend's `find`.
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaSource.d.ts","sourceRoot":"","sources":["../../../src/types/SchemaSource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SchemaSource.d.ts","sourceRoot":"","sources":["../../../src/types/SchemaSource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=defineSchemaSource.setLoadedSchema.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defineSchemaSource.setLoadedSchema.spec.d.ts","sourceRoot":"","sources":["../../../../src/types/__tests__/defineSchemaSource.setLoadedSchema.spec.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/bex-core",
3
- "version": "2.363.0",
3
+ "version": "2.365.0",
4
4
  "license": "UNLICENSED",
5
5
  "author": {
6
6
  "name": "Kobi",
@@ -41,7 +41,7 @@
41
41
  "exports"
42
42
  ],
43
43
  "dependencies": {
44
- "@wix/bex-utils": "2.150.0",
44
+ "@wix/bex-utils": "2.152.0",
45
45
  "chance": "^1.0.0",
46
46
  "events": "^3.0.0",
47
47
  "formstate": "^2.1.0",
@@ -63,7 +63,7 @@
63
63
  "@types/react": "^16.0.0",
64
64
  "@wix/auto-crud": "^1.0.108",
65
65
  "@wix/babel-cli": "^1.11.0",
66
- "@wix/cairo-integration-utils": "1.125.0",
66
+ "@wix/cairo-integration-utils": "1.127.0",
67
67
  "@wix/eslint-config-yoshi": "^6.74.0",
68
68
  "@wix/fe-essentials": "^1.233.0",
69
69
  "@wix/fe-essentials-standalone": "^1.374.0",
@@ -169,5 +169,5 @@
169
169
  "wallaby": {
170
170
  "autoDetect": true
171
171
  },
172
- "falconPackageHash": "c3455366939b191a8c10b204aeea2287fa2954172ec8a55d0405944e"
172
+ "falconPackageHash": "4829a4eb1924a70431f93e90f9a893ca58505eaee31a3f0f60e6b47b"
173
173
  }