@take-out/postgres 0.1.26 → 0.1.27

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.
@@ -105,7 +105,15 @@ async function migrate(options) {
105
105
  const timeout = migration.timeout ?? defaultTimeout;
106
106
  await withTimeout(migration.up(client), timeout, migration.name), await client.query(`RELEASE SAVEPOINT ${sp}`);
107
107
  } catch (e) {
108
- if (await client.query(`ROLLBACK TO SAVEPOINT ${sp}`), e?.code?.startsWith("42")) console.info(`[migrate] ${migration.name}: ${e.message}, recording as applied`);else throw e;
108
+ if (await client.query(`ROLLBACK TO SAVEPOINT ${sp}`), ["42710",
109
+ // duplicate_object
110
+ "42P07",
111
+ // duplicate_table
112
+ "42701",
113
+ // duplicate_column
114
+ "42P16"
115
+ // invalid_table_definition (e.g. constraint already exists)
116
+ ].includes(e?.code)) console.info(`[migrate] ${migration.name}: ${e.message} (${e.code}), recording as applied`);else throw e;
109
117
  }
110
118
  }
111
119
  await client.query("INSERT INTO public.migrations (name) VALUES ($1)", [migration.name]);
@@ -89,9 +89,18 @@ async function migrate(options) {
89
89
  const timeout = migration.timeout ?? defaultTimeout;
90
90
  await withTimeout(migration.up(client), timeout, migration.name), await client.query(`RELEASE SAVEPOINT ${sp}`);
91
91
  } catch (e) {
92
- if (await client.query(`ROLLBACK TO SAVEPOINT ${sp}`), e?.code?.startsWith("42"))
92
+ if (await client.query(`ROLLBACK TO SAVEPOINT ${sp}`), [
93
+ "42710",
94
+ // duplicate_object
95
+ "42P07",
96
+ // duplicate_table
97
+ "42701",
98
+ // duplicate_column
99
+ "42P16"
100
+ // invalid_table_definition (e.g. constraint already exists)
101
+ ].includes(e?.code))
93
102
  console.info(
94
- `[migrate] ${migration.name}: ${e.message}, recording as applied`
103
+ `[migrate] ${migration.name}: ${e.message} (${e.code}), recording as applied`
95
104
  );
96
105
  else
97
106
  throw e;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/migrate.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["migrations"]
6
6
  }
package/dist/cjs/sql.cjs CHANGED
@@ -28,7 +28,7 @@ module.exports = __toCommonJS(sql_exports);
28
28
  var import_helpers = require("@take-out/helpers");
29
29
  const createSql = pool => (strings, ...values) => {
30
30
  const text = strings.reduce((result, str, i) => result + str + (i < values.length ? `$${i + 1}` : ""), "");
31
- return console.info(`sql: ${(0, import_helpers.ellipsis)(text, 80)}`), pool.query(text.trim(), values);
31
+ return process.env.DEBUG && console.info(`sql: ${(0, import_helpers.ellipsis)(text, 80)}`), pool.query(text.trim(), values);
32
32
  };
33
33
  let defaultPool = null;
34
34
  const setDefaultPool = pool => {
package/dist/cjs/sql.js CHANGED
@@ -22,7 +22,7 @@ module.exports = __toCommonJS(sql_exports);
22
22
  var import_helpers = require("@take-out/helpers");
23
23
  const createSql = (pool) => (strings, ...values) => {
24
24
  const text = strings.reduce((result, str, i) => result + str + (i < values.length ? `$${i + 1}` : ""), "");
25
- return console.info(`sql: ${(0, import_helpers.ellipsis)(text, 80)}`), pool.query(text.trim(), values);
25
+ return process.env.DEBUG && console.info(`sql: ${(0, import_helpers.ellipsis)(text, 80)}`), pool.query(text.trim(), values);
26
26
  };
27
27
  let defaultPool = null;
28
28
  const setDefaultPool = (pool) => {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/sql.ts"],
4
- "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAyB;AASlB,MAAM,YAAY,CAAC,SACjB,CAAC,YAAkC,WAA6C;AACrF,QAAM,OAAO,QAAQ,OAAO,CAAC,QAAQ,KAAK,MACjC,SAAS,OAAO,IAAI,OAAO,SAAS,IAAI,IAAI,CAAC,KAAK,KACxD,EAAE;AAEL,iBAAQ,KAAK,YAAQ,yBAAS,MAAM,EAAE,CAAC,EAAE,GAElC,KAAK,MAAM,KAAK,KAAK,GAAG,MAAM;AACvC;AAIF,IAAI,cAA2B;AAExB,MAAM,iBAAiB,CAAC,SAAe;AAC5C,gBAAc;AAChB,GAEa,MAAM,CACjB,YACG,WAC2B;AAC9B,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,qEAAqE;AAEvF,SAAO,UAAU,WAAW,EAAE,SAAS,GAAG,MAAM;AAClD;",
4
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAyB;AASlB,MAAM,YAAY,CAAC,SACjB,CAAC,YAAkC,WAA6C;AACrF,QAAM,OAAO,QAAQ,OAAO,CAAC,QAAQ,KAAK,MACjC,SAAS,OAAO,IAAI,OAAO,SAAS,IAAI,IAAI,CAAC,KAAK,KACxD,EAAE;AAEL,SAAI,QAAQ,IAAI,SACd,QAAQ,KAAK,YAAQ,yBAAS,MAAM,EAAE,CAAC,EAAE,GAGpC,KAAK,MAAM,KAAK,KAAK,GAAG,MAAM;AACvC;AAIF,IAAI,cAA2B;AAExB,MAAM,iBAAiB,CAAC,SAAe;AAC5C,gBAAc;AAChB,GAEa,MAAM,CACjB,YACG,WAC2B;AAC9B,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,qEAAqE;AAEvF,SAAO,UAAU,WAAW,EAAE,SAAS,GAAG,MAAM;AAClD;",
5
5
  "names": []
6
6
  }
@@ -71,9 +71,18 @@ async function migrate(options) {
71
71
  const timeout = migration.timeout ?? defaultTimeout;
72
72
  await withTimeout(migration.up(client), timeout, migration.name), await client.query(`RELEASE SAVEPOINT ${sp}`);
73
73
  } catch (e) {
74
- if (await client.query(`ROLLBACK TO SAVEPOINT ${sp}`), e?.code?.startsWith("42"))
74
+ if (await client.query(`ROLLBACK TO SAVEPOINT ${sp}`), [
75
+ "42710",
76
+ // duplicate_object
77
+ "42P07",
78
+ // duplicate_table
79
+ "42701",
80
+ // duplicate_column
81
+ "42P16"
82
+ // invalid_table_definition (e.g. constraint already exists)
83
+ ].includes(e?.code))
75
84
  console.info(
76
- `[migrate] ${migration.name}: ${e.message}, recording as applied`
85
+ `[migrate] ${migration.name}: ${e.message} (${e.code}), recording as applied`
77
86
  );
78
87
  else
79
88
  throw e;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/migrate.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["migrations"]
6
6
  }
@@ -80,7 +80,15 @@ async function migrate(options) {
80
80
  const timeout = migration.timeout ?? defaultTimeout;
81
81
  await withTimeout(migration.up(client), timeout, migration.name), await client.query(`RELEASE SAVEPOINT ${sp}`);
82
82
  } catch (e) {
83
- if (await client.query(`ROLLBACK TO SAVEPOINT ${sp}`), e?.code?.startsWith("42")) console.info(`[migrate] ${migration.name}: ${e.message}, recording as applied`);else throw e;
83
+ if (await client.query(`ROLLBACK TO SAVEPOINT ${sp}`), ["42710",
84
+ // duplicate_object
85
+ "42P07",
86
+ // duplicate_table
87
+ "42701",
88
+ // duplicate_column
89
+ "42P16"
90
+ // invalid_table_definition (e.g. constraint already exists)
91
+ ].includes(e?.code)) console.info(`[migrate] ${migration.name}: ${e.message} (${e.code}), recording as applied`);else throw e;
84
92
  }
85
93
  }
86
94
  await client.query("INSERT INTO public.migrations (name) VALUES ($1)", [migration.name]);
@@ -1 +1 @@
1
- {"version":3,"names":["basename","getDBClient","DEFAULT_MIGRATION_TIMEOUT","isServerless","process","env","AWS_LAMBDA_FUNCTION_NAME","AWS_LAMBDA_RUNTIME_API","LAMBDA_RUNTIME_DIR","IS_SERVERLESS","withTimeout","promise","ms","name","timeoutId","timeoutPromise","Promise","_","reject","setTimeout","Error","race","clearTimeout","migrate","options","connectionString","migrationsGlob","createDatabases","onMigrationComplete","gitSha","cvrDb","changeDb","defaultTimeout","client","hasDB","query","rows","length","zeroDBNames","filter","Boolean","dbUrl","appliedMigrations","appliedMigrationNames","Set","map","row","tsMigrationsSorted","Object","entries","sort","a","b","localeCompare","file","run","replace","test","migrations","all","has","error","console","then","migrations2","migration","up","sp","timeout","e","code","startsWith","info","message","release","releaseErr","err","destroyErr","exitProcess","exit"],"sources":["../../src/migrate.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["basename","getDBClient","DEFAULT_MIGRATION_TIMEOUT","isServerless","process","env","AWS_LAMBDA_FUNCTION_NAME","AWS_LAMBDA_RUNTIME_API","LAMBDA_RUNTIME_DIR","IS_SERVERLESS","withTimeout","promise","ms","name","timeoutId","timeoutPromise","Promise","_","reject","setTimeout","Error","race","clearTimeout","migrate","options","connectionString","migrationsGlob","createDatabases","onMigrationComplete","gitSha","cvrDb","changeDb","defaultTimeout","client","hasDB","query","rows","length","zeroDBNames","filter","Boolean","dbUrl","appliedMigrations","appliedMigrationNames","Set","map","row","tsMigrationsSorted","Object","entries","sort","a","b","localeCompare","file","run","replace","test","migrations","all","has","error","console","then","migrations2","migration","up","sp","timeout","e","includes","code","info","message","release","releaseErr","err","destroyErr","exitProcess","exit"],"sources":["../../src/migrate.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/esm/sql.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { ellipsis } from "@take-out/helpers";
2
2
  const createSql = (pool) => (strings, ...values) => {
3
3
  const text = strings.reduce((result, str, i) => result + str + (i < values.length ? `$${i + 1}` : ""), "");
4
- return console.info(`sql: ${ellipsis(text, 80)}`), pool.query(text.trim(), values);
4
+ return process.env.DEBUG && console.info(`sql: ${ellipsis(text, 80)}`), pool.query(text.trim(), values);
5
5
  };
6
6
  let defaultPool = null;
7
7
  const setDefaultPool = (pool) => {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/sql.ts"],
4
- "mappings": "AAAA,SAAS,gBAAgB;AASlB,MAAM,YAAY,CAAC,SACjB,CAAC,YAAkC,WAA6C;AACrF,QAAM,OAAO,QAAQ,OAAO,CAAC,QAAQ,KAAK,MACjC,SAAS,OAAO,IAAI,OAAO,SAAS,IAAI,IAAI,CAAC,KAAK,KACxD,EAAE;AAEL,iBAAQ,KAAK,QAAQ,SAAS,MAAM,EAAE,CAAC,EAAE,GAElC,KAAK,MAAM,KAAK,KAAK,GAAG,MAAM;AACvC;AAIF,IAAI,cAA2B;AAExB,MAAM,iBAAiB,CAAC,SAAe;AAC5C,gBAAc;AAChB,GAEa,MAAM,CACjB,YACG,WAC2B;AAC9B,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,qEAAqE;AAEvF,SAAO,UAAU,WAAW,EAAE,SAAS,GAAG,MAAM;AAClD;",
4
+ "mappings": "AAAA,SAAS,gBAAgB;AASlB,MAAM,YAAY,CAAC,SACjB,CAAC,YAAkC,WAA6C;AACrF,QAAM,OAAO,QAAQ,OAAO,CAAC,QAAQ,KAAK,MACjC,SAAS,OAAO,IAAI,OAAO,SAAS,IAAI,IAAI,CAAC,KAAK,KACxD,EAAE;AAEL,SAAI,QAAQ,IAAI,SACd,QAAQ,KAAK,QAAQ,SAAS,MAAM,EAAE,CAAC,EAAE,GAGpC,KAAK,MAAM,KAAK,KAAK,GAAG,MAAM;AACvC;AAIF,IAAI,cAA2B;AAExB,MAAM,iBAAiB,CAAC,SAAe;AAC5C,gBAAc;AAChB,GAEa,MAAM,CACjB,YACG,WAC2B;AAC9B,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,qEAAqE;AAEvF,SAAO,UAAU,WAAW,EAAE,SAAS,GAAG,MAAM;AAClD;",
5
5
  "names": []
6
6
  }
package/dist/esm/sql.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { ellipsis } from "@take-out/helpers";
2
2
  const createSql = pool => (strings, ...values) => {
3
3
  const text = strings.reduce((result, str, i) => result + str + (i < values.length ? `$${i + 1}` : ""), "");
4
- return console.info(`sql: ${ellipsis(text, 80)}`), pool.query(text.trim(), values);
4
+ return process.env.DEBUG && console.info(`sql: ${ellipsis(text, 80)}`), pool.query(text.trim(), values);
5
5
  };
6
6
  let defaultPool = null;
7
7
  const setDefaultPool = pool => {
@@ -1 +1 @@
1
- {"version":3,"names":["ellipsis","createSql","pool","strings","values","text","reduce","result","str","i","length","console","info","query","trim","defaultPool","setDefaultPool","sql","Error"],"sources":["../../src/sql.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,QAAgB;AASlB,MAAMC,SAAA,GAAaC,IAAA,IACjB,CAACC,OAAA,KAAkCC,MAAA,KAA6C;EACrF,MAAMC,IAAA,GAAOF,OAAA,CAAQG,MAAA,CAAO,CAACC,MAAA,EAAQC,GAAA,EAAKC,CAAA,KACjCF,MAAA,GAASC,GAAA,IAAOC,CAAA,GAAIL,MAAA,CAAOM,MAAA,GAAS,IAAID,CAAA,GAAI,CAAC,KAAK,KACxD,EAAE;EAEL,OAAAE,OAAA,CAAQC,IAAA,CAAK,QAAQZ,QAAA,CAASK,IAAA,EAAM,EAAE,CAAC,EAAE,GAElCH,IAAA,CAAKW,KAAA,CAAMR,IAAA,CAAKS,IAAA,CAAK,GAAGV,MAAM;AACvC;AAIF,IAAIW,WAAA,GAA2B;AAExB,MAAMC,cAAA,GAAkBd,IAAA,IAAe;IAC5Ca,WAAA,GAAcb,IAAA;EAChB;EAEae,GAAA,GAAMA,CACjBd,OAAA,KACGC,MAAA,KAC2B;IAC9B,IAAI,CAACW,WAAA,EACH,MAAM,IAAIG,KAAA,CAAM,qEAAqE;IAEvF,OAAOjB,SAAA,CAAUc,WAAW,EAAEZ,OAAA,EAAS,GAAGC,MAAM;EAClD","ignoreList":[]}
1
+ {"version":3,"names":["ellipsis","createSql","pool","strings","values","text","reduce","result","str","i","length","process","env","DEBUG","console","info","query","trim","defaultPool","setDefaultPool","sql","Error"],"sources":["../../src/sql.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,QAAgB;AASlB,MAAMC,SAAA,GAAaC,IAAA,IACjB,CAACC,OAAA,KAAkCC,MAAA,KAA6C;EACrF,MAAMC,IAAA,GAAOF,OAAA,CAAQG,MAAA,CAAO,CAACC,MAAA,EAAQC,GAAA,EAAKC,CAAA,KACjCF,MAAA,GAASC,GAAA,IAAOC,CAAA,GAAIL,MAAA,CAAOM,MAAA,GAAS,IAAID,CAAA,GAAI,CAAC,KAAK,KACxD,EAAE;EAEL,OAAIE,OAAA,CAAQC,GAAA,CAAIC,KAAA,IACdC,OAAA,CAAQC,IAAA,CAAK,QAAQf,QAAA,CAASK,IAAA,EAAM,EAAE,CAAC,EAAE,GAGpCH,IAAA,CAAKc,KAAA,CAAMX,IAAA,CAAKY,IAAA,CAAK,GAAGb,MAAM;AACvC;AAIF,IAAIc,WAAA,GAA2B;AAExB,MAAMC,cAAA,GAAkBjB,IAAA,IAAe;IAC5CgB,WAAA,GAAchB,IAAA;EAChB;EAEakB,GAAA,GAAMA,CACjBjB,OAAA,KACGC,MAAA,KAC2B;IAC9B,IAAI,CAACc,WAAA,EACH,MAAM,IAAIG,KAAA,CAAM,qEAAqE;IAEvF,OAAOpB,SAAA,CAAUiB,WAAW,EAAEf,OAAA,EAAS,GAAGC,MAAM;EAClD","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@take-out/postgres",
3
- "version": "0.1.26",
3
+ "version": "0.1.27",
4
4
  "sideEffects": false,
5
5
  "source": "src/index.ts",
6
6
  "main": "dist/cjs",
@@ -43,7 +43,7 @@
43
43
  }
44
44
  },
45
45
  "dependencies": {
46
- "@take-out/helpers": "0.1.26",
46
+ "@take-out/helpers": "0.1.27",
47
47
  "async-retry": "^1.3.3",
48
48
  "citty": "^0.1.6"
49
49
  },
package/src/migrate.ts CHANGED
@@ -164,12 +164,22 @@ export async function migrate(options: MigrateOptions) {
164
164
  await client.query(`RELEASE SAVEPOINT ${sp}`)
165
165
  } catch (e: any) {
166
166
  await client.query(`ROLLBACK TO SAVEPOINT ${sp}`)
167
- // pg "duplicate" class errors: table, column, object, etc
168
- if (e?.code?.startsWith('42')) {
167
+ // only ignore actual "duplicate" errors - NOT all 42xxx errors!
168
+ // 42xxx is the entire "Syntax Error or Access Rule Violation" class
169
+ // which includes undefined_table (42P01), syntax_error (42601), etc.
170
+ // we only want to skip migrations where the object already exists:
171
+ const duplicateErrorCodes = [
172
+ '42710', // duplicate_object
173
+ '42P07', // duplicate_table
174
+ '42701', // duplicate_column
175
+ '42P16', // invalid_table_definition (e.g. constraint already exists)
176
+ ]
177
+ if (duplicateErrorCodes.includes(e?.code)) {
169
178
  console.info(
170
- `[migrate] ${migration.name}: ${e.message}, recording as applied`
179
+ `[migrate] ${migration.name}: ${e.message} (${e.code}), recording as applied`
171
180
  )
172
181
  } else {
182
+ // any other error should fail the migration
173
183
  throw e
174
184
  }
175
185
  }
package/src/sql.ts CHANGED
@@ -13,7 +13,9 @@ export const createSql = (pool: Pool) => {
13
13
  return result + str + (i < values.length ? `$${i + 1}` : '')
14
14
  }, '')
15
15
 
16
- console.info(`sql: ${ellipsis(text, 80)}`)
16
+ if (process.env.DEBUG) {
17
+ console.info(`sql: ${ellipsis(text, 80)}`)
18
+ }
17
19
 
18
20
  return pool.query(text.trim(), values)
19
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAEpC,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1C,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAKD,MAAM,MAAM,cAAc,GAAG;IAC3B,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IACtD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACzC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAwBD,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,iBAwJpD"}
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAEpC,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1C,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAKD,MAAM,MAAM,cAAc,GAAG;IAC3B,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IACtD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACzC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAwBD,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,iBAkKpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,IAAI,CAAA;AAE3C,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,GAAG,EAAE,CAAA;CACd,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,MAAM,IAAI,MAC1B,SAAS,oBAAoB,EAAE,GAAG,QAAQ,GAAG,EAAE,KAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CASnF,CAAA;AAKD,eAAO,MAAM,cAAc,GAAI,MAAM,IAAI,SAExC,CAAA;AAED,eAAO,MAAM,GAAG,GACd,SAAS,oBAAoB,EAC7B,GAAG,QAAQ,GAAG,EAAE,KACf,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAK1B,CAAA"}
1
+ {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,IAAI,CAAA;AAE3C,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,GAAG,EAAE,CAAA;CACd,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,MAAM,IAAI,MAC1B,SAAS,oBAAoB,EAAE,GAAG,QAAQ,GAAG,EAAE,KAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAWnF,CAAA;AAKD,eAAO,MAAM,cAAc,GAAI,MAAM,IAAI,SAExC,CAAA;AAED,eAAO,MAAM,GAAG,GACd,SAAS,oBAAoB,EAC7B,GAAG,QAAQ,GAAG,EAAE,KACf,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAK1B,CAAA"}