@wix/patterns-cms 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/dist/cjs/adapter/__tests__/cmsFieldActions.spec.js +436 -0
  2. package/dist/cjs/adapter/__tests__/cmsFieldActions.spec.js.map +1 -0
  3. package/dist/cjs/adapter/__tests__/cmsPermissions.spec.js +175 -0
  4. package/dist/cjs/adapter/__tests__/cmsPermissions.spec.js.map +1 -0
  5. package/dist/cjs/adapter/__tests__/createCmsBackend.spec.js +440 -0
  6. package/dist/cjs/adapter/__tests__/createCmsBackend.spec.js.map +1 -0
  7. package/dist/cjs/adapter/__tests__/filterUtils.spec.js +426 -0
  8. package/dist/cjs/adapter/__tests__/filterUtils.spec.js.map +1 -0
  9. package/dist/cjs/adapter/__tests__/getFieldKey.spec.js +24 -0
  10. package/dist/cjs/adapter/__tests__/getFieldKey.spec.js.map +1 -0
  11. package/dist/cjs/adapter/__tests__/loadCmsSchema.spec.js +166 -0
  12. package/dist/cjs/adapter/__tests__/loadCmsSchema.spec.js.map +1 -0
  13. package/dist/cjs/adapter/__tests__/searchUtils.spec.js +116 -0
  14. package/dist/cjs/adapter/__tests__/searchUtils.spec.js.map +1 -0
  15. package/dist/cjs/adapter/__tests__/sortUtils.spec.js +118 -0
  16. package/dist/cjs/adapter/__tests__/sortUtils.spec.js.map +1 -0
  17. package/dist/cjs/adapter/__tests__/transformCmsSchema.spec.js +210 -0
  18. package/dist/cjs/adapter/__tests__/transformCmsSchema.spec.js.map +1 -0
  19. package/dist/cjs/adapter/__tests__/wixDataQueryRecorder.js +54 -0
  20. package/dist/cjs/adapter/__tests__/wixDataQueryRecorder.js.map +1 -0
  21. package/dist/cjs/adapter/cmsBackup.js +52 -0
  22. package/dist/cjs/adapter/cmsBackup.js.map +1 -0
  23. package/dist/cjs/adapter/cmsFieldTypeMap.js +43 -0
  24. package/dist/cjs/adapter/cmsFieldTypeMap.js.map +1 -0
  25. package/dist/cjs/adapter/cmsPermissions.js +94 -0
  26. package/dist/cjs/adapter/cmsPermissions.js.map +1 -0
  27. package/dist/cjs/adapter/constants.js +20 -0
  28. package/dist/cjs/adapter/constants.js.map +1 -0
  29. package/dist/cjs/adapter/createCmsBackend.js +131 -0
  30. package/dist/cjs/adapter/createCmsBackend.js.map +1 -0
  31. package/dist/cjs/adapter/createCmsFieldActions.js +182 -0
  32. package/dist/cjs/adapter/createCmsFieldActions.js.map +1 -0
  33. package/dist/cjs/adapter/fetchExternalDbConnections.js +24 -0
  34. package/dist/cjs/adapter/fetchExternalDbConnections.js.map +1 -0
  35. package/dist/cjs/adapter/fetchUserPermissions.js +24 -0
  36. package/dist/cjs/adapter/fetchUserPermissions.js.map +1 -0
  37. package/dist/cjs/adapter/filterUtils.js +128 -0
  38. package/dist/cjs/adapter/filterUtils.js.map +1 -0
  39. package/dist/cjs/adapter/getFieldKey.js +19 -0
  40. package/dist/cjs/adapter/getFieldKey.js.map +1 -0
  41. package/dist/cjs/adapter/index.js +36 -0
  42. package/dist/cjs/adapter/index.js.map +1 -0
  43. package/dist/cjs/adapter/loadCmsSchema.js +51 -0
  44. package/dist/cjs/adapter/loadCmsSchema.js.map +1 -0
  45. package/dist/cjs/adapter/pollUntilReady.js +30 -0
  46. package/dist/cjs/adapter/pollUntilReady.js.map +1 -0
  47. package/dist/cjs/adapter/searchUtils.js +32 -0
  48. package/dist/cjs/adapter/searchUtils.js.map +1 -0
  49. package/dist/cjs/adapter/sortUtils.js +34 -0
  50. package/dist/cjs/adapter/sortUtils.js.map +1 -0
  51. package/dist/cjs/adapter/transformCmsSchema.js +75 -0
  52. package/dist/cjs/adapter/transformCmsSchema.js.map +1 -0
  53. package/dist/cjs/index.js +10 -0
  54. package/dist/cjs/index.js.map +1 -0
  55. package/dist/esm/adapter/__tests__/cmsFieldActions.spec.js +335 -0
  56. package/dist/esm/adapter/__tests__/cmsFieldActions.spec.js.map +1 -0
  57. package/dist/esm/adapter/__tests__/cmsPermissions.spec.js +173 -0
  58. package/dist/esm/adapter/__tests__/cmsPermissions.spec.js.map +1 -0
  59. package/dist/esm/adapter/__tests__/createCmsBackend.spec.js +307 -0
  60. package/dist/esm/adapter/__tests__/createCmsBackend.spec.js.map +1 -0
  61. package/dist/esm/adapter/__tests__/filterUtils.spec.js +298 -0
  62. package/dist/esm/adapter/__tests__/filterUtils.spec.js.map +1 -0
  63. package/dist/esm/adapter/__tests__/getFieldKey.spec.js +22 -0
  64. package/dist/esm/adapter/__tests__/getFieldKey.spec.js.map +1 -0
  65. package/dist/esm/adapter/__tests__/loadCmsSchema.spec.js +147 -0
  66. package/dist/esm/adapter/__tests__/loadCmsSchema.spec.js.map +1 -0
  67. package/dist/esm/adapter/__tests__/searchUtils.spec.js +109 -0
  68. package/dist/esm/adapter/__tests__/searchUtils.spec.js.map +1 -0
  69. package/dist/esm/adapter/__tests__/sortUtils.spec.js +85 -0
  70. package/dist/esm/adapter/__tests__/sortUtils.spec.js.map +1 -0
  71. package/dist/esm/adapter/__tests__/transformCmsSchema.spec.js +201 -0
  72. package/dist/esm/adapter/__tests__/transformCmsSchema.spec.js.map +1 -0
  73. package/dist/esm/adapter/__tests__/wixDataQueryRecorder.js +42 -0
  74. package/dist/esm/adapter/__tests__/wixDataQueryRecorder.js.map +1 -0
  75. package/dist/esm/adapter/cmsBackup.js +34 -0
  76. package/dist/esm/adapter/cmsBackup.js.map +1 -0
  77. package/dist/esm/adapter/cmsFieldTypeMap.js +37 -0
  78. package/dist/esm/adapter/cmsFieldTypeMap.js.map +1 -0
  79. package/dist/esm/adapter/cmsPermissions.js +91 -0
  80. package/dist/esm/adapter/cmsPermissions.js.map +1 -0
  81. package/dist/esm/adapter/constants.js +25 -0
  82. package/dist/esm/adapter/constants.js.map +1 -0
  83. package/dist/esm/adapter/createCmsBackend.js +113 -0
  84. package/dist/esm/adapter/createCmsBackend.js.map +1 -0
  85. package/dist/esm/adapter/createCmsFieldActions.js +159 -0
  86. package/dist/esm/adapter/createCmsFieldActions.js.map +1 -0
  87. package/dist/esm/adapter/fetchExternalDbConnections.js +17 -0
  88. package/dist/esm/adapter/fetchExternalDbConnections.js.map +1 -0
  89. package/dist/esm/adapter/fetchUserPermissions.js +15 -0
  90. package/dist/esm/adapter/fetchUserPermissions.js.map +1 -0
  91. package/dist/esm/adapter/filterUtils.js +126 -0
  92. package/dist/esm/adapter/filterUtils.js.map +1 -0
  93. package/dist/esm/adapter/getFieldKey.js +13 -0
  94. package/dist/esm/adapter/getFieldKey.js.map +1 -0
  95. package/dist/esm/adapter/index.js +15 -0
  96. package/dist/esm/adapter/index.js.map +1 -0
  97. package/dist/esm/adapter/loadCmsSchema.js +48 -0
  98. package/dist/esm/adapter/loadCmsSchema.js.map +1 -0
  99. package/dist/esm/adapter/pollUntilReady.js +24 -0
  100. package/dist/esm/adapter/pollUntilReady.js.map +1 -0
  101. package/dist/esm/adapter/searchUtils.js +24 -0
  102. package/dist/esm/adapter/searchUtils.js.map +1 -0
  103. package/dist/esm/adapter/sortUtils.js +21 -0
  104. package/dist/esm/adapter/sortUtils.js.map +1 -0
  105. package/dist/esm/adapter/transformCmsSchema.js +70 -0
  106. package/dist/esm/adapter/transformCmsSchema.js.map +1 -0
  107. package/dist/esm/index.js +2 -0
  108. package/dist/esm/index.js.map +1 -0
  109. package/dist/types/adapter/__tests__/cmsFieldActions.spec.d.ts +2 -0
  110. package/dist/types/adapter/__tests__/cmsFieldActions.spec.d.ts.map +1 -0
  111. package/dist/types/adapter/__tests__/cmsPermissions.spec.d.ts +2 -0
  112. package/dist/types/adapter/__tests__/cmsPermissions.spec.d.ts.map +1 -0
  113. package/dist/types/adapter/__tests__/createCmsBackend.spec.d.ts +2 -0
  114. package/dist/types/adapter/__tests__/createCmsBackend.spec.d.ts.map +1 -0
  115. package/dist/types/adapter/__tests__/filterUtils.spec.d.ts +2 -0
  116. package/dist/types/adapter/__tests__/filterUtils.spec.d.ts.map +1 -0
  117. package/dist/types/adapter/__tests__/getFieldKey.spec.d.ts +2 -0
  118. package/dist/types/adapter/__tests__/getFieldKey.spec.d.ts.map +1 -0
  119. package/dist/types/adapter/__tests__/loadCmsSchema.spec.d.ts +2 -0
  120. package/dist/types/adapter/__tests__/loadCmsSchema.spec.d.ts.map +1 -0
  121. package/dist/types/adapter/__tests__/searchUtils.spec.d.ts +2 -0
  122. package/dist/types/adapter/__tests__/searchUtils.spec.d.ts.map +1 -0
  123. package/dist/types/adapter/__tests__/sortUtils.spec.d.ts +2 -0
  124. package/dist/types/adapter/__tests__/sortUtils.spec.d.ts.map +1 -0
  125. package/dist/types/adapter/__tests__/transformCmsSchema.spec.d.ts +2 -0
  126. package/dist/types/adapter/__tests__/transformCmsSchema.spec.d.ts.map +1 -0
  127. package/dist/types/adapter/__tests__/wixDataQueryRecorder.d.ts +40 -0
  128. package/dist/types/adapter/__tests__/wixDataQueryRecorder.d.ts.map +1 -0
  129. package/dist/types/adapter/cmsBackup.d.ts +7 -0
  130. package/dist/types/adapter/cmsBackup.d.ts.map +1 -0
  131. package/dist/types/adapter/cmsFieldTypeMap.d.ts +8 -0
  132. package/dist/types/adapter/cmsFieldTypeMap.d.ts.map +1 -0
  133. package/dist/types/adapter/cmsPermissions.d.ts +21 -0
  134. package/dist/types/adapter/cmsPermissions.d.ts.map +1 -0
  135. package/dist/types/adapter/constants.d.ts +14 -0
  136. package/dist/types/adapter/constants.d.ts.map +1 -0
  137. package/dist/types/adapter/createCmsBackend.d.ts +9 -0
  138. package/dist/types/adapter/createCmsBackend.d.ts.map +1 -0
  139. package/dist/types/adapter/createCmsFieldActions.d.ts +8 -0
  140. package/dist/types/adapter/createCmsFieldActions.d.ts.map +1 -0
  141. package/dist/types/adapter/fetchExternalDbConnections.d.ts +11 -0
  142. package/dist/types/adapter/fetchExternalDbConnections.d.ts.map +1 -0
  143. package/dist/types/adapter/fetchUserPermissions.d.ts +7 -0
  144. package/dist/types/adapter/fetchUserPermissions.d.ts.map +1 -0
  145. package/dist/types/adapter/filterUtils.d.ts +14 -0
  146. package/dist/types/adapter/filterUtils.d.ts.map +1 -0
  147. package/dist/types/adapter/getFieldKey.d.ts +3 -0
  148. package/dist/types/adapter/getFieldKey.d.ts.map +1 -0
  149. package/dist/types/adapter/index.d.ts +15 -0
  150. package/dist/types/adapter/index.d.ts.map +1 -0
  151. package/dist/types/adapter/loadCmsSchema.d.ts +29 -0
  152. package/dist/types/adapter/loadCmsSchema.d.ts.map +1 -0
  153. package/dist/types/adapter/pollUntilReady.d.ts +11 -0
  154. package/dist/types/adapter/pollUntilReady.d.ts.map +1 -0
  155. package/dist/types/adapter/searchUtils.d.ts +12 -0
  156. package/dist/types/adapter/searchUtils.d.ts.map +1 -0
  157. package/dist/types/adapter/sortUtils.d.ts +11 -0
  158. package/dist/types/adapter/sortUtils.d.ts.map +1 -0
  159. package/dist/types/adapter/transformCmsSchema.d.ts +12 -0
  160. package/dist/types/adapter/transformCmsSchema.d.ts.map +1 -0
  161. package/dist/types/index.d.ts +2 -0
  162. package/dist/types/index.d.ts.map +1 -0
  163. package/package.json +123 -0
@@ -0,0 +1,126 @@
1
+ import { items } from '@wix/data';
2
+ // FilterOperator is a real runtime enum exported from @wix/bex-core (not cairo).
3
+ import { FilterOperator } from '@wix/bex-core';
4
+ import { BooleanFilters, FilterPropToOperator, HasValueFilters, HAS_VALUE_FILTER_TYPES, } from './constants';
5
+ const FilterPropToMethod = {
6
+ from: 'ge',
7
+ to: 'le',
8
+ [FilterOperator.CONTAINS]: 'contains',
9
+ [FilterOperator.IS_EMPTY]: 'isEmpty',
10
+ [FilterOperator.EXISTS]: 'isNotEmpty',
11
+ };
12
+ function isValidFilterProp(prop) {
13
+ return prop in FilterPropToMethod;
14
+ }
15
+ function getOperatorForFilter(prop) {
16
+ if (isValidFilterProp(prop)) {
17
+ return FilterPropToMethod[prop];
18
+ }
19
+ return undefined;
20
+ }
21
+ const isSupportedOperator = (fields, filterProp, filterKey) => {
22
+ const field = fields[filterKey];
23
+ if (!field) {
24
+ return false;
25
+ }
26
+ if (!isValidFilterProp(filterProp)) {
27
+ return false;
28
+ }
29
+ const operator = FilterPropToOperator[filterProp];
30
+ const supportedOperators = field.capabilities?.supportedQueryOperators;
31
+ return supportedOperators?.includes(operator);
32
+ };
33
+ /**
34
+ * ADDRESS text operators query the `.formatted` nested property; existence operators
35
+ * (IS_EMPTY/EXISTS) query the field directly.
36
+ */
37
+ const getQueryFieldId = (fieldId, fieldType, operator) => {
38
+ const isAddressField = fieldType === 'ADDRESS';
39
+ const isExistenceOperator = operator === FilterOperator.IS_EMPTY || operator === FilterOperator.EXISTS;
40
+ return isAddressField && !isExistenceOperator
41
+ ? `${fieldId}.formatted`
42
+ : fieldId;
43
+ };
44
+ export function addFiltersToDataQuery({ dataQuery, query, fields, filterFieldMapping, }) {
45
+ if (!filterFieldMapping) {
46
+ return dataQuery;
47
+ }
48
+ let dataQueryWithFilters = dataQuery;
49
+ const { filters } = query;
50
+ for (const fieldKey in filters) {
51
+ const mapping = filterFieldMapping[fieldKey];
52
+ if (!mapping) {
53
+ continue;
54
+ }
55
+ const fieldId = mapping.fieldId;
56
+ const filter = filters[fieldKey];
57
+ if (!filter) {
58
+ continue;
59
+ }
60
+ if (Array.isArray(filter)) {
61
+ const filterArray = filter;
62
+ if (fields[fieldId]?.type === 'BOOLEAN') {
63
+ if (filterArray.some((item) => item.id === BooleanFilters.checked)) {
64
+ dataQueryWithFilters = dataQueryWithFilters.eq(fieldId, true);
65
+ }
66
+ else {
67
+ const falseFilter = items.filter().eq(fieldId, false);
68
+ const undefinedFilter = items.filter().eq(fieldId, undefined);
69
+ dataQueryWithFilters = dataQueryWithFilters.and(falseFilter.or(undefinedFilter));
70
+ }
71
+ }
72
+ else if (fields[fieldId]?.type &&
73
+ HAS_VALUE_FILTER_TYPES.includes(fields[fieldId].type)) {
74
+ const wantsHasValue = filterArray.some((item) => item.id === HasValueFilters.hasValue);
75
+ const wantsNoValue = filterArray.some((item) => item.id === HasValueFilters.noValue);
76
+ // Apply only when exactly one option is selected.
77
+ if (wantsHasValue && !wantsNoValue) {
78
+ dataQueryWithFilters = dataQueryWithFilters.isNotEmpty(fieldId);
79
+ }
80
+ else if (wantsNoValue && !wantsHasValue) {
81
+ dataQueryWithFilters = dataQueryWithFilters.isEmpty(fieldId);
82
+ }
83
+ }
84
+ else {
85
+ dataQueryWithFilters = dataQueryWithFilters.hasSome(fieldId, filterArray.map((item) => item.id));
86
+ }
87
+ }
88
+ else if (typeof filter === 'object') {
89
+ const operatorFilter = filter;
90
+ if (operatorFilter.operator) {
91
+ const queryFieldId = getQueryFieldId(fieldId, fields[fieldId]?.type, operatorFilter.operator);
92
+ if (operatorFilter.operator === FilterOperator.NOT_CONTAINS) {
93
+ const containsFilter = items
94
+ .filter()
95
+ .contains(queryFieldId, operatorFilter.value);
96
+ dataQueryWithFilters = dataQueryWithFilters.not(containsFilter);
97
+ }
98
+ else {
99
+ const operator = getOperatorForFilter(operatorFilter.operator);
100
+ if (operator) {
101
+ if (operator === 'isEmpty' || operator === 'isNotEmpty') {
102
+ dataQueryWithFilters = dataQueryWithFilters[operator](fieldId);
103
+ }
104
+ else {
105
+ dataQueryWithFilters = dataQueryWithFilters[operator](queryFieldId, operatorFilter.value);
106
+ }
107
+ }
108
+ }
109
+ }
110
+ const filterObj = filter;
111
+ for (const filterProp in filterObj) {
112
+ const operator = getOperatorForFilter(filterProp);
113
+ if (operator &&
114
+ typeof dataQuery[operator] === 'function' &&
115
+ isSupportedOperator(fields, filterProp, fieldId)) {
116
+ const value = filterObj[filterProp];
117
+ if (value !== undefined && value !== null) {
118
+ dataQueryWithFilters = dataQueryWithFilters[operator](fieldId, value);
119
+ }
120
+ }
121
+ }
122
+ }
123
+ }
124
+ return dataQueryWithFilters;
125
+ }
126
+ //# sourceMappingURL=filterUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterUtils.js","sourceRoot":"","sources":["../../../src/adapter/filterUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { camelCase, snakeCase } from 'lodash';
2
+ const NON_ASCII_ALPHA_NUMERIC_UNDERSCORE_RE = /[^a-zA-Z_\d\s]/g;
3
+ const stripNonAsciiAlphaNumericUnderscore = (str) => str.replace(NON_ASCII_ALPHA_NUMERIC_UNDERSCORE_RE, '').trim();
4
+ /** Derives a unique CMS field key from a display name (dedupes against existing keys). */
5
+ export const getFieldKey = (existingFieldKeys, displayName) => {
6
+ const baseSuggestion = (displayName.includes('_') ? snakeCase : camelCase)(stripNonAsciiAlphaNumericUnderscore(displayName));
7
+ let suggestion = baseSuggestion;
8
+ for (let attempt = 1; existingFieldKeys.includes(suggestion); attempt++) {
9
+ suggestion = baseSuggestion + attempt;
10
+ }
11
+ return suggestion;
12
+ };
13
+ //# sourceMappingURL=getFieldKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFieldKey.js","sourceRoot":"","sources":["../../../src/adapter/getFieldKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAE9C,MAAM,qCAAqC,GAAG,iBAAiB,CAAC;AAEhE,MAAM,mCAAmC,GAAG,CAAC,GAAW,EAAE,EAAE,CAC1D,GAAG,CAAC,OAAO,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAEhE,0FAA0F;AAC1F,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,iBAA2B,EAC3B,WAAmB,EACX,EAAE;IACV,MAAM,cAAc,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CACxE,mCAAmC,CAAC,WAAW,CAAC,CACjD,CAAC;IAEF,IAAI,UAAU,GAAG,cAAc,CAAC;IAChC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE;QACvE,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC;KACvC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ export { createCmsSchemaLoader, fetchCmsCollection, } from './loadCmsSchema';
2
+ export { transformCmsSchema, } from './transformCmsSchema';
3
+ export { createCmsBackend } from './createCmsBackend';
4
+ export { createCmsFieldActions } from './createCmsFieldActions';
5
+ export { computeCmsPermissions, } from './cmsPermissions';
6
+ export { CmsFieldTypeToPatternsFieldType, PatternsFieldTypeToCmsFieldType, CMS_EMAIL_TYPE, } from './cmsFieldTypeMap';
7
+ export { addFiltersToDataQuery } from './filterUtils';
8
+ export { addSearchToDataQuery } from './searchUtils';
9
+ export { addSortToDataQuery } from './sortUtils';
10
+ export { getFieldKey } from './getFieldKey';
11
+ export { createCmsBackupConfig } from './cmsBackup';
12
+ export { pollUntilReady } from './pollUntilReady';
13
+ export { fetchExternalDbConnections } from './fetchExternalDbConnections';
14
+ export { fetchUserPermissions } from './fetchUserPermissions';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GAEnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,GAEnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,qBAAqB,GAGtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,+BAA+B,EAC/B,+BAA+B,EAC/B,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAoB,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { collections } from '@wix/data';
2
+ import { errorHandler } from '@wix/essentials';
3
+ import { transformCmsSchema } from './transformCmsSchema';
4
+ import { createCmsBackend } from './createCmsBackend';
5
+ import { createCmsFieldActions } from './createCmsFieldActions';
6
+ import { fetchExternalDbConnections } from './fetchExternalDbConnections';
7
+ import { fetchUserPermissions } from './fetchUserPermissions';
8
+ /**
9
+ * Fetches the raw `@wix/data` collection. `includeAllowedDataPermissions` asks the
10
+ * server to evaluate the calling user against the collection's data-permission rules
11
+ * (`allowedDataPermissions` on the response — read by cmsPermissions.ts). The option
12
+ * is forwarded at runtime but stripped from the public typings, hence the cast.
13
+ */
14
+ export async function fetchCmsCollection(collectionId) {
15
+ return errorHandler.withErrorHandler(async () => collections.getDataCollection(collectionId, {
16
+ includeAllowedDataPermissions: true,
17
+ }), {});
18
+ }
19
+ /**
20
+ * Creates the CMS `SchemaLoader`: fetches the collection, ABAC permissions and
21
+ * external-DB connections in parallel and returns them as `LoadedSchema`.
22
+ * Failed permission/connection fetches degrade to `[]`.
23
+ */
24
+ export function createCmsSchemaLoader(deps) {
25
+ const { httpClient, includeUserPermissions = false } = deps;
26
+ return async (collectionId) => {
27
+ const metasiteId = includeUserPermissions ? deps.metasiteId : undefined;
28
+ const [rawCollection, userPermissions, externalDbConnections] = await Promise.all([
29
+ fetchCmsCollection(collectionId),
30
+ deps.userPermissions !== undefined
31
+ ? Promise.resolve(deps.userPermissions)
32
+ : includeUserPermissions && metasiteId
33
+ ? fetchUserPermissions(metasiteId).catch(() => [])
34
+ : Promise.resolve([]),
35
+ deps.externalDbConnections !== undefined
36
+ ? Promise.resolve(deps.externalDbConnections)
37
+ : fetchExternalDbConnections(httpClient).catch(() => []),
38
+ ]);
39
+ const schema = transformCmsSchema(rawCollection, {
40
+ userPermissions,
41
+ externalDbConnections,
42
+ });
43
+ const backend = createCmsBackend(collectionId, schema.fields);
44
+ const fieldActions = createCmsFieldActions(collectionId, () => rawCollection);
45
+ return { schema, backend, fieldActions };
46
+ };
47
+ }
48
+ //# sourceMappingURL=loadCmsSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadCmsSchema.js","sourceRoot":"","sources":["../../../src/adapter/loadCmsSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAM/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAe9D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,YAAoB;IAEpB,OAAO,YAAY,CAAC,gBAAgB,CAClC,KAAK,IAAI,EAAE,CACT,WAAW,CAAC,iBAAiB,CAAC,YAAY,EAAE;QAC1C,6BAA6B,EAAE,IAAI;KACI,CAAC,EAC5C,EAAE,CACH,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAEnC,IAA+B;IAC/B,MAAM,EAAE,UAAU,EAAE,sBAAsB,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;IAE5D,OAAO,KAAK,EAAE,YAAoB,EAA4B,EAAE;QAC9D,MAAM,UAAU,GAAG,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAExE,MAAM,CAAC,aAAa,EAAE,eAAe,EAAE,qBAAqB,CAAC,GAC3D,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,kBAAkB,CAAC,YAAY,CAAC;YAChC,IAAI,CAAC,eAAe,KAAK,SAAS;gBAChC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;gBACvC,CAAC,CAAC,sBAAsB,IAAI,UAAU;oBACtC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAc,CAAC;oBAC9D,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAc,CAAC;YACnC,IAAI,CAAC,qBAAqB,KAAK,SAAS;gBACtC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC;gBAC7C,CAAC,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC,KAAK,CAC1C,GAAG,EAAE,CAAC,EAA4B,CACnC;SACN,CAAC,CAAC;QAEL,MAAM,MAAM,GAAG,kBAAkB,CAAC,aAAa,EAAE;YAC/C,eAAe;YACf,qBAAqB;SACtB,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,gBAAgB,CAAI,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,YAAY,GAAG,qBAAqB,CACxC,YAAY,EACZ,GAAG,EAAE,CAAC,aAAa,CACpB,CAAC;QAEF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IAC3C,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Polls `isDone` until it returns `true`, max attempts are exhausted, or the
3
+ * AbortSignal is aborted.
4
+ */
5
+ export async function pollUntilReady(isDone, options) {
6
+ const interval = options?.interval ?? 2000;
7
+ const maxAttempts = options?.maxAttempts ?? 120;
8
+ const signal = options?.signal;
9
+ for (let i = 0; i < maxAttempts; i++) {
10
+ signal?.throwIfAborted();
11
+ if (await isDone()) {
12
+ return;
13
+ }
14
+ await new Promise((resolve, reject) => {
15
+ const timer = setTimeout(resolve, interval);
16
+ signal?.addEventListener('abort', () => {
17
+ clearTimeout(timer);
18
+ reject(signal.reason);
19
+ }, { once: true });
20
+ });
21
+ }
22
+ throw new Error('Backup polling timed out');
23
+ }
24
+ //# sourceMappingURL=pollUntilReady.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pollUntilReady.js","sourceRoot":"","sources":["../../../src/adapter/pollUntilReady.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAA8B,EAC9B,OAAqB;IAErB,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC;IAC3C,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,GAAG,CAAC;IAChD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;QACpC,MAAM,EAAE,cAAc,EAAE,CAAC;QAEzB,IAAI,MAAM,MAAM,EAAE,EAAE;YAClB,OAAO;SACR;QAED,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAE5C,MAAM,EAAE,gBAAgB,CACtB,OAAO,EACP,GAAG,EAAE;gBACH,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;QACJ,CAAC,CAAC,CAAC;KACJ;IAED,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { items } from '@wix/data';
2
+ const TEXT_FIELD_TYPES = ['LONG_TEXT', 'SHORT_TEXT'];
3
+ /** Free-text search: OR of `contains` over `SHORT_TEXT`/`LONG_TEXT` fields in `searchableFieldIds`. */
4
+ export function addSearchToDataQuery({ dataQuery, query, fields, searchableFieldIds, }) {
5
+ const searchableFields = Object.keys(fields).filter((fieldId) => {
6
+ const field = fields[fieldId];
7
+ const isFieldSearchable = searchableFieldIds.includes(fieldId);
8
+ return isFieldSearchable && field && TEXT_FIELD_TYPES.includes(field.type);
9
+ });
10
+ if (query.search && searchableFields.length > 0) {
11
+ let searchFilter = null;
12
+ searchableFields.forEach((field) => {
13
+ const currentFilter = items.filter().contains(field, query.search);
14
+ searchFilter = searchFilter
15
+ ? searchFilter.or(currentFilter)
16
+ : currentFilter;
17
+ });
18
+ if (searchFilter) {
19
+ dataQuery = dataQuery.and(searchFilter);
20
+ }
21
+ }
22
+ return dataQuery;
23
+ }
24
+ //# sourceMappingURL=searchUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchUtils.js","sourceRoot":"","sources":["../../../src/adapter/searchUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAKlC,MAAM,gBAAgB,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AAErD,uGAAuG;AACvG,MAAM,UAAU,oBAAoB,CAAC,EACnC,SAAS,EACT,KAAK,EACL,MAAM,EACN,kBAAkB,GAMnB;IACC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE/D,OAAO,iBAAiB,IAAI,KAAK,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,IAAI,KAAK,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;QAC/C,IAAI,YAAY,GAA+B,IAAI,CAAC;QAEpD,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACjC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,MAAO,CAAC,CAAC;YACpE,YAAY,GAAG,YAAY;gBACzB,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,aAAa,CAAC;gBAChC,CAAC,CAAC,aAAa,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,IAAI,YAAY,EAAE;YAChB,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;SACzC;KACF;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,21 @@
1
+ /** Applies the query's sort to the WQL query — only `sortable` fields. */
2
+ export function addSortToDataQuery({ dataQuery, query, fields, }) {
3
+ let dataQueryWithSort = dataQuery;
4
+ const { sort } = query;
5
+ sort?.forEach((sortField) => {
6
+ const { fieldName, order } = sortField;
7
+ if (fieldName && order) {
8
+ const fieldDefinition = fields[fieldName];
9
+ if (fieldDefinition?.capabilities?.sortable) {
10
+ if (order === 'asc') {
11
+ dataQueryWithSort = dataQueryWithSort.ascending(fieldName);
12
+ }
13
+ else if (order === 'desc') {
14
+ dataQueryWithSort = dataQueryWithSort.descending(fieldName);
15
+ }
16
+ }
17
+ }
18
+ });
19
+ return dataQueryWithSort;
20
+ }
21
+ //# sourceMappingURL=sortUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortUtils.js","sourceRoot":"","sources":["../../../src/adapter/sortUtils.ts"],"names":[],"mappings":"AAKA,0EAA0E;AAC1E,MAAM,UAAU,kBAAkB,CAAC,EACjC,SAAS,EACT,KAAK,EACL,MAAM,GAKP;IACC,IAAI,iBAAiB,GAAG,SAAS,CAAC;IAClC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACvB,IAAI,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QAC1B,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;QACvC,IAAI,SAAS,IAAI,KAAK,EAAE;YACtB,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE;gBAC3C,IAAI,KAAK,KAAK,KAAK,EAAE;oBACnB,iBAAiB,GAAG,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;iBAC5D;qBAAM,IAAI,KAAK,KAAK,MAAM,EAAE;oBAC3B,iBAAiB,GAAG,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;iBAC7D;aACF;SACF;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,70 @@
1
+ import { CmsFieldTypeToPatternsFieldType } from './cmsFieldTypeMap';
2
+ import { computeCmsPermissions, } from './cmsPermissions';
3
+ /** Transforms a raw `@wix/data` `DataCollection` into the source-neutral `Schema`. */
4
+ export function transformCmsSchema(schema, options = {}) {
5
+ const { userPermissions = [], externalDbConnections = [] } = options;
6
+ const collectionId = schema._id;
7
+ const transformedFields = (schema.fields || []).reduce((acc, field) => {
8
+ if (!field.key) {
9
+ return acc;
10
+ }
11
+ const fieldType = field.type
12
+ ? CmsFieldTypeToPatternsFieldType[field.type] || 'UNKNOWN'
13
+ : 'UNKNOWN';
14
+ const baseField = {
15
+ id: field.key,
16
+ displayName: field.displayName || '',
17
+ isPrimary: field.key === schema.displayField,
18
+ isPii: field.encrypted ?? false,
19
+ helpText: field.description ?? undefined,
20
+ isSystem: field.systemField ?? false,
21
+ validation: {
22
+ numberRange: field.numberRange
23
+ ? {
24
+ min: field.numberRange.min ?? undefined,
25
+ max: field.numberRange.max ?? undefined,
26
+ }
27
+ : undefined,
28
+ stringLengthRange: field.stringLengthRange
29
+ ? {
30
+ minLength: field.stringLengthRange.minLength ?? undefined,
31
+ maxLength: field.stringLengthRange.maxLength ?? undefined,
32
+ }
33
+ : undefined,
34
+ required: field.required ?? false,
35
+ },
36
+ capabilities: {
37
+ supportedQueryOperators: field.capabilities?.queryOperators || [],
38
+ sortable: field.capabilities?.sortable || false,
39
+ },
40
+ };
41
+ const referencedCollectionId = field.typeMetadata?.reference?.referencedCollectionId ??
42
+ field.typeMetadata?.multiReference?.referencedCollectionId;
43
+ const isReference = fieldType === 'REFERENCE' || fieldType === 'MULTI_REFERENCE';
44
+ if (isReference && referencedCollectionId) {
45
+ acc[field.key] = {
46
+ ...baseField,
47
+ type: fieldType,
48
+ referenceMetadata: { referencedCollectionId },
49
+ };
50
+ }
51
+ else {
52
+ acc[field.key] = {
53
+ ...baseField,
54
+ // A reference field without a target collection degrades to UNKNOWN.
55
+ type: isReference ? 'UNKNOWN' : fieldType,
56
+ };
57
+ }
58
+ return acc;
59
+ }, {});
60
+ const { schemaPermissions, itemPermissions } = computeCmsPermissions(schema, userPermissions, externalDbConnections);
61
+ return {
62
+ id: collectionId,
63
+ fields: transformedFields,
64
+ displayField: schema.displayField ?? '_id',
65
+ idField: '_id',
66
+ schemaPermissions,
67
+ itemPermissions,
68
+ };
69
+ }
70
+ //# sourceMappingURL=transformCmsSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformCmsSchema.js","sourceRoot":"","sources":["../../../src/adapter/transformCmsSchema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './adapter';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cmsFieldActions.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cmsFieldActions.spec.d.ts","sourceRoot":"","sources":["../../../../src/adapter/__tests__/cmsFieldActions.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cmsPermissions.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cmsPermissions.spec.d.ts","sourceRoot":"","sources":["../../../../src/adapter/__tests__/cmsPermissions.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=createCmsBackend.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createCmsBackend.spec.d.ts","sourceRoot":"","sources":["../../../../src/adapter/__tests__/createCmsBackend.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=filterUtils.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterUtils.spec.d.ts","sourceRoot":"","sources":["../../../../src/adapter/__tests__/filterUtils.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=getFieldKey.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFieldKey.spec.d.ts","sourceRoot":"","sources":["../../../../src/adapter/__tests__/getFieldKey.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=loadCmsSchema.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadCmsSchema.spec.d.ts","sourceRoot":"","sources":["../../../../src/adapter/__tests__/loadCmsSchema.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=searchUtils.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchUtils.spec.d.ts","sourceRoot":"","sources":["../../../../src/adapter/__tests__/searchUtils.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sortUtils.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortUtils.spec.d.ts","sourceRoot":"","sources":["../../../../src/adapter/__tests__/sortUtils.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transformCmsSchema.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformCmsSchema.spec.d.ts","sourceRoot":"","sources":["../../../../src/adapter/__tests__/transformCmsSchema.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Test helper: a chainable recorder that stands in for `@wix/data`'s
3
+ * `items.query(...)` / `items.filter()` builders. Every WQL method returns the
4
+ * same chainable object and appends a `{ method, args }` record to `calls`, so a
5
+ * spec can assert exactly which WQL operators a util produced (and with what
6
+ * arguments) without depending on the real builder's private `filterTree` shape.
7
+ */
8
+ export interface QueryRecorder {
9
+ calls: {
10
+ method: string;
11
+ args: unknown[];
12
+ }[];
13
+ eq: (...args: unknown[]) => QueryRecorder;
14
+ ne: (...args: unknown[]) => QueryRecorder;
15
+ contains: (...args: unknown[]) => QueryRecorder;
16
+ hasSome: (...args: unknown[]) => QueryRecorder;
17
+ ge: (...args: unknown[]) => QueryRecorder;
18
+ le: (...args: unknown[]) => QueryRecorder;
19
+ gt: (...args: unknown[]) => QueryRecorder;
20
+ lt: (...args: unknown[]) => QueryRecorder;
21
+ isEmpty: (...args: unknown[]) => QueryRecorder;
22
+ isNotEmpty: (...args: unknown[]) => QueryRecorder;
23
+ ascending: (...args: unknown[]) => QueryRecorder;
24
+ descending: (...args: unknown[]) => QueryRecorder;
25
+ include: (...args: unknown[]) => QueryRecorder;
26
+ skip: (...args: unknown[]) => QueryRecorder;
27
+ limit: (...args: unknown[]) => QueryRecorder;
28
+ and: (...args: unknown[]) => QueryRecorder;
29
+ or: (...args: unknown[]) => QueryRecorder;
30
+ not: (...args: unknown[]) => QueryRecorder;
31
+ find: (...args: unknown[]) => unknown;
32
+ }
33
+ export declare const createQueryRecorder: () => QueryRecorder;
34
+ /** Returns the args of the first recorded call to `method`, or undefined. */
35
+ export declare const firstCallArgs: (recorder: QueryRecorder, method: string) => unknown[] | undefined;
36
+ /** Returns the recorded methods (in call order). */
37
+ export declare const calledMethods: (recorder: QueryRecorder) => string[];
38
+ /** Whether `method` was recorded at least once. */
39
+ export declare const wasCalled: (recorder: QueryRecorder, method: string) => boolean;
40
+ //# sourceMappingURL=wixDataQueryRecorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wixDataQueryRecorder.d.ts","sourceRoot":"","sources":["../../../../src/adapter/__tests__/wixDataQueryRecorder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,EAAE,CAAA;KAAE,EAAE,CAAC;IAC7C,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,aAAa,CAAC;IAC1C,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,aAAa,CAAC;IAC1C,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,aAAa,CAAC;IAChD,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,aAAa,CAAC;IAC/C,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,aAAa,CAAC;IAC1C,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,aAAa,CAAC;IAC1C,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,aAAa,CAAC;IAC1C,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,aAAa,CAAC;IAC1C,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,aAAa,CAAC;IAC/C,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,aAAa,CAAC;IAClD,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,aAAa,CAAC;IACjD,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,aAAa,CAAC;IAClD,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,aAAa,CAAC;IAC/C,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,aAAa,CAAC;IAC5C,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,aAAa,CAAC;IAC7C,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,aAAa,CAAC;IAC3C,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,aAAa,CAAC;IAC1C,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,aAAa,CAAC;IAC3C,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;CACvC;AAuBD,eAAO,MAAM,mBAAmB,QAAO,aAmBtC,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,aAAa,aACd,aAAa,UACf,MAAM,KACb,OAAO,EAAE,GAAG,SACwC,CAAC;AAExD,oDAAoD;AACpD,eAAO,MAAM,aAAa,aAAc,aAAa,KAAG,MAAM,EACzB,CAAC;AAEtC,mDAAmD;AACnD,eAAO,MAAM,SAAS,aAAc,aAAa,UAAU,MAAM,KAAG,OACnB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { BackupConfig } from '@wix/bex-core';
2
+ /**
3
+ * Builds the `BackupConfig` over `@wix/data` backups: `create`/`restore` return an id,
4
+ * `waitFor*` poll the list endpoint until a terminal status (`READY`/`COMPLETED`/`FAILED`).
5
+ */
6
+ export declare function createCmsBackupConfig(): BackupConfig;
7
+ //# sourceMappingURL=cmsBackup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cmsBackup.d.ts","sourceRoot":"","sources":["../../../src/adapter/cmsBackup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,YAAY,CA8CpD"}
@@ -0,0 +1,8 @@
1
+ import { collections } from '@wix/data';
2
+ import type { PatternsFieldType } from '@wix/bex-core';
3
+ export declare const CMS_EMAIL_TYPE: collections.Type;
4
+ /** Raw CMS field type → `PatternsFieldType`. Unlisted types resolve to `'UNKNOWN'`. */
5
+ export declare const CmsFieldTypeToPatternsFieldType: Partial<Record<collections.Type, PatternsFieldType>>;
6
+ /** Reverse map — only these are creatable via `addField`; others throw "not supported". */
7
+ export declare const PatternsFieldTypeToCmsFieldType: Partial<Record<PatternsFieldType, collections.Type>>;
8
+ //# sourceMappingURL=cmsFieldTypeMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cmsFieldTypeMap.d.ts","sourceRoot":"","sources":["../../../src/adapter/cmsFieldTypeMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvD,eAAO,MAAM,cAAc,kBAA8B,CAAC;AAE1D,uFAAuF;AACvF,eAAO,MAAM,+BAA+B,EAAE,OAAO,CACnD,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAyB5C,CAAC;AAEF,2FAA2F;AAC3F,eAAO,MAAM,+BAA+B,EAAE,OAAO,CACnD,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,IAAI,CAAC,CAM5C,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { collections } from '@wix/data';
2
+ import type { ItemPermissions, SchemaPermissions } from '@wix/bex-core';
3
+ /** An external-database connection; determines whether an EXTERNAL collection is editable. */
4
+ export interface ExternalDbConnection {
5
+ namespace: string;
6
+ capabilities?: {
7
+ collectionModificationsSupported?: boolean;
8
+ fieldTypes?: string[];
9
+ };
10
+ }
11
+ export interface CmsPermissions {
12
+ /** `undefined` when the schema's fields cannot be edited. */
13
+ schemaPermissions?: SchemaPermissions;
14
+ itemPermissions: ItemPermissions;
15
+ }
16
+ /**
17
+ * Computes the source-neutral permissions from the CMS collection and the
18
+ * user's ABAC permissions.
19
+ */
20
+ export declare const computeCmsPermissions: (schema: collections.DataCollection, userPermissions?: string[], externalDbConnections?: ExternalDbConnection[]) => CmsPermissions;
21
+ //# sourceMappingURL=cmsPermissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cmsPermissions.d.ts","sourceRoot":"","sources":["../../../src/adapter/cmsPermissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAoBxE,8FAA8F;AAC9F,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE;QACb,gCAAgC,CAAC,EAAE,OAAO,CAAC;QAC3C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;CACH;AAuGD,MAAM,WAAW,cAAc;IAC7B,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,eAAe,EAAE,eAAe,CAAC;CAClC;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,WACxB,YAAY,cAAc,oBACjB,MAAM,EAAE,0BACF,oBAAoB,EAAE,KAC5C,cAcF,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { QueryOperator } from '@wix/bex-core';
2
+ /** Range-filter property keys produced by the UI query layer. */
3
+ export type FilterProp = 'from' | 'to';
4
+ export declare const FilterPropToOperator: Record<FilterProp, QueryOperator>;
5
+ export declare const BooleanFilters: {
6
+ checked: string;
7
+ unchecked: string;
8
+ };
9
+ export declare const HasValueFilters: {
10
+ hasValue: string;
11
+ noValue: string;
12
+ };
13
+ export declare const HAS_VALUE_FILTER_TYPES: string[];
14
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/adapter/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,iEAAiE;AACjE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;AAEvC,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,UAAU,EAAE,aAAa,CAGlE,CAAC;AAEF,eAAO,MAAM,cAAc;;;CAG1B,CAAC;AAEF,eAAO,MAAM,eAAe;;;CAG3B,CAAC;AAEF,eAAO,MAAM,sBAAsB,UAWlC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { CollectionBackend, Schema } from '@wix/bex-core';
2
+ type SchemaFields = Schema['fields'];
3
+ /**
4
+ * Builds the `CollectionBackend` for a CMS collection over `@wix/data`. Reference
5
+ * fields are expanded via `.include(...)` on `get`/`find`.
6
+ */
7
+ export declare function createCmsBackend<T extends Record<string, unknown> = Record<string, unknown>>(collectionId: string, fields: SchemaFields): CollectionBackend<T>;
8
+ export {};
9
+ //# sourceMappingURL=createCmsBackend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createCmsBackend.d.ts","sourceRoot":"","sources":["../../../src/adapter/createCmsBackend.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,iBAAiB,EAIjB,MAAM,EACP,MAAM,eAAe,CAAC;AAMvB,KAAK,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAuCrC;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAiIlE"}
@@ -0,0 +1,8 @@
1
+ import { collections } from '@wix/data';
2
+ import type { FieldActions } from '@wix/bex-core';
3
+ /**
4
+ * Builds the `FieldActions` for a CMS collection over `@wix/data`. `getCollection`
5
+ * returns the current raw collection snapshot (for existing keys + source field types).
6
+ */
7
+ export declare function createCmsFieldActions(collectionId: string, getCollection: () => collections.DataCollection | null): FieldActions;
8
+ //# sourceMappingURL=createCmsFieldActions.d.ts.map