@cipherstash/stack 0.19.0 → 1.0.0-rc.1

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 (101) hide show
  1. package/CHANGELOG.md +596 -0
  2. package/README.md +376 -276
  3. package/dist/adapter-kit.cjs +1002 -0
  4. package/dist/adapter-kit.cjs.map +1 -0
  5. package/dist/adapter-kit.d.cts +120 -0
  6. package/dist/adapter-kit.d.ts +120 -0
  7. package/dist/adapter-kit.js +122 -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-4AVL4VZD.js → chunk-3B5ZX3IS.js} +3 -1
  12. package/dist/chunk-3B5ZX3IS.js.map +1 -0
  13. package/dist/{chunk-U66S7VIF.js → chunk-6SGN52W6.js} +166 -107
  14. package/dist/chunk-6SGN52W6.js.map +1 -0
  15. package/dist/chunk-7333ZC6L.js +48 -0
  16. package/dist/chunk-7333ZC6L.js.map +1 -0
  17. package/dist/{chunk-MP3SSDNN.js → chunk-CLM7E4I6.js} +15 -15
  18. package/dist/{chunk-MP3SSDNN.js.map → chunk-CLM7E4I6.js.map} +1 -1
  19. package/dist/{chunk-OFQ555AX.js → chunk-IDKP6ABU.js} +2 -2
  20. package/dist/{chunk-36AA7IBJ.js → chunk-L7ISHSG7.js} +53 -20
  21. package/dist/chunk-L7ISHSG7.js.map +1 -0
  22. package/dist/{chunk-LBMC4D6D.js → chunk-NVKK7UDN.js} +1 -1
  23. package/dist/chunk-NVKK7UDN.js.map +1 -0
  24. package/dist/chunk-X3JRXEIB.js +98 -0
  25. package/dist/chunk-X3JRXEIB.js.map +1 -0
  26. package/dist/client.cjs +29 -12
  27. package/dist/client.cjs.map +1 -1
  28. package/dist/client.d.cts +3 -2
  29. package/dist/client.d.ts +3 -2
  30. package/dist/client.js +2 -2
  31. package/dist/{table-CIH7jZ2h.d.ts → columns-0lbT9stl.d.ts} +157 -138
  32. package/dist/{table-DihEAlxG.d.cts → columns-Bxv7Oo9o.d.cts} +157 -138
  33. package/dist/dynamodb/index.d.cts +3 -2
  34. package/dist/dynamodb/index.d.ts +3 -2
  35. package/dist/encryption/index.cjs +54 -16
  36. package/dist/encryption/index.cjs.map +1 -1
  37. package/dist/encryption/index.d.cts +807 -6
  38. package/dist/encryption/index.d.ts +807 -6
  39. package/dist/encryption/index.js +6 -6
  40. package/dist/encryption/v3.cjs +1078 -973
  41. package/dist/encryption/v3.cjs.map +1 -1
  42. package/dist/encryption/v3.d.cts +15 -12
  43. package/dist/encryption/v3.d.ts +15 -12
  44. package/dist/encryption/v3.js +50 -22
  45. package/dist/encryption/v3.js.map +1 -1
  46. package/dist/eql/v3/index.cjs +130 -79
  47. package/dist/eql/v3/index.cjs.map +1 -1
  48. package/dist/eql/v3/index.d.cts +115 -13
  49. package/dist/eql/v3/index.d.ts +115 -13
  50. package/dist/eql/v3/index.js +16 -6
  51. package/dist/errors/index.cjs.map +1 -1
  52. package/dist/errors/index.d.cts +5 -5
  53. package/dist/errors/index.d.ts +5 -5
  54. package/dist/errors/index.js +1 -1
  55. package/dist/identity/index.cjs.map +1 -1
  56. package/dist/identity/index.js +2 -2
  57. package/dist/index-BquA71_Y.d.ts +24 -0
  58. package/dist/index-fhWTOV0K.d.cts +24 -0
  59. package/dist/index.cjs +79 -27
  60. package/dist/index.cjs.map +1 -1
  61. package/dist/index.d.cts +5 -17
  62. package/dist/index.d.ts +5 -17
  63. package/dist/index.js +6 -6
  64. package/dist/schema/index.cjs +29 -12
  65. package/dist/schema/index.cjs.map +1 -1
  66. package/dist/schema/index.d.cts +1 -1
  67. package/dist/schema/index.d.ts +1 -1
  68. package/dist/schema/index.js +2 -2
  69. package/dist/{types-public-CpS5KjwX.d.ts → types-public-QMjYNfQO.d.cts} +765 -726
  70. package/dist/{types-public-CpS5KjwX.d.cts → types-public-QMjYNfQO.d.ts} +765 -726
  71. package/dist/types-public.cjs.map +1 -1
  72. package/dist/types-public.d.cts +1 -1
  73. package/dist/types-public.d.ts +1 -1
  74. package/dist/types-public.js +1 -1
  75. package/dist/wasm-inline.d.ts +779 -405
  76. package/dist/wasm-inline.js +606 -299
  77. package/dist/wasm-inline.js.map +1 -1
  78. package/package.json +25 -53
  79. package/dist/chunk-36AA7IBJ.js.map +0 -1
  80. package/dist/chunk-4AVL4VZD.js.map +0 -1
  81. package/dist/chunk-IADZCZEA.js +0 -23
  82. package/dist/chunk-IADZCZEA.js.map +0 -1
  83. package/dist/chunk-IBSK6P33.js +0 -209
  84. package/dist/chunk-IBSK6P33.js.map +0 -1
  85. package/dist/chunk-LBMC4D6D.js.map +0 -1
  86. package/dist/chunk-U66S7VIF.js.map +0 -1
  87. package/dist/client-DSGHBN-g.d.cts +0 -834
  88. package/dist/client-DfCrlHXh.d.ts +0 -834
  89. package/dist/drizzle/index.cjs +0 -5617
  90. package/dist/drizzle/index.cjs.map +0 -1
  91. package/dist/drizzle/index.d.cts +0 -358
  92. package/dist/drizzle/index.d.ts +0 -358
  93. package/dist/drizzle/index.js +0 -1220
  94. package/dist/drizzle/index.js.map +0 -1
  95. package/dist/supabase/index.cjs +0 -5951
  96. package/dist/supabase/index.cjs.map +0 -1
  97. package/dist/supabase/index.d.cts +0 -223
  98. package/dist/supabase/index.d.ts +0 -223
  99. package/dist/supabase/index.js +0 -1217
  100. package/dist/supabase/index.js.map +0 -1
  101. /package/dist/{chunk-OFQ555AX.js.map → chunk-IDKP6ABU.js.map} +0 -0
@@ -20,6 +20,10 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/eql/v3/index.ts
21
21
  var v3_exports = {};
22
22
  __export(v3_exports, {
23
+ EncryptedBigintColumn: () => EncryptedBigintColumn,
24
+ EncryptedBigintEqColumn: () => EncryptedBigintEqColumn,
25
+ EncryptedBigintOrdColumn: () => EncryptedBigintOrdColumn,
26
+ EncryptedBigintOrdOreColumn: () => EncryptedBigintOrdOreColumn,
23
27
  EncryptedBooleanColumn: () => EncryptedBooleanColumn,
24
28
  EncryptedDateColumn: () => EncryptedDateColumn,
25
29
  EncryptedDateEqColumn: () => EncryptedDateEqColumn,
@@ -33,6 +37,7 @@ __export(v3_exports, {
33
37
  EncryptedIntegerEqColumn: () => EncryptedIntegerEqColumn,
34
38
  EncryptedIntegerOrdColumn: () => EncryptedIntegerOrdColumn,
35
39
  EncryptedIntegerOrdOreColumn: () => EncryptedIntegerOrdOreColumn,
40
+ EncryptedJsonColumn: () => EncryptedJsonColumn,
36
41
  EncryptedNumericColumn: () => EncryptedNumericColumn,
37
42
  EncryptedNumericEqColumn: () => EncryptedNumericEqColumn,
38
43
  EncryptedNumericOrdColumn: () => EncryptedNumericOrdColumn,
@@ -73,13 +78,6 @@ function defaultMatchOpts() {
73
78
  include_original: true
74
79
  };
75
80
  }
76
- function cloneMatchOpts(opts) {
77
- return {
78
- ...opts,
79
- tokenizer: { ...opts.tokenizer },
80
- token_filters: opts.token_filters.map((f) => ({ ...f }))
81
- };
82
- }
83
81
 
84
82
  // src/eql/v3/columns.ts
85
83
  var STORAGE_ONLY = {
@@ -107,192 +105,222 @@ var TEXT_SEARCH = {
107
105
  orderAndRange: true,
108
106
  freeTextSearch: true
109
107
  };
110
- var TEXT_SEARCH_EQL_TYPE = "eql_v3.text_search";
108
+ var TEXT_SEARCH_EQL_TYPE = "public.eql_v3_text_search";
111
109
  var INTEGER = {
112
- eqlType: "eql_v3.integer",
110
+ eqlType: "public.eql_v3_integer",
113
111
  castAs: "number",
114
112
  capabilities: STORAGE_ONLY
115
113
  };
116
114
  var INTEGER_EQ = {
117
- eqlType: "eql_v3.integer_eq",
115
+ eqlType: "public.eql_v3_integer_eq",
118
116
  castAs: "number",
119
117
  capabilities: EQUALITY_ONLY
120
118
  };
121
119
  var INTEGER_ORD_ORE = {
122
- eqlType: "eql_v3.integer_ord_ore",
120
+ eqlType: "public.eql_v3_integer_ord_ore",
123
121
  castAs: "number",
124
122
  capabilities: ORDER_AND_RANGE
125
123
  };
126
124
  var INTEGER_ORD = {
127
- eqlType: "eql_v3.integer_ord",
125
+ eqlType: "public.eql_v3_integer_ord",
128
126
  castAs: "number",
129
127
  capabilities: ORDER_AND_RANGE
130
128
  };
131
129
  var SMALLINT = {
132
- eqlType: "eql_v3.smallint",
130
+ eqlType: "public.eql_v3_smallint",
133
131
  castAs: "number",
134
132
  capabilities: STORAGE_ONLY
135
133
  };
136
134
  var SMALLINT_EQ = {
137
- eqlType: "eql_v3.smallint_eq",
135
+ eqlType: "public.eql_v3_smallint_eq",
138
136
  castAs: "number",
139
137
  capabilities: EQUALITY_ONLY
140
138
  };
141
139
  var SMALLINT_ORD_ORE = {
142
- eqlType: "eql_v3.smallint_ord_ore",
140
+ eqlType: "public.eql_v3_smallint_ord_ore",
143
141
  castAs: "number",
144
142
  capabilities: ORDER_AND_RANGE
145
143
  };
146
144
  var SMALLINT_ORD = {
147
- eqlType: "eql_v3.smallint_ord",
145
+ eqlType: "public.eql_v3_smallint_ord",
148
146
  castAs: "number",
149
147
  capabilities: ORDER_AND_RANGE
150
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
+ };
151
169
  var DATE = {
152
- eqlType: "eql_v3.date",
170
+ eqlType: "public.eql_v3_date",
153
171
  castAs: "date",
154
172
  capabilities: STORAGE_ONLY
155
173
  };
156
174
  var DATE_EQ = {
157
- eqlType: "eql_v3.date_eq",
175
+ eqlType: "public.eql_v3_date_eq",
158
176
  castAs: "date",
159
177
  capabilities: EQUALITY_ONLY
160
178
  };
161
179
  var DATE_ORD_ORE = {
162
- eqlType: "eql_v3.date_ord_ore",
180
+ eqlType: "public.eql_v3_date_ord_ore",
163
181
  castAs: "date",
164
182
  capabilities: ORDER_AND_RANGE
165
183
  };
166
184
  var DATE_ORD = {
167
- eqlType: "eql_v3.date_ord",
185
+ eqlType: "public.eql_v3_date_ord",
168
186
  castAs: "date",
169
187
  capabilities: ORDER_AND_RANGE
170
188
  };
171
189
  var TIMESTAMP = {
172
- eqlType: "eql_v3.timestamp",
190
+ eqlType: "public.eql_v3_timestamp",
173
191
  castAs: "timestamp",
174
192
  capabilities: STORAGE_ONLY
175
193
  };
176
194
  var TIMESTAMP_EQ = {
177
- eqlType: "eql_v3.timestamp_eq",
195
+ eqlType: "public.eql_v3_timestamp_eq",
178
196
  castAs: "timestamp",
179
197
  capabilities: EQUALITY_ONLY
180
198
  };
181
199
  var TIMESTAMP_ORD_ORE = {
182
- eqlType: "eql_v3.timestamp_ord_ore",
200
+ eqlType: "public.eql_v3_timestamp_ord_ore",
183
201
  castAs: "timestamp",
184
202
  capabilities: ORDER_AND_RANGE
185
203
  };
186
204
  var TIMESTAMP_ORD = {
187
- eqlType: "eql_v3.timestamp_ord",
205
+ eqlType: "public.eql_v3_timestamp_ord",
188
206
  castAs: "timestamp",
189
207
  capabilities: ORDER_AND_RANGE
190
208
  };
191
209
  var NUMERIC = {
192
- eqlType: "eql_v3.numeric",
210
+ eqlType: "public.eql_v3_numeric",
193
211
  castAs: "number",
194
212
  capabilities: STORAGE_ONLY
195
213
  };
196
214
  var NUMERIC_EQ = {
197
- eqlType: "eql_v3.numeric_eq",
215
+ eqlType: "public.eql_v3_numeric_eq",
198
216
  castAs: "number",
199
217
  capabilities: EQUALITY_ONLY
200
218
  };
201
219
  var NUMERIC_ORD_ORE = {
202
- eqlType: "eql_v3.numeric_ord_ore",
220
+ eqlType: "public.eql_v3_numeric_ord_ore",
203
221
  castAs: "number",
204
222
  capabilities: ORDER_AND_RANGE
205
223
  };
206
224
  var NUMERIC_ORD = {
207
- eqlType: "eql_v3.numeric_ord",
225
+ eqlType: "public.eql_v3_numeric_ord",
208
226
  castAs: "number",
209
227
  capabilities: ORDER_AND_RANGE
210
228
  };
211
229
  var TEXT = {
212
- eqlType: "eql_v3.text",
230
+ eqlType: "public.eql_v3_text",
213
231
  castAs: "string",
214
232
  capabilities: STORAGE_ONLY
215
233
  };
216
234
  var TEXT_EQ = {
217
- eqlType: "eql_v3.text_eq",
235
+ eqlType: "public.eql_v3_text_eq",
218
236
  castAs: "string",
219
237
  capabilities: EQUALITY_ONLY
220
238
  };
221
239
  var TEXT_MATCH = {
222
- eqlType: "eql_v3.text_match",
240
+ eqlType: "public.eql_v3_text_match",
223
241
  castAs: "string",
224
242
  capabilities: MATCH_ONLY
225
243
  };
226
244
  var TEXT_ORD_ORE = {
227
- eqlType: "eql_v3.text_ord_ore",
245
+ eqlType: "public.eql_v3_text_ord_ore",
228
246
  castAs: "string",
229
247
  capabilities: ORDER_AND_RANGE
230
248
  };
231
249
  var TEXT_ORD = {
232
- eqlType: "eql_v3.text_ord",
250
+ eqlType: "public.eql_v3_text_ord",
233
251
  castAs: "string",
234
252
  capabilities: ORDER_AND_RANGE
235
253
  };
236
254
  var BOOLEAN = {
237
- eqlType: "eql_v3.boolean",
255
+ eqlType: "public.eql_v3_boolean",
238
256
  castAs: "boolean",
239
257
  capabilities: STORAGE_ONLY
240
258
  };
241
259
  var REAL = {
242
- eqlType: "eql_v3.real",
260
+ eqlType: "public.eql_v3_real",
243
261
  castAs: "number",
244
262
  capabilities: STORAGE_ONLY
245
263
  };
246
264
  var REAL_EQ = {
247
- eqlType: "eql_v3.real_eq",
265
+ eqlType: "public.eql_v3_real_eq",
248
266
  castAs: "number",
249
267
  capabilities: EQUALITY_ONLY
250
268
  };
251
269
  var REAL_ORD_ORE = {
252
- eqlType: "eql_v3.real_ord_ore",
270
+ eqlType: "public.eql_v3_real_ord_ore",
253
271
  castAs: "number",
254
272
  capabilities: ORDER_AND_RANGE
255
273
  };
256
274
  var REAL_ORD = {
257
- eqlType: "eql_v3.real_ord",
275
+ eqlType: "public.eql_v3_real_ord",
258
276
  castAs: "number",
259
277
  capabilities: ORDER_AND_RANGE
260
278
  };
261
279
  var DOUBLE = {
262
- eqlType: "eql_v3.double",
280
+ eqlType: "public.eql_v3_double",
263
281
  castAs: "number",
264
282
  capabilities: STORAGE_ONLY
265
283
  };
266
284
  var DOUBLE_EQ = {
267
- eqlType: "eql_v3.double_eq",
285
+ eqlType: "public.eql_v3_double_eq",
268
286
  castAs: "number",
269
287
  capabilities: EQUALITY_ONLY
270
288
  };
271
289
  var DOUBLE_ORD_ORE = {
272
- eqlType: "eql_v3.double_ord_ore",
290
+ eqlType: "public.eql_v3_double_ord_ore",
273
291
  castAs: "number",
274
292
  capabilities: ORDER_AND_RANGE
275
293
  };
276
294
  var DOUBLE_ORD = {
277
- eqlType: "eql_v3.double_ord",
295
+ eqlType: "public.eql_v3_double_ord",
278
296
  castAs: "number",
279
297
  capabilities: ORDER_AND_RANGE
280
298
  };
281
- function indexesForCapabilities(capabilities, castAs) {
299
+ function indexesForCapabilities(capabilities, castAs, ordering) {
282
300
  const indexes = {};
283
301
  if (capabilities.equality && (!capabilities.orderAndRange || castAs === "string")) {
284
302
  indexes.unique = { token_filters: [] };
285
303
  }
286
304
  if (capabilities.orderAndRange) {
287
- indexes.ore = {};
305
+ indexes[ordering] = {};
288
306
  }
289
307
  if (capabilities.freeTextSearch) {
290
- indexes.match = defaultMatchOpts();
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
+ };
291
316
  }
292
317
  return indexes;
293
318
  }
319
+ function orderingForEqlType(eqlType) {
320
+ return eqlType.endsWith("_ord_ore") ? "ore" : "ope";
321
+ }
294
322
  function isQueryableCapabilities(capabilities) {
295
- return capabilities.equality || capabilities.orderAndRange || capabilities.freeTextSearch;
323
+ return capabilities.equality || capabilities.orderAndRange || capabilities.freeTextSearch || (capabilities.searchableJson ?? false);
296
324
  }
297
325
  var EncryptedV3Column = class {
298
326
  constructor(columnName, definition) {
@@ -324,7 +352,8 @@ var EncryptedV3Column = class {
324
352
  cast_as: this.definition.castAs,
325
353
  indexes: indexesForCapabilities(
326
354
  this.definition.capabilities,
327
- this.definition.castAs
355
+ this.definition.castAs,
356
+ orderingForEqlType(this.definition.eqlType)
328
357
  )
329
358
  };
330
359
  }
@@ -335,37 +364,8 @@ var TEXT_SEARCH_DOMAIN = {
335
364
  capabilities: TEXT_SEARCH
336
365
  };
337
366
  var EncryptedTextSearchColumn = class extends EncryptedV3Column {
338
- matchOpts;
339
367
  constructor(columnName) {
340
368
  super(columnName, TEXT_SEARCH_DOMAIN);
341
- this.matchOpts = defaultMatchOpts();
342
- }
343
- /**
344
- * Tune the match index. Each provided key replaces its default; omitted
345
- * keys keep the default. This NEVER enables a capability — match is always
346
- * on for this type. Merge semantics mirror v2's `opts?.x ?? default`.
347
- */
348
- freeTextSearch(opts) {
349
- const defaults = defaultMatchOpts();
350
- this.matchOpts = cloneMatchOpts({
351
- tokenizer: opts?.tokenizer ?? defaults.tokenizer,
352
- token_filters: opts?.token_filters ?? defaults.token_filters,
353
- k: opts?.k ?? defaults.k,
354
- m: opts?.m ?? defaults.m,
355
- include_original: opts?.include_original ?? defaults.include_original
356
- });
357
- return this;
358
- }
359
- /** Emit the encrypt-config column. Byte-identical to a v2 equality+order+match column. */
360
- build() {
361
- return {
362
- cast_as: "string",
363
- indexes: {
364
- unique: { token_filters: [] },
365
- ore: {},
366
- match: cloneMatchOpts(this.matchOpts)
367
- }
368
- };
369
369
  }
370
370
  };
371
371
  var EncryptedIntegerColumn = class extends EncryptedV3Column {
@@ -384,6 +384,14 @@ var EncryptedSmallintOrdOreColumn = class extends EncryptedV3Column {
384
384
  };
385
385
  var EncryptedSmallintOrdColumn = class extends EncryptedV3Column {
386
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
+ };
387
395
  var EncryptedDateColumn = class extends EncryptedV3Column {
388
396
  };
389
397
  var EncryptedDateEqColumn = class extends EncryptedV3Column {
@@ -436,6 +444,21 @@ var EncryptedDoubleOrdOreColumn = class extends EncryptedV3Column {
436
444
  };
437
445
  var EncryptedDoubleOrdColumn = class extends EncryptedV3Column {
438
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
+ };
439
462
 
440
463
  // src/eql/v3/table.ts
441
464
  var EncryptedTable = class {
@@ -446,7 +469,7 @@ var EncryptedTable = class {
446
469
  tableName;
447
470
  columnBuilders;
448
471
  build() {
449
- const builtColumns = {};
472
+ const builtColumns = /* @__PURE__ */ Object.create(null);
450
473
  for (const builder of Object.values(this.columnBuilders)) {
451
474
  const name = builder.getName();
452
475
  if (Object.hasOwn(builtColumns, name)) {
@@ -467,9 +490,19 @@ var EncryptedTable = class {
467
490
  * encrypt config and FFI by DB name — `build()` keys columns by DB name, so
468
491
  * the two only agree when property == name. This recovers the mapping that
469
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.
470
503
  */
471
504
  buildColumnKeyMap() {
472
- const map = {};
505
+ const map = /* @__PURE__ */ Object.create(null);
473
506
  for (const [property, builder] of Object.entries(this.columnBuilders)) {
474
507
  map[property] = builder.getName();
475
508
  }
@@ -531,6 +564,12 @@ var types = {
531
564
  SmallintEq: (name) => new EncryptedSmallintEqColumn(name, SMALLINT_EQ),
532
565
  SmallintOrdOre: (name) => new EncryptedSmallintOrdOreColumn(name, SMALLINT_ORD_ORE),
533
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),
534
573
  // date
535
574
  Date: (name) => new EncryptedDateColumn(name, DATE),
536
575
  DateEq: (name) => new EncryptedDateEqColumn(name, DATE_EQ),
@@ -564,10 +603,21 @@ var types = {
564
603
  Double: (name) => new EncryptedDoubleColumn(name, DOUBLE),
565
604
  DoubleEq: (name) => new EncryptedDoubleEqColumn(name, DOUBLE_EQ),
566
605
  DoubleOrdOre: (name) => new EncryptedDoubleOrdOreColumn(name, DOUBLE_ORD_ORE),
567
- DoubleOrd: (name) => new EncryptedDoubleOrdColumn(name, DOUBLE_ORD)
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.
568
614
  };
569
615
  // Annotate the CommonJS export names for ESM import in node:
570
616
  0 && (module.exports = {
617
+ EncryptedBigintColumn,
618
+ EncryptedBigintEqColumn,
619
+ EncryptedBigintOrdColumn,
620
+ EncryptedBigintOrdOreColumn,
571
621
  EncryptedBooleanColumn,
572
622
  EncryptedDateColumn,
573
623
  EncryptedDateEqColumn,
@@ -581,6 +631,7 @@ var types = {
581
631
  EncryptedIntegerEqColumn,
582
632
  EncryptedIntegerOrdColumn,
583
633
  EncryptedIntegerOrdOreColumn,
634
+ EncryptedJsonColumn,
584
635
  EncryptedNumericColumn,
585
636
  EncryptedNumericEqColumn,
586
637
  EncryptedNumericOrdColumn,