@columnus/shared 0.1.47

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 (206) hide show
  1. package/LICENSE +21 -0
  2. package/dist/apiProfile.d.ts +1072 -0
  3. package/dist/apiProfile.js +4210 -0
  4. package/dist/apiProfile.js.map +1 -0
  5. package/dist/apiProfileSlug.d.ts +11 -0
  6. package/dist/apiProfileSlug.js +39 -0
  7. package/dist/apiProfileSlug.js.map +1 -0
  8. package/dist/apiToken.d.ts +6 -0
  9. package/dist/apiToken.js +35 -0
  10. package/dist/apiToken.js.map +1 -0
  11. package/dist/betterAuthSession.d.ts +8 -0
  12. package/dist/betterAuthSession.js +57 -0
  13. package/dist/betterAuthSession.js.map +1 -0
  14. package/dist/bffHost.d.ts +36 -0
  15. package/dist/bffHost.js +74 -0
  16. package/dist/bffHost.js.map +1 -0
  17. package/dist/bffProtocol.d.ts +1357 -0
  18. package/dist/bffProtocol.js +4362 -0
  19. package/dist/bffProtocol.js.map +1 -0
  20. package/dist/bffRedact.d.ts +30 -0
  21. package/dist/bffRedact.js +55 -0
  22. package/dist/bffRedact.js.map +1 -0
  23. package/dist/ciPreviewEnv.d.ts +49 -0
  24. package/dist/ciPreviewEnv.js +143 -0
  25. package/dist/ciPreviewEnv.js.map +1 -0
  26. package/dist/clipboardTransfer.d.ts +25 -0
  27. package/dist/clipboardTransfer.js +4862 -0
  28. package/dist/clipboardTransfer.js.map +1 -0
  29. package/dist/convexSiteUrl.d.ts +73 -0
  30. package/dist/convexSiteUrl.js +137 -0
  31. package/dist/convexSiteUrl.js.map +1 -0
  32. package/dist/csv.d.ts +54 -0
  33. package/dist/csv.js +5499 -0
  34. package/dist/csv.js.map +1 -0
  35. package/dist/dataTransfer.d.ts +21 -0
  36. package/dist/dataTransfer.js +74 -0
  37. package/dist/dataTransfer.js.map +1 -0
  38. package/dist/dateValues.d.ts +18 -0
  39. package/dist/dateValues.js +73 -0
  40. package/dist/dateValues.js.map +1 -0
  41. package/dist/deployOutput.d.ts +3 -0
  42. package/dist/deployOutput.js +23 -0
  43. package/dist/deployOutput.js.map +1 -0
  44. package/dist/displayLabel.d.ts +13 -0
  45. package/dist/displayLabel.js +4342 -0
  46. package/dist/displayLabel.js.map +1 -0
  47. package/dist/displayTemplateGenerator.d.ts +11 -0
  48. package/dist/displayTemplateGenerator.js +98 -0
  49. package/dist/displayTemplateGenerator.js.map +1 -0
  50. package/dist/displayTypes.d.ts +10 -0
  51. package/dist/displayTypes.js +3 -0
  52. package/dist/displayTypes.js.map +1 -0
  53. package/dist/dotenv.d.ts +8 -0
  54. package/dist/dotenv.js +61 -0
  55. package/dist/dotenv.js.map +1 -0
  56. package/dist/erdLayout.d.ts +27 -0
  57. package/dist/erdLayout.js +78 -0
  58. package/dist/erdLayout.js.map +1 -0
  59. package/dist/fieldTypeFormat.d.ts +5 -0
  60. package/dist/fieldTypeFormat.js +63 -0
  61. package/dist/fieldTypeFormat.js.map +1 -0
  62. package/dist/fieldTypeMeta.d.ts +50 -0
  63. package/dist/fieldTypeMeta.js +84 -0
  64. package/dist/fieldTypeMeta.js.map +1 -0
  65. package/dist/fieldValueEqual.d.ts +4 -0
  66. package/dist/fieldValueEqual.js +58 -0
  67. package/dist/fieldValueEqual.js.map +1 -0
  68. package/dist/importMatch.d.ts +80 -0
  69. package/dist/importMatch.js +5643 -0
  70. package/dist/importMatch.js.map +1 -0
  71. package/dist/index.d.ts +58 -0
  72. package/dist/index.js +10647 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/inferIdentifier.d.ts +18 -0
  75. package/dist/inferIdentifier.js +49 -0
  76. package/dist/inferIdentifier.js.map +1 -0
  77. package/dist/keyboard.d.ts +16 -0
  78. package/dist/keyboard.js +71 -0
  79. package/dist/keyboard.js.map +1 -0
  80. package/dist/manifestDeploy.d.ts +27 -0
  81. package/dist/manifestDeploy.js +16 -0
  82. package/dist/manifestDeploy.js.map +1 -0
  83. package/dist/manifestHash.d.ts +11 -0
  84. package/dist/manifestHash.js +35 -0
  85. package/dist/manifestHash.js.map +1 -0
  86. package/dist/previewDeployName.d.ts +26 -0
  87. package/dist/previewDeployName.js +77 -0
  88. package/dist/previewDeployName.js.map +1 -0
  89. package/dist/proposePolicy.d.ts +17 -0
  90. package/dist/proposePolicy.js +33 -0
  91. package/dist/proposePolicy.js.map +1 -0
  92. package/dist/queryBetween.d.ts +20 -0
  93. package/dist/queryBetween.js +28 -0
  94. package/dist/queryBetween.js.map +1 -0
  95. package/dist/queryExecution.d.ts +5 -0
  96. package/dist/queryExecution.js +58 -0
  97. package/dist/queryExecution.js.map +1 -0
  98. package/dist/queryFieldOps.d.ts +66 -0
  99. package/dist/queryFieldOps.js +138 -0
  100. package/dist/queryFieldOps.js.map +1 -0
  101. package/dist/queryMerge.d.ts +29 -0
  102. package/dist/queryMerge.js +4277 -0
  103. package/dist/queryMerge.js.map +1 -0
  104. package/dist/queryPlan.d.ts +97 -0
  105. package/dist/queryPlan.js +4564 -0
  106. package/dist/queryPlan.js.map +1 -0
  107. package/dist/queryStudio.d.ts +25 -0
  108. package/dist/queryStudio.js +4658 -0
  109. package/dist/queryStudio.js.map +1 -0
  110. package/dist/queryTypes.d.ts +402 -0
  111. package/dist/queryTypes.js +4239 -0
  112. package/dist/queryTypes.js.map +1 -0
  113. package/dist/queryValidators.d.ts +99 -0
  114. package/dist/queryValidators.js +76 -0
  115. package/dist/queryValidators.js.map +1 -0
  116. package/dist/readApiQuery.d.ts +10 -0
  117. package/dist/readApiQuery.js +24 -0
  118. package/dist/readApiQuery.js.map +1 -0
  119. package/dist/recordTableColumns.d.ts +21 -0
  120. package/dist/recordTableColumns.js +4469 -0
  121. package/dist/recordTableColumns.js.map +1 -0
  122. package/dist/refDisplayRequests.d.ts +17 -0
  123. package/dist/refDisplayRequests.js +4877 -0
  124. package/dist/refDisplayRequests.js.map +1 -0
  125. package/dist/refGraph.d.ts +23 -0
  126. package/dist/refGraph.js +102 -0
  127. package/dist/refGraph.js.map +1 -0
  128. package/dist/refsRecompute.d.ts +8 -0
  129. package/dist/refsRecompute.js +12 -0
  130. package/dist/refsRecompute.js.map +1 -0
  131. package/dist/richDoc.d.ts +67 -0
  132. package/dist/richDoc.js +4408 -0
  133. package/dist/richDoc.js.map +1 -0
  134. package/dist/schemaGenerator.d.ts +31 -0
  135. package/dist/schemaGenerator.js +198 -0
  136. package/dist/schemaGenerator.js.map +1 -0
  137. package/dist/schemaShrink.d.ts +74 -0
  138. package/dist/schemaShrink.js +132 -0
  139. package/dist/schemaShrink.js.map +1 -0
  140. package/dist/schemaShrinkValidators.d.ts +72 -0
  141. package/dist/schemaShrinkValidators.js +31 -0
  142. package/dist/schemaShrinkValidators.js.map +1 -0
  143. package/dist/schemaTypes.d.ts +454 -0
  144. package/dist/schemaTypes.js +4557 -0
  145. package/dist/schemaTypes.js.map +1 -0
  146. package/dist/share.d.ts +8 -0
  147. package/dist/share.js +4755 -0
  148. package/dist/share.js.map +1 -0
  149. package/dist/shareApiBridge.d.ts +18 -0
  150. package/dist/shareApiBridge.js +4283 -0
  151. package/dist/shareApiBridge.js.map +1 -0
  152. package/dist/shareGuestPolicy.d.ts +14 -0
  153. package/dist/shareGuestPolicy.js +90 -0
  154. package/dist/shareGuestPolicy.js.map +1 -0
  155. package/dist/shareProposal.d.ts +113 -0
  156. package/dist/shareProposal.js +4810 -0
  157. package/dist/shareProposal.js.map +1 -0
  158. package/dist/shareProposalDiff.d.ts +13 -0
  159. package/dist/shareProposalDiff.js +91 -0
  160. package/dist/shareProposalDiff.js.map +1 -0
  161. package/dist/shareScopes.d.ts +14 -0
  162. package/dist/shareScopes.js +223 -0
  163. package/dist/shareScopes.js.map +1 -0
  164. package/dist/shareTokenCrypto.d.ts +9 -0
  165. package/dist/shareTokenCrypto.js +87 -0
  166. package/dist/shareTokenCrypto.js.map +1 -0
  167. package/dist/shareTokens.d.ts +6 -0
  168. package/dist/shareTokens.js +26 -0
  169. package/dist/shareTokens.js.map +1 -0
  170. package/dist/shareTypes.d.ts +107 -0
  171. package/dist/shareTypes.js +3 -0
  172. package/dist/shareTypes.js.map +1 -0
  173. package/dist/shareValidators.d.ts +168 -0
  174. package/dist/shareValidators.js +124 -0
  175. package/dist/shareValidators.js.map +1 -0
  176. package/dist/shareWizard.d.ts +14 -0
  177. package/dist/shareWizard.js +200 -0
  178. package/dist/shareWizard.js.map +1 -0
  179. package/dist/spaceBundle.d.ts +67 -0
  180. package/dist/spaceBundle.js +4664 -0
  181. package/dist/spaceBundle.js.map +1 -0
  182. package/dist/storageFieldValues.d.ts +10 -0
  183. package/dist/storageFieldValues.js +4421 -0
  184. package/dist/storageFieldValues.js.map +1 -0
  185. package/dist/studioBoot.d.ts +49 -0
  186. package/dist/studioBoot.js +167 -0
  187. package/dist/studioBoot.js.map +1 -0
  188. package/dist/syncClampMembership.d.ts +22 -0
  189. package/dist/syncClampMembership.js +74 -0
  190. package/dist/syncClampMembership.js.map +1 -0
  191. package/dist/tenantHosts.d.ts +30 -0
  192. package/dist/tenantHosts.js +60 -0
  193. package/dist/tenantHosts.js.map +1 -0
  194. package/dist/tenantSecretsCrypto.d.ts +31 -0
  195. package/dist/tenantSecretsCrypto.js +145 -0
  196. package/dist/tenantSecretsCrypto.js.map +1 -0
  197. package/dist/useDebouncedCommit.d.ts +11 -0
  198. package/dist/useDebouncedCommit.js +34 -0
  199. package/dist/useDebouncedCommit.js.map +1 -0
  200. package/dist/useDebouncedValue.d.ts +1 -0
  201. package/dist/useDebouncedValue.js +15 -0
  202. package/dist/useDebouncedValue.js.map +1 -0
  203. package/dist/useModifierHeld.d.ts +2 -0
  204. package/dist/useModifierHeld.js +28 -0
  205. package/dist/useModifierHeld.js.map +1 -0
  206. package/package.json +36 -0
@@ -0,0 +1,1072 @@
1
+ import { z } from "zod";
2
+ export declare const apiTableAccessSchema: z.ZodObject<{
3
+ table: z.ZodString;
4
+ read: z.ZodBoolean;
5
+ /** Push to enabled webhook outputs. Missing/undefined = false (opt-in). */
6
+ sync: z.ZodOptional<z.ZodBoolean>;
7
+ /**
8
+ * Authenticated Studio/CMS editor write access for this table.
9
+ * Missing/undefined = false (opt-in). Independent of public API-token propose.
10
+ */
11
+ editorAccess: z.ZodOptional<z.ZodBoolean>;
12
+ propose: z.ZodOptional<z.ZodObject<{
13
+ ops: z.ZodObject<{
14
+ insert: z.ZodBoolean;
15
+ update: z.ZodBoolean;
16
+ delete: z.ZodBoolean;
17
+ }, "strip", z.ZodTypeAny, {
18
+ insert: boolean;
19
+ update: boolean;
20
+ delete: boolean;
21
+ }, {
22
+ insert: boolean;
23
+ update: boolean;
24
+ delete: boolean;
25
+ }>;
26
+ allowedFields: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
27
+ recordIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
28
+ }, "strip", z.ZodTypeAny, {
29
+ ops: {
30
+ insert: boolean;
31
+ update: boolean;
32
+ delete: boolean;
33
+ };
34
+ allowedFields?: string[] | undefined;
35
+ recordIds?: string[] | undefined;
36
+ }, {
37
+ ops: {
38
+ insert: boolean;
39
+ update: boolean;
40
+ delete: boolean;
41
+ };
42
+ allowedFields?: string[] | undefined;
43
+ recordIds?: string[] | undefined;
44
+ }>>;
45
+ autoAccept: z.ZodOptional<z.ZodBoolean>;
46
+ /**
47
+ * Opaque row clamp: AND-merged with caller Query on Read API / guest lists.
48
+ * Sync membership uses `rowQuery.predicates` only (order/search ignored; maxScanLimit ignored).
49
+ */
50
+ rowQuery: z.ZodOptional<z.ZodObject<{
51
+ predicates: z.ZodOptional<z.ZodArray<z.ZodType<{
52
+ field: string;
53
+ op: "eq" | "neq";
54
+ value: unknown;
55
+ } | {
56
+ field: string;
57
+ op: "in";
58
+ value: unknown[];
59
+ } | {
60
+ field: string;
61
+ op: "gte" | "lte" | "gt" | "lt";
62
+ value: unknown;
63
+ } | {
64
+ field: string;
65
+ op: "between";
66
+ value: import("./queryBetween.ts").BetweenValue;
67
+ } | {
68
+ field: string;
69
+ op: "containsAll";
70
+ value: unknown[];
71
+ }, z.ZodTypeDef, {
72
+ field: string;
73
+ op: "eq" | "neq";
74
+ value: unknown;
75
+ } | {
76
+ field: string;
77
+ op: "in";
78
+ value: unknown[];
79
+ } | {
80
+ field: string;
81
+ op: "gte" | "lte" | "gt" | "lt";
82
+ value: unknown;
83
+ } | {
84
+ field: string;
85
+ op: "between";
86
+ value: import("./queryBetween.ts").BetweenValue;
87
+ } | {
88
+ field: string;
89
+ op: "containsAll";
90
+ value: unknown[];
91
+ }>, "many">>;
92
+ order: z.ZodOptional<z.ZodObject<{
93
+ field: z.ZodString;
94
+ direction: z.ZodEnum<["asc", "desc"]>;
95
+ }, "strip", z.ZodTypeAny, {
96
+ field: string;
97
+ direction: "asc" | "desc";
98
+ }, {
99
+ field: string;
100
+ direction: "asc" | "desc";
101
+ }>>;
102
+ search: z.ZodOptional<z.ZodObject<{
103
+ index: z.ZodString;
104
+ query: z.ZodString;
105
+ }, "strip", z.ZodTypeAny, {
106
+ index: string;
107
+ query: string;
108
+ }, {
109
+ index: string;
110
+ query: string;
111
+ }>>;
112
+ }, "strip", z.ZodTypeAny, {
113
+ predicates?: ({
114
+ field: string;
115
+ op: "eq" | "neq";
116
+ value: unknown;
117
+ } | {
118
+ field: string;
119
+ op: "in";
120
+ value: unknown[];
121
+ } | {
122
+ field: string;
123
+ op: "gte" | "lte" | "gt" | "lt";
124
+ value: unknown;
125
+ } | {
126
+ field: string;
127
+ op: "between";
128
+ value: import("./queryBetween.ts").BetweenValue;
129
+ } | {
130
+ field: string;
131
+ op: "containsAll";
132
+ value: unknown[];
133
+ })[] | undefined;
134
+ order?: {
135
+ field: string;
136
+ direction: "asc" | "desc";
137
+ } | undefined;
138
+ search?: {
139
+ index: string;
140
+ query: string;
141
+ } | undefined;
142
+ }, {
143
+ predicates?: ({
144
+ field: string;
145
+ op: "eq" | "neq";
146
+ value: unknown;
147
+ } | {
148
+ field: string;
149
+ op: "in";
150
+ value: unknown[];
151
+ } | {
152
+ field: string;
153
+ op: "gte" | "lte" | "gt" | "lt";
154
+ value: unknown;
155
+ } | {
156
+ field: string;
157
+ op: "between";
158
+ value: import("./queryBetween.ts").BetweenValue;
159
+ } | {
160
+ field: string;
161
+ op: "containsAll";
162
+ value: unknown[];
163
+ })[] | undefined;
164
+ order?: {
165
+ field: string;
166
+ direction: "asc" | "desc";
167
+ } | undefined;
168
+ search?: {
169
+ index: string;
170
+ query: string;
171
+ } | undefined;
172
+ }>>;
173
+ /** Scan ceiling for Read/guest list plans; callers may only lower. Not applied to Sync/Resync. */
174
+ maxScanLimit: z.ZodOptional<z.ZodNumber>;
175
+ }, "strip", z.ZodTypeAny, {
176
+ table: string;
177
+ read: boolean;
178
+ sync?: boolean | undefined;
179
+ editorAccess?: boolean | undefined;
180
+ propose?: {
181
+ ops: {
182
+ insert: boolean;
183
+ update: boolean;
184
+ delete: boolean;
185
+ };
186
+ allowedFields?: string[] | undefined;
187
+ recordIds?: string[] | undefined;
188
+ } | undefined;
189
+ autoAccept?: boolean | undefined;
190
+ rowQuery?: {
191
+ predicates?: ({
192
+ field: string;
193
+ op: "eq" | "neq";
194
+ value: unknown;
195
+ } | {
196
+ field: string;
197
+ op: "in";
198
+ value: unknown[];
199
+ } | {
200
+ field: string;
201
+ op: "gte" | "lte" | "gt" | "lt";
202
+ value: unknown;
203
+ } | {
204
+ field: string;
205
+ op: "between";
206
+ value: import("./queryBetween.ts").BetweenValue;
207
+ } | {
208
+ field: string;
209
+ op: "containsAll";
210
+ value: unknown[];
211
+ })[] | undefined;
212
+ order?: {
213
+ field: string;
214
+ direction: "asc" | "desc";
215
+ } | undefined;
216
+ search?: {
217
+ index: string;
218
+ query: string;
219
+ } | undefined;
220
+ } | undefined;
221
+ maxScanLimit?: number | undefined;
222
+ }, {
223
+ table: string;
224
+ read: boolean;
225
+ sync?: boolean | undefined;
226
+ editorAccess?: boolean | undefined;
227
+ propose?: {
228
+ ops: {
229
+ insert: boolean;
230
+ update: boolean;
231
+ delete: boolean;
232
+ };
233
+ allowedFields?: string[] | undefined;
234
+ recordIds?: string[] | undefined;
235
+ } | undefined;
236
+ autoAccept?: boolean | undefined;
237
+ rowQuery?: {
238
+ predicates?: ({
239
+ field: string;
240
+ op: "eq" | "neq";
241
+ value: unknown;
242
+ } | {
243
+ field: string;
244
+ op: "in";
245
+ value: unknown[];
246
+ } | {
247
+ field: string;
248
+ op: "gte" | "lte" | "gt" | "lt";
249
+ value: unknown;
250
+ } | {
251
+ field: string;
252
+ op: "between";
253
+ value: import("./queryBetween.ts").BetweenValue;
254
+ } | {
255
+ field: string;
256
+ op: "containsAll";
257
+ value: unknown[];
258
+ })[] | undefined;
259
+ order?: {
260
+ field: string;
261
+ direction: "asc" | "desc";
262
+ } | undefined;
263
+ search?: {
264
+ index: string;
265
+ query: string;
266
+ } | undefined;
267
+ } | undefined;
268
+ maxScanLimit?: number | undefined;
269
+ }>;
270
+ export type ApiTableAccess = z.infer<typeof apiTableAccessSchema>;
271
+ export declare const apiProfileSnapshotSchema: z.ZodObject<{
272
+ id: z.ZodString;
273
+ name: z.ZodString;
274
+ slug: z.ZodString;
275
+ tables: z.ZodArray<z.ZodString, "many">;
276
+ tableAccess: z.ZodOptional<z.ZodArray<z.ZodObject<{
277
+ table: z.ZodString;
278
+ read: z.ZodBoolean;
279
+ /** Push to enabled webhook outputs. Missing/undefined = false (opt-in). */
280
+ sync: z.ZodOptional<z.ZodBoolean>;
281
+ /**
282
+ * Authenticated Studio/CMS editor write access for this table.
283
+ * Missing/undefined = false (opt-in). Independent of public API-token propose.
284
+ */
285
+ editorAccess: z.ZodOptional<z.ZodBoolean>;
286
+ propose: z.ZodOptional<z.ZodObject<{
287
+ ops: z.ZodObject<{
288
+ insert: z.ZodBoolean;
289
+ update: z.ZodBoolean;
290
+ delete: z.ZodBoolean;
291
+ }, "strip", z.ZodTypeAny, {
292
+ insert: boolean;
293
+ update: boolean;
294
+ delete: boolean;
295
+ }, {
296
+ insert: boolean;
297
+ update: boolean;
298
+ delete: boolean;
299
+ }>;
300
+ allowedFields: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
301
+ recordIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
302
+ }, "strip", z.ZodTypeAny, {
303
+ ops: {
304
+ insert: boolean;
305
+ update: boolean;
306
+ delete: boolean;
307
+ };
308
+ allowedFields?: string[] | undefined;
309
+ recordIds?: string[] | undefined;
310
+ }, {
311
+ ops: {
312
+ insert: boolean;
313
+ update: boolean;
314
+ delete: boolean;
315
+ };
316
+ allowedFields?: string[] | undefined;
317
+ recordIds?: string[] | undefined;
318
+ }>>;
319
+ autoAccept: z.ZodOptional<z.ZodBoolean>;
320
+ /**
321
+ * Opaque row clamp: AND-merged with caller Query on Read API / guest lists.
322
+ * Sync membership uses `rowQuery.predicates` only (order/search ignored; maxScanLimit ignored).
323
+ */
324
+ rowQuery: z.ZodOptional<z.ZodObject<{
325
+ predicates: z.ZodOptional<z.ZodArray<z.ZodType<{
326
+ field: string;
327
+ op: "eq" | "neq";
328
+ value: unknown;
329
+ } | {
330
+ field: string;
331
+ op: "in";
332
+ value: unknown[];
333
+ } | {
334
+ field: string;
335
+ op: "gte" | "lte" | "gt" | "lt";
336
+ value: unknown;
337
+ } | {
338
+ field: string;
339
+ op: "between";
340
+ value: import("./queryBetween.ts").BetweenValue;
341
+ } | {
342
+ field: string;
343
+ op: "containsAll";
344
+ value: unknown[];
345
+ }, z.ZodTypeDef, {
346
+ field: string;
347
+ op: "eq" | "neq";
348
+ value: unknown;
349
+ } | {
350
+ field: string;
351
+ op: "in";
352
+ value: unknown[];
353
+ } | {
354
+ field: string;
355
+ op: "gte" | "lte" | "gt" | "lt";
356
+ value: unknown;
357
+ } | {
358
+ field: string;
359
+ op: "between";
360
+ value: import("./queryBetween.ts").BetweenValue;
361
+ } | {
362
+ field: string;
363
+ op: "containsAll";
364
+ value: unknown[];
365
+ }>, "many">>;
366
+ order: z.ZodOptional<z.ZodObject<{
367
+ field: z.ZodString;
368
+ direction: z.ZodEnum<["asc", "desc"]>;
369
+ }, "strip", z.ZodTypeAny, {
370
+ field: string;
371
+ direction: "asc" | "desc";
372
+ }, {
373
+ field: string;
374
+ direction: "asc" | "desc";
375
+ }>>;
376
+ search: z.ZodOptional<z.ZodObject<{
377
+ index: z.ZodString;
378
+ query: z.ZodString;
379
+ }, "strip", z.ZodTypeAny, {
380
+ index: string;
381
+ query: string;
382
+ }, {
383
+ index: string;
384
+ query: string;
385
+ }>>;
386
+ }, "strip", z.ZodTypeAny, {
387
+ predicates?: ({
388
+ field: string;
389
+ op: "eq" | "neq";
390
+ value: unknown;
391
+ } | {
392
+ field: string;
393
+ op: "in";
394
+ value: unknown[];
395
+ } | {
396
+ field: string;
397
+ op: "gte" | "lte" | "gt" | "lt";
398
+ value: unknown;
399
+ } | {
400
+ field: string;
401
+ op: "between";
402
+ value: import("./queryBetween.ts").BetweenValue;
403
+ } | {
404
+ field: string;
405
+ op: "containsAll";
406
+ value: unknown[];
407
+ })[] | undefined;
408
+ order?: {
409
+ field: string;
410
+ direction: "asc" | "desc";
411
+ } | undefined;
412
+ search?: {
413
+ index: string;
414
+ query: string;
415
+ } | undefined;
416
+ }, {
417
+ predicates?: ({
418
+ field: string;
419
+ op: "eq" | "neq";
420
+ value: unknown;
421
+ } | {
422
+ field: string;
423
+ op: "in";
424
+ value: unknown[];
425
+ } | {
426
+ field: string;
427
+ op: "gte" | "lte" | "gt" | "lt";
428
+ value: unknown;
429
+ } | {
430
+ field: string;
431
+ op: "between";
432
+ value: import("./queryBetween.ts").BetweenValue;
433
+ } | {
434
+ field: string;
435
+ op: "containsAll";
436
+ value: unknown[];
437
+ })[] | undefined;
438
+ order?: {
439
+ field: string;
440
+ direction: "asc" | "desc";
441
+ } | undefined;
442
+ search?: {
443
+ index: string;
444
+ query: string;
445
+ } | undefined;
446
+ }>>;
447
+ /** Scan ceiling for Read/guest list plans; callers may only lower. Not applied to Sync/Resync. */
448
+ maxScanLimit: z.ZodOptional<z.ZodNumber>;
449
+ }, "strip", z.ZodTypeAny, {
450
+ table: string;
451
+ read: boolean;
452
+ sync?: boolean | undefined;
453
+ editorAccess?: boolean | undefined;
454
+ propose?: {
455
+ ops: {
456
+ insert: boolean;
457
+ update: boolean;
458
+ delete: boolean;
459
+ };
460
+ allowedFields?: string[] | undefined;
461
+ recordIds?: string[] | undefined;
462
+ } | undefined;
463
+ autoAccept?: boolean | undefined;
464
+ rowQuery?: {
465
+ predicates?: ({
466
+ field: string;
467
+ op: "eq" | "neq";
468
+ value: unknown;
469
+ } | {
470
+ field: string;
471
+ op: "in";
472
+ value: unknown[];
473
+ } | {
474
+ field: string;
475
+ op: "gte" | "lte" | "gt" | "lt";
476
+ value: unknown;
477
+ } | {
478
+ field: string;
479
+ op: "between";
480
+ value: import("./queryBetween.ts").BetweenValue;
481
+ } | {
482
+ field: string;
483
+ op: "containsAll";
484
+ value: unknown[];
485
+ })[] | undefined;
486
+ order?: {
487
+ field: string;
488
+ direction: "asc" | "desc";
489
+ } | undefined;
490
+ search?: {
491
+ index: string;
492
+ query: string;
493
+ } | undefined;
494
+ } | undefined;
495
+ maxScanLimit?: number | undefined;
496
+ }, {
497
+ table: string;
498
+ read: boolean;
499
+ sync?: boolean | undefined;
500
+ editorAccess?: boolean | undefined;
501
+ propose?: {
502
+ ops: {
503
+ insert: boolean;
504
+ update: boolean;
505
+ delete: boolean;
506
+ };
507
+ allowedFields?: string[] | undefined;
508
+ recordIds?: string[] | undefined;
509
+ } | undefined;
510
+ autoAccept?: boolean | undefined;
511
+ rowQuery?: {
512
+ predicates?: ({
513
+ field: string;
514
+ op: "eq" | "neq";
515
+ value: unknown;
516
+ } | {
517
+ field: string;
518
+ op: "in";
519
+ value: unknown[];
520
+ } | {
521
+ field: string;
522
+ op: "gte" | "lte" | "gt" | "lt";
523
+ value: unknown;
524
+ } | {
525
+ field: string;
526
+ op: "between";
527
+ value: import("./queryBetween.ts").BetweenValue;
528
+ } | {
529
+ field: string;
530
+ op: "containsAll";
531
+ value: unknown[];
532
+ })[] | undefined;
533
+ order?: {
534
+ field: string;
535
+ direction: "asc" | "desc";
536
+ } | undefined;
537
+ search?: {
538
+ index: string;
539
+ query: string;
540
+ } | undefined;
541
+ } | undefined;
542
+ maxScanLimit?: number | undefined;
543
+ }>, "many">>;
544
+ autoAcceptProposals: z.ZodOptional<z.ZodBoolean>;
545
+ apiVersion: z.ZodNumber;
546
+ updatedAt: z.ZodNumber;
547
+ }, "strip", z.ZodTypeAny, {
548
+ id: string;
549
+ name: string;
550
+ tables: string[];
551
+ slug: string;
552
+ apiVersion: number;
553
+ updatedAt: number;
554
+ tableAccess?: {
555
+ table: string;
556
+ read: boolean;
557
+ sync?: boolean | undefined;
558
+ editorAccess?: boolean | undefined;
559
+ propose?: {
560
+ ops: {
561
+ insert: boolean;
562
+ update: boolean;
563
+ delete: boolean;
564
+ };
565
+ allowedFields?: string[] | undefined;
566
+ recordIds?: string[] | undefined;
567
+ } | undefined;
568
+ autoAccept?: boolean | undefined;
569
+ rowQuery?: {
570
+ predicates?: ({
571
+ field: string;
572
+ op: "eq" | "neq";
573
+ value: unknown;
574
+ } | {
575
+ field: string;
576
+ op: "in";
577
+ value: unknown[];
578
+ } | {
579
+ field: string;
580
+ op: "gte" | "lte" | "gt" | "lt";
581
+ value: unknown;
582
+ } | {
583
+ field: string;
584
+ op: "between";
585
+ value: import("./queryBetween.ts").BetweenValue;
586
+ } | {
587
+ field: string;
588
+ op: "containsAll";
589
+ value: unknown[];
590
+ })[] | undefined;
591
+ order?: {
592
+ field: string;
593
+ direction: "asc" | "desc";
594
+ } | undefined;
595
+ search?: {
596
+ index: string;
597
+ query: string;
598
+ } | undefined;
599
+ } | undefined;
600
+ maxScanLimit?: number | undefined;
601
+ }[] | undefined;
602
+ autoAcceptProposals?: boolean | undefined;
603
+ }, {
604
+ id: string;
605
+ name: string;
606
+ tables: string[];
607
+ slug: string;
608
+ apiVersion: number;
609
+ updatedAt: number;
610
+ tableAccess?: {
611
+ table: string;
612
+ read: boolean;
613
+ sync?: boolean | undefined;
614
+ editorAccess?: boolean | undefined;
615
+ propose?: {
616
+ ops: {
617
+ insert: boolean;
618
+ update: boolean;
619
+ delete: boolean;
620
+ };
621
+ allowedFields?: string[] | undefined;
622
+ recordIds?: string[] | undefined;
623
+ } | undefined;
624
+ autoAccept?: boolean | undefined;
625
+ rowQuery?: {
626
+ predicates?: ({
627
+ field: string;
628
+ op: "eq" | "neq";
629
+ value: unknown;
630
+ } | {
631
+ field: string;
632
+ op: "in";
633
+ value: unknown[];
634
+ } | {
635
+ field: string;
636
+ op: "gte" | "lte" | "gt" | "lt";
637
+ value: unknown;
638
+ } | {
639
+ field: string;
640
+ op: "between";
641
+ value: import("./queryBetween.ts").BetweenValue;
642
+ } | {
643
+ field: string;
644
+ op: "containsAll";
645
+ value: unknown[];
646
+ })[] | undefined;
647
+ order?: {
648
+ field: string;
649
+ direction: "asc" | "desc";
650
+ } | undefined;
651
+ search?: {
652
+ index: string;
653
+ query: string;
654
+ } | undefined;
655
+ } | undefined;
656
+ maxScanLimit?: number | undefined;
657
+ }[] | undefined;
658
+ autoAcceptProposals?: boolean | undefined;
659
+ }>;
660
+ export type ApiProfileSnapshot = z.infer<typeof apiProfileSnapshotSchema>;
661
+ export declare const apiProfilesSchema: z.ZodArray<z.ZodObject<{
662
+ id: z.ZodString;
663
+ name: z.ZodString;
664
+ slug: z.ZodString;
665
+ tables: z.ZodArray<z.ZodString, "many">;
666
+ tableAccess: z.ZodOptional<z.ZodArray<z.ZodObject<{
667
+ table: z.ZodString;
668
+ read: z.ZodBoolean;
669
+ /** Push to enabled webhook outputs. Missing/undefined = false (opt-in). */
670
+ sync: z.ZodOptional<z.ZodBoolean>;
671
+ /**
672
+ * Authenticated Studio/CMS editor write access for this table.
673
+ * Missing/undefined = false (opt-in). Independent of public API-token propose.
674
+ */
675
+ editorAccess: z.ZodOptional<z.ZodBoolean>;
676
+ propose: z.ZodOptional<z.ZodObject<{
677
+ ops: z.ZodObject<{
678
+ insert: z.ZodBoolean;
679
+ update: z.ZodBoolean;
680
+ delete: z.ZodBoolean;
681
+ }, "strip", z.ZodTypeAny, {
682
+ insert: boolean;
683
+ update: boolean;
684
+ delete: boolean;
685
+ }, {
686
+ insert: boolean;
687
+ update: boolean;
688
+ delete: boolean;
689
+ }>;
690
+ allowedFields: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
691
+ recordIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
692
+ }, "strip", z.ZodTypeAny, {
693
+ ops: {
694
+ insert: boolean;
695
+ update: boolean;
696
+ delete: boolean;
697
+ };
698
+ allowedFields?: string[] | undefined;
699
+ recordIds?: string[] | undefined;
700
+ }, {
701
+ ops: {
702
+ insert: boolean;
703
+ update: boolean;
704
+ delete: boolean;
705
+ };
706
+ allowedFields?: string[] | undefined;
707
+ recordIds?: string[] | undefined;
708
+ }>>;
709
+ autoAccept: z.ZodOptional<z.ZodBoolean>;
710
+ /**
711
+ * Opaque row clamp: AND-merged with caller Query on Read API / guest lists.
712
+ * Sync membership uses `rowQuery.predicates` only (order/search ignored; maxScanLimit ignored).
713
+ */
714
+ rowQuery: z.ZodOptional<z.ZodObject<{
715
+ predicates: z.ZodOptional<z.ZodArray<z.ZodType<{
716
+ field: string;
717
+ op: "eq" | "neq";
718
+ value: unknown;
719
+ } | {
720
+ field: string;
721
+ op: "in";
722
+ value: unknown[];
723
+ } | {
724
+ field: string;
725
+ op: "gte" | "lte" | "gt" | "lt";
726
+ value: unknown;
727
+ } | {
728
+ field: string;
729
+ op: "between";
730
+ value: import("./queryBetween.ts").BetweenValue;
731
+ } | {
732
+ field: string;
733
+ op: "containsAll";
734
+ value: unknown[];
735
+ }, z.ZodTypeDef, {
736
+ field: string;
737
+ op: "eq" | "neq";
738
+ value: unknown;
739
+ } | {
740
+ field: string;
741
+ op: "in";
742
+ value: unknown[];
743
+ } | {
744
+ field: string;
745
+ op: "gte" | "lte" | "gt" | "lt";
746
+ value: unknown;
747
+ } | {
748
+ field: string;
749
+ op: "between";
750
+ value: import("./queryBetween.ts").BetweenValue;
751
+ } | {
752
+ field: string;
753
+ op: "containsAll";
754
+ value: unknown[];
755
+ }>, "many">>;
756
+ order: z.ZodOptional<z.ZodObject<{
757
+ field: z.ZodString;
758
+ direction: z.ZodEnum<["asc", "desc"]>;
759
+ }, "strip", z.ZodTypeAny, {
760
+ field: string;
761
+ direction: "asc" | "desc";
762
+ }, {
763
+ field: string;
764
+ direction: "asc" | "desc";
765
+ }>>;
766
+ search: z.ZodOptional<z.ZodObject<{
767
+ index: z.ZodString;
768
+ query: z.ZodString;
769
+ }, "strip", z.ZodTypeAny, {
770
+ index: string;
771
+ query: string;
772
+ }, {
773
+ index: string;
774
+ query: string;
775
+ }>>;
776
+ }, "strip", z.ZodTypeAny, {
777
+ predicates?: ({
778
+ field: string;
779
+ op: "eq" | "neq";
780
+ value: unknown;
781
+ } | {
782
+ field: string;
783
+ op: "in";
784
+ value: unknown[];
785
+ } | {
786
+ field: string;
787
+ op: "gte" | "lte" | "gt" | "lt";
788
+ value: unknown;
789
+ } | {
790
+ field: string;
791
+ op: "between";
792
+ value: import("./queryBetween.ts").BetweenValue;
793
+ } | {
794
+ field: string;
795
+ op: "containsAll";
796
+ value: unknown[];
797
+ })[] | undefined;
798
+ order?: {
799
+ field: string;
800
+ direction: "asc" | "desc";
801
+ } | undefined;
802
+ search?: {
803
+ index: string;
804
+ query: string;
805
+ } | undefined;
806
+ }, {
807
+ predicates?: ({
808
+ field: string;
809
+ op: "eq" | "neq";
810
+ value: unknown;
811
+ } | {
812
+ field: string;
813
+ op: "in";
814
+ value: unknown[];
815
+ } | {
816
+ field: string;
817
+ op: "gte" | "lte" | "gt" | "lt";
818
+ value: unknown;
819
+ } | {
820
+ field: string;
821
+ op: "between";
822
+ value: import("./queryBetween.ts").BetweenValue;
823
+ } | {
824
+ field: string;
825
+ op: "containsAll";
826
+ value: unknown[];
827
+ })[] | undefined;
828
+ order?: {
829
+ field: string;
830
+ direction: "asc" | "desc";
831
+ } | undefined;
832
+ search?: {
833
+ index: string;
834
+ query: string;
835
+ } | undefined;
836
+ }>>;
837
+ /** Scan ceiling for Read/guest list plans; callers may only lower. Not applied to Sync/Resync. */
838
+ maxScanLimit: z.ZodOptional<z.ZodNumber>;
839
+ }, "strip", z.ZodTypeAny, {
840
+ table: string;
841
+ read: boolean;
842
+ sync?: boolean | undefined;
843
+ editorAccess?: boolean | undefined;
844
+ propose?: {
845
+ ops: {
846
+ insert: boolean;
847
+ update: boolean;
848
+ delete: boolean;
849
+ };
850
+ allowedFields?: string[] | undefined;
851
+ recordIds?: string[] | undefined;
852
+ } | undefined;
853
+ autoAccept?: boolean | undefined;
854
+ rowQuery?: {
855
+ predicates?: ({
856
+ field: string;
857
+ op: "eq" | "neq";
858
+ value: unknown;
859
+ } | {
860
+ field: string;
861
+ op: "in";
862
+ value: unknown[];
863
+ } | {
864
+ field: string;
865
+ op: "gte" | "lte" | "gt" | "lt";
866
+ value: unknown;
867
+ } | {
868
+ field: string;
869
+ op: "between";
870
+ value: import("./queryBetween.ts").BetweenValue;
871
+ } | {
872
+ field: string;
873
+ op: "containsAll";
874
+ value: unknown[];
875
+ })[] | undefined;
876
+ order?: {
877
+ field: string;
878
+ direction: "asc" | "desc";
879
+ } | undefined;
880
+ search?: {
881
+ index: string;
882
+ query: string;
883
+ } | undefined;
884
+ } | undefined;
885
+ maxScanLimit?: number | undefined;
886
+ }, {
887
+ table: string;
888
+ read: boolean;
889
+ sync?: boolean | undefined;
890
+ editorAccess?: boolean | undefined;
891
+ propose?: {
892
+ ops: {
893
+ insert: boolean;
894
+ update: boolean;
895
+ delete: boolean;
896
+ };
897
+ allowedFields?: string[] | undefined;
898
+ recordIds?: string[] | undefined;
899
+ } | undefined;
900
+ autoAccept?: boolean | undefined;
901
+ rowQuery?: {
902
+ predicates?: ({
903
+ field: string;
904
+ op: "eq" | "neq";
905
+ value: unknown;
906
+ } | {
907
+ field: string;
908
+ op: "in";
909
+ value: unknown[];
910
+ } | {
911
+ field: string;
912
+ op: "gte" | "lte" | "gt" | "lt";
913
+ value: unknown;
914
+ } | {
915
+ field: string;
916
+ op: "between";
917
+ value: import("./queryBetween.ts").BetweenValue;
918
+ } | {
919
+ field: string;
920
+ op: "containsAll";
921
+ value: unknown[];
922
+ })[] | undefined;
923
+ order?: {
924
+ field: string;
925
+ direction: "asc" | "desc";
926
+ } | undefined;
927
+ search?: {
928
+ index: string;
929
+ query: string;
930
+ } | undefined;
931
+ } | undefined;
932
+ maxScanLimit?: number | undefined;
933
+ }>, "many">>;
934
+ autoAcceptProposals: z.ZodOptional<z.ZodBoolean>;
935
+ apiVersion: z.ZodNumber;
936
+ updatedAt: z.ZodNumber;
937
+ }, "strip", z.ZodTypeAny, {
938
+ id: string;
939
+ name: string;
940
+ tables: string[];
941
+ slug: string;
942
+ apiVersion: number;
943
+ updatedAt: number;
944
+ tableAccess?: {
945
+ table: string;
946
+ read: boolean;
947
+ sync?: boolean | undefined;
948
+ editorAccess?: boolean | undefined;
949
+ propose?: {
950
+ ops: {
951
+ insert: boolean;
952
+ update: boolean;
953
+ delete: boolean;
954
+ };
955
+ allowedFields?: string[] | undefined;
956
+ recordIds?: string[] | undefined;
957
+ } | undefined;
958
+ autoAccept?: boolean | undefined;
959
+ rowQuery?: {
960
+ predicates?: ({
961
+ field: string;
962
+ op: "eq" | "neq";
963
+ value: unknown;
964
+ } | {
965
+ field: string;
966
+ op: "in";
967
+ value: unknown[];
968
+ } | {
969
+ field: string;
970
+ op: "gte" | "lte" | "gt" | "lt";
971
+ value: unknown;
972
+ } | {
973
+ field: string;
974
+ op: "between";
975
+ value: import("./queryBetween.ts").BetweenValue;
976
+ } | {
977
+ field: string;
978
+ op: "containsAll";
979
+ value: unknown[];
980
+ })[] | undefined;
981
+ order?: {
982
+ field: string;
983
+ direction: "asc" | "desc";
984
+ } | undefined;
985
+ search?: {
986
+ index: string;
987
+ query: string;
988
+ } | undefined;
989
+ } | undefined;
990
+ maxScanLimit?: number | undefined;
991
+ }[] | undefined;
992
+ autoAcceptProposals?: boolean | undefined;
993
+ }, {
994
+ id: string;
995
+ name: string;
996
+ tables: string[];
997
+ slug: string;
998
+ apiVersion: number;
999
+ updatedAt: number;
1000
+ tableAccess?: {
1001
+ table: string;
1002
+ read: boolean;
1003
+ sync?: boolean | undefined;
1004
+ editorAccess?: boolean | undefined;
1005
+ propose?: {
1006
+ ops: {
1007
+ insert: boolean;
1008
+ update: boolean;
1009
+ delete: boolean;
1010
+ };
1011
+ allowedFields?: string[] | undefined;
1012
+ recordIds?: string[] | undefined;
1013
+ } | undefined;
1014
+ autoAccept?: boolean | undefined;
1015
+ rowQuery?: {
1016
+ predicates?: ({
1017
+ field: string;
1018
+ op: "eq" | "neq";
1019
+ value: unknown;
1020
+ } | {
1021
+ field: string;
1022
+ op: "in";
1023
+ value: unknown[];
1024
+ } | {
1025
+ field: string;
1026
+ op: "gte" | "lte" | "gt" | "lt";
1027
+ value: unknown;
1028
+ } | {
1029
+ field: string;
1030
+ op: "between";
1031
+ value: import("./queryBetween.ts").BetweenValue;
1032
+ } | {
1033
+ field: string;
1034
+ op: "containsAll";
1035
+ value: unknown[];
1036
+ })[] | undefined;
1037
+ order?: {
1038
+ field: string;
1039
+ direction: "asc" | "desc";
1040
+ } | undefined;
1041
+ search?: {
1042
+ index: string;
1043
+ query: string;
1044
+ } | undefined;
1045
+ } | undefined;
1046
+ maxScanLimit?: number | undefined;
1047
+ }[] | undefined;
1048
+ autoAcceptProposals?: boolean | undefined;
1049
+ }>, "many">;
1050
+ /** Authenticated editor write access. Missing/undefined = false (opt-in). */
1051
+ export declare function editorAccessEnabled(access: ApiTableAccess): boolean;
1052
+ /** The profile's access entry for `table`, if any. */
1053
+ export declare function findTableAccess(tableAccess: readonly ApiTableAccess[] | undefined, table: string): ApiTableAccess | undefined;
1054
+ /**
1055
+ * Fail if any patch table lacks current `editorAccess: true` on the profile.
1056
+ * Single source for the editor write gate: the component enforces it on write,
1057
+ * the host pre-checks it on propose, and the CMS mirrors it in the UI.
1058
+ */
1059
+ export declare function assertPatchesHaveEditorAccess(profile: Pick<ApiProfileSnapshot, "tableAccess">, patches: {
1060
+ table: string;
1061
+ }[]): void;
1062
+ /** Tables opted into push sync. Sync is deliberately opt-in, including legacy profiles. */
1063
+ export declare function syncEnabledTables(profile: Pick<ApiProfileSnapshot, "tableAccess">): string[];
1064
+ export type ResolvedApiToken = {
1065
+ tokenId: string;
1066
+ profileId: string;
1067
+ profileSlug: string;
1068
+ tables: string[];
1069
+ tableAccess?: ApiTableAccess[];
1070
+ autoAcceptProposals?: boolean;
1071
+ apiVersion: number;
1072
+ };