@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,210 @@
1
+ "use strict";
2
+
3
+ var _data = require("@wix/data");
4
+ var _transformCmsSchema = require("../transformCmsSchema");
5
+ /** Reads referenceMetadata off a (possibly non-reference) Field for assertions. */
6
+ const refMeta = field => field == null ? void 0 : field.referenceMetadata;
7
+ const COLLECTION_ID = 'collection-1';
8
+ const makeField = (overrides = {}) => ({
9
+ key: 'field',
10
+ type: _data.collections.Type.TEXT,
11
+ systemField: false,
12
+ encrypted: false,
13
+ plugins: [],
14
+ displayName: 'Field',
15
+ capabilities: {
16
+ queryOperators: [],
17
+ sortable: false
18
+ },
19
+ ...overrides
20
+ });
21
+ const makeCollection = (fields, overrides = {}) => ({
22
+ _id: COLLECTION_ID,
23
+ collectionType: 'NATIVE',
24
+ capabilities: {
25
+ dataOperations: ['SAVE', 'UPDATE', 'REMOVE']
26
+ },
27
+ permissions: {
28
+ read: 'ANYONE',
29
+ insert: 'SITE_MEMBER',
30
+ update: 'SITE_MEMBER',
31
+ remove: 'SITE_MEMBER'
32
+ },
33
+ plugins: [],
34
+ fields,
35
+ ...overrides
36
+ });
37
+ describe('transformCmsSchema', () => {
38
+ it('maps CMS fields to the source-neutral Schema and drops keyless fields', () => {
39
+ var _schema$fields$field, _schema$fields$field2, _schema$fields$field3, _schema$fields$field4, _schema$fields$field5, _schema$fields$field6, _schema$fields$field7, _schema$fields$field8;
40
+ const collection = makeCollection([makeField({
41
+ key: 'field1',
42
+ type: _data.collections.Type.TEXT,
43
+ displayName: 'Field 1',
44
+ capabilities: {
45
+ queryOperators: [_data.collections.QueryOperator.EQ],
46
+ sortable: true
47
+ }
48
+ }), makeField({
49
+ key: 'field2',
50
+ type: _data.collections.Type.NUMBER,
51
+ displayName: 'Field 2',
52
+ capabilities: {
53
+ queryOperators: [_data.collections.QueryOperator.GTE, _data.collections.QueryOperator.LTE],
54
+ sortable: true
55
+ }
56
+ }), makeField({
57
+ key: '',
58
+ type: _data.collections.Type.BOOLEAN,
59
+ displayName: 'Empty Key Field',
60
+ capabilities: {
61
+ queryOperators: [],
62
+ sortable: false
63
+ }
64
+ })]);
65
+ const schema = (0, _transformCmsSchema.transformCmsSchema)(collection);
66
+ expect(schema.fields).toBeDefined();
67
+ expect(Object.keys(schema.fields).length).toBe(2);
68
+ expect(schema.fields).toHaveProperty('field1');
69
+ expect(schema.fields).toHaveProperty('field2');
70
+ expect(schema.fields).not.toHaveProperty('');
71
+ expect((_schema$fields$field = schema.fields.field1) == null ? void 0 : _schema$fields$field.type).toBe('SHORT_TEXT');
72
+ expect((_schema$fields$field2 = schema.fields.field1) == null ? void 0 : _schema$fields$field2.displayName).toBe('Field 1');
73
+ expect((_schema$fields$field3 = schema.fields.field1) == null || (_schema$fields$field3 = _schema$fields$field3.capabilities) == null ? void 0 : _schema$fields$field3.sortable).toBe(true);
74
+ expect((_schema$fields$field4 = schema.fields.field1) == null || (_schema$fields$field4 = _schema$fields$field4.capabilities) == null ? void 0 : _schema$fields$field4.supportedQueryOperators).toEqual([_data.collections.QueryOperator.EQ]);
75
+ expect((_schema$fields$field5 = schema.fields.field2) == null ? void 0 : _schema$fields$field5.type).toBe('NUMBER');
76
+ expect((_schema$fields$field6 = schema.fields.field2) == null ? void 0 : _schema$fields$field6.displayName).toBe('Field 2');
77
+ expect((_schema$fields$field7 = schema.fields.field2) == null || (_schema$fields$field7 = _schema$fields$field7.capabilities) == null ? void 0 : _schema$fields$field7.sortable).toBe(true);
78
+ expect((_schema$fields$field8 = schema.fields.field2) == null || (_schema$fields$field8 = _schema$fields$field8.capabilities) == null ? void 0 : _schema$fields$field8.supportedQueryOperators).toEqual([_data.collections.QueryOperator.GTE, _data.collections.QueryOperator.LTE]);
79
+ });
80
+ it('sets id, idField and displayField from the collection', () => {
81
+ var _schema$fields$title, _schema$fields$other;
82
+ const schema = (0, _transformCmsSchema.transformCmsSchema)(makeCollection([makeField({
83
+ key: 'title'
84
+ }), makeField({
85
+ key: 'other'
86
+ })], {
87
+ displayField: 'title'
88
+ }));
89
+ expect(schema.id).toBe(COLLECTION_ID);
90
+ expect(schema.idField).toBe('_id');
91
+ expect(schema.displayField).toBe('title');
92
+ expect((_schema$fields$title = schema.fields.title) == null ? void 0 : _schema$fields$title.isPrimary).toBe(true);
93
+ expect((_schema$fields$other = schema.fields.other) == null ? void 0 : _schema$fields$other.isPrimary).toBe(false);
94
+ });
95
+ it('defaults displayField to "_id" when the collection has none', () => {
96
+ const schema = (0, _transformCmsSchema.transformCmsSchema)(makeCollection([makeField()]));
97
+ expect(schema.displayField).toBe('_id');
98
+ });
99
+ it('maps encrypted → isPii, description → helpText and systemField → isSystem', () => {
100
+ var _schema$fields$secret, _schema$fields$secret2, _schema$fields$secret3;
101
+ const schema = (0, _transformCmsSchema.transformCmsSchema)(makeCollection([makeField({
102
+ key: 'secret',
103
+ encrypted: true,
104
+ description: 'A hint',
105
+ systemField: true
106
+ })]));
107
+ expect((_schema$fields$secret = schema.fields.secret) == null ? void 0 : _schema$fields$secret.isPii).toBe(true);
108
+ expect((_schema$fields$secret2 = schema.fields.secret) == null ? void 0 : _schema$fields$secret2.helpText).toBe('A hint');
109
+ expect((_schema$fields$secret3 = schema.fields.secret) == null ? void 0 : _schema$fields$secret3.isSystem).toBe(true);
110
+ });
111
+ it('maps validation ranges and required', () => {
112
+ var _schema$fields$num, _schema$fields$num2, _schema$fields$text;
113
+ const schema = (0, _transformCmsSchema.transformCmsSchema)(makeCollection([makeField({
114
+ key: 'num',
115
+ type: _data.collections.Type.NUMBER,
116
+ required: true,
117
+ numberRange: {
118
+ min: 0,
119
+ max: 10
120
+ }
121
+ }), makeField({
122
+ key: 'text',
123
+ type: _data.collections.Type.TEXT,
124
+ stringLengthRange: {
125
+ minLength: 1,
126
+ maxLength: 5
127
+ }
128
+ })]));
129
+ expect((_schema$fields$num = schema.fields.num) == null || (_schema$fields$num = _schema$fields$num.validation) == null ? void 0 : _schema$fields$num.required).toBe(true);
130
+ expect((_schema$fields$num2 = schema.fields.num) == null || (_schema$fields$num2 = _schema$fields$num2.validation) == null ? void 0 : _schema$fields$num2.numberRange).toEqual({
131
+ min: 0,
132
+ max: 10
133
+ });
134
+ expect((_schema$fields$text = schema.fields.text) == null || (_schema$fields$text = _schema$fields$text.validation) == null ? void 0 : _schema$fields$text.stringLengthRange).toEqual({
135
+ minLength: 1,
136
+ maxLength: 5
137
+ });
138
+ });
139
+ it('resolves an unmapped CMS field type to UNKNOWN', () => {
140
+ var _schema$fields$weird;
141
+ const schema = (0, _transformCmsSchema.transformCmsSchema)(makeCollection([makeField({
142
+ key: 'weird',
143
+ type: 'SOME_FUTURE_TYPE'
144
+ })]));
145
+ expect((_schema$fields$weird = schema.fields.weird) == null ? void 0 : _schema$fields$weird.type).toBe('UNKNOWN');
146
+ });
147
+ it('attaches referenceMetadata for a REFERENCE field with a target collection', () => {
148
+ var _schema$fields$ref, _refMeta;
149
+ const schema = (0, _transformCmsSchema.transformCmsSchema)(makeCollection([makeField({
150
+ key: 'ref',
151
+ type: _data.collections.Type.REFERENCE,
152
+ typeMetadata: {
153
+ reference: {
154
+ referencedCollectionId: 'other-collection'
155
+ }
156
+ }
157
+ })]));
158
+ expect((_schema$fields$ref = schema.fields.ref) == null ? void 0 : _schema$fields$ref.type).toBe('REFERENCE');
159
+ expect((_refMeta = refMeta(schema.fields.ref)) == null ? void 0 : _refMeta.referencedCollectionId).toBe('other-collection');
160
+ });
161
+ it('attaches referenceMetadata for a MULTI_REFERENCE field with a target collection', () => {
162
+ var _schema$fields$multiR, _refMeta2;
163
+ const schema = (0, _transformCmsSchema.transformCmsSchema)(makeCollection([makeField({
164
+ key: 'multiRef',
165
+ type: _data.collections.Type.MULTI_REFERENCE,
166
+ typeMetadata: {
167
+ multiReference: {
168
+ referencedCollectionId: 'other-collection'
169
+ }
170
+ }
171
+ })]));
172
+ expect((_schema$fields$multiR = schema.fields.multiRef) == null ? void 0 : _schema$fields$multiR.type).toBe('MULTI_REFERENCE');
173
+ expect((_refMeta2 = refMeta(schema.fields.multiRef)) == null ? void 0 : _refMeta2.referencedCollectionId).toBe('other-collection');
174
+ });
175
+ it('degrades a reference field without a target collection to UNKNOWN', () => {
176
+ var _schema$fields$dangli;
177
+ const schema = (0, _transformCmsSchema.transformCmsSchema)(makeCollection([makeField({
178
+ key: 'danglingRef',
179
+ type: _data.collections.Type.REFERENCE
180
+ })]));
181
+ expect((_schema$fields$dangli = schema.fields.danglingRef) == null ? void 0 : _schema$fields$dangli.type).toBe('UNKNOWN');
182
+ expect(refMeta(schema.fields.danglingRef)).toBeUndefined();
183
+ });
184
+ it('projects permissions from the collection and user permissions', () => {
185
+ const schema = (0, _transformCmsSchema.transformCmsSchema)(makeCollection([makeField()]), {
186
+ userPermissions: ['WIX_DATA.CREATE_COLLECTION_FIELD', 'WIX_DATA.UPDATE_COLLECTION_FIELD', 'WIX_DATA.DELETE_COLLECTION_FIELD', 'WIX_DATA.INSERT', 'WIX_DATA.UPDATE', 'WIX_DATA.REMOVE']
187
+ });
188
+ expect(schema.schemaPermissions).toEqual({
189
+ createField: true,
190
+ updateField: true,
191
+ deleteField: true
192
+ });
193
+ expect(schema.itemPermissions).toEqual({
194
+ createItem: true,
195
+ updateItem: true,
196
+ deleteItem: true
197
+ });
198
+ });
199
+ it('leaves schemaPermissions undefined for a shared (non-editable) collection', () => {
200
+ const schema = (0, _transformCmsSchema.transformCmsSchema)(makeCollection([makeField()], {
201
+ plugins: [{
202
+ type: 'SHARED'
203
+ }]
204
+ }), {
205
+ userPermissions: ['WIX_DATA.CREATE_COLLECTION_FIELD', 'WIX_DATA.UPDATE_COLLECTION_FIELD', 'WIX_DATA.DELETE_COLLECTION_FIELD']
206
+ });
207
+ expect(schema.schemaPermissions).toBeUndefined();
208
+ });
209
+ });
210
+ //# sourceMappingURL=transformCmsSchema.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_data","require","_transformCmsSchema","refMeta","field","referenceMetadata","COLLECTION_ID","makeField","overrides","key","type","collections","Type","TEXT","systemField","encrypted","plugins","displayName","capabilities","queryOperators","sortable","makeCollection","fields","_id","collectionType","dataOperations","permissions","read","insert","update","remove","describe","it","_schema$fields$field","_schema$fields$field2","_schema$fields$field3","_schema$fields$field4","_schema$fields$field5","_schema$fields$field6","_schema$fields$field7","_schema$fields$field8","collection","QueryOperator","EQ","NUMBER","GTE","LTE","BOOLEAN","schema","transformCmsSchema","expect","toBeDefined","Object","keys","length","toBe","toHaveProperty","not","field1","supportedQueryOperators","toEqual","field2","_schema$fields$title","_schema$fields$other","displayField","id","idField","title","isPrimary","other","_schema$fields$secret","_schema$fields$secret2","_schema$fields$secret3","description","secret","isPii","helpText","isSystem","_schema$fields$num","_schema$fields$num2","_schema$fields$text","required","numberRange","min","max","stringLengthRange","minLength","maxLength","num","validation","text","_schema$fields$weird","weird","_schema$fields$ref","_refMeta","REFERENCE","typeMetadata","reference","referencedCollectionId","ref","_schema$fields$multiR","_refMeta2","MULTI_REFERENCE","multiReference","multiRef","_schema$fields$dangli","danglingRef","toBeUndefined","userPermissions","schemaPermissions","createField","updateField","deleteField","itemPermissions","createItem","updateItem","deleteItem"],"sources":["../../../../src/adapter/__tests__/transformCmsSchema.spec.ts"],"sourcesContent":["import { collections } from '@wix/data';\nimport type { Field } from '@wix/bex-core';\nimport { transformCmsSchema } from '../transformCmsSchema';\n\n/** Reads referenceMetadata off a (possibly non-reference) Field for assertions. */\nconst refMeta = (field: Field | undefined) =>\n (field as { referenceMetadata?: { referencedCollectionId: string } })\n ?.referenceMetadata;\n\nconst COLLECTION_ID = 'collection-1';\n\nconst makeField = (\n overrides: Partial<collections.Field> = {},\n): collections.Field => ({\n key: 'field',\n type: collections.Type.TEXT,\n systemField: false,\n encrypted: false,\n plugins: [],\n displayName: 'Field',\n capabilities: { queryOperators: [], sortable: false },\n ...overrides,\n});\n\nconst makeCollection = (\n fields: collections.Field[],\n overrides: Partial<collections.DataCollection> = {},\n): collections.DataCollection => ({\n _id: COLLECTION_ID,\n collectionType: 'NATIVE',\n capabilities: { dataOperations: ['SAVE', 'UPDATE', 'REMOVE'] },\n permissions: {\n read: 'ANYONE',\n insert: 'SITE_MEMBER',\n update: 'SITE_MEMBER',\n remove: 'SITE_MEMBER',\n },\n plugins: [],\n fields,\n ...overrides,\n});\n\ndescribe('transformCmsSchema', () => {\n it('maps CMS fields to the source-neutral Schema and drops keyless fields', () => {\n const collection = makeCollection([\n makeField({\n key: 'field1',\n type: collections.Type.TEXT,\n displayName: 'Field 1',\n capabilities: {\n queryOperators: [collections.QueryOperator.EQ],\n sortable: true,\n },\n }),\n makeField({\n key: 'field2',\n type: collections.Type.NUMBER,\n displayName: 'Field 2',\n capabilities: {\n queryOperators: [\n collections.QueryOperator.GTE,\n collections.QueryOperator.LTE,\n ],\n sortable: true,\n },\n }),\n makeField({\n key: '',\n type: collections.Type.BOOLEAN,\n displayName: 'Empty Key Field',\n capabilities: { queryOperators: [], sortable: false },\n }),\n ]);\n\n const schema = transformCmsSchema(collection);\n\n expect(schema.fields).toBeDefined();\n expect(Object.keys(schema.fields).length).toBe(2);\n expect(schema.fields).toHaveProperty('field1');\n expect(schema.fields).toHaveProperty('field2');\n expect(schema.fields).not.toHaveProperty('');\n\n expect(schema.fields.field1?.type).toBe('SHORT_TEXT');\n expect(schema.fields.field1?.displayName).toBe('Field 1');\n expect(schema.fields.field1?.capabilities?.sortable).toBe(true);\n expect(schema.fields.field1?.capabilities?.supportedQueryOperators).toEqual(\n [collections.QueryOperator.EQ],\n );\n\n expect(schema.fields.field2?.type).toBe('NUMBER');\n expect(schema.fields.field2?.displayName).toBe('Field 2');\n expect(schema.fields.field2?.capabilities?.sortable).toBe(true);\n expect(schema.fields.field2?.capabilities?.supportedQueryOperators).toEqual(\n [collections.QueryOperator.GTE, collections.QueryOperator.LTE],\n );\n });\n\n it('sets id, idField and displayField from the collection', () => {\n const schema = transformCmsSchema(\n makeCollection(\n [makeField({ key: 'title' }), makeField({ key: 'other' })],\n { displayField: 'title' },\n ),\n );\n\n expect(schema.id).toBe(COLLECTION_ID);\n expect(schema.idField).toBe('_id');\n expect(schema.displayField).toBe('title');\n expect(schema.fields.title?.isPrimary).toBe(true);\n expect(schema.fields.other?.isPrimary).toBe(false);\n });\n\n it('defaults displayField to \"_id\" when the collection has none', () => {\n const schema = transformCmsSchema(makeCollection([makeField()]));\n\n expect(schema.displayField).toBe('_id');\n });\n\n it('maps encrypted → isPii, description → helpText and systemField → isSystem', () => {\n const schema = transformCmsSchema(\n makeCollection([\n makeField({\n key: 'secret',\n encrypted: true,\n description: 'A hint',\n systemField: true,\n }),\n ]),\n );\n\n expect(schema.fields.secret?.isPii).toBe(true);\n expect(schema.fields.secret?.helpText).toBe('A hint');\n expect(schema.fields.secret?.isSystem).toBe(true);\n });\n\n it('maps validation ranges and required', () => {\n const schema = transformCmsSchema(\n makeCollection([\n makeField({\n key: 'num',\n type: collections.Type.NUMBER,\n required: true,\n numberRange: { min: 0, max: 10 },\n }),\n makeField({\n key: 'text',\n type: collections.Type.TEXT,\n stringLengthRange: { minLength: 1, maxLength: 5 },\n }),\n ]),\n );\n\n expect(schema.fields.num?.validation?.required).toBe(true);\n expect(schema.fields.num?.validation?.numberRange).toEqual({\n min: 0,\n max: 10,\n });\n expect(schema.fields.text?.validation?.stringLengthRange).toEqual({\n minLength: 1,\n maxLength: 5,\n });\n });\n\n it('resolves an unmapped CMS field type to UNKNOWN', () => {\n const schema = transformCmsSchema(\n makeCollection([\n makeField({\n key: 'weird',\n type: 'SOME_FUTURE_TYPE' as collections.Type,\n }),\n ]),\n );\n\n expect(schema.fields.weird?.type).toBe('UNKNOWN');\n });\n\n it('attaches referenceMetadata for a REFERENCE field with a target collection', () => {\n const schema = transformCmsSchema(\n makeCollection([\n makeField({\n key: 'ref',\n type: collections.Type.REFERENCE,\n typeMetadata: {\n reference: { referencedCollectionId: 'other-collection' },\n },\n }),\n ]),\n );\n\n expect(schema.fields.ref?.type).toBe('REFERENCE');\n expect(refMeta(schema.fields.ref)?.referencedCollectionId).toBe(\n 'other-collection',\n );\n });\n\n it('attaches referenceMetadata for a MULTI_REFERENCE field with a target collection', () => {\n const schema = transformCmsSchema(\n makeCollection([\n makeField({\n key: 'multiRef',\n type: collections.Type.MULTI_REFERENCE,\n typeMetadata: {\n multiReference: { referencedCollectionId: 'other-collection' },\n },\n }),\n ]),\n );\n\n expect(schema.fields.multiRef?.type).toBe('MULTI_REFERENCE');\n expect(refMeta(schema.fields.multiRef)?.referencedCollectionId).toBe(\n 'other-collection',\n );\n });\n\n it('degrades a reference field without a target collection to UNKNOWN', () => {\n const schema = transformCmsSchema(\n makeCollection([\n makeField({ key: 'danglingRef', type: collections.Type.REFERENCE }),\n ]),\n );\n\n expect(schema.fields.danglingRef?.type).toBe('UNKNOWN');\n expect(refMeta(schema.fields.danglingRef)).toBeUndefined();\n });\n\n it('projects permissions from the collection and user permissions', () => {\n const schema = transformCmsSchema(makeCollection([makeField()]), {\n userPermissions: [\n 'WIX_DATA.CREATE_COLLECTION_FIELD',\n 'WIX_DATA.UPDATE_COLLECTION_FIELD',\n 'WIX_DATA.DELETE_COLLECTION_FIELD',\n 'WIX_DATA.INSERT',\n 'WIX_DATA.UPDATE',\n 'WIX_DATA.REMOVE',\n ],\n });\n\n expect(schema.schemaPermissions).toEqual({\n createField: true,\n updateField: true,\n deleteField: true,\n });\n expect(schema.itemPermissions).toEqual({\n createItem: true,\n updateItem: true,\n deleteItem: true,\n });\n });\n\n it('leaves schemaPermissions undefined for a shared (non-editable) collection', () => {\n const schema = transformCmsSchema(\n makeCollection([makeField()], { plugins: [{ type: 'SHARED' }] }),\n {\n userPermissions: [\n 'WIX_DATA.CREATE_COLLECTION_FIELD',\n 'WIX_DATA.UPDATE_COLLECTION_FIELD',\n 'WIX_DATA.DELETE_COLLECTION_FIELD',\n ],\n },\n );\n\n expect(schema.schemaPermissions).toBeUndefined();\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.wasCalled = exports.firstCallArgs = exports.createQueryRecorder = exports.calledMethods = void 0;
5
+ /**
6
+ * Test helper: a chainable recorder that stands in for `@wix/data`'s
7
+ * `items.query(...)` / `items.filter()` builders. Every WQL method returns the
8
+ * same chainable object and appends a `{ method, args }` record to `calls`, so a
9
+ * spec can assert exactly which WQL operators a util produced (and with what
10
+ * arguments) without depending on the real builder's private `filterTree` shape.
11
+ */
12
+
13
+ const CHAINABLE_METHODS = ['eq', 'ne', 'contains', 'hasSome', 'ge', 'le', 'gt', 'lt', 'isEmpty', 'isNotEmpty', 'ascending', 'descending', 'include', 'skip', 'limit', 'and', 'or', 'not'];
14
+ const createQueryRecorder = () => {
15
+ const recorder = {
16
+ calls: []
17
+ };
18
+ CHAINABLE_METHODS.forEach(method => {
19
+ recorder[method] = (...args) => {
20
+ recorder.calls.push({
21
+ method,
22
+ args
23
+ });
24
+ return recorder;
25
+ };
26
+ });
27
+
28
+ // `find` is only used by the backend's `find`; util specs never call it.
29
+ recorder.find = (...args) => {
30
+ recorder.calls.push({
31
+ method: 'find',
32
+ args
33
+ });
34
+ return recorder;
35
+ };
36
+ return recorder;
37
+ };
38
+
39
+ /** Returns the args of the first recorded call to `method`, or undefined. */
40
+ exports.createQueryRecorder = createQueryRecorder;
41
+ const firstCallArgs = (recorder, method) => {
42
+ var _recorder$calls$find;
43
+ return (_recorder$calls$find = recorder.calls.find(c => c.method === method)) == null ? void 0 : _recorder$calls$find.args;
44
+ };
45
+
46
+ /** Returns the recorded methods (in call order). */
47
+ exports.firstCallArgs = firstCallArgs;
48
+ const calledMethods = recorder => recorder.calls.map(c => c.method);
49
+
50
+ /** Whether `method` was recorded at least once. */
51
+ exports.calledMethods = calledMethods;
52
+ const wasCalled = (recorder, method) => recorder.calls.some(c => c.method === method);
53
+ exports.wasCalled = wasCalled;
54
+ //# sourceMappingURL=wixDataQueryRecorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CHAINABLE_METHODS","createQueryRecorder","recorder","calls","forEach","method","args","push","find","exports","firstCallArgs","_recorder$calls$find","c","calledMethods","map","wasCalled","some"],"sources":["../../../../src/adapter/__tests__/wixDataQueryRecorder.ts"],"sourcesContent":["/**\n * Test helper: a chainable recorder that stands in for `@wix/data`'s\n * `items.query(...)` / `items.filter()` builders. Every WQL method returns the\n * same chainable object and appends a `{ method, args }` record to `calls`, so a\n * spec can assert exactly which WQL operators a util produced (and with what\n * arguments) without depending on the real builder's private `filterTree` shape.\n */\nexport interface QueryRecorder {\n calls: { method: string; args: unknown[] }[];\n eq: (...args: unknown[]) => QueryRecorder;\n ne: (...args: unknown[]) => QueryRecorder;\n contains: (...args: unknown[]) => QueryRecorder;\n hasSome: (...args: unknown[]) => QueryRecorder;\n ge: (...args: unknown[]) => QueryRecorder;\n le: (...args: unknown[]) => QueryRecorder;\n gt: (...args: unknown[]) => QueryRecorder;\n lt: (...args: unknown[]) => QueryRecorder;\n isEmpty: (...args: unknown[]) => QueryRecorder;\n isNotEmpty: (...args: unknown[]) => QueryRecorder;\n ascending: (...args: unknown[]) => QueryRecorder;\n descending: (...args: unknown[]) => QueryRecorder;\n include: (...args: unknown[]) => QueryRecorder;\n skip: (...args: unknown[]) => QueryRecorder;\n limit: (...args: unknown[]) => QueryRecorder;\n and: (...args: unknown[]) => QueryRecorder;\n or: (...args: unknown[]) => QueryRecorder;\n not: (...args: unknown[]) => QueryRecorder;\n find: (...args: unknown[]) => unknown;\n}\n\nconst CHAINABLE_METHODS = [\n 'eq',\n 'ne',\n 'contains',\n 'hasSome',\n 'ge',\n 'le',\n 'gt',\n 'lt',\n 'isEmpty',\n 'isNotEmpty',\n 'ascending',\n 'descending',\n 'include',\n 'skip',\n 'limit',\n 'and',\n 'or',\n 'not',\n] as const;\n\nexport const createQueryRecorder = (): QueryRecorder => {\n const recorder = { calls: [] } as unknown as QueryRecorder;\n\n CHAINABLE_METHODS.forEach((method) => {\n (recorder as unknown as Record<string, unknown>)[method] = (\n ...args: unknown[]\n ) => {\n recorder.calls.push({ method, args });\n return recorder;\n };\n });\n\n // `find` is only used by the backend's `find`; util specs never call it.\n recorder.find = (...args: unknown[]) => {\n recorder.calls.push({ method: 'find', args });\n return recorder;\n };\n\n return recorder;\n};\n\n/** Returns the args of the first recorded call to `method`, or undefined. */\nexport const firstCallArgs = (\n recorder: QueryRecorder,\n method: string,\n): unknown[] | undefined =>\n recorder.calls.find((c) => c.method === method)?.args;\n\n/** Returns the recorded methods (in call order). */\nexport const calledMethods = (recorder: QueryRecorder): string[] =>\n recorder.calls.map((c) => c.method);\n\n/** Whether `method` was recorded at least once. */\nexport const wasCalled = (recorder: QueryRecorder, method: string): boolean =>\n recorder.calls.some((c) => c.method === method);\n"],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAwBA,MAAMA,iBAAiB,GAAG,CACxB,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,SAAS,EACT,MAAM,EACN,OAAO,EACP,KAAK,EACL,IAAI,EACJ,KAAK,CACG;AAEH,MAAMC,mBAAmB,GAAGA,CAAA,KAAqB;EACtD,MAAMC,QAAQ,GAAG;IAAEC,KAAK,EAAE;EAAG,CAA6B;EAE1DH,iBAAiB,CAACI,OAAO,CAAEC,MAAM,IAAK;IACnCH,QAAQ,CAAwCG,MAAM,CAAC,GAAG,CACzD,GAAGC,IAAe,KACf;MACHJ,QAAQ,CAACC,KAAK,CAACI,IAAI,CAAC;QAAEF,MAAM;QAAEC;MAAK,CAAC,CAAC;MACrC,OAAOJ,QAAQ;IACjB,CAAC;EACH,CAAC,CAAC;;EAEF;EACAA,QAAQ,CAACM,IAAI,GAAG,CAAC,GAAGF,IAAe,KAAK;IACtCJ,QAAQ,CAACC,KAAK,CAACI,IAAI,CAAC;MAAEF,MAAM,EAAE,MAAM;MAAEC;IAAK,CAAC,CAAC;IAC7C,OAAOJ,QAAQ;EACjB,CAAC;EAED,OAAOA,QAAQ;AACjB,CAAC;;AAED;AAAAO,OAAA,CAAAR,mBAAA,GAAAA,mBAAA;AACO,MAAMS,aAAa,GAAGA,CAC3BR,QAAuB,EACvBG,MAAc;EAAA,IAAAM,oBAAA;EAAA,QAAAA,oBAAA,GAEdT,QAAQ,CAACC,KAAK,CAACK,IAAI,CAAEI,CAAC,IAAKA,CAAC,CAACP,MAAM,KAAKA,MAAM,CAAC,qBAA/CM,oBAAA,CAAiDL,IAAI;AAAA;;AAEvD;AAAAG,OAAA,CAAAC,aAAA,GAAAA,aAAA;AACO,MAAMG,aAAa,GAAIX,QAAuB,IACnDA,QAAQ,CAACC,KAAK,CAACW,GAAG,CAAEF,CAAC,IAAKA,CAAC,CAACP,MAAM,CAAC;;AAErC;AAAAI,OAAA,CAAAI,aAAA,GAAAA,aAAA;AACO,MAAME,SAAS,GAAGA,CAACb,QAAuB,EAAEG,MAAc,KAC/DH,QAAQ,CAACC,KAAK,CAACa,IAAI,CAAEJ,CAAC,IAAKA,CAAC,CAACP,MAAM,KAAKA,MAAM,CAAC;AAACI,OAAA,CAAAM,SAAA,GAAAA,SAAA","ignoreList":[]}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.createCmsBackupConfig = createCmsBackupConfig;
5
+ var _data = require("@wix/data");
6
+ var _essentials = require("@wix/essentials");
7
+ var _pollUntilReady = require("./pollUntilReady");
8
+ /**
9
+ * Builds the `BackupConfig` over `@wix/data` backups: `create`/`restore` return an id,
10
+ * `waitFor*` poll the list endpoint until a terminal status (`READY`/`COMPLETED`/`FAILED`).
11
+ */
12
+ function createCmsBackupConfig() {
13
+ return {
14
+ create: async () => {
15
+ var _response$backup;
16
+ const response = await _essentials.errorHandler.withErrorHandler(async () => _data.backups.createBackup(), {});
17
+ return {
18
+ backupId: response == null || (_response$backup = response.backup) == null ? void 0 : _response$backup._id
19
+ };
20
+ },
21
+ waitForCompletion: async (backupId, options) => {
22
+ await (0, _pollUntilReady.pollUntilReady)(async () => {
23
+ const {
24
+ backups: list
25
+ } = await _essentials.errorHandler.withErrorHandler(() => _data.backups.listBackups(), {});
26
+ const found = list == null ? void 0 : list.find(b => b._id === backupId);
27
+ return (found == null ? void 0 : found.status) === 'READY' || (found == null ? void 0 : found.status) === 'FAILED';
28
+ }, {
29
+ signal: options == null ? void 0 : options.signal
30
+ });
31
+ },
32
+ restore: async backupId => {
33
+ var _response$restoration;
34
+ const response = await _essentials.errorHandler.withErrorHandler(async () => _data.backups.restoreBackup(backupId), {});
35
+ return {
36
+ restorationId: response == null || (_response$restoration = response.restoration) == null ? void 0 : _response$restoration._id
37
+ };
38
+ },
39
+ waitForRestoration: async (restorationId, options) => {
40
+ await (0, _pollUntilReady.pollUntilReady)(async () => {
41
+ const {
42
+ restorations: list
43
+ } = await _essentials.errorHandler.withErrorHandler(() => _data.backups.listRestorations(), {});
44
+ const found = list == null ? void 0 : list.find(r => r._id === restorationId);
45
+ return (found == null ? void 0 : found.status) === 'COMPLETED' || (found == null ? void 0 : found.status) === 'FAILED';
46
+ }, {
47
+ signal: options == null ? void 0 : options.signal
48
+ });
49
+ }
50
+ };
51
+ }
52
+ //# sourceMappingURL=cmsBackup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_data","require","_essentials","_pollUntilReady","createCmsBackupConfig","create","_response$backup","response","errorHandler","withErrorHandler","backups","createBackup","backupId","backup","_id","waitForCompletion","options","pollUntilReady","list","listBackups","found","find","b","status","signal","restore","_response$restoration","restoreBackup","restorationId","restoration","waitForRestoration","restorations","listRestorations","r"],"sources":["../../../src/adapter/cmsBackup.ts"],"sourcesContent":["import { backups } from '@wix/data';\nimport { errorHandler } from '@wix/essentials';\nimport type { BackupConfig } from '@wix/bex-core';\nimport { pollUntilReady } from './pollUntilReady';\n\n/**\n * Builds the `BackupConfig` over `@wix/data` backups: `create`/`restore` return an id,\n * `waitFor*` poll the list endpoint until a terminal status (`READY`/`COMPLETED`/`FAILED`).\n */\nexport function createCmsBackupConfig(): BackupConfig {\n return {\n create: async () => {\n const response = await errorHandler.withErrorHandler(\n async () => backups.createBackup(),\n {},\n );\n return { backupId: response?.backup?._id! };\n },\n\n waitForCompletion: async (backupId, options) => {\n await pollUntilReady(\n async () => {\n const { backups: list } = await errorHandler.withErrorHandler(\n () => backups.listBackups(),\n {},\n );\n const found = list?.find((b) => b._id === backupId);\n return found?.status === 'READY' || found?.status === 'FAILED';\n },\n { signal: options?.signal },\n );\n },\n\n restore: async (backupId: string) => {\n const response = await errorHandler.withErrorHandler(\n async () => backups.restoreBackup(backupId),\n {},\n );\n return { restorationId: response?.restoration?._id! };\n },\n\n waitForRestoration: async (restorationId, options) => {\n await pollUntilReady(\n async () => {\n const { restorations: list } = await errorHandler.withErrorHandler(\n () => backups.listRestorations(),\n {},\n );\n const found = list?.find((r) => r._id === restorationId);\n return found?.status === 'COMPLETED' || found?.status === 'FAILED';\n },\n { signal: options?.signal },\n );\n },\n };\n}\n"],"mappings":";;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,eAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACO,SAASG,qBAAqBA,CAAA,EAAiB;EACpD,OAAO;IACLC,MAAM,EAAE,MAAAA,CAAA,KAAY;MAAA,IAAAC,gBAAA;MAClB,MAAMC,QAAQ,GAAG,MAAMC,wBAAY,CAACC,gBAAgB,CAClD,YAAYC,aAAO,CAACC,YAAY,CAAC,CAAC,EAClC,CAAC,CACH,CAAC;MACD,OAAO;QAAEC,QAAQ,EAAEL,QAAQ,aAAAD,gBAAA,GAARC,QAAQ,CAAEM,MAAM,qBAAhBP,gBAAA,CAAkBQ;MAAK,CAAC;IAC7C,CAAC;IAEDC,iBAAiB,EAAE,MAAAA,CAAOH,QAAQ,EAAEI,OAAO,KAAK;MAC9C,MAAM,IAAAC,8BAAc,EAClB,YAAY;QACV,MAAM;UAAEP,OAAO,EAAEQ;QAAK,CAAC,GAAG,MAAMV,wBAAY,CAACC,gBAAgB,CAC3D,MAAMC,aAAO,CAACS,WAAW,CAAC,CAAC,EAC3B,CAAC,CACH,CAAC;QACD,MAAMC,KAAK,GAAGF,IAAI,oBAAJA,IAAI,CAAEG,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACR,GAAG,KAAKF,QAAQ,CAAC;QACnD,OAAO,CAAAQ,KAAK,oBAALA,KAAK,CAAEG,MAAM,MAAK,OAAO,IAAI,CAAAH,KAAK,oBAALA,KAAK,CAAEG,MAAM,MAAK,QAAQ;MAChE,CAAC,EACD;QAAEC,MAAM,EAAER,OAAO,oBAAPA,OAAO,CAAEQ;MAAO,CAC5B,CAAC;IACH,CAAC;IAEDC,OAAO,EAAE,MAAOb,QAAgB,IAAK;MAAA,IAAAc,qBAAA;MACnC,MAAMnB,QAAQ,GAAG,MAAMC,wBAAY,CAACC,gBAAgB,CAClD,YAAYC,aAAO,CAACiB,aAAa,CAACf,QAAQ,CAAC,EAC3C,CAAC,CACH,CAAC;MACD,OAAO;QAAEgB,aAAa,EAAErB,QAAQ,aAAAmB,qBAAA,GAARnB,QAAQ,CAAEsB,WAAW,qBAArBH,qBAAA,CAAuBZ;MAAK,CAAC;IACvD,CAAC;IAEDgB,kBAAkB,EAAE,MAAAA,CAAOF,aAAa,EAAEZ,OAAO,KAAK;MACpD,MAAM,IAAAC,8BAAc,EAClB,YAAY;QACV,MAAM;UAAEc,YAAY,EAAEb;QAAK,CAAC,GAAG,MAAMV,wBAAY,CAACC,gBAAgB,CAChE,MAAMC,aAAO,CAACsB,gBAAgB,CAAC,CAAC,EAChC,CAAC,CACH,CAAC;QACD,MAAMZ,KAAK,GAAGF,IAAI,oBAAJA,IAAI,CAAEG,IAAI,CAAEY,CAAC,IAAKA,CAAC,CAACnB,GAAG,KAAKc,aAAa,CAAC;QACxD,OAAO,CAAAR,KAAK,oBAALA,KAAK,CAAEG,MAAM,MAAK,WAAW,IAAI,CAAAH,KAAK,oBAALA,KAAK,CAAEG,MAAM,MAAK,QAAQ;MACpE,CAAC,EACD;QAAEC,MAAM,EAAER,OAAO,oBAAPA,OAAO,CAAEQ;MAAO,CAC5B,CAAC;IACH;EACF,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.PatternsFieldTypeToCmsFieldType = exports.CmsFieldTypeToPatternsFieldType = exports.CMS_EMAIL_TYPE = void 0;
5
+ var _data = require("@wix/data");
6
+ // CMS returns 'EMAIL' but `collections.Type` doesn't expose it yet — cast as a workaround.
7
+ const CMS_EMAIL_TYPE = exports.CMS_EMAIL_TYPE = 'EMAIL';
8
+
9
+ /** Raw CMS field type → `PatternsFieldType`. Unlisted types resolve to `'UNKNOWN'`. */
10
+ const CmsFieldTypeToPatternsFieldType = exports.CmsFieldTypeToPatternsFieldType = {
11
+ [_data.collections.Type.TEXT]: 'SHORT_TEXT',
12
+ [_data.collections.Type.DATE]: 'DATE',
13
+ [_data.collections.Type.DATETIME]: 'DATETIME',
14
+ [_data.collections.Type.TIME]: 'TIME',
15
+ [_data.collections.Type.NUMBER]: 'NUMBER',
16
+ [_data.collections.Type.BOOLEAN]: 'BOOLEAN',
17
+ [_data.collections.Type.URL]: 'URL',
18
+ [_data.collections.Type.ADDRESS]: 'ADDRESS',
19
+ [_data.collections.Type.OBJECT]: 'OBJECT',
20
+ [_data.collections.Type.RICH_TEXT]: 'RICH_TEXT',
21
+ [_data.collections.Type.RICH_CONTENT]: 'RICH_CONTENT',
22
+ [_data.collections.Type.ARRAY]: 'ARRAY',
23
+ [_data.collections.Type.ARRAY_STRING]: 'ARRAY',
24
+ [_data.collections.Type.REFERENCE]: 'REFERENCE',
25
+ [_data.collections.Type.MULTI_REFERENCE]: 'MULTI_REFERENCE',
26
+ [_data.collections.Type.IMAGE]: 'IMAGE',
27
+ [_data.collections.Type.VIDEO]: 'VIDEO',
28
+ [_data.collections.Type.MEDIA_GALLERY]: 'MEDIA_GALLERY',
29
+ [_data.collections.Type.DOCUMENT]: 'DOCUMENT',
30
+ [_data.collections.Type.ARRAY_DOCUMENT]: 'MULTI_DOCUMENT',
31
+ [_data.collections.Type.AUDIO]: 'AUDIO',
32
+ [CMS_EMAIL_TYPE]: 'EMAIL',
33
+ [_data.collections.Type.LEGACY_COLOR]: 'COLOR'
34
+ };
35
+
36
+ /** Reverse map — only these are creatable via `addField`; others throw "not supported". */
37
+ const PatternsFieldTypeToCmsFieldType = exports.PatternsFieldTypeToCmsFieldType = {
38
+ SHORT_TEXT: _data.collections.Type.TEXT,
39
+ NUMBER: _data.collections.Type.NUMBER,
40
+ BOOLEAN: _data.collections.Type.BOOLEAN,
41
+ DATE: _data.collections.Type.DATE
42
+ };
43
+ //# sourceMappingURL=cmsFieldTypeMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_data","require","CMS_EMAIL_TYPE","exports","CmsFieldTypeToPatternsFieldType","collections","Type","TEXT","DATE","DATETIME","TIME","NUMBER","BOOLEAN","URL","ADDRESS","OBJECT","RICH_TEXT","RICH_CONTENT","ARRAY","ARRAY_STRING","REFERENCE","MULTI_REFERENCE","IMAGE","VIDEO","MEDIA_GALLERY","DOCUMENT","ARRAY_DOCUMENT","AUDIO","LEGACY_COLOR","PatternsFieldTypeToCmsFieldType","SHORT_TEXT"],"sources":["../../../src/adapter/cmsFieldTypeMap.ts"],"sourcesContent":["import { collections } from '@wix/data';\nimport type { PatternsFieldType } from '@wix/bex-core';\n\n// CMS returns 'EMAIL' but `collections.Type` doesn't expose it yet — cast as a workaround.\nexport const CMS_EMAIL_TYPE = 'EMAIL' as collections.Type;\n\n/** Raw CMS field type → `PatternsFieldType`. Unlisted types resolve to `'UNKNOWN'`. */\nexport const CmsFieldTypeToPatternsFieldType: Partial<\n Record<collections.Type, PatternsFieldType>\n> = {\n [collections.Type.TEXT]: 'SHORT_TEXT',\n [collections.Type.DATE]: 'DATE',\n [collections.Type.DATETIME]: 'DATETIME',\n [collections.Type.TIME]: 'TIME',\n [collections.Type.NUMBER]: 'NUMBER',\n [collections.Type.BOOLEAN]: 'BOOLEAN',\n [collections.Type.URL]: 'URL',\n [collections.Type.ADDRESS]: 'ADDRESS',\n [collections.Type.OBJECT]: 'OBJECT',\n [collections.Type.RICH_TEXT]: 'RICH_TEXT',\n [collections.Type.RICH_CONTENT]: 'RICH_CONTENT',\n [collections.Type.ARRAY]: 'ARRAY',\n [collections.Type.ARRAY_STRING]: 'ARRAY',\n [collections.Type.REFERENCE]: 'REFERENCE',\n [collections.Type.MULTI_REFERENCE]: 'MULTI_REFERENCE',\n [collections.Type.IMAGE]: 'IMAGE',\n [collections.Type.VIDEO]: 'VIDEO',\n [collections.Type.MEDIA_GALLERY]: 'MEDIA_GALLERY',\n [collections.Type.DOCUMENT]: 'DOCUMENT',\n [collections.Type.ARRAY_DOCUMENT]: 'MULTI_DOCUMENT',\n [collections.Type.AUDIO]: 'AUDIO',\n [CMS_EMAIL_TYPE]: 'EMAIL',\n [collections.Type.LEGACY_COLOR]: 'COLOR',\n};\n\n/** Reverse map — only these are creatable via `addField`; others throw \"not supported\". */\nexport const PatternsFieldTypeToCmsFieldType: Partial<\n Record<PatternsFieldType, collections.Type>\n> = {\n SHORT_TEXT: collections.Type.TEXT,\n NUMBER: collections.Type.NUMBER,\n BOOLEAN: collections.Type.BOOLEAN,\n DATE: collections.Type.DATE,\n};\n"],"mappings":";;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAGA;AACO,MAAMC,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAG,OAA2B;;AAEzD;AACO,MAAME,+BAEZ,GAAAD,OAAA,CAAAC,+BAAA,GAAG;EACF,CAACC,iBAAW,CAACC,IAAI,CAACC,IAAI,GAAG,YAAY;EACrC,CAACF,iBAAW,CAACC,IAAI,CAACE,IAAI,GAAG,MAAM;EAC/B,CAACH,iBAAW,CAACC,IAAI,CAACG,QAAQ,GAAG,UAAU;EACvC,CAACJ,iBAAW,CAACC,IAAI,CAACI,IAAI,GAAG,MAAM;EAC/B,CAACL,iBAAW,CAACC,IAAI,CAACK,MAAM,GAAG,QAAQ;EACnC,CAACN,iBAAW,CAACC,IAAI,CAACM,OAAO,GAAG,SAAS;EACrC,CAACP,iBAAW,CAACC,IAAI,CAACO,GAAG,GAAG,KAAK;EAC7B,CAACR,iBAAW,CAACC,IAAI,CAACQ,OAAO,GAAG,SAAS;EACrC,CAACT,iBAAW,CAACC,IAAI,CAACS,MAAM,GAAG,QAAQ;EACnC,CAACV,iBAAW,CAACC,IAAI,CAACU,SAAS,GAAG,WAAW;EACzC,CAACX,iBAAW,CAACC,IAAI,CAACW,YAAY,GAAG,cAAc;EAC/C,CAACZ,iBAAW,CAACC,IAAI,CAACY,KAAK,GAAG,OAAO;EACjC,CAACb,iBAAW,CAACC,IAAI,CAACa,YAAY,GAAG,OAAO;EACxC,CAACd,iBAAW,CAACC,IAAI,CAACc,SAAS,GAAG,WAAW;EACzC,CAACf,iBAAW,CAACC,IAAI,CAACe,eAAe,GAAG,iBAAiB;EACrD,CAAChB,iBAAW,CAACC,IAAI,CAACgB,KAAK,GAAG,OAAO;EACjC,CAACjB,iBAAW,CAACC,IAAI,CAACiB,KAAK,GAAG,OAAO;EACjC,CAAClB,iBAAW,CAACC,IAAI,CAACkB,aAAa,GAAG,eAAe;EACjD,CAACnB,iBAAW,CAACC,IAAI,CAACmB,QAAQ,GAAG,UAAU;EACvC,CAACpB,iBAAW,CAACC,IAAI,CAACoB,cAAc,GAAG,gBAAgB;EACnD,CAACrB,iBAAW,CAACC,IAAI,CAACqB,KAAK,GAAG,OAAO;EACjC,CAACzB,cAAc,GAAG,OAAO;EACzB,CAACG,iBAAW,CAACC,IAAI,CAACsB,YAAY,GAAG;AACnC,CAAC;;AAED;AACO,MAAMC,+BAEZ,GAAA1B,OAAA,CAAA0B,+BAAA,GAAG;EACFC,UAAU,EAAEzB,iBAAW,CAACC,IAAI,CAACC,IAAI;EACjCI,MAAM,EAAEN,iBAAW,CAACC,IAAI,CAACK,MAAM;EAC/BC,OAAO,EAAEP,iBAAW,CAACC,IAAI,CAACM,OAAO;EACjCJ,IAAI,EAAEH,iBAAW,CAACC,IAAI,CAACE;AACzB,CAAC","ignoreList":[]}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.computeCmsPermissions = void 0;
5
+ const WIX_FORMS = '14ce1214-b278-a7e4-1373-00cebd1bef7c';
6
+ const FORM_APP = '225dd912-7dea-4738-8688-4b8c6955ffc2';
7
+ const WIX_DATA = {
8
+ CREATE_FIELD: 'WIX_DATA.CREATE_COLLECTION_FIELD',
9
+ UPDATE_FIELD: 'WIX_DATA.UPDATE_COLLECTION_FIELD',
10
+ DELETE_FIELD: 'WIX_DATA.DELETE_COLLECTION_FIELD',
11
+ INSERT: 'WIX_DATA.INSERT',
12
+ UPDATE: 'WIX_DATA.UPDATE',
13
+ REMOVE: 'WIX_DATA.REMOVE'
14
+ };
15
+ const SCHEMA_FIELD_PERMISSIONS = [WIX_DATA.CREATE_FIELD, WIX_DATA.UPDATE_FIELD, WIX_DATA.DELETE_FIELD];
16
+
17
+ /** An external-database connection; determines whether an EXTERNAL collection is editable. */
18
+
19
+ // `allowedDataPermissions` is an internal-only field on the v2 `getDataCollection`
20
+ // response (stripped from the public `@wix/data` typings); cast to read it.
21
+
22
+ // EXTERNAL collection ids are `connectionName/dataCollectionId`; match the
23
+ // converter's lastIndexOf('/') split.
24
+ const externalNamespaceFromId = collectionId => {
25
+ if (!collectionId) {
26
+ return null;
27
+ }
28
+ const index = collectionId.lastIndexOf('/');
29
+ return index === -1 ? null : collectionId.substring(0, index);
30
+ };
31
+ const isCollectionShared = schema => {
32
+ var _schema$plugins;
33
+ return ((_schema$plugins = schema.plugins) == null ? void 0 : _schema$plugins.some(p => p.type === 'SHARED')) ?? false;
34
+ };
35
+ const isFormsCollection = schema => schema.ownerAppId === WIX_FORMS || schema.ownerAppId === FORM_APP;
36
+ const isWixAppReadOnly = schema => schema.collectionType === 'WIX_APP' && schema.ownerAppId !== 'SiteMembers' && !isFormsCollection(schema);
37
+ const isExternalEditable = (schema, externalDbConnections) => {
38
+ var _connection$capabilit, _connection$capabilit2;
39
+ const namespace = externalNamespaceFromId(schema._id);
40
+ const connection = namespace ? externalDbConnections.find(c => c.namespace === namespace) : undefined;
41
+ return !!(connection != null && (_connection$capabilit = connection.capabilities) != null && _connection$capabilit.collectionModificationsSupported) && (((_connection$capabilit2 = connection.capabilities.fieldTypes) == null ? void 0 : _connection$capabilit2.length) ?? 0) > 0;
42
+ };
43
+ const isSchemaEditable = (schema, externalDbConnections) => {
44
+ if (isCollectionShared(schema)) {
45
+ return false;
46
+ }
47
+ if (schema.collectionType === 'NATIVE') {
48
+ return true;
49
+ }
50
+ if (schema.collectionType === 'EXTERNAL') {
51
+ return isExternalEditable(schema, externalDbConnections);
52
+ }
53
+ return false;
54
+ };
55
+ const canEditSchemaFields = userPermissions => SCHEMA_FIELD_PERMISSIONS.every(p => userPermissions.includes(p));
56
+ const computeItemPermissions = (schema, userPermissions) => {
57
+ var _schema$capabilities;
58
+ if (isCollectionShared(schema) || isWixAppReadOnly(schema)) {
59
+ return {
60
+ createItem: false,
61
+ updateItem: false,
62
+ deleteItem: false
63
+ };
64
+ }
65
+ const ops = ((_schema$capabilities = schema.capabilities) == null ? void 0 : _schema$capabilities.dataOperations) ?? [];
66
+ const roles = schema.permissions;
67
+ const allowed = schema.allowedDataPermissions;
68
+ const hasAbacOrAnyone = (role, abacPermission) => role === 'ANYONE' || userPermissions.includes(abacPermission);
69
+ const notDataRestricted = key => (allowed == null ? void 0 : allowed[key]) !== false;
70
+ return {
71
+ // cms-web does NOT apply the ANYONE bypass for insert (raw ABAC check).
72
+ createItem: ops.includes('SAVE') && notDataRestricted('itemInsert') && userPermissions.includes(WIX_DATA.INSERT),
73
+ updateItem: ops.includes('UPDATE') && notDataRestricted('itemUpdate') && hasAbacOrAnyone(roles == null ? void 0 : roles.update, WIX_DATA.UPDATE),
74
+ deleteItem: ops.includes('REMOVE') && notDataRestricted('itemRemove') && hasAbacOrAnyone(roles == null ? void 0 : roles.remove, WIX_DATA.REMOVE)
75
+ };
76
+ };
77
+ /**
78
+ * Computes the source-neutral permissions from the CMS collection and the
79
+ * user's ABAC permissions.
80
+ */
81
+ const computeCmsPermissions = (schema, userPermissions = [], externalDbConnections = []) => {
82
+ const schemaEditable = isSchemaEditable(schema, externalDbConnections);
83
+ const canEditFields = schemaEditable && canEditSchemaFields(userPermissions);
84
+ return {
85
+ schemaPermissions: schemaEditable ? {
86
+ createField: canEditFields,
87
+ updateField: canEditFields,
88
+ deleteField: canEditFields
89
+ } : undefined,
90
+ itemPermissions: computeItemPermissions(schema, userPermissions)
91
+ };
92
+ };
93
+ exports.computeCmsPermissions = computeCmsPermissions;
94
+ //# sourceMappingURL=cmsPermissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["WIX_FORMS","FORM_APP","WIX_DATA","CREATE_FIELD","UPDATE_FIELD","DELETE_FIELD","INSERT","UPDATE","REMOVE","SCHEMA_FIELD_PERMISSIONS","externalNamespaceFromId","collectionId","index","lastIndexOf","substring","isCollectionShared","schema","_schema$plugins","plugins","some","p","type","isFormsCollection","ownerAppId","isWixAppReadOnly","collectionType","isExternalEditable","externalDbConnections","_connection$capabilit","_connection$capabilit2","namespace","_id","connection","find","c","undefined","capabilities","collectionModificationsSupported","fieldTypes","length","isSchemaEditable","canEditSchemaFields","userPermissions","every","includes","computeItemPermissions","_schema$capabilities","createItem","updateItem","deleteItem","ops","dataOperations","roles","permissions","allowed","allowedDataPermissions","hasAbacOrAnyone","role","abacPermission","notDataRestricted","key","update","remove","computeCmsPermissions","schemaEditable","canEditFields","schemaPermissions","createField","updateField","deleteField","itemPermissions","exports"],"sources":["../../../src/adapter/cmsPermissions.ts"],"sourcesContent":["import { collections } from '@wix/data';\nimport type { ItemPermissions, SchemaPermissions } from '@wix/bex-core';\n\nconst WIX_FORMS = '14ce1214-b278-a7e4-1373-00cebd1bef7c';\nconst FORM_APP = '225dd912-7dea-4738-8688-4b8c6955ffc2';\n\nconst WIX_DATA = {\n CREATE_FIELD: 'WIX_DATA.CREATE_COLLECTION_FIELD',\n UPDATE_FIELD: 'WIX_DATA.UPDATE_COLLECTION_FIELD',\n DELETE_FIELD: 'WIX_DATA.DELETE_COLLECTION_FIELD',\n INSERT: 'WIX_DATA.INSERT',\n UPDATE: 'WIX_DATA.UPDATE',\n REMOVE: 'WIX_DATA.REMOVE',\n};\n\nconst SCHEMA_FIELD_PERMISSIONS = [\n WIX_DATA.CREATE_FIELD,\n WIX_DATA.UPDATE_FIELD,\n WIX_DATA.DELETE_FIELD,\n];\n\n/** An external-database connection; determines whether an EXTERNAL collection is editable. */\nexport interface ExternalDbConnection {\n namespace: string;\n capabilities?: {\n collectionModificationsSupported?: boolean;\n fieldTypes?: string[];\n };\n}\n\n// `allowedDataPermissions` is an internal-only field on the v2 `getDataCollection`\n// response (stripped from the public `@wix/data` typings); cast to read it.\ninterface AllowedDataPermissions {\n itemInsert?: boolean;\n itemUpdate?: boolean;\n itemRemove?: boolean;\n}\ntype DataCollectionWithAllowed = collections.DataCollection & {\n allowedDataPermissions?: AllowedDataPermissions;\n};\n\n// EXTERNAL collection ids are `connectionName/dataCollectionId`; match the\n// converter's lastIndexOf('/') split.\nconst externalNamespaceFromId = (\n collectionId: string | undefined,\n): string | null => {\n if (!collectionId) {\n return null;\n }\n const index = collectionId.lastIndexOf('/');\n return index === -1 ? null : collectionId.substring(0, index);\n};\n\nconst isCollectionShared = (schema: collections.DataCollection): boolean =>\n schema.plugins?.some((p) => p.type === 'SHARED') ?? false;\n\nconst isFormsCollection = (schema: collections.DataCollection): boolean =>\n schema.ownerAppId === WIX_FORMS || schema.ownerAppId === FORM_APP;\n\nconst isWixAppReadOnly = (schema: collections.DataCollection): boolean =>\n schema.collectionType === 'WIX_APP' &&\n schema.ownerAppId !== 'SiteMembers' &&\n !isFormsCollection(schema);\n\nconst isExternalEditable = (\n schema: collections.DataCollection,\n externalDbConnections: ExternalDbConnection[],\n): boolean => {\n const namespace = externalNamespaceFromId(schema._id);\n const connection = namespace\n ? externalDbConnections.find((c) => c.namespace === namespace)\n : undefined;\n return (\n !!connection?.capabilities?.collectionModificationsSupported &&\n (connection.capabilities.fieldTypes?.length ?? 0) > 0\n );\n};\n\nconst isSchemaEditable = (\n schema: collections.DataCollection,\n externalDbConnections: ExternalDbConnection[],\n): boolean => {\n if (isCollectionShared(schema)) {\n return false;\n }\n if (schema.collectionType === 'NATIVE') {\n return true;\n }\n if (schema.collectionType === 'EXTERNAL') {\n return isExternalEditable(schema, externalDbConnections);\n }\n return false;\n};\n\nconst canEditSchemaFields = (userPermissions: string[]): boolean =>\n SCHEMA_FIELD_PERMISSIONS.every((p) => userPermissions.includes(p));\n\nconst computeItemPermissions = (\n schema: collections.DataCollection,\n userPermissions: string[],\n): ItemPermissions => {\n if (isCollectionShared(schema) || isWixAppReadOnly(schema)) {\n return { createItem: false, updateItem: false, deleteItem: false };\n }\n\n const ops = schema.capabilities?.dataOperations ?? [];\n const roles = schema.permissions;\n const allowed = (schema as DataCollectionWithAllowed).allowedDataPermissions;\n\n const hasAbacOrAnyone = (role: string | undefined, abacPermission: string) =>\n role === 'ANYONE' || userPermissions.includes(abacPermission);\n const notDataRestricted = (key: keyof AllowedDataPermissions) =>\n allowed?.[key] !== false;\n\n return {\n // cms-web does NOT apply the ANYONE bypass for insert (raw ABAC check).\n createItem:\n ops.includes('SAVE') &&\n notDataRestricted('itemInsert') &&\n userPermissions.includes(WIX_DATA.INSERT),\n updateItem:\n ops.includes('UPDATE') &&\n notDataRestricted('itemUpdate') &&\n hasAbacOrAnyone(roles?.update, WIX_DATA.UPDATE),\n deleteItem:\n ops.includes('REMOVE') &&\n notDataRestricted('itemRemove') &&\n hasAbacOrAnyone(roles?.remove, WIX_DATA.REMOVE),\n };\n};\n\nexport interface CmsPermissions {\n /** `undefined` when the schema's fields cannot be edited. */\n schemaPermissions?: SchemaPermissions;\n itemPermissions: ItemPermissions;\n}\n\n/**\n * Computes the source-neutral permissions from the CMS collection and the\n * user's ABAC permissions.\n */\nexport const computeCmsPermissions = (\n schema: collections.DataCollection,\n userPermissions: string[] = [],\n externalDbConnections: ExternalDbConnection[] = [],\n): CmsPermissions => {\n const schemaEditable = isSchemaEditable(schema, externalDbConnections);\n const canEditFields = schemaEditable && canEditSchemaFields(userPermissions);\n\n return {\n schemaPermissions: schemaEditable\n ? {\n createField: canEditFields,\n updateField: canEditFields,\n deleteField: canEditFields,\n }\n : undefined,\n itemPermissions: computeItemPermissions(schema, userPermissions),\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.HasValueFilters = exports.HAS_VALUE_FILTER_TYPES = exports.FilterPropToOperator = exports.BooleanFilters = void 0;
5
+ /** Range-filter property keys produced by the UI query layer. */
6
+
7
+ const FilterPropToOperator = exports.FilterPropToOperator = {
8
+ from: 'GTE',
9
+ to: 'LTE'
10
+ };
11
+ const BooleanFilters = exports.BooleanFilters = {
12
+ checked: 'checked',
13
+ unchecked: 'unchecked'
14
+ };
15
+ const HasValueFilters = exports.HasValueFilters = {
16
+ hasValue: 'hasValue',
17
+ noValue: 'noValue'
18
+ };
19
+ const HAS_VALUE_FILTER_TYPES = exports.HAS_VALUE_FILTER_TYPES = ['RICH_CONTENT', 'TIME', 'DOCUMENT', 'MULTI_DOCUMENT', 'AUDIO', 'IMAGE', 'OBJECT', 'ARRAY', 'MEDIA_GALLERY', 'COLOR'];
20
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FilterPropToOperator","exports","from","to","BooleanFilters","checked","unchecked","HasValueFilters","hasValue","noValue","HAS_VALUE_FILTER_TYPES"],"sources":["../../../src/adapter/constants.ts"],"sourcesContent":["import type { QueryOperator } from '@wix/bex-core';\n\n/** Range-filter property keys produced by the UI query layer. */\nexport type FilterProp = 'from' | 'to';\n\nexport const FilterPropToOperator: Record<FilterProp, QueryOperator> = {\n from: 'GTE',\n to: 'LTE',\n};\n\nexport const BooleanFilters = {\n checked: 'checked',\n unchecked: 'unchecked',\n};\n\nexport const HasValueFilters = {\n hasValue: 'hasValue',\n noValue: 'noValue',\n};\n\nexport const HAS_VALUE_FILTER_TYPES = [\n 'RICH_CONTENT',\n 'TIME',\n 'DOCUMENT',\n 'MULTI_DOCUMENT',\n 'AUDIO',\n 'IMAGE',\n 'OBJECT',\n 'ARRAY',\n 'MEDIA_GALLERY',\n 'COLOR',\n];\n"],"mappings":";;;;AAEA;;AAGO,MAAMA,oBAAuD,GAAAC,OAAA,CAAAD,oBAAA,GAAG;EACrEE,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE;AACN,CAAC;AAEM,MAAMC,cAAc,GAAAH,OAAA,CAAAG,cAAA,GAAG;EAC5BC,OAAO,EAAE,SAAS;EAClBC,SAAS,EAAE;AACb,CAAC;AAEM,MAAMC,eAAe,GAAAN,OAAA,CAAAM,eAAA,GAAG;EAC7BC,QAAQ,EAAE,UAAU;EACpBC,OAAO,EAAE;AACX,CAAC;AAEM,MAAMC,sBAAsB,GAAAT,OAAA,CAAAS,sBAAA,GAAG,CACpC,cAAc,EACd,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,OAAO,EACP,QAAQ,EACR,OAAO,EACP,eAAe,EACf,OAAO,CACR","ignoreList":[]}