@cipherstash/stack 0.2.0 → 0.3.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 (64) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -2
  3. package/dist/bin/stash.js +63 -45
  4. package/dist/bin/stash.js.map +1 -1
  5. package/dist/{chunk-5G4F4JJG.js → chunk-JLI27P46.js} +1 -1
  6. package/dist/chunk-JLI27P46.js.map +1 -0
  7. package/dist/{chunk-LHZ6KZIG.js → chunk-MW6D52V2.js} +42 -31
  8. package/dist/chunk-MW6D52V2.js.map +1 -0
  9. package/dist/{chunk-5DCT6YU2.js → chunk-OAPLZLR5.js} +7 -3
  10. package/dist/{chunk-5DCT6YU2.js.map → chunk-OAPLZLR5.js.map} +1 -1
  11. package/dist/{chunk-7XRPN2KX.js → chunk-TBAIVO6T.js} +26 -23
  12. package/dist/chunk-TBAIVO6T.js.map +1 -0
  13. package/dist/{client-D-ZH8SB2.d.cts → client-Bf0Xw2xo.d.cts} +19 -16
  14. package/dist/{client-BV9pXC-d.d.ts → client-Kfp8OsPB.d.ts} +19 -16
  15. package/dist/client.cjs +25 -22
  16. package/dist/client.cjs.map +1 -1
  17. package/dist/client.d.cts +2 -2
  18. package/dist/client.d.ts +2 -2
  19. package/dist/client.js +5 -5
  20. package/dist/drizzle/index.cjs +19 -16
  21. package/dist/drizzle/index.cjs.map +1 -1
  22. package/dist/drizzle/index.d.cts +5 -5
  23. package/dist/drizzle/index.d.ts +5 -5
  24. package/dist/drizzle/index.js +2 -2
  25. package/dist/drizzle/index.js.map +1 -1
  26. package/dist/dynamodb/index.cjs.map +1 -1
  27. package/dist/dynamodb/index.d.cts +10 -10
  28. package/dist/dynamodb/index.d.ts +10 -10
  29. package/dist/dynamodb/index.js.map +1 -1
  30. package/dist/identity/index.cjs +6 -2
  31. package/dist/identity/index.cjs.map +1 -1
  32. package/dist/identity/index.js +1 -1
  33. package/dist/index.cjs +67 -49
  34. package/dist/index.cjs.map +1 -1
  35. package/dist/index.d.cts +3 -3
  36. package/dist/index.d.ts +3 -3
  37. package/dist/index.js +7 -7
  38. package/dist/schema/index.cjs +31 -28
  39. package/dist/schema/index.cjs.map +1 -1
  40. package/dist/schema/index.d.cts +1 -1
  41. package/dist/schema/index.d.ts +1 -1
  42. package/dist/schema/index.js +11 -11
  43. package/dist/secrets/index.cjs +63 -45
  44. package/dist/secrets/index.cjs.map +1 -1
  45. package/dist/secrets/index.d.cts +1 -1
  46. package/dist/secrets/index.d.ts +1 -1
  47. package/dist/secrets/index.js +4 -4
  48. package/dist/secrets/index.js.map +1 -1
  49. package/dist/supabase/index.cjs +7 -7
  50. package/dist/supabase/index.cjs.map +1 -1
  51. package/dist/supabase/index.d.cts +3 -3
  52. package/dist/supabase/index.d.ts +3 -3
  53. package/dist/supabase/index.js +3 -3
  54. package/dist/supabase/index.js.map +1 -1
  55. package/dist/{types-public-Dfg-hkuQ.d.cts → types-public-0CzBV45X.d.cts} +70 -52
  56. package/dist/{types-public-Dfg-hkuQ.d.ts → types-public-0CzBV45X.d.ts} +70 -52
  57. package/dist/types-public.cjs.map +1 -1
  58. package/dist/types-public.d.cts +1 -1
  59. package/dist/types-public.d.ts +1 -1
  60. package/dist/types-public.js +1 -1
  61. package/package.json +1 -1
  62. package/dist/chunk-5G4F4JJG.js.map +0 -1
  63. package/dist/chunk-7XRPN2KX.js.map +0 -1
  64. package/dist/chunk-LHZ6KZIG.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -33,8 +33,8 @@ __export(index_exports, {
33
33
  Encryption: () => Encryption,
34
34
  EncryptionErrorTypes: () => EncryptionErrorTypes,
35
35
  encryptedColumn: () => encryptedColumn,
36
+ encryptedField: () => encryptedField,
36
37
  encryptedTable: () => encryptedTable,
37
- encryptedValue: () => encryptedValue,
38
38
  getErrorMessage: () => getErrorMessage
39
39
  });
40
40
  module.exports = __toCommonJS(index_exports);
@@ -98,7 +98,7 @@ var encryptConfigSchema = import_zod.z.object({
98
98
  v: import_zod.z.number(),
99
99
  tables: tablesSchema
100
100
  });
101
- var ProtectValue = class {
101
+ var EncryptedField = class {
102
102
  valueName;
103
103
  castAsValue;
104
104
  constructor(valueName) {
@@ -106,20 +106,20 @@ var ProtectValue = class {
106
106
  this.castAsValue = "string";
107
107
  }
108
108
  /**
109
- * Set or override the plaintext data type for this value.
109
+ * Set or override the plaintext data type for this field.
110
110
  *
111
111
  * By default all values are treated as `'string'`. Use this method to specify
112
112
  * a different type so the encryption layer knows how to encode the plaintext
113
113
  * before encrypting.
114
114
  *
115
115
  * @param castAs - The plaintext data type: `'string'`, `'number'`, `'boolean'`, `'date'`, `'bigint'`, or `'json'`.
116
- * @returns This `ProtectValue` instance for method chaining.
116
+ * @returns This `EncryptedField` instance for method chaining.
117
117
  *
118
118
  * @example
119
119
  * ```typescript
120
- * import { encryptedValue } from "@cipherstash/stack/schema"
120
+ * import { encryptedField } from "@cipherstash/stack/schema"
121
121
  *
122
- * const age = encryptedValue("age").dataType("number")
122
+ * const age = encryptedField("age").dataType("number")
123
123
  * ```
124
124
  */
125
125
  dataType(castAs) {
@@ -136,7 +136,7 @@ var ProtectValue = class {
136
136
  return this.valueName;
137
137
  }
138
138
  };
139
- var ProtectColumn = class {
139
+ var EncryptedColumn = class {
140
140
  columnName;
141
141
  castAsValue;
142
142
  indexesValue = {};
@@ -152,7 +152,7 @@ var ProtectColumn = class {
152
152
  * before encrypting.
153
153
  *
154
154
  * @param castAs - The plaintext data type: `'string'`, `'number'`, `'boolean'`, `'date'`, `'bigint'`, or `'json'`.
155
- * @returns This `ProtectColumn` instance for method chaining.
155
+ * @returns This `EncryptedColumn` instance for method chaining.
156
156
  *
157
157
  * @example
158
158
  * ```typescript
@@ -171,7 +171,7 @@ var ProtectColumn = class {
171
171
  * ORE allows sorting, comparison, and range queries on encrypted data.
172
172
  * Use with `encryptQuery` and `queryType: 'orderAndRange'`.
173
173
  *
174
- * @returns This `ProtectColumn` instance for method chaining.
174
+ * @returns This `EncryptedColumn` instance for method chaining.
175
175
  *
176
176
  * @example
177
177
  * ```typescript
@@ -194,7 +194,7 @@ var ProtectColumn = class {
194
194
  *
195
195
  * @param tokenFilters - Optional array of token filters (e.g. `[{ kind: 'downcase' }]`).
196
196
  * When omitted, no token filters are applied.
197
- * @returns This `ProtectColumn` instance for method chaining.
197
+ * @returns This `EncryptedColumn` instance for method chaining.
198
198
  *
199
199
  * @example
200
200
  * ```typescript
@@ -219,7 +219,7 @@ var ProtectColumn = class {
219
219
  *
220
220
  * @param opts - Optional match index configuration. Defaults to 3-character ngram
221
221
  * tokenization with a downcase filter, `k=6`, `m=2048`, and `include_original=true`.
222
- * @returns This `ProtectColumn` instance for method chaining.
222
+ * @returns This `EncryptedColumn` instance for method chaining.
223
223
  *
224
224
  * @example
225
225
  * ```typescript
@@ -264,7 +264,7 @@ var ProtectColumn = class {
264
264
  * the plaintext type: strings become selector queries, objects/arrays become
265
265
  * containment queries.
266
266
  *
267
- * @returns This `ProtectColumn` instance for method chaining.
267
+ * @returns This `EncryptedColumn` instance for method chaining.
268
268
  *
269
269
  * @example
270
270
  * ```typescript
@@ -290,7 +290,7 @@ var ProtectColumn = class {
290
290
  return this.columnName;
291
291
  }
292
292
  };
293
- var ProtectTable = class {
293
+ var EncryptedTable = class {
294
294
  constructor(tableName, columnBuilders) {
295
295
  this.tableName = tableName;
296
296
  this.columnBuilders = columnBuilders;
@@ -317,7 +317,7 @@ var ProtectTable = class {
317
317
  build() {
318
318
  const builtColumns = {};
319
319
  const processColumn = (builder, colName) => {
320
- if (builder instanceof ProtectColumn) {
320
+ if (builder instanceof EncryptedColumn) {
321
321
  const builtColumn = builder.build();
322
322
  if (builtColumn.cast_as === "json" && builtColumn.indexes.ste_vec?.prefix === "enabled") {
323
323
  builtColumns[colName] = {
@@ -334,7 +334,7 @@ var ProtectTable = class {
334
334
  }
335
335
  } else {
336
336
  for (const [key, value] of Object.entries(builder)) {
337
- if (value instanceof ProtectValue) {
337
+ if (value instanceof EncryptedField) {
338
338
  builtColumns[value.getName()] = value.build();
339
339
  } else {
340
340
  processColumn(value, key);
@@ -352,7 +352,10 @@ var ProtectTable = class {
352
352
  }
353
353
  };
354
354
  function encryptedTable(tableName, columns) {
355
- const tableBuilder = new ProtectTable(tableName, columns);
355
+ const tableBuilder = new EncryptedTable(
356
+ tableName,
357
+ columns
358
+ );
356
359
  for (const [colName, colBuilder] of Object.entries(columns)) {
357
360
  ;
358
361
  tableBuilder[colName] = colBuilder;
@@ -360,10 +363,10 @@ function encryptedTable(tableName, columns) {
360
363
  return tableBuilder;
361
364
  }
362
365
  function encryptedColumn(columnName) {
363
- return new ProtectColumn(columnName);
366
+ return new EncryptedColumn(columnName);
364
367
  }
365
- function encryptedValue(valueName) {
366
- return new ProtectValue(valueName);
368
+ function encryptedField(valueName) {
369
+ return new EncryptedField(valueName);
367
370
  }
368
371
  function buildEncryptConfig(...protectTables) {
369
372
  const config = {
@@ -457,7 +460,7 @@ function initStackLogger(config) {
457
460
  const rates = samplingFromEnv();
458
461
  (0, import_evlog.initLogger)({
459
462
  env: { service: "@cipherstash/stack" },
460
- enabled: config?.enabled ?? true,
463
+ enabled: config?.enabled ?? !!rates,
461
464
  pretty: config?.pretty,
462
465
  ...rates && { sampling: { rates } },
463
466
  ...config?.drain && { drain: config.drain }
@@ -470,7 +473,11 @@ function safeMessage(args) {
470
473
  var logger = {
471
474
  debug(...args) {
472
475
  const log = (0, import_evlog.createRequestLogger)();
473
- log.set({ level: "debug", source: "@cipherstash/stack", message: safeMessage(args) });
476
+ log.set({
477
+ level: "debug",
478
+ source: "@cipherstash/stack",
479
+ message: safeMessage(args)
480
+ });
474
481
  log.emit();
475
482
  },
476
483
  info(...args) {
@@ -491,7 +498,7 @@ var logger = {
491
498
  }
492
499
  };
493
500
 
494
- // src/encryption/ffi/index.ts
501
+ // src/encryption/index.ts
495
502
  var import_result11 = require("@byteslice/result");
496
503
  var import_protect_ffi9 = require("@cipherstash/protect-ffi");
497
504
 
@@ -534,18 +541,18 @@ function isEncryptedPayload(value) {
534
541
  return true;
535
542
  }
536
543
 
537
- // src/encryption/ffi/helpers/type-guards.ts
544
+ // src/encryption/helpers/type-guards.ts
538
545
  function isScalarQueryTermArray(value) {
539
546
  return Array.isArray(value) && value.length > 0 && typeof value[0] === "object" && value[0] !== null && "column" in value[0] && "table" in value[0];
540
547
  }
541
548
 
542
- // src/encryption/ffi/helpers/error-code.ts
549
+ // src/encryption/helpers/error-code.ts
543
550
  var import_protect_ffi = require("@cipherstash/protect-ffi");
544
551
  function getErrorCode(error) {
545
552
  return error instanceof import_protect_ffi.ProtectError ? error.code : void 0;
546
553
  }
547
554
 
548
- // src/encryption/ffi/operations/batch-encrypt-query.ts
555
+ // src/encryption/operations/batch-encrypt-query.ts
549
556
  var import_result = require("@byteslice/result");
550
557
  var import_protect_ffi2 = require("@cipherstash/protect-ffi");
551
558
 
@@ -563,7 +570,7 @@ var queryTypeToQueryOp = {
563
570
  steVecTerm: "ste_vec_term"
564
571
  };
565
572
 
566
- // src/encryption/ffi/helpers/infer-index-type.ts
573
+ // src/encryption/helpers/infer-index-type.ts
567
574
  function inferIndexType(column) {
568
575
  const config = column.build();
569
576
  const indexes = config.indexes;
@@ -623,7 +630,7 @@ function resolveIndexType(column, queryType, plaintext) {
623
630
  return { indexType };
624
631
  }
625
632
 
626
- // src/encryption/ffi/helpers/validation.ts
633
+ // src/encryption/helpers/validation.ts
627
634
  function validateNumericValue(value) {
628
635
  if (typeof value === "number" && Number.isNaN(value)) {
629
636
  return {
@@ -659,7 +666,7 @@ function assertValueIndexCompatibility(value, indexType, columnName) {
659
666
  }
660
667
  }
661
668
 
662
- // src/encryption/ffi/operations/base-operation.ts
669
+ // src/encryption/operations/base-operation.ts
663
670
  var EncryptionOperation = class {
664
671
  auditMetadata;
665
672
  /**
@@ -687,7 +694,7 @@ var EncryptionOperation = class {
687
694
  }
688
695
  };
689
696
 
690
- // src/encryption/ffi/operations/batch-encrypt-query.ts
697
+ // src/encryption/operations/batch-encrypt-query.ts
691
698
  function filterNullTerms(terms) {
692
699
  const nullIndices = /* @__PURE__ */ new Set();
693
700
  const nonNullTerms = [];
@@ -842,7 +849,7 @@ var BatchEncryptQueryOperationWithLockContext = class extends EncryptionOperatio
842
849
  }
843
850
  };
844
851
 
845
- // src/encryption/ffi/operations/bulk-decrypt.ts
852
+ // src/encryption/operations/bulk-decrypt.ts
846
853
  var import_result2 = require("@byteslice/result");
847
854
  var import_protect_ffi3 = require("@cipherstash/protect-ffi");
848
855
  var createDecryptPayloads = (encryptedPayloads, lockContext) => {
@@ -993,10 +1000,10 @@ var BulkDecryptOperationWithLockContext = class extends EncryptionOperation {
993
1000
  }
994
1001
  };
995
1002
 
996
- // src/encryption/ffi/operations/bulk-decrypt-models.ts
1003
+ // src/encryption/operations/bulk-decrypt-models.ts
997
1004
  var import_result3 = require("@byteslice/result");
998
1005
 
999
- // src/encryption/ffi/model-helpers.ts
1006
+ // src/encryption/helpers/model-helpers.ts
1000
1007
  var import_protect_ffi4 = require("@cipherstash/protect-ffi");
1001
1008
  function setNestedValue(obj, path2, value) {
1002
1009
  const FORBIDDEN_KEYS = ["__proto__", "prototype", "constructor"];
@@ -1511,7 +1518,7 @@ async function bulkEncryptModelsWithLockContext(models, table, client, lockConte
1511
1518
  });
1512
1519
  }
1513
1520
 
1514
- // src/encryption/ffi/operations/bulk-decrypt-models.ts
1521
+ // src/encryption/operations/bulk-decrypt-models.ts
1515
1522
  var BulkDecryptModelsOperation = class extends EncryptionOperation {
1516
1523
  client;
1517
1524
  models;
@@ -1608,7 +1615,7 @@ var BulkDecryptModelsOperationWithLockContext = class extends EncryptionOperatio
1608
1615
  }
1609
1616
  };
1610
1617
 
1611
- // src/encryption/ffi/operations/bulk-encrypt.ts
1618
+ // src/encryption/operations/bulk-encrypt.ts
1612
1619
  var import_result4 = require("@byteslice/result");
1613
1620
  var import_protect_ffi5 = require("@cipherstash/protect-ffi");
1614
1621
  var createEncryptPayloads = (plaintexts, column, table, lockContext) => {
@@ -1773,7 +1780,7 @@ var BulkEncryptOperationWithLockContext = class extends EncryptionOperation {
1773
1780
  }
1774
1781
  };
1775
1782
 
1776
- // src/encryption/ffi/operations/bulk-encrypt-models.ts
1783
+ // src/encryption/operations/bulk-encrypt-models.ts
1777
1784
  var import_result5 = require("@byteslice/result");
1778
1785
  var BulkEncryptModelsOperation = class extends EncryptionOperation {
1779
1786
  client;
@@ -1882,7 +1889,7 @@ var BulkEncryptModelsOperationWithLockContext = class extends EncryptionOperatio
1882
1889
  }
1883
1890
  };
1884
1891
 
1885
- // src/encryption/ffi/operations/decrypt.ts
1892
+ // src/encryption/operations/decrypt.ts
1886
1893
  var import_result6 = require("@byteslice/result");
1887
1894
  var import_protect_ffi6 = require("@cipherstash/protect-ffi");
1888
1895
  var DecryptOperation = class extends EncryptionOperation {
@@ -1989,7 +1996,7 @@ var DecryptOperationWithLockContext = class extends EncryptionOperation {
1989
1996
  }
1990
1997
  };
1991
1998
 
1992
- // src/encryption/ffi/operations/decrypt-model.ts
1999
+ // src/encryption/operations/decrypt-model.ts
1993
2000
  var import_result7 = require("@byteslice/result");
1994
2001
  var DecryptModelOperation = class extends EncryptionOperation {
1995
2002
  client;
@@ -2085,7 +2092,7 @@ var DecryptModelOperationWithLockContext = class extends EncryptionOperation {
2085
2092
  }
2086
2093
  };
2087
2094
 
2088
- // src/encryption/ffi/operations/encrypt.ts
2095
+ // src/encryption/operations/encrypt.ts
2089
2096
  var import_result8 = require("@byteslice/result");
2090
2097
  var import_protect_ffi7 = require("@cipherstash/protect-ffi");
2091
2098
  var EncryptOperation = class extends EncryptionOperation {
@@ -2211,7 +2218,7 @@ var EncryptOperationWithLockContext = class extends EncryptionOperation {
2211
2218
  }
2212
2219
  };
2213
2220
 
2214
- // src/encryption/ffi/operations/encrypt-model.ts
2221
+ // src/encryption/operations/encrypt-model.ts
2215
2222
  var import_result9 = require("@byteslice/result");
2216
2223
  var EncryptModelOperation = class extends EncryptionOperation {
2217
2224
  client;
@@ -2318,7 +2325,7 @@ var EncryptModelOperationWithLockContext = class extends EncryptionOperation {
2318
2325
  }
2319
2326
  };
2320
2327
 
2321
- // src/encryption/ffi/operations/encrypt-query.ts
2328
+ // src/encryption/operations/encrypt-query.ts
2322
2329
  var import_result10 = require("@byteslice/result");
2323
2330
  var import_protect_ffi8 = require("@cipherstash/protect-ffi");
2324
2331
  var EncryptQueryOperation = class extends EncryptionOperation {
@@ -2468,9 +2475,9 @@ var EncryptQueryOperationWithLockContext = class extends EncryptionOperation {
2468
2475
  }
2469
2476
  };
2470
2477
 
2471
- // src/encryption/ffi/index.ts
2478
+ // src/encryption/index.ts
2472
2479
  var noClientError = () => new Error(
2473
- "The EQL client has not been initialized. Please call init() before using the client."
2480
+ "The Encryption client has not been initialized. Please call init() before using the client."
2474
2481
  );
2475
2482
  var EncryptionClient = class {
2476
2483
  client;
@@ -2493,7 +2500,7 @@ var EncryptionClient = class {
2493
2500
  config.encryptConfig
2494
2501
  );
2495
2502
  logger.debug(
2496
- "Initializing the Protect.js client with the following encrypt config:",
2503
+ "Initializing the Encryption client with the following config:",
2497
2504
  {
2498
2505
  encryptConfig: validated
2499
2506
  }
@@ -2509,7 +2516,7 @@ var EncryptionClient = class {
2509
2516
  }
2510
2517
  });
2511
2518
  this.encryptConfig = validated;
2512
- logger.debug("Successfully initialized the Protect.js client.");
2519
+ logger.debug("Successfully initialized the Encryption client.");
2513
2520
  return this;
2514
2521
  },
2515
2522
  (error) => ({
@@ -2522,7 +2529,7 @@ var EncryptionClient = class {
2522
2529
  * Encrypt a value - returns a promise which resolves to an encrypted value.
2523
2530
  *
2524
2531
  * @param plaintext - The plaintext value to be encrypted. Can be null.
2525
- * @param opts - Options specifying the column and table for encryption.
2532
+ * @param opts - Options specifying the column (or nested field) and table for encryption. See {@link EncryptOptions}.
2526
2533
  * @returns An EncryptOperation that can be awaited or chained with additional methods.
2527
2534
  *
2528
2535
  * @example
@@ -2585,8 +2592,11 @@ var EncryptionClient = class {
2585
2592
  * .withLockContext(lockContext)
2586
2593
  * ```
2587
2594
  *
2595
+ * @see {@link EncryptOptions}
2588
2596
  * @see {@link Result}
2589
2597
  * @see {@link encryptedTable}
2598
+ * @see {@link encryptedColumn}
2599
+ * @see {@link encryptedField}
2590
2600
  * @see {@link LockContext}
2591
2601
  * @see {@link EncryptOperation}
2592
2602
  */
@@ -2694,7 +2704,11 @@ var EncryptionClient = class {
2694
2704
  * ```
2695
2705
  */
2696
2706
  encryptModel(input, table) {
2697
- return new EncryptModelOperation(this.client, input, table);
2707
+ return new EncryptModelOperation(
2708
+ this.client,
2709
+ input,
2710
+ table
2711
+ );
2698
2712
  }
2699
2713
  /**
2700
2714
  * Decrypt a model (object) whose fields contain encrypted values.
@@ -2773,7 +2787,11 @@ var EncryptionClient = class {
2773
2787
  * ```
2774
2788
  */
2775
2789
  bulkEncryptModels(input, table) {
2776
- return new BulkEncryptModelsOperation(this.client, input, table);
2790
+ return new BulkEncryptModelsOperation(
2791
+ this.client,
2792
+ input,
2793
+ table
2794
+ );
2777
2795
  }
2778
2796
  /**
2779
2797
  * Decrypt multiple models (objects) in a single bulk operation.
@@ -2814,7 +2832,7 @@ var EncryptionClient = class {
2814
2832
  * your application data. Null plaintext values are preserved as null.
2815
2833
  *
2816
2834
  * @param plaintexts - An array of objects with `plaintext` (and optional `id`) fields.
2817
- * @param opts - Options specifying the target column and table for encryption.
2835
+ * @param opts - Options specifying the target column (or nested {@link encryptedField}) and table. See {@link EncryptOptions}.
2818
2836
  * @returns A `BulkEncryptOperation` that can be awaited to get a `Result`
2819
2837
  * containing an array of `{ id?, data: Encrypted }` objects, or an `EncryptionError`.
2820
2838
  *
@@ -2923,8 +2941,8 @@ var Encryption = async (config) => {
2923
2941
  Encryption,
2924
2942
  EncryptionErrorTypes,
2925
2943
  encryptedColumn,
2944
+ encryptedField,
2926
2945
  encryptedTable,
2927
- encryptedValue,
2928
2946
  getErrorMessage
2929
2947
  });
2930
2948
  //# sourceMappingURL=index.cjs.map