@cipherstash/stack 0.18.0 → 1.0.0-rc.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 (111) hide show
  1. package/CHANGELOG.md +704 -0
  2. package/README.md +97 -79
  3. package/dist/adapter-kit.cjs +923 -0
  4. package/dist/adapter-kit.cjs.map +1 -0
  5. package/dist/adapter-kit.d.cts +82 -0
  6. package/dist/adapter-kit.d.ts +82 -0
  7. package/dist/adapter-kit.js +47 -0
  8. package/dist/adapter-kit.js.map +1 -0
  9. package/dist/base-operation-AOAIvsSB.d.cts +32 -0
  10. package/dist/base-operation-FXEzUXIq.d.ts +32 -0
  11. package/dist/{chunk-VPOTNP4K.js → chunk-3B5ZX3IS.js} +3 -1
  12. package/dist/chunk-3B5ZX3IS.js.map +1 -0
  13. package/dist/chunk-7333ZC6L.js +48 -0
  14. package/dist/chunk-7333ZC6L.js.map +1 -0
  15. package/dist/{chunk-XWPGAHBZ.js → chunk-BNO32ZMV.js} +1 -1
  16. package/dist/chunk-BNO32ZMV.js.map +1 -0
  17. package/dist/chunk-CLM7E4I6.js +4439 -0
  18. package/dist/chunk-CLM7E4I6.js.map +1 -0
  19. package/dist/{chunk-LLCCNKDL.js → chunk-HQANMV7R.js} +3 -3
  20. package/dist/{chunk-LLCCNKDL.js.map → chunk-HQANMV7R.js.map} +1 -1
  21. package/dist/chunk-JSG2AMDI.js +17 -0
  22. package/dist/chunk-JSG2AMDI.js.map +1 -0
  23. package/dist/chunk-OFQ555AX.js +191 -0
  24. package/dist/chunk-OFQ555AX.js.map +1 -0
  25. package/dist/chunk-PZ5AY32C.js +10 -0
  26. package/dist/chunk-PZ5AY32C.js.map +1 -0
  27. package/dist/chunk-V2Q3NYIH.js +494 -0
  28. package/dist/chunk-V2Q3NYIH.js.map +1 -0
  29. package/dist/chunk-X3JRXEIB.js +98 -0
  30. package/dist/chunk-X3JRXEIB.js.map +1 -0
  31. package/dist/{chunk-ZYOZHZMJ.js → chunk-ZTP5QJ27.js} +193 -169
  32. package/dist/chunk-ZTP5QJ27.js.map +1 -0
  33. package/dist/client.cjs +4124 -49
  34. package/dist/client.cjs.map +1 -1
  35. package/dist/client.d.cts +6 -5
  36. package/dist/client.d.ts +6 -5
  37. package/dist/client.js +3 -1
  38. package/dist/columns-D2_YzrCX.d.cts +622 -0
  39. package/dist/columns-rZc7fQHI.d.ts +622 -0
  40. package/dist/dynamodb/index.cjs +19 -12
  41. package/dist/dynamodb/index.cjs.map +1 -1
  42. package/dist/dynamodb/index.d.cts +3 -2
  43. package/dist/dynamodb/index.d.ts +3 -2
  44. package/dist/dynamodb/index.js +8 -10
  45. package/dist/dynamodb/index.js.map +1 -1
  46. package/dist/encryption/index.cjs +4496 -222
  47. package/dist/encryption/index.cjs.map +1 -1
  48. package/dist/encryption/index.d.cts +807 -6
  49. package/dist/encryption/index.d.ts +807 -6
  50. package/dist/encryption/index.js +15 -7
  51. package/dist/encryption/v3.cjs +7896 -0
  52. package/dist/encryption/v3.cjs.map +1 -0
  53. package/dist/encryption/v3.d.cts +103 -0
  54. package/dist/encryption/v3.d.ts +103 -0
  55. package/dist/encryption/v3.js +189 -0
  56. package/dist/encryption/v3.js.map +1 -0
  57. package/dist/eql/v3/index.cjs +663 -0
  58. package/dist/eql/v3/index.cjs.map +1 -0
  59. package/dist/eql/v3/index.d.cts +173 -0
  60. package/dist/eql/v3/index.d.ts +173 -0
  61. package/dist/eql/v3/index.js +99 -0
  62. package/dist/eql/v3/index.js.map +1 -0
  63. package/dist/errors/index.js +1 -0
  64. package/dist/identity/index.cjs +55 -35
  65. package/dist/identity/index.cjs.map +1 -1
  66. package/dist/identity/index.d.cts +54 -30
  67. package/dist/identity/index.d.ts +54 -30
  68. package/dist/identity/index.js +9 -177
  69. package/dist/identity/index.js.map +1 -1
  70. package/dist/index-BquA71_Y.d.ts +24 -0
  71. package/dist/index-fhWTOV0K.d.cts +24 -0
  72. package/dist/index.cjs +4547 -243
  73. package/dist/index.cjs.map +1 -1
  74. package/dist/index.d.cts +18 -19
  75. package/dist/index.d.ts +18 -19
  76. package/dist/index.js +20 -5
  77. package/dist/index.js.map +1 -1
  78. package/dist/schema/index.cjs +4128 -49
  79. package/dist/schema/index.cjs.map +1 -1
  80. package/dist/schema/index.d.cts +1 -1
  81. package/dist/schema/index.d.ts +1 -1
  82. package/dist/schema/index.js +3 -1
  83. package/dist/{types-public-BTxqjmtv.d.cts → types-public-QMjYNfQO.d.cts} +448 -251
  84. package/dist/{types-public-BTxqjmtv.d.ts → types-public-QMjYNfQO.d.ts} +448 -251
  85. package/dist/types-public.cjs.map +1 -1
  86. package/dist/types-public.d.cts +2 -2
  87. package/dist/types-public.d.ts +2 -2
  88. package/dist/types-public.js +2 -1
  89. package/dist/wasm-inline.d.ts +1643 -0
  90. package/dist/wasm-inline.js +4901 -0
  91. package/dist/wasm-inline.js.map +1 -0
  92. package/package.json +74 -52
  93. package/dist/chunk-VPOTNP4K.js.map +0 -1
  94. package/dist/chunk-XWPGAHBZ.js.map +0 -1
  95. package/dist/chunk-YWQXTZ5M.js +0 -383
  96. package/dist/chunk-YWQXTZ5M.js.map +0 -1
  97. package/dist/chunk-ZYOZHZMJ.js.map +0 -1
  98. package/dist/client-CIsfZ2zg.d.ts +0 -692
  99. package/dist/client-Dt98Rugc.d.cts +0 -692
  100. package/dist/drizzle/index.cjs +0 -1558
  101. package/dist/drizzle/index.cjs.map +0 -1
  102. package/dist/drizzle/index.d.cts +0 -358
  103. package/dist/drizzle/index.d.ts +0 -358
  104. package/dist/drizzle/index.js +0 -1215
  105. package/dist/drizzle/index.js.map +0 -1
  106. package/dist/supabase/index.cjs +0 -1526
  107. package/dist/supabase/index.cjs.map +0 -1
  108. package/dist/supabase/index.d.cts +0 -144
  109. package/dist/supabase/index.d.ts +0 -144
  110. package/dist/supabase/index.js +0 -899
  111. package/dist/supabase/index.js.map +0 -1
@@ -0,0 +1,663 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/eql/v3/index.ts
21
+ var v3_exports = {};
22
+ __export(v3_exports, {
23
+ EncryptedBigintColumn: () => EncryptedBigintColumn,
24
+ EncryptedBigintEqColumn: () => EncryptedBigintEqColumn,
25
+ EncryptedBigintOrdColumn: () => EncryptedBigintOrdColumn,
26
+ EncryptedBigintOrdOreColumn: () => EncryptedBigintOrdOreColumn,
27
+ EncryptedBooleanColumn: () => EncryptedBooleanColumn,
28
+ EncryptedDateColumn: () => EncryptedDateColumn,
29
+ EncryptedDateEqColumn: () => EncryptedDateEqColumn,
30
+ EncryptedDateOrdColumn: () => EncryptedDateOrdColumn,
31
+ EncryptedDateOrdOreColumn: () => EncryptedDateOrdOreColumn,
32
+ EncryptedDoubleColumn: () => EncryptedDoubleColumn,
33
+ EncryptedDoubleEqColumn: () => EncryptedDoubleEqColumn,
34
+ EncryptedDoubleOrdColumn: () => EncryptedDoubleOrdColumn,
35
+ EncryptedDoubleOrdOreColumn: () => EncryptedDoubleOrdOreColumn,
36
+ EncryptedIntegerColumn: () => EncryptedIntegerColumn,
37
+ EncryptedIntegerEqColumn: () => EncryptedIntegerEqColumn,
38
+ EncryptedIntegerOrdColumn: () => EncryptedIntegerOrdColumn,
39
+ EncryptedIntegerOrdOreColumn: () => EncryptedIntegerOrdOreColumn,
40
+ EncryptedJsonColumn: () => EncryptedJsonColumn,
41
+ EncryptedNumericColumn: () => EncryptedNumericColumn,
42
+ EncryptedNumericEqColumn: () => EncryptedNumericEqColumn,
43
+ EncryptedNumericOrdColumn: () => EncryptedNumericOrdColumn,
44
+ EncryptedNumericOrdOreColumn: () => EncryptedNumericOrdOreColumn,
45
+ EncryptedRealColumn: () => EncryptedRealColumn,
46
+ EncryptedRealEqColumn: () => EncryptedRealEqColumn,
47
+ EncryptedRealOrdColumn: () => EncryptedRealOrdColumn,
48
+ EncryptedRealOrdOreColumn: () => EncryptedRealOrdOreColumn,
49
+ EncryptedSmallintColumn: () => EncryptedSmallintColumn,
50
+ EncryptedSmallintEqColumn: () => EncryptedSmallintEqColumn,
51
+ EncryptedSmallintOrdColumn: () => EncryptedSmallintOrdColumn,
52
+ EncryptedSmallintOrdOreColumn: () => EncryptedSmallintOrdOreColumn,
53
+ EncryptedTable: () => EncryptedTable,
54
+ EncryptedTextColumn: () => EncryptedTextColumn,
55
+ EncryptedTextEqColumn: () => EncryptedTextEqColumn,
56
+ EncryptedTextMatchColumn: () => EncryptedTextMatchColumn,
57
+ EncryptedTextOrdColumn: () => EncryptedTextOrdColumn,
58
+ EncryptedTextOrdOreColumn: () => EncryptedTextOrdOreColumn,
59
+ EncryptedTextSearchColumn: () => EncryptedTextSearchColumn,
60
+ EncryptedTimestampColumn: () => EncryptedTimestampColumn,
61
+ EncryptedTimestampEqColumn: () => EncryptedTimestampEqColumn,
62
+ EncryptedTimestampOrdColumn: () => EncryptedTimestampOrdColumn,
63
+ EncryptedTimestampOrdOreColumn: () => EncryptedTimestampOrdOreColumn,
64
+ TEXT_SEARCH_EQL_TYPE: () => TEXT_SEARCH_EQL_TYPE,
65
+ buildEncryptConfig: () => buildEncryptConfig,
66
+ encryptedTable: () => encryptedTable,
67
+ types: () => types
68
+ });
69
+ module.exports = __toCommonJS(v3_exports);
70
+
71
+ // src/schema/match-defaults.ts
72
+ function defaultMatchOpts() {
73
+ return {
74
+ tokenizer: { kind: "ngram", token_length: 3 },
75
+ token_filters: [{ kind: "downcase" }],
76
+ k: 6,
77
+ m: 2048,
78
+ include_original: true
79
+ };
80
+ }
81
+
82
+ // src/eql/v3/columns.ts
83
+ var STORAGE_ONLY = {
84
+ equality: false,
85
+ orderAndRange: false,
86
+ freeTextSearch: false
87
+ };
88
+ var EQUALITY_ONLY = {
89
+ equality: true,
90
+ orderAndRange: false,
91
+ freeTextSearch: false
92
+ };
93
+ var ORDER_AND_RANGE = {
94
+ equality: true,
95
+ orderAndRange: true,
96
+ freeTextSearch: false
97
+ };
98
+ var MATCH_ONLY = {
99
+ equality: false,
100
+ orderAndRange: false,
101
+ freeTextSearch: true
102
+ };
103
+ var TEXT_SEARCH = {
104
+ equality: true,
105
+ orderAndRange: true,
106
+ freeTextSearch: true
107
+ };
108
+ var TEXT_SEARCH_EQL_TYPE = "public.eql_v3_text_search";
109
+ var INTEGER = {
110
+ eqlType: "public.eql_v3_integer",
111
+ castAs: "number",
112
+ capabilities: STORAGE_ONLY
113
+ };
114
+ var INTEGER_EQ = {
115
+ eqlType: "public.eql_v3_integer_eq",
116
+ castAs: "number",
117
+ capabilities: EQUALITY_ONLY
118
+ };
119
+ var INTEGER_ORD_ORE = {
120
+ eqlType: "public.eql_v3_integer_ord_ore",
121
+ castAs: "number",
122
+ capabilities: ORDER_AND_RANGE
123
+ };
124
+ var INTEGER_ORD = {
125
+ eqlType: "public.eql_v3_integer_ord",
126
+ castAs: "number",
127
+ capabilities: ORDER_AND_RANGE
128
+ };
129
+ var SMALLINT = {
130
+ eqlType: "public.eql_v3_smallint",
131
+ castAs: "number",
132
+ capabilities: STORAGE_ONLY
133
+ };
134
+ var SMALLINT_EQ = {
135
+ eqlType: "public.eql_v3_smallint_eq",
136
+ castAs: "number",
137
+ capabilities: EQUALITY_ONLY
138
+ };
139
+ var SMALLINT_ORD_ORE = {
140
+ eqlType: "public.eql_v3_smallint_ord_ore",
141
+ castAs: "number",
142
+ capabilities: ORDER_AND_RANGE
143
+ };
144
+ var SMALLINT_ORD = {
145
+ eqlType: "public.eql_v3_smallint_ord",
146
+ castAs: "number",
147
+ capabilities: ORDER_AND_RANGE
148
+ };
149
+ var BIGINT = {
150
+ eqlType: "public.eql_v3_bigint",
151
+ castAs: "bigint",
152
+ capabilities: STORAGE_ONLY
153
+ };
154
+ var BIGINT_EQ = {
155
+ eqlType: "public.eql_v3_bigint_eq",
156
+ castAs: "bigint",
157
+ capabilities: EQUALITY_ONLY
158
+ };
159
+ var BIGINT_ORD_ORE = {
160
+ eqlType: "public.eql_v3_bigint_ord_ore",
161
+ castAs: "bigint",
162
+ capabilities: ORDER_AND_RANGE
163
+ };
164
+ var BIGINT_ORD = {
165
+ eqlType: "public.eql_v3_bigint_ord",
166
+ castAs: "bigint",
167
+ capabilities: ORDER_AND_RANGE
168
+ };
169
+ var DATE = {
170
+ eqlType: "public.eql_v3_date",
171
+ castAs: "date",
172
+ capabilities: STORAGE_ONLY
173
+ };
174
+ var DATE_EQ = {
175
+ eqlType: "public.eql_v3_date_eq",
176
+ castAs: "date",
177
+ capabilities: EQUALITY_ONLY
178
+ };
179
+ var DATE_ORD_ORE = {
180
+ eqlType: "public.eql_v3_date_ord_ore",
181
+ castAs: "date",
182
+ capabilities: ORDER_AND_RANGE
183
+ };
184
+ var DATE_ORD = {
185
+ eqlType: "public.eql_v3_date_ord",
186
+ castAs: "date",
187
+ capabilities: ORDER_AND_RANGE
188
+ };
189
+ var TIMESTAMP = {
190
+ eqlType: "public.eql_v3_timestamp",
191
+ castAs: "timestamp",
192
+ capabilities: STORAGE_ONLY
193
+ };
194
+ var TIMESTAMP_EQ = {
195
+ eqlType: "public.eql_v3_timestamp_eq",
196
+ castAs: "timestamp",
197
+ capabilities: EQUALITY_ONLY
198
+ };
199
+ var TIMESTAMP_ORD_ORE = {
200
+ eqlType: "public.eql_v3_timestamp_ord_ore",
201
+ castAs: "timestamp",
202
+ capabilities: ORDER_AND_RANGE
203
+ };
204
+ var TIMESTAMP_ORD = {
205
+ eqlType: "public.eql_v3_timestamp_ord",
206
+ castAs: "timestamp",
207
+ capabilities: ORDER_AND_RANGE
208
+ };
209
+ var NUMERIC = {
210
+ eqlType: "public.eql_v3_numeric",
211
+ castAs: "number",
212
+ capabilities: STORAGE_ONLY
213
+ };
214
+ var NUMERIC_EQ = {
215
+ eqlType: "public.eql_v3_numeric_eq",
216
+ castAs: "number",
217
+ capabilities: EQUALITY_ONLY
218
+ };
219
+ var NUMERIC_ORD_ORE = {
220
+ eqlType: "public.eql_v3_numeric_ord_ore",
221
+ castAs: "number",
222
+ capabilities: ORDER_AND_RANGE
223
+ };
224
+ var NUMERIC_ORD = {
225
+ eqlType: "public.eql_v3_numeric_ord",
226
+ castAs: "number",
227
+ capabilities: ORDER_AND_RANGE
228
+ };
229
+ var TEXT = {
230
+ eqlType: "public.eql_v3_text",
231
+ castAs: "string",
232
+ capabilities: STORAGE_ONLY
233
+ };
234
+ var TEXT_EQ = {
235
+ eqlType: "public.eql_v3_text_eq",
236
+ castAs: "string",
237
+ capabilities: EQUALITY_ONLY
238
+ };
239
+ var TEXT_MATCH = {
240
+ eqlType: "public.eql_v3_text_match",
241
+ castAs: "string",
242
+ capabilities: MATCH_ONLY
243
+ };
244
+ var TEXT_ORD_ORE = {
245
+ eqlType: "public.eql_v3_text_ord_ore",
246
+ castAs: "string",
247
+ capabilities: ORDER_AND_RANGE
248
+ };
249
+ var TEXT_ORD = {
250
+ eqlType: "public.eql_v3_text_ord",
251
+ castAs: "string",
252
+ capabilities: ORDER_AND_RANGE
253
+ };
254
+ var BOOLEAN = {
255
+ eqlType: "public.eql_v3_boolean",
256
+ castAs: "boolean",
257
+ capabilities: STORAGE_ONLY
258
+ };
259
+ var REAL = {
260
+ eqlType: "public.eql_v3_real",
261
+ castAs: "number",
262
+ capabilities: STORAGE_ONLY
263
+ };
264
+ var REAL_EQ = {
265
+ eqlType: "public.eql_v3_real_eq",
266
+ castAs: "number",
267
+ capabilities: EQUALITY_ONLY
268
+ };
269
+ var REAL_ORD_ORE = {
270
+ eqlType: "public.eql_v3_real_ord_ore",
271
+ castAs: "number",
272
+ capabilities: ORDER_AND_RANGE
273
+ };
274
+ var REAL_ORD = {
275
+ eqlType: "public.eql_v3_real_ord",
276
+ castAs: "number",
277
+ capabilities: ORDER_AND_RANGE
278
+ };
279
+ var DOUBLE = {
280
+ eqlType: "public.eql_v3_double",
281
+ castAs: "number",
282
+ capabilities: STORAGE_ONLY
283
+ };
284
+ var DOUBLE_EQ = {
285
+ eqlType: "public.eql_v3_double_eq",
286
+ castAs: "number",
287
+ capabilities: EQUALITY_ONLY
288
+ };
289
+ var DOUBLE_ORD_ORE = {
290
+ eqlType: "public.eql_v3_double_ord_ore",
291
+ castAs: "number",
292
+ capabilities: ORDER_AND_RANGE
293
+ };
294
+ var DOUBLE_ORD = {
295
+ eqlType: "public.eql_v3_double_ord",
296
+ castAs: "number",
297
+ capabilities: ORDER_AND_RANGE
298
+ };
299
+ function indexesForCapabilities(capabilities, castAs, ordering) {
300
+ const indexes = {};
301
+ if (capabilities.equality && (!capabilities.orderAndRange || castAs === "string")) {
302
+ indexes.unique = { token_filters: [] };
303
+ }
304
+ if (capabilities.orderAndRange) {
305
+ indexes[ordering] = {};
306
+ }
307
+ if (capabilities.freeTextSearch) {
308
+ indexes.match = { ...defaultMatchOpts(), include_original: false };
309
+ }
310
+ if (capabilities.searchableJson) {
311
+ indexes.ste_vec = {
312
+ prefix: "enabled",
313
+ array_index_mode: { item: true, wildcard: true, position: false },
314
+ mode: "compat"
315
+ };
316
+ }
317
+ return indexes;
318
+ }
319
+ function orderingForEqlType(eqlType) {
320
+ return eqlType.endsWith("_ord_ore") ? "ore" : "ope";
321
+ }
322
+ function isQueryableCapabilities(capabilities) {
323
+ return capabilities.equality || capabilities.orderAndRange || capabilities.freeTextSearch || (capabilities.searchableJson ?? false);
324
+ }
325
+ var EncryptedV3Column = class {
326
+ constructor(columnName, definition) {
327
+ this.columnName = columnName;
328
+ this.definition = definition;
329
+ }
330
+ columnName;
331
+ definition;
332
+ getName() {
333
+ return this.columnName;
334
+ }
335
+ /** The concrete EQL v3 domain name. Metadata only; not emitted by `build()`. */
336
+ getEqlType() {
337
+ return this.definition.eqlType;
338
+ }
339
+ /** The semantic query capabilities this domain exposes. Metadata only. */
340
+ getQueryCapabilities() {
341
+ return this.definition.capabilities;
342
+ }
343
+ /** `true` when this domain can produce at least one kind of query term. */
344
+ isQueryable() {
345
+ return isQueryableCapabilities(
346
+ this.definition.capabilities
347
+ );
348
+ }
349
+ /** Emit the encrypt-config column: `cast_as` plus capability-derived indexes. */
350
+ build() {
351
+ return {
352
+ cast_as: this.definition.castAs,
353
+ indexes: indexesForCapabilities(
354
+ this.definition.capabilities,
355
+ this.definition.castAs,
356
+ orderingForEqlType(this.definition.eqlType)
357
+ )
358
+ };
359
+ }
360
+ };
361
+ var TEXT_SEARCH_DOMAIN = {
362
+ eqlType: TEXT_SEARCH_EQL_TYPE,
363
+ castAs: "string",
364
+ capabilities: TEXT_SEARCH
365
+ };
366
+ var EncryptedTextSearchColumn = class extends EncryptedV3Column {
367
+ constructor(columnName) {
368
+ super(columnName, TEXT_SEARCH_DOMAIN);
369
+ }
370
+ };
371
+ var EncryptedIntegerColumn = class extends EncryptedV3Column {
372
+ };
373
+ var EncryptedIntegerEqColumn = class extends EncryptedV3Column {
374
+ };
375
+ var EncryptedIntegerOrdOreColumn = class extends EncryptedV3Column {
376
+ };
377
+ var EncryptedIntegerOrdColumn = class extends EncryptedV3Column {
378
+ };
379
+ var EncryptedSmallintColumn = class extends EncryptedV3Column {
380
+ };
381
+ var EncryptedSmallintEqColumn = class extends EncryptedV3Column {
382
+ };
383
+ var EncryptedSmallintOrdOreColumn = class extends EncryptedV3Column {
384
+ };
385
+ var EncryptedSmallintOrdColumn = class extends EncryptedV3Column {
386
+ };
387
+ var EncryptedBigintColumn = class extends EncryptedV3Column {
388
+ };
389
+ var EncryptedBigintEqColumn = class extends EncryptedV3Column {
390
+ };
391
+ var EncryptedBigintOrdOreColumn = class extends EncryptedV3Column {
392
+ };
393
+ var EncryptedBigintOrdColumn = class extends EncryptedV3Column {
394
+ };
395
+ var EncryptedDateColumn = class extends EncryptedV3Column {
396
+ };
397
+ var EncryptedDateEqColumn = class extends EncryptedV3Column {
398
+ };
399
+ var EncryptedDateOrdOreColumn = class extends EncryptedV3Column {
400
+ };
401
+ var EncryptedDateOrdColumn = class extends EncryptedV3Column {
402
+ };
403
+ var EncryptedTimestampColumn = class extends EncryptedV3Column {
404
+ };
405
+ var EncryptedTimestampEqColumn = class extends EncryptedV3Column {
406
+ };
407
+ var EncryptedTimestampOrdOreColumn = class extends EncryptedV3Column {
408
+ };
409
+ var EncryptedTimestampOrdColumn = class extends EncryptedV3Column {
410
+ };
411
+ var EncryptedNumericColumn = class extends EncryptedV3Column {
412
+ };
413
+ var EncryptedNumericEqColumn = class extends EncryptedV3Column {
414
+ };
415
+ var EncryptedNumericOrdOreColumn = class extends EncryptedV3Column {
416
+ };
417
+ var EncryptedNumericOrdColumn = class extends EncryptedV3Column {
418
+ };
419
+ var EncryptedTextColumn = class extends EncryptedV3Column {
420
+ };
421
+ var EncryptedTextEqColumn = class extends EncryptedV3Column {
422
+ };
423
+ var EncryptedTextMatchColumn = class extends EncryptedV3Column {
424
+ };
425
+ var EncryptedTextOrdOreColumn = class extends EncryptedV3Column {
426
+ };
427
+ var EncryptedTextOrdColumn = class extends EncryptedV3Column {
428
+ };
429
+ var EncryptedBooleanColumn = class extends EncryptedV3Column {
430
+ };
431
+ var EncryptedRealColumn = class extends EncryptedV3Column {
432
+ };
433
+ var EncryptedRealEqColumn = class extends EncryptedV3Column {
434
+ };
435
+ var EncryptedRealOrdOreColumn = class extends EncryptedV3Column {
436
+ };
437
+ var EncryptedRealOrdColumn = class extends EncryptedV3Column {
438
+ };
439
+ var EncryptedDoubleColumn = class extends EncryptedV3Column {
440
+ };
441
+ var EncryptedDoubleEqColumn = class extends EncryptedV3Column {
442
+ };
443
+ var EncryptedDoubleOrdOreColumn = class extends EncryptedV3Column {
444
+ };
445
+ var EncryptedDoubleOrdColumn = class extends EncryptedV3Column {
446
+ };
447
+ var JSON_DOMAIN = {
448
+ eqlType: "public.eql_v3_json",
449
+ castAs: "json",
450
+ capabilities: {
451
+ equality: false,
452
+ orderAndRange: false,
453
+ freeTextSearch: false,
454
+ searchableJson: true
455
+ }
456
+ };
457
+ var EncryptedJsonColumn = class extends EncryptedV3Column {
458
+ constructor(columnName) {
459
+ super(columnName, JSON_DOMAIN);
460
+ }
461
+ };
462
+
463
+ // src/eql/v3/table.ts
464
+ var EncryptedTable = class {
465
+ constructor(tableName, columnBuilders) {
466
+ this.tableName = tableName;
467
+ this.columnBuilders = columnBuilders;
468
+ }
469
+ tableName;
470
+ columnBuilders;
471
+ build() {
472
+ const builtColumns = /* @__PURE__ */ Object.create(null);
473
+ for (const builder of Object.values(this.columnBuilders)) {
474
+ const name = builder.getName();
475
+ if (Object.hasOwn(builtColumns, name)) {
476
+ throw new Error(
477
+ `[eql/v3]: duplicate column name "${name}" in table "${this.tableName}" \u2014 two columns resolve to the same DB name`
478
+ );
479
+ }
480
+ builtColumns[name] = builder.build();
481
+ }
482
+ return {
483
+ tableName: this.tableName,
484
+ columns: builtColumns
485
+ };
486
+ }
487
+ /**
488
+ * Map each column's JS property name to its DB column name (`getName()`).
489
+ * The model path matches user models by property name but must address the
490
+ * encrypt config and FFI by DB name — `build()` keys columns by DB name, so
491
+ * the two only agree when property == name. This recovers the mapping that
492
+ * `build()` discards.
493
+ *
494
+ * NULL PROTOTYPE — load-bearing. Callers index this map by a column name that
495
+ * ultimately comes from the database (`addJsonbCastsV3`, `filterColumnName`,
496
+ * the mutation transform). On a plain object literal, a column named
497
+ * `constructor` / `toString` / `valueOf` / `__proto__` resolves to an
498
+ * inherited `Object.prototype` member, which is truthy — so a *plaintext*
499
+ * column with such a name would be mistaken for a mapped encrypted column and
500
+ * its `Object.prototype` value interpolated into the emitted select string.
501
+ * `encryptedTable()` rejects such names as JS *properties*, but nothing
502
+ * constrains the DB column names a table may contain.
503
+ */
504
+ buildColumnKeyMap() {
505
+ const map = /* @__PURE__ */ Object.create(null);
506
+ for (const [property, builder] of Object.entries(this.columnBuilders)) {
507
+ map[property] = builder.getName();
508
+ }
509
+ return map;
510
+ }
511
+ };
512
+ var RESERVED_TABLE_KEYS = /* @__PURE__ */ new Set([
513
+ "tableName",
514
+ "columnBuilders",
515
+ "_columnType",
516
+ "build",
517
+ "buildColumnKeyMap"
518
+ ]);
519
+ function isReservedTableKey(tableBuilder, colName) {
520
+ return RESERVED_TABLE_KEYS.has(colName) || colName in tableBuilder;
521
+ }
522
+ function encryptedTable(tableName, columns) {
523
+ const tableBuilder = new EncryptedTable(
524
+ tableName,
525
+ columns
526
+ );
527
+ for (const [colName, colBuilder] of Object.entries(columns)) {
528
+ if (isReservedTableKey(tableBuilder, colName)) {
529
+ throw new Error(
530
+ `Column name "${colName}" collides with a reserved EncryptedTable property`
531
+ );
532
+ }
533
+ ;
534
+ tableBuilder[colName] = colBuilder;
535
+ }
536
+ return tableBuilder;
537
+ }
538
+ function buildEncryptConfig(...tables) {
539
+ const config = {
540
+ v: 1,
541
+ tables: {}
542
+ };
543
+ for (const tb of tables) {
544
+ const tableDef = tb.build();
545
+ if (Object.hasOwn(config.tables, tableDef.tableName)) {
546
+ throw new Error(
547
+ `[eql/v3]: duplicate table name "${tableDef.tableName}" passed to buildEncryptConfig \u2014 each table must have a unique name`
548
+ );
549
+ }
550
+ config.tables[tableDef.tableName] = tableDef.columns;
551
+ }
552
+ return config;
553
+ }
554
+
555
+ // src/eql/v3/types.ts
556
+ var types = {
557
+ // integer
558
+ Integer: (name) => new EncryptedIntegerColumn(name, INTEGER),
559
+ IntegerEq: (name) => new EncryptedIntegerEqColumn(name, INTEGER_EQ),
560
+ IntegerOrdOre: (name) => new EncryptedIntegerOrdOreColumn(name, INTEGER_ORD_ORE),
561
+ IntegerOrd: (name) => new EncryptedIntegerOrdColumn(name, INTEGER_ORD),
562
+ // smallint
563
+ Smallint: (name) => new EncryptedSmallintColumn(name, SMALLINT),
564
+ SmallintEq: (name) => new EncryptedSmallintEqColumn(name, SMALLINT_EQ),
565
+ SmallintOrdOre: (name) => new EncryptedSmallintOrdOreColumn(name, SMALLINT_ORD_ORE),
566
+ SmallintOrd: (name) => new EncryptedSmallintOrdColumn(name, SMALLINT_ORD),
567
+ // bigint (int8) — plaintext is a JS `bigint`, round-tripped losslessly by
568
+ // the native protect-ffi boundary (see ./columns)
569
+ Bigint: (name) => new EncryptedBigintColumn(name, BIGINT),
570
+ BigintEq: (name) => new EncryptedBigintEqColumn(name, BIGINT_EQ),
571
+ BigintOrdOre: (name) => new EncryptedBigintOrdOreColumn(name, BIGINT_ORD_ORE),
572
+ BigintOrd: (name) => new EncryptedBigintOrdColumn(name, BIGINT_ORD),
573
+ // date
574
+ Date: (name) => new EncryptedDateColumn(name, DATE),
575
+ DateEq: (name) => new EncryptedDateEqColumn(name, DATE_EQ),
576
+ DateOrdOre: (name) => new EncryptedDateOrdOreColumn(name, DATE_ORD_ORE),
577
+ DateOrd: (name) => new EncryptedDateOrdColumn(name, DATE_ORD),
578
+ // timestamp
579
+ Timestamp: (name) => new EncryptedTimestampColumn(name, TIMESTAMP),
580
+ TimestampEq: (name) => new EncryptedTimestampEqColumn(name, TIMESTAMP_EQ),
581
+ TimestampOrdOre: (name) => new EncryptedTimestampOrdOreColumn(name, TIMESTAMP_ORD_ORE),
582
+ TimestampOrd: (name) => new EncryptedTimestampOrdColumn(name, TIMESTAMP_ORD),
583
+ // numeric
584
+ Numeric: (name) => new EncryptedNumericColumn(name, NUMERIC),
585
+ NumericEq: (name) => new EncryptedNumericEqColumn(name, NUMERIC_EQ),
586
+ NumericOrdOre: (name) => new EncryptedNumericOrdOreColumn(name, NUMERIC_ORD_ORE),
587
+ NumericOrd: (name) => new EncryptedNumericOrdColumn(name, NUMERIC_ORD),
588
+ // text
589
+ Text: (name) => new EncryptedTextColumn(name, TEXT),
590
+ TextEq: (name) => new EncryptedTextEqColumn(name, TEXT_EQ),
591
+ TextMatch: (name) => new EncryptedTextMatchColumn(name, TEXT_MATCH),
592
+ TextOrdOre: (name) => new EncryptedTextOrdOreColumn(name, TEXT_ORD_ORE),
593
+ TextOrd: (name) => new EncryptedTextOrdColumn(name, TEXT_ORD),
594
+ TextSearch: (name) => new EncryptedTextSearchColumn(name),
595
+ // boolean
596
+ Boolean: (name) => new EncryptedBooleanColumn(name, BOOLEAN),
597
+ // real
598
+ Real: (name) => new EncryptedRealColumn(name, REAL),
599
+ RealEq: (name) => new EncryptedRealEqColumn(name, REAL_EQ),
600
+ RealOrdOre: (name) => new EncryptedRealOrdOreColumn(name, REAL_ORD_ORE),
601
+ RealOrd: (name) => new EncryptedRealOrdColumn(name, REAL_ORD),
602
+ // double
603
+ Double: (name) => new EncryptedDoubleColumn(name, DOUBLE),
604
+ DoubleEq: (name) => new EncryptedDoubleEqColumn(name, DOUBLE_EQ),
605
+ DoubleOrdOre: (name) => new EncryptedDoubleOrdOreColumn(name, DOUBLE_ORD_ORE),
606
+ DoubleOrd: (name) => new EncryptedDoubleOrdColumn(name, DOUBLE_ORD),
607
+ // json (encrypted JSONB document, ste_vec containment)
608
+ Json: (name) => new EncryptedJsonColumn(name)
609
+ // `satisfies` is load-bearing, not decoration: `DOMAIN_REGISTRY` derives itself
610
+ // by calling every value here at module load. A non-factory export would throw
611
+ // during module evaluation and take the supabase introspect/schema-build/verify
612
+ // path down with it. This turns that into a compile error at the offending line.
613
+ // `as const` applies first, so literal key inference is preserved.
614
+ };
615
+ // Annotate the CommonJS export names for ESM import in node:
616
+ 0 && (module.exports = {
617
+ EncryptedBigintColumn,
618
+ EncryptedBigintEqColumn,
619
+ EncryptedBigintOrdColumn,
620
+ EncryptedBigintOrdOreColumn,
621
+ EncryptedBooleanColumn,
622
+ EncryptedDateColumn,
623
+ EncryptedDateEqColumn,
624
+ EncryptedDateOrdColumn,
625
+ EncryptedDateOrdOreColumn,
626
+ EncryptedDoubleColumn,
627
+ EncryptedDoubleEqColumn,
628
+ EncryptedDoubleOrdColumn,
629
+ EncryptedDoubleOrdOreColumn,
630
+ EncryptedIntegerColumn,
631
+ EncryptedIntegerEqColumn,
632
+ EncryptedIntegerOrdColumn,
633
+ EncryptedIntegerOrdOreColumn,
634
+ EncryptedJsonColumn,
635
+ EncryptedNumericColumn,
636
+ EncryptedNumericEqColumn,
637
+ EncryptedNumericOrdColumn,
638
+ EncryptedNumericOrdOreColumn,
639
+ EncryptedRealColumn,
640
+ EncryptedRealEqColumn,
641
+ EncryptedRealOrdColumn,
642
+ EncryptedRealOrdOreColumn,
643
+ EncryptedSmallintColumn,
644
+ EncryptedSmallintEqColumn,
645
+ EncryptedSmallintOrdColumn,
646
+ EncryptedSmallintOrdOreColumn,
647
+ EncryptedTable,
648
+ EncryptedTextColumn,
649
+ EncryptedTextEqColumn,
650
+ EncryptedTextMatchColumn,
651
+ EncryptedTextOrdColumn,
652
+ EncryptedTextOrdOreColumn,
653
+ EncryptedTextSearchColumn,
654
+ EncryptedTimestampColumn,
655
+ EncryptedTimestampEqColumn,
656
+ EncryptedTimestampOrdColumn,
657
+ EncryptedTimestampOrdOreColumn,
658
+ TEXT_SEARCH_EQL_TYPE,
659
+ buildEncryptConfig,
660
+ encryptedTable,
661
+ types
662
+ });
663
+ //# sourceMappingURL=index.cjs.map