@sqlrooms/duckdb 0.13.0 → 0.13.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.
|
@@ -39,7 +39,7 @@ export function literalToSQL(value) {
|
|
|
39
39
|
case 'number':
|
|
40
40
|
return Number.isFinite(value) ? `${value}` : 'NULL';
|
|
41
41
|
case 'string':
|
|
42
|
-
return `'${value.replace(
|
|
42
|
+
return `'${value.replace(/'/g, "''")}'`;
|
|
43
43
|
case 'boolean':
|
|
44
44
|
return value ? 'TRUE' : 'FALSE';
|
|
45
45
|
default:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-from.js","sourceRoot":"","sources":["../../../src/connectors/load/sql-from.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,mEAAmE;AAEnE;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CACrB,IAA+B,EAC/B,EACE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MACW,EAAE;IAErD,IAAI,IAAI,GAAa,EAAE,CAAC;IACxB,IAAI,SAAiC,CAAC;IACtC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,IAAI,GAAG,OAAO,CAAC;QACf,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,OAAO,CAAC;QACpB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAClB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,SAAS,CAAC,CAAC,CAAC,GAAG,CACxD,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QACtD,KAAK,QAAQ;YACX,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"sql-from.js","sourceRoot":"","sources":["../../../src/connectors/load/sql-from.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,mEAAmE;AAEnE;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CACrB,IAA+B,EAC/B,EACE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MACW,EAAE;IAErD,IAAI,IAAI,GAAa,EAAE,CAAC;IACxB,IAAI,SAAiC,CAAC;IACtC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,IAAI,GAAG,OAAO,CAAC;QACf,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,OAAO,CAAC;QACpB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAClB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,SAAS,CAAC,CAAC,CAAC,GAAG,CACxD,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QACtD,KAAK,QAAQ;YACX,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;QAC1C,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAClC;YACE,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAClB,OAAO,MAAM,CAAC;YAChB,CAAC;iBAAM,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;gBACjC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;gBAClB,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBAAE,OAAO,MAAM,CAAC;gBACpC,MAAM,CAAC,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;gBACjC,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;gBAC7B,OAAO,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC7B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW;oBACzC,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,YAAY;YACrC,CAAC;iBAAM,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;gBACnC,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,oCAAoC;gBACpC,OAAO,GAAG,KAAK,EAAE,CAAC;YACpB,CAAC;IACL,CAAC;AACH,CAAC","sourcesContent":["// Adapted from https://github.com/uwdata/mosaic/blob/main/packages/sql/src/load/\n// BSD 3-Clause License Copyright (c) 2023, UW Interactive Data Lab\n\n/**\n * Create a SQL query that embeds the given data for loading.\n * @param {*} data The dataset as an array of objects.\n * @param {object} [options] Loading options.\n * @param {string[]|Record<string,string>} [options.columns] The columns to include.\n * If not specified, the keys of the first data object are used.\n * @returns {string} SQL query string to load data.\n */\nexport function sqlFrom(\n data: Record<string, unknown>[],\n {\n columns = Object.keys(data?.[0] || {}),\n }: {columns?: string[] | Record<string, string>} = {},\n) {\n let keys: string[] = [];\n let columnMap: Record<string, string>;\n if (Array.isArray(columns)) {\n keys = columns;\n columnMap = keys.reduce((m, k) => ({...m, [k]: k}), {});\n } else {\n columnMap = columns;\n keys = Object.keys(columns);\n }\n if (!keys.length) {\n throw new Error('Can not create table from empty column set.');\n }\n const subq = [];\n for (const datum of data) {\n const sel = keys.map(\n (k) => `${literalToSQL(datum[k])} AS \"${columnMap[k]}\"`,\n );\n subq.push(`(SELECT ${sel.join(', ')})`);\n }\n return subq.join(' UNION ALL ');\n}\n\n/**\n * Convert a value to a SQL literal.\n * @param {*} value The value to convert.\n * @returns {string} The SQL literal.\n */\nexport function literalToSQL(value: unknown) {\n switch (typeof value) {\n case 'number':\n return Number.isFinite(value) ? `${value}` : 'NULL';\n case 'string':\n return `'${value.replace(/'/g, \"''\")}'`;\n case 'boolean':\n return value ? 'TRUE' : 'FALSE';\n default:\n if (value == null) {\n return 'NULL';\n } else if (value instanceof Date) {\n const ts = +value;\n if (Number.isNaN(ts)) return 'NULL';\n const y = value.getUTCFullYear();\n const m = value.getUTCMonth();\n const d = value.getUTCDate();\n return ts === Date.UTC(y, m, d)\n ? `DATE '${y}-${m + 1}-${d}'` // utc date\n : `epoch_ms(${ts})`; // timestamp\n } else if (value instanceof RegExp) {\n return `'${value.source}'`;\n } else {\n // otherwise rely on string coercion\n return `${value}`;\n }\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sqlrooms/duckdb",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@duckdb/duckdb-wasm": "1.29.0",
|
|
23
|
-
"@sqlrooms/project": "0.13.
|
|
24
|
-
"@sqlrooms/utils": "0.13.
|
|
23
|
+
"@sqlrooms/project": "0.13.1",
|
|
24
|
+
"@sqlrooms/utils": "0.13.1",
|
|
25
25
|
"apache-arrow": "^18.1.0",
|
|
26
26
|
"fast-deep-equal": "^3.1.3",
|
|
27
27
|
"immer": "^10.1.1",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"zustand": "^5.0.3"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@sqlrooms/project-config": "0.13.
|
|
32
|
+
"@sqlrooms/project-config": "0.13.1",
|
|
33
33
|
"@types/jest": "^29.5.12",
|
|
34
34
|
"jest": "^29.7.0",
|
|
35
35
|
"ts-jest": "^29.1.2"
|
|
@@ -43,5 +43,5 @@
|
|
|
43
43
|
"test": "jest",
|
|
44
44
|
"test:watch": "jest --watch"
|
|
45
45
|
},
|
|
46
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "aa205ea85e109831ff45383ef7d6682410f48b06"
|
|
47
47
|
}
|