sqlmath 2026.2.28 → 2026.3.31

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.
package/.npmignore CHANGED
@@ -7,9 +7,12 @@ node_modules
7
7
  !LICENSE
8
8
  !README.md
9
9
 
10
- !_sqlmath*
10
+ !_sqlmath.napi*
11
+ !_sqlmath.shell*
11
12
  !jslint.mjs
13
+ !lib_lightgbm*
12
14
  !sqlmath.mjs
13
15
  !sqlmath_browser.mjs
14
16
  !sqlmath_custom.mjs
17
+ !sqlmath_wasm*
15
18
  !test.mjs
package/CHANGELOG.md CHANGED
@@ -5,6 +5,21 @@
5
5
  - sqlite - Add similar error-handling from builtin-sql-function PERCENTILE() into custom-sql-function QUANTILE().
6
6
  - none
7
7
 
8
+ # v2026.3.31
9
+ - ci - Speed-up windows-ci by replacing windows-latest with windows-2022.
10
+ - sqlmath-ci - Speed-up ci with env-var npm_config_mode_test_nopython, allowing shell-function shCiTestNodejs() to be run in background, parallel to python -m cibuildwheel.
11
+ - sqlmath-ci - Rename pre-built-binaries lib_lightgbm.xxx, libomp.xxx to lib_lightgbm_platform_arch.xxx, libomp_platform_arch.xxx, to prevent name-collision under darwin_arm64 and darwin_x64 builds.
12
+ - sqlmath-ci - Update file setup.py to open text-files with utf-8 encoding.
13
+ - sqlmath-ci - Update file .github/workflows/ci.yml with extra matrix.os macos-15-intel.
14
+ - jslint-ci - Update shell-function shGitPullrequestCleanup() to allow squash-and-merge pull-request.
15
+ - sqlmath-ci - Update file .github/workflows/ci.yml with hook to run on pull-request.
16
+
17
+ # v2026.3.1
18
+ - sqlmath-python - bugfix - Fix 762-character-limit SQL-string-bug in python-function db_exec().
19
+ - jslint-ci - Update shell-function shLintPython().
20
+ - python - Auto-detect-and-load lib_lightgbm.dll.
21
+ - sqlite - Add sqlite-extension csv.c, tsv.c.
22
+
8
23
  # v2026.2.28
9
24
  - python-ci - Fix ruff lint-errors.
10
25
  - jslint-ci - Update shell-function shCiBase() to check npm-version-support, before running npm-pkg-fix.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
  # Status
5
- | Branch | [master<br>(v2026.2.28)](https://github.com/sqlmath/sqlmath/tree/master) | [beta<br>(Web Demo)](https://github.com/sqlmath/sqlmath/tree/beta) | [alpha<br>(Development)](https://github.com/sqlmath/sqlmath/tree/alpha) |
5
+ | Branch | [master<br>(v2026.3.31)](https://github.com/sqlmath/sqlmath/tree/master) | [beta<br>(Web Demo)](https://github.com/sqlmath/sqlmath/tree/beta) | [alpha<br>(Development)](https://github.com/sqlmath/sqlmath/tree/alpha) |
6
6
  |--:|:--:|:--:|:--:|
7
7
  | CI | [![ci](https://github.com/sqlmath/sqlmath/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/sqlmath/sqlmath/actions?query=branch%3Amaster) | [![ci](https://github.com/sqlmath/sqlmath/actions/workflows/ci.yml/badge.svg?branch=beta)](https://github.com/sqlmath/sqlmath/actions?query=branch%3Abeta) | [![ci](https://github.com/sqlmath/sqlmath/actions/workflows/ci.yml/badge.svg?branch=alpha)](https://github.com/sqlmath/sqlmath/actions?query=branch%3Aalpha) |
8
8
  | Coverage | [![coverage](https://sqlmath.github.io/sqlmath/branch-master/.artifact/coverage/coverage_badge.svg)](https://sqlmath.github.io/sqlmath/branch-master/.artifact/coverage/index.html) | [![coverage](https://sqlmath.github.io/sqlmath/branch-beta/.artifact/coverage/coverage_badge.svg)](https://sqlmath.github.io/sqlmath/branch-beta/.artifact/coverage/index.html) | [![coverage](https://sqlmath.github.io/sqlmath/branch-alpha/.artifact/coverage/coverage_badge.svg)](https://sqlmath.github.io/sqlmath/branch-alpha/.artifact/coverage/index.html) |
@@ -121,11 +121,11 @@ PORT=8080 sh jslint_ci.sh shHttpFileServer
121
121
  ```shell
122
122
  python -m build
123
123
  #
124
- twine upload --repository testpypi dist/sqlmath-2026.2.28*
125
- py -m pip install --index-url https://test.pypi.org/simple/ sqlmath==2026.2.28
124
+ twine upload --repository testpypi dist/sqlmath-2026.3.2*
125
+ py -m pip install --index-url https://test.pypi.org/simple/ sqlmath==2026.3.2
126
126
  #
127
- twine upload dist/sqlmath-2026.2.28*
128
- pip install sqlmath==2026.2.28
127
+ twine upload dist/sqlmath-2026.3.2*
128
+ pip install sqlmath==2026.3.2
129
129
  ```
130
130
 
131
131
 
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/jslint.mjs CHANGED
@@ -163,7 +163,7 @@ let jslint_charset_ascii = (
163
163
  + "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"
164
164
  + "`abcdefghijklmnopqrstuvwxyz{|}~\u007f"
165
165
  );
166
- let jslint_edition = "v2026.2.28";
166
+ let jslint_edition = "v2026.3.1-beta";
167
167
  let jslint_export; // The jslint object to be exported.
168
168
  let jslint_fudge = 1; // Fudge starting line and starting
169
169
  // ... column to 1.
package/package.json CHANGED
@@ -32,5 +32,5 @@
32
32
  },
33
33
  "shCiArtifactUpload": 1,
34
34
  "shCiPublishNpm": 1,
35
- "version": "2026.2.28"
35
+ "version": "2026.3.31"
36
36
  }
package/sqlmath.mjs CHANGED
@@ -50,14 +50,14 @@ const SQLITE_RESPONSETYPE_LASTVALUE = 2;
50
50
 
51
51
  const FILENAME_DBTMP = "/tmp/__dbtmp1"; //jslint-ignore-line
52
52
 
53
- const LGBM_DTYPE_FLOAT32 = 0; /* float32 (single precision float)*/
54
- const LGBM_DTYPE_FLOAT64 = 1; /* float64 (double precision float)*/
55
- const LGBM_DTYPE_INT32 = 2; /* int32*/
56
- const LGBM_DTYPE_INT64 = 3; /* int64*/
53
+ const LGBM_DTYPE_FLOAT32 = 0; /* float32 (single precision float)*/
54
+ const LGBM_DTYPE_FLOAT64 = 1; /* float64 (double precision float)*/
55
+ const LGBM_DTYPE_INT32 = 2; /* int32*/
56
+ const LGBM_DTYPE_INT64 = 3; /* int64*/
57
57
  const LGBM_FEATURE_IMPORTANCE_GAIN = 1; /* Gain type of feature importance*/
58
58
  const LGBM_FEATURE_IMPORTANCE_SPLIT = 0;/* Split type of feature importance*/
59
- const LGBM_MATRIX_TYPE_CSC = 1; /* CSC sparse matrix type*/
60
- const LGBM_MATRIX_TYPE_CSR = 0; /* CSR sparse matrix type*/
59
+ const LGBM_MATRIX_TYPE_CSC = 1; /* CSC sparse matrix type*/
60
+ const LGBM_MATRIX_TYPE_CSR = 0; /* CSR sparse matrix type*/
61
61
  const LGBM_PREDICT_CONTRIB = 3; /* Predict feature contributions (SHAP values)*/
62
62
  const LGBM_PREDICT_LEAF_INDEX = 2; /* Predict leaf index*/
63
63
  const LGBM_PREDICT_NORMAL = 0; /* Normal prediction w/ transform (if needed)*/
@@ -87,7 +87,7 @@ const SQLITE_OPEN_WAL = 0x00080000; /* VFS only */
87
87
  let DB_EXEC_PROFILE_DICT = {};
88
88
  let DB_EXEC_PROFILE_MODE;
89
89
  let DB_EXEC_PROFILE_SQL_LENGTH;
90
- let DB_OPEN_INIT;
90
+ let DB_STATE = {};
91
91
  let IS_BROWSER;
92
92
  let SQLMATH_EXE;
93
93
  let SQLMATH_NODE;
@@ -128,7 +128,7 @@ let {
128
128
  let sqlMessageDict = {}; // dict of web-worker-callbacks
129
129
  let sqlMessageId = 0;
130
130
  let sqlWorker;
131
- let version = "v2026.2.28";
131
+ let version = "v2026.3.31";
132
132
 
133
133
  async function assertErrorThrownAsync(asyncFunc, regexp) {
134
134
 
@@ -1017,7 +1017,6 @@ async function dbOpenAsync({
1017
1017
  // );
1018
1018
  let connPool;
1019
1019
  let db = {busy: 0, filename, ii: 0};
1020
- let libLgbm;
1021
1020
  assertOrThrow(typeof filename === "string", `invalid filename ${filename}`);
1022
1021
  assertOrThrow(
1023
1022
  !dbData || isExternalBuffer(dbData),
@@ -1048,21 +1047,33 @@ async function dbOpenAsync({
1048
1047
  return ptr;
1049
1048
  }));
1050
1049
  db.connPool = connPool;
1051
- if (!IS_BROWSER && !DB_OPEN_INIT) {
1052
- DB_OPEN_INIT = true;
1053
- // init lgbm
1054
- libLgbm = process.platform;
1055
- libLgbm = libLgbm.replace("darwin", "lib_lightgbm.dylib");
1056
- libLgbm = libLgbm.replace("win32", "lib_lightgbm.dll");
1057
- libLgbm = libLgbm.replace(process.platform, "lib_lightgbm.so");
1058
- libLgbm = `${import.meta.dirname}/sqlmath/${libLgbm}`;
1059
- await dbExecAsync({
1060
- db,
1061
- sql: (`
1050
+ if (!IS_BROWSER && !DB_STATE.init) {
1051
+ DB_STATE.init = true;
1052
+ await Promise.all([
1053
+ // PRAGMA busy_timeout
1054
+ dbExecAsync({
1055
+ db,
1056
+ sql: (`
1062
1057
  PRAGMA busy_timeout = ${timeoutBusy};
1058
+ `)
1059
+ }),
1060
+ // LGBM_DLOPEN
1061
+ (async function () {
1062
+ let libLgbm = `lib_lightgbm_${libPlatformArchExt()}`;
1063
+ libLgbm = `${import.meta.dirname}/sqlmath/${libLgbm}`;
1064
+ await moduleFs.promises.access(
1065
+ libLgbm
1066
+ ).then(async function () {
1067
+ await dbExecAsync({
1068
+ db,
1069
+ sql: (`
1063
1070
  SELECT LGBM_DLOPEN('${libLgbm}');
1064
- `)
1065
- });
1071
+ `)
1072
+ });
1073
+ DB_STATE.lgbm = true;
1074
+ }).catch(noop);
1075
+ }())
1076
+ ]);
1066
1077
  }
1067
1078
  return db;
1068
1079
  }
@@ -1075,7 +1086,7 @@ async function dbTableImportAsync({
1075
1086
  tableName,
1076
1087
  textData
1077
1088
  }) {
1078
- // this function will create table from imported csv/json <textData>
1089
+ // This function will create table from imported csv/json <textData>.
1079
1090
  let colList;
1080
1091
  let rowList;
1081
1092
  let rowidList;
@@ -1516,7 +1527,7 @@ function jsonParseArraybuffer(buf) {
1516
1527
  function jsonRowListFromCsv({
1517
1528
  csv
1518
1529
  }) {
1519
- // this function will convert <csv>-text to json list-of-list
1530
+ // This function will convert <csv>-text to json list-of-list.
1520
1531
  //
1521
1532
  // https://tools.ietf.org/html/rfc4180#section-2
1522
1533
  // Definition of the CSV Format
@@ -1664,6 +1675,16 @@ function jsonRowListFromCsv({
1664
1675
  return rowList;
1665
1676
  }
1666
1677
 
1678
+ function libPlatformArchExt() {
1679
+ let libArch = process.arch;
1680
+ let libExt = process.platform;
1681
+ let libPlatform = process.platform;
1682
+ libExt = libExt.replace("darwin", "dylib");
1683
+ libExt = libExt.replace("win32", "dll");
1684
+ libExt = libExt.replace(libPlatform, "so");
1685
+ return `${libPlatform}_${libArch}.${libExt}`;
1686
+ }
1687
+
1667
1688
  function listOrEmptyList(list) {
1668
1689
 
1669
1690
  // This function will return <list> or empty-list if falsy.
@@ -1891,7 +1912,11 @@ function waitAsync(timeout) {
1891
1912
  // This function will wait <timeout> ms.
1892
1913
 
1893
1914
  return new Promise(function (resolve) {
1894
- setTimeout(resolve, timeout * !npm_config_mode_test);
1915
+ let ms = Number(timeout);
1916
+ if (!Number.isFinite(ms)) {
1917
+ ms = 0;
1918
+ }
1919
+ setTimeout(resolve, ms * !npm_config_mode_test);
1895
1920
  });
1896
1921
  }
1897
1922
 
@@ -1901,6 +1926,7 @@ sqlmathInit(); // coverage-hack
1901
1926
 
1902
1927
  export {
1903
1928
  DB_EXEC_PROFILE_DICT,
1929
+ DB_STATE,
1904
1930
  LGBM_DTYPE_FLOAT32,
1905
1931
  LGBM_DTYPE_FLOAT64,
1906
1932
  LGBM_DTYPE_INT32,
@@ -1962,6 +1988,7 @@ export {
1962
1988
  fsWriteFileUnlessTest,
1963
1989
  jsbatonGetInt64,
1964
1990
  jsbatonGetString,
1991
+ libPlatformArchExt,
1965
1992
  listOrEmptyList,
1966
1993
  noop,
1967
1994
  objectDeepCopyWithKeysSorted,
@@ -0,0 +1,83 @@
1
+ /*jslint-disable*/
2
+ // Copyright (c) 2021 Kai Zhu
3
+ // SPDX-License-Identifier: MIT
4
+ // 2026-04-03T03:47:33+0000
5
+ (function () {
6
+ "use strict";
7
+
8
+ var g;g||(g=typeof Module !== 'undefined' ? Module : {});var aa=Object.assign;(function(){function a(){}function b(...c){a("\n\ndebugInline");a(...c);a("\n");return c[0]}b();a=console.error;return b})();function ba(a){return a&&a.constructor===ArrayBuffer}
9
+ (async function(){let a=h("dbFileLoadOrSave","number",["number","string","number"]),b=h("jsbatonGetErrmsg","string",["number"]),c=h("jsbatonGetString","string",["number","number"]),d=h("sqlite3_errmsg","string",["number"]),e;globalThis.onmessage=async function({data:f}){await e;f.batonPtr=0;try{a:{let G=f.FILENAME_DBTMP;var k=f.JSBATON_OFFSET_ALL;let Rb=f.JSBATON_OFFSET_BUFV,P=f.argList,Q=new Uint8Array(f.baton.buffer),C=0,A=P[4],Sb=0,ea="",W=f.funcname,Va=P[2];switch(W){case "_dbClose":case "_dbExec":case "_dbFileLoad":case "_dbNoop":case "_dbOpen":C=
10
+ ca(Q.byteLength);f.batonPtr=C;l.set(Q,C);switch(W){case "_dbClose":console.error(`_dbClose("${c(C,1)}")`);break;case "_dbFileLoad":Va||da(G,new Uint8Array(A));break;case "_dbOpen":console.error(`_dbOpen("${c(C,0)}")`)}fa(C);ea=b(C);Q.set(l.subarray(C,C+k));switch(!ea&&W){case "_dbExec":A=new BigInt64Array(Q.buffer,Rb);P[0]=l.slice(Number(A[0]),Number(A[0]+A[1])).buffer;ha(Number(A[0]));break;case "_dbFileLoad":if(Va){k=G;var m=m||0;var p=p||"binary";if("utf8"!==p&&"binary"!==p)throw Error('Invalid encoding type "'+
11
+ p+'"');var q,t=n(k,m),v=r(k).size,H=new Uint8Array(v);ia(t,H,0,v,0);"utf8"===p?q=u(H,0):"binary"===p&&(q=H);ja(t);P[0]=q.buffer;ka(G)}break;case "_dbOpen":A&&(da(G,new Uint8Array(A)),A=Number(la(C,0)),(Sb=a(A,G,0))&&(ea=d(A)),ka(G))}postMessage({argList:P,baton:new DataView(Q.buffer),errmsg:ea,funcname:W,id:f.id},[Q.buffer,...P.filter(ba)]);var Tb=void 0;break a}throw Error(`invalid funcname "${W}"`);}await Tb}catch(G){postMessage({errmsg:G.stack,id:f.id})}finally{ha(f.batonPtr)}};e=new Promise(function(f){g.postRun=
12
+ f});await e;ma()})();var na=aa({},g),oa="./this.program",pa="object"===typeof window,w="function"===typeof importScripts,qa="object"===typeof process&&"object"===typeof process.versions&&"string"===typeof process.versions.node,x="",ra,sa,ta,fs,ua,va;
13
+ if(qa)x=w?require("path").dirname(x)+"/":__dirname+"/",va=()=>{ua||(fs=require("fs"),ua=require("path"))},ra=function(a,b){va();a=ua.normalize(a);return fs.readFileSync(a,b?null:"utf8")},ta=a=>{a=ra(a,!0);a.buffer||(a=new Uint8Array(a));return a},sa=(a,b,c)=>{va();a=ua.normalize(a);fs.readFile(a,function(d,e){d?c(d):b(e.buffer)})},1<process.argv.length&&(oa=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),"undefined"!==typeof module&&(module.exports=g),g.inspect=function(){return"[Emscripten Module object]"};
14
+ else if(pa||w)w?x=self.location.href:"undefined"!==typeof document&&document.currentScript&&(x=document.currentScript.src),x=0!==x.indexOf("blob:")?x.substr(0,x.replace(/[?#].*/,"").lastIndexOf("/")+1):"",ra=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.send(null);return b.responseText},w&&(ta=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),sa=(a,b,c)=>{var d=new XMLHttpRequest;d.open("GET",a,!0);d.responseType="arraybuffer";
15
+ d.onload=()=>{200==d.status||0==d.status&&d.response?b(d.response):c()};d.onerror=c;d.send(null)};var wa=g.print||console.log.bind(console),y=g.printErr||console.warn.bind(console);aa(g,na);na=null;g.thisProgram&&(oa=g.thisProgram);var z;g.wasmBinary&&(z=g.wasmBinary);var noExitRuntime=g.noExitRuntime||!0;"object"!==typeof WebAssembly&&B("no native wasm support detected");var xa,ya=!1;
16
+ function za(a,b,c,d){var e={string:function(q){var t=0;if(null!==q&&void 0!==q&&0!==q){var v=(q.length<<2)+1;t=Aa(v);D(q,l,t,v)}return t},array:function(q){var t=Aa(q.length);E.set(q,t);return t}};a=g["_"+a];var f=[],k=0;if(d)for(var m=0;m<d.length;m++){var p=e[c[m]];p?(0===k&&(k=Ba()),f[m]=p(d[m])):f[m]=d[m]}c=a.apply(null,f);return c=function(q){0!==k&&Ca(k);return"string"===b?F(q):"boolean"===b?!!q:q}(c)}
17
+ function h(a,b,c,d){c=c||[];var e=c.every(function(f){return"number"===f});return"string"!==b&&e&&!d?g["_"+a]:function(){return za(a,b,c,arguments)}}var Da="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;
18
+ function u(a,b,c){var d=b+c;for(c=b;a[c]&&!(c>=d);)++c;if(16<c-b&&a.subarray&&Da)return Da.decode(a.subarray(b,c));for(d="";b<c;){var e=a[b++];if(e&128){var f=a[b++]&63;if(192==(e&224))d+=String.fromCharCode((e&31)<<6|f);else{var k=a[b++]&63;e=224==(e&240)?(e&15)<<12|f<<6|k:(e&7)<<18|f<<12|k<<6|a[b++]&63;65536>e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d}function F(a){return a?u(l,a,void 0):""}
19
+ function D(a,b,c,d){if(!(0<d))return 0;var e=c;d=c+d-1;for(var f=0;f<a.length;++f){var k=a.charCodeAt(f);if(55296<=k&&57343>=k){var m=a.charCodeAt(++f);k=65536+((k&1023)<<10)|m&1023}if(127>=k){if(c>=d)break;b[c++]=k}else{if(2047>=k){if(c+1>=d)break;b[c++]=192|k>>6}else{if(65535>=k){if(c+2>=d)break;b[c++]=224|k>>12}else{if(c+3>=d)break;b[c++]=240|k>>18;b[c++]=128|k>>12&63}b[c++]=128|k>>6&63}b[c++]=128|k&63}}b[c]=0;return c-e}
20
+ function Ea(a){for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);55296<=d&&57343>=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:b+4}return b}function Fa(a){var b=Ea(a)+1,c=Ga(b);c&&D(a,E,c,b);return c}var Ha,E,l,Ia,I,Ja;
21
+ function Ka(){var a=xa.buffer;Ha=a;g.HEAP8=E=new Int8Array(a);g.HEAP16=Ia=new Int16Array(a);g.HEAP32=I=new Int32Array(a);g.HEAPU8=l=new Uint8Array(a);g.HEAPU16=new Uint16Array(a);g.HEAPU32=new Uint32Array(a);g.HEAPF32=new Float32Array(a);g.HEAPF64=new Float64Array(a);g.HEAP64=Ja=new BigInt64Array(a);g.HEAPU64=new BigUint64Array(a)}var La,Ma=[],Na=[],Oa=[];function Pa(){var a=g.preRun.shift();Ma.unshift(a)}var J=0,Qa=null,Ra=null;g.preloadedImages={};g.preloadedAudios={};
22
+ function B(a){if(g.onAbort)g.onAbort(a);a="Aborted("+a+")";y(a);ya=!0;throw new WebAssembly.RuntimeError(a+". Build with -s ASSERTIONS=1 for more info.");}function Sa(){return K.startsWith("data:application/octet-stream;base64,")}var K;K="sqlmath_wasm.wasm";if(!Sa()){var Ta=K;K=g.locateFile?g.locateFile(Ta,x):x+Ta}function Ua(){var a=K;try{if(a==K&&z)return new Uint8Array(z);if(ta)return ta(a);throw"both async and sync fetching of the wasm failed";}catch(b){B(b)}}
23
+ function Wa(){if(!z&&(pa||w)){if("function"===typeof fetch&&!K.startsWith("file://"))return fetch(K,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+K+"'";return a.arrayBuffer()}).catch(function(){return Ua()});if(sa)return new Promise(function(a,b){sa(K,function(c){a(new Uint8Array(c))},b)})}return Promise.resolve().then(function(){return Ua()})}
24
+ function Xa(a){for(;0<a.length;){var b=a.shift();if("function"==typeof b)b(g);else{var c=b.Sa;"number"===typeof c?void 0===b.wa?La.get(c)():La.get(c)(b.wa):c(void 0===b.wa?null:b.wa)}}}function Ya(a){return a.replace(/\b_Z[\w\d_]+/g,function(b){return b===b?b:b+" ["+b+"]"})}function Za(a,b){for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift("..");return a}
25
+ function L(a){var b="/"===a.charAt(0),c="/"===a.substr(-1);(a=Za(a.split("/").filter(function(d){return!!d}),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b?"/":"")+a}function $a(a){var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&(b=b.substr(0,b.length-1));return a+b}function ab(a){if("/"===a)return"/";a=L(a);a=a.replace(/\/$/,"");var b=a.lastIndexOf("/");return-1===b?a:a.substr(b+1)}
26
+ function bb(){if("object"===typeof crypto&&"function"===typeof crypto.getRandomValues){var a=new Uint8Array(1);return function(){crypto.getRandomValues(a);return a[0]}}if(qa)try{var b=require("crypto");return function(){return b.randomBytes(1)[0]}}catch(c){}return function(){B("randomDevice")}}
27
+ function cb(){for(var a="",b=!1,c=arguments.length-1;-1<=c&&!b;c--){b=0<=c?arguments[c]:"/";if("string"!==typeof b)throw new TypeError("Arguments to path.resolve must be strings");if(!b)return"";a=b+"/"+a;b="/"===b.charAt(0)}a=Za(a.split("/").filter(function(d){return!!d}),!b).join("/");return(b?"/":"")+a||"."}var db=[];function eb(a,b){db[a]={input:[],output:[],ra:b};fb(a,gb)}
28
+ var gb={open:function(a){var b=db[a.node.rdev];if(!b)throw new M(43);a.tty=b;a.seekable=!1},close:function(a){a.tty.ra.flush(a.tty)},flush:function(a){a.tty.ra.flush(a.tty)},read:function(a,b,c,d){if(!a.tty||!a.tty.ra.Ea)throw new M(60);for(var e=0,f=0;f<d;f++){try{var k=a.tty.ra.Ea(a.tty)}catch(m){throw new M(29);}if(void 0===k&&0===e)throw new M(6);if(null===k||void 0===k)break;e++;b[c+f]=k}e&&(a.node.timestamp=Date.now());return e},write:function(a,b,c,d){if(!a.tty||!a.tty.ra.ya)throw new M(60);
29
+ try{for(var e=0;e<d;e++)a.tty.ra.ya(a.tty,b[c+e])}catch(f){throw new M(29);}d&&(a.node.timestamp=Date.now());return e}},hb={Ea:function(a){if(!a.input.length){var b=null;if(qa){var c=Buffer.alloc(256),d=0;try{d=fs.readSync(process.stdin.fd,c,0,256,null)}catch(e){if(e.toString().includes("EOF"))d=0;else throw e;}0<d?b=c.slice(0,d).toString("utf-8"):b=null}else"undefined"!=typeof window&&"function"==typeof window.prompt?(b=window.prompt("Input: "),null!==b&&(b+="\n")):"function"==typeof readline&&(b=
30
+ readline(),null!==b&&(b+="\n"));if(!b)return null;c=Array(Ea(b)+1);b=D(b,c,0,c.length);c.length=b;a.input=c}return a.input.shift()},ya:function(a,b){null===b||10===b?(wa(u(a.output,0)),a.output=[]):0!=b&&a.output.push(b)},flush:function(a){a.output&&0<a.output.length&&(wa(u(a.output,0)),a.output=[])}},ib={ya:function(a,b){null===b||10===b?(y(u(a.output,0)),a.output=[]):0!=b&&a.output.push(b)},flush:function(a){a.output&&0<a.output.length&&(y(u(a.output,0)),a.output=[])}};
31
+ function jb(a){a=65536*Math.ceil(a/65536);var b=kb(65536,a);if(!b)return 0;l.fill(0,b,b+a);return b}
32
+ var N={la:null,ma:function(){return N.createNode(null,"/",16895,0)},createNode:function(a,b,c,d){if(24576===(c&61440)||4096===(c&61440))throw new M(63);N.la||(N.la={dir:{node:{ka:N.ea.ka,ja:N.ea.ja,lookup:N.ea.lookup,sa:N.ea.sa,rename:N.ea.rename,unlink:N.ea.unlink,rmdir:N.ea.rmdir,readdir:N.ea.readdir,symlink:N.ea.symlink},stream:{oa:N.fa.oa}},file:{node:{ka:N.ea.ka,ja:N.ea.ja},stream:{oa:N.fa.oa,read:N.fa.read,write:N.fa.write,Aa:N.fa.Aa,ta:N.fa.ta,ua:N.fa.ua}},link:{node:{ka:N.ea.ka,ja:N.ea.ja,
33
+ readlink:N.ea.readlink},stream:{}},Ba:{node:{ka:N.ea.ka,ja:N.ea.ja},stream:lb}});c=mb(a,b,c,d);16384===(c.mode&61440)?(c.ea=N.la.dir.node,c.fa=N.la.dir.stream,c.ga={}):32768===(c.mode&61440)?(c.ea=N.la.file.node,c.fa=N.la.file.stream,c.ia=0,c.ga=null):40960===(c.mode&61440)?(c.ea=N.la.link.node,c.fa=N.la.link.stream):8192===(c.mode&61440)&&(c.ea=N.la.Ba.node,c.fa=N.la.Ba.stream);c.timestamp=Date.now();a&&(a.ga[b]=c,a.timestamp=c.timestamp);return c},Ta:function(a){return a.ga?a.ga.subarray?a.ga.subarray(0,
34
+ a.ia):new Uint8Array(a.ga):new Uint8Array(0)},Ca:function(a,b){var c=a.ga?a.ga.length:0;c>=b||(b=Math.max(b,c*(1048576>c?2:1.125)>>>0),0!=c&&(b=Math.max(b,256)),c=a.ga,a.ga=new Uint8Array(b),0<a.ia&&a.ga.set(c.subarray(0,a.ia),0))},Pa:function(a,b){if(a.ia!=b)if(0==b)a.ga=null,a.ia=0;else{var c=a.ga;a.ga=new Uint8Array(b);c&&a.ga.set(c.subarray(0,Math.min(b,a.ia)));a.ia=b}},ea:{ka:function(a){var b={};b.dev=8192===(a.mode&61440)?a.id:1;b.ino=a.id;b.mode=a.mode;b.nlink=1;b.uid=0;b.gid=0;b.rdev=a.rdev;
35
+ 16384===(a.mode&61440)?b.size=4096:32768===(a.mode&61440)?b.size=a.ia:40960===(a.mode&61440)?b.size=a.link.length:b.size=0;b.atime=new Date(a.timestamp);b.mtime=new Date(a.timestamp);b.ctime=new Date(a.timestamp);b.Ga=4096;b.blocks=Math.ceil(b.size/b.Ga);return b},ja:function(a,b){void 0!==b.mode&&(a.mode=b.mode);void 0!==b.timestamp&&(a.timestamp=b.timestamp);void 0!==b.size&&N.Pa(a,b.size)},lookup:function(){throw nb[44];},sa:function(a,b,c,d){return N.createNode(a,b,c,d)},rename:function(a,b,c){if(16384===
36
+ (a.mode&61440)){try{var d=O(b,c)}catch(f){}if(d)for(var e in d.ga)throw new M(55);}delete a.parent.ga[a.name];a.parent.timestamp=Date.now();a.name=c;b.ga[c]=a;b.timestamp=a.parent.timestamp;a.parent=b},unlink:function(a,b){delete a.ga[b];a.timestamp=Date.now()},rmdir:function(a,b){var c=O(a,b),d;for(d in c.ga)throw new M(55);delete a.ga[b];a.timestamp=Date.now()},readdir:function(a){var b=[".",".."],c;for(c in a.ga)a.ga.hasOwnProperty(c)&&b.push(c);return b},symlink:function(a,b,c){a=N.createNode(a,
37
+ b,41471,0);a.link=c;return a},readlink:function(a){if(40960!==(a.mode&61440))throw new M(28);return a.link}},fa:{read:function(a,b,c,d,e){var f=a.node.ga;if(e>=a.node.ia)return 0;a=Math.min(a.node.ia-e,d);if(8<a&&f.subarray)b.set(f.subarray(e,e+a),c);else for(d=0;d<a;d++)b[c+d]=f[e+d];return a},write:function(a,b,c,d,e,f){b.buffer===E.buffer&&(f=!1);if(!d)return 0;a=a.node;a.timestamp=Date.now();if(b.subarray&&(!a.ga||a.ga.subarray)){if(f)return a.ga=b.subarray(c,c+d),a.ia=d;if(0===a.ia&&0===e)return a.ga=
38
+ b.slice(c,c+d),a.ia=d;if(e+d<=a.ia)return a.ga.set(b.subarray(c,c+d),e),d}N.Ca(a,e+d);if(a.ga.subarray&&b.subarray)a.ga.set(b.subarray(c,c+d),e);else for(f=0;f<d;f++)a.ga[e+f]=b[c+f];a.ia=Math.max(a.ia,e+d);return d},oa:function(a,b,c){1===c?b+=a.position:2===c&&32768===(a.node.mode&61440)&&(b+=a.node.ia);if(0>b)throw new M(28);return b},Aa:function(a,b,c){N.Ca(a.node,b+c);a.node.ia=Math.max(a.node.ia,b+c)},ta:function(a,b,c,d,e,f){if(0!==b)throw new M(28);if(32768!==(a.node.mode&61440))throw new M(43);
39
+ a=a.node.ga;if(f&2||a.buffer!==Ha){if(0<d||d+c<a.length)a.subarray?a=a.subarray(d,d+c):a=Array.prototype.slice.call(a,d,d+c);d=!0;c=jb(c);if(!c)throw new M(48);E.set(a,c)}else d=!1,c=a.byteOffset;return{Oa:c,va:d}},ua:function(a,b,c,d,e){if(32768!==(a.node.mode&61440))throw new M(43);if(e&2)return 0;N.fa.write(a,b,0,d,c,!1);return 0}}},ob=null,pb={},R=[],qb=1,S=null,rb=!0,M=null,nb={},T=(a,b={})=>{a=cb("/",a);if(!a)return{path:"",node:null};var c={Da:!0,za:0},d;for(d in c)void 0===b[d]&&(b[d]=c[d]);
40
+ if(8<b.za)throw new M(32);a=Za(a.split("/").filter(k=>!!k),!1);var e=ob;c="/";for(d=0;d<a.length;d++){var f=d===a.length-1;if(f&&b.parent)break;e=O(e,a[d]);c=L(c+"/"+a[d]);e.pa&&(!f||f&&b.Da)&&(e=e.pa.root);if(!f||b.na)for(f=0;40960===(e.mode&61440);)if(e=sb(c),c=cb($a(c),e),e=T(c,{za:b.za}).node,40<f++)throw new M(32);}return{path:c,node:e}},tb=a=>{for(var b;;){if(a===a.parent)return a=a.ma.Fa,b?"/"!==a[a.length-1]?a+"/"+b:a+b:a;b=b?a.name+"/"+b:a.name;a=a.parent}},ub=(a,b)=>{for(var c=0,d=0;d<b.length;d++)c=
41
+ (c<<5)-c+b.charCodeAt(d)|0;return(a+c>>>0)%S.length},vb=a=>{var b=ub(a.parent.id,a.name);if(S[b]===a)S[b]=a.qa;else for(b=S[b];b;){if(b.qa===a){b.qa=a.qa;break}b=b.qa}},O=(a,b)=>{var c;if(c=(c=U(a,"x"))?c:a.ea.lookup?0:2)throw new M(c,a);for(c=S[ub(a.id,b)];c;c=c.qa){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.ea.lookup(a,b)},mb=(a,b,c,d)=>{a=new wb(a,b,c,d);b=ub(a.parent.id,a.name);a.qa=S[b];return S[b]=a},xb={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},yb=a=>{var b=["r","w","rw"][a&
42
+ 3];a&512&&(b+="w");return b},U=(a,b)=>{if(rb)return 0;if(!b.includes("r")||a.mode&292){if(b.includes("w")&&!(a.mode&146)||b.includes("x")&&!(a.mode&73))return 2}else return 2;return 0},zb=(a,b)=>{try{return O(a,b),20}catch(c){}return U(a,"wx")},Ab=(a,b,c)=>{try{var d=O(a,b)}catch(e){return e.ha}if(a=U(a,"wx"))return a;if(c){if(16384!==(d.mode&61440))return 54;if(d===d.parent||"/"===tb(d))return 10}else if(16384===(d.mode&61440))return 31;return 0},Bb=(a=0,b=4096)=>{for(;a<=b;a++)if(!R[a])return a;
43
+ throw new M(33);},Db=(a,b)=>{Cb||(Cb=function(){},Cb.prototype={});var c=new Cb,d;for(d in a)c[d]=a[d];a=c;b=Bb(b,void 0);a.fd=b;return R[b]=a},lb={open:a=>{a.fa=pb[a.node.rdev].fa;a.fa.open&&a.fa.open(a)},oa:()=>{throw new M(70);}},fb=(a,b)=>{pb[a]={fa:b}},Eb=(a,b)=>{var c="/"===b,d=!b;if(c&&ob)throw new M(10);if(!c&&!d){var e=T(b,{Da:!1});b=e.path;e=e.node;if(e.pa)throw new M(10);if(16384!==(e.mode&61440))throw new M(54);}b={type:a,Ua:{},Fa:b,Ma:[]};a=a.ma(b);a.ma=b;b.root=a;c?ob=a:e&&(e.pa=b,e.ma&&
44
+ e.ma.Ma.push(b))},Fb=(a,b,c)=>{var d=T(a,{parent:!0}).node;a=ab(a);if(!a||"."===a||".."===a)throw new M(28);var e=zb(d,a);if(e)throw new M(e);if(!d.ea.sa)throw new M(63);return d.ea.sa(d,a,b,c)},V=(a,b)=>Fb(a,(void 0!==b?b:511)&1023|16384,0),Gb=(a,b,c)=>{"undefined"===typeof c&&(c=b,b=438);Fb(a,b|8192,c)},Hb=(a,b)=>{if(!cb(a))throw new M(44);var c=T(b,{parent:!0}).node;if(!c)throw new M(44);b=ab(b);var d=zb(c,b);if(d)throw new M(d);if(!c.ea.symlink)throw new M(63);c.ea.symlink(c,b,a)},ka=a=>{var b=
45
+ T(a,{parent:!0}).node;if(!b)throw new M(44);a=ab(a);var c=O(b,a),d=Ab(b,a,!1);if(d)throw new M(d);if(!b.ea.unlink)throw new M(63);if(c.pa)throw new M(10);b.ea.unlink(b,a);vb(c)},sb=a=>{a=T(a).node;if(!a)throw new M(44);if(!a.ea.readlink)throw new M(28);return cb(tb(a.parent),a.ea.readlink(a))},r=(a,b)=>{a=T(a,{na:!b}).node;if(!a)throw new M(44);if(!a.ea.ka)throw new M(63);return a.ea.ka(a)},Ib=a=>r(a,!0),Jb=(a,b)=>{a="string"===typeof a?T(a,{na:!0}).node:a;if(!a.ea.ja)throw new M(63);a.ea.ja(a,{mode:b&
46
+ 4095|a.mode&-4096,timestamp:Date.now()})},Kb=a=>{a="string"===typeof a?T(a,{na:!0}).node:a;if(!a.ea.ja)throw new M(63);a.ea.ja(a,{timestamp:Date.now()})},Lb=(a,b)=>{if(0>b)throw new M(28);a="string"===typeof a?T(a,{na:!0}).node:a;if(!a.ea.ja)throw new M(63);if(16384===(a.mode&61440))throw new M(31);if(32768!==(a.mode&61440))throw new M(28);var c=U(a,"w");if(c)throw new M(c);a.ea.ja(a,{size:b,timestamp:Date.now()})},n=(a,b,c,d)=>{if(""===a)throw new M(44);if("string"===typeof b){var e=xb[b];if("undefined"===
47
+ typeof e)throw Error("Unknown file open mode: "+b);b=e}c=b&64?("undefined"===typeof c?438:c)&4095|32768:0;if("object"===typeof a)var f=a;else{a=L(a);try{f=T(a,{na:!(b&131072)}).node}catch(k){}}e=!1;if(b&64)if(f){if(b&128)throw new M(20);}else f=Fb(a,c,0),e=!0;if(!f)throw new M(44);8192===(f.mode&61440)&&(b&=-513);if(b&65536&&16384!==(f.mode&61440))throw new M(54);if(!e&&(c=f?40960===(f.mode&61440)?32:16384===(f.mode&61440)&&("r"!==yb(b)||b&512)?31:U(f,yb(b)):44))throw new M(c);b&512&&Lb(f,0);b&=-131713;
48
+ d=Db({node:f,path:tb(f),flags:b,seekable:!0,position:0,fa:f.fa,Ra:[],error:!1},d);d.fa.open&&d.fa.open(d);!g.logReadFiles||b&1||(Mb||(Mb={}),a in Mb||(Mb[a]=1));return d},ja=a=>{if(null===a.fd)throw new M(8);a.xa&&(a.xa=null);try{a.fa.close&&a.fa.close(a)}catch(b){throw b;}finally{R[a.fd]=null}a.fd=null},Nb=(a,b,c)=>{if(null===a.fd)throw new M(8);if(!a.seekable||!a.fa.oa)throw new M(70);if(0!=c&&1!=c&&2!=c)throw new M(28);a.position=a.fa.oa(a,b,c);a.Ra=[]},ia=(a,b,c,d,e)=>{if(0>d||0>e)throw new M(28);
49
+ if(null===a.fd)throw new M(8);if(1===(a.flags&2097155))throw new M(8);if(16384===(a.node.mode&61440))throw new M(31);if(!a.fa.read)throw new M(28);var f="undefined"!==typeof e;if(!f)e=a.position;else if(!a.seekable)throw new M(70);b=a.fa.read(a,b,c,d,e);f||(a.position+=b);return b},Ob=(a,b,c,d,e)=>{var f=void 0;if(0>d||0>f)throw new M(28);if(null===a.fd)throw new M(8);if(0===(a.flags&2097155))throw new M(8);if(16384===(a.node.mode&61440))throw new M(31);if(!a.fa.write)throw new M(28);a.seekable&&
50
+ a.flags&1024&&Nb(a,0,2);var k="undefined"!==typeof f;if(!k)f=a.position;else if(!a.seekable)throw new M(70);b=a.fa.write(a,b,c,d,f,e);k||(a.position+=b);return b},da=(a,b)=>{var c={};c.flags=c.flags||577;a=n(a,c.flags,c.mode);if("string"===typeof b){var d=new Uint8Array(Ea(b)+1);b=D(b,d,0,d.length);Ob(a,d,0,b,c.Ia)}else if(ArrayBuffer.isView(b))Ob(a,b,0,b.byteLength,c.Ia);else throw Error("Unsupported data type");ja(a)},Pb=()=>{M||(M=function(a,b){this.node=b;this.Qa=function(c){this.ha=c};this.Qa(a);
51
+ this.message="FS error"},M.prototype=Error(),M.prototype.constructor=M,[44].forEach(a=>{nb[a]=new M(a);nb[a].stack="<generic error, no stack>"}))},Qb,Ub=(a,b)=>{var c=0;a&&(c|=365);b&&(c|=146);return c},Wb=(a,b,c)=>{a=L("/dev/"+a);var d=Ub(!!b,!!c);Vb||(Vb=64);var e=Vb++<<8|0;fb(e,{open:f=>{f.seekable=!1},close:()=>{c&&c.buffer&&c.buffer.length&&c(10)},read:(f,k,m,p)=>{for(var q=0,t=0;t<p;t++){try{var v=b()}catch(H){throw new M(29);}if(void 0===v&&0===q)throw new M(6);if(null===v||void 0===v)break;
52
+ q++;k[m+t]=v}q&&(f.node.timestamp=Date.now());return q},write:(f,k,m,p)=>{for(var q=0;q<p;q++)try{c(k[m+q])}catch(t){throw new M(29);}p&&(f.node.timestamp=Date.now());return q}});Gb(a,d,e)},Vb,X={},Cb,Mb,Xb={};
53
+ function Yb(a,b,c){try{var d=a(b)}catch(e){if(e&&e.node&&L(b)!==L(tb(e.node)))return-54;throw e;}I[c>>2]=d.dev;I[c+4>>2]=0;I[c+8>>2]=d.ino;I[c+12>>2]=d.mode;I[c+16>>2]=d.nlink;I[c+20>>2]=d.uid;I[c+24>>2]=d.gid;I[c+28>>2]=d.rdev;I[c+32>>2]=0;Ja[c+40>>3]=BigInt(d.size);I[c+48>>2]=4096;I[c+52>>2]=d.blocks;I[c+56>>2]=d.atime.getTime()/1E3|0;I[c+60>>2]=0;I[c+64>>2]=d.mtime.getTime()/1E3|0;I[c+68>>2]=0;I[c+72>>2]=d.ctime.getTime()/1E3|0;I[c+76>>2]=0;Ja[c+80>>3]=BigInt(d.ino);return 0}var Zb=void 0;
54
+ function Y(){Zb+=4;return I[Zb-4>>2]}function Z(a){a=R[a];if(!a)throw new M(8);return a}function $b(a,b,c){function d(p){return(p=p.toTimeString().match(/\(([A-Za-z ]+)\)$/))?p[1]:"GMT"}var e=(new Date).getFullYear(),f=new Date(e,0,1),k=new Date(e,6,1);e=f.getTimezoneOffset();var m=k.getTimezoneOffset();I[a>>2]=60*Math.max(e,m);I[b>>2]=Number(e!=m);a=d(f);b=d(k);a=Fa(a);b=Fa(b);m<e?(I[c>>2]=a,I[c+4>>2]=b):(I[c>>2]=b,I[c+4>>2]=a)}function ac(a,b,c){ac.Ha||(ac.Ha=!0,$b(a,b,c))}var bc;
55
+ bc=qa?()=>{var a=process.hrtime();return 1E3*a[0]+a[1]/1E6}:()=>performance.now();var cc={};function dc(){if(!ec){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"===typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:oa||"./this.program"},b;for(b in cc)void 0===cc[b]?delete a[b]:a[b]=cc[b];var c=[];for(b in a)c.push(b+"="+a[b]);ec=c}return ec}var ec;
56
+ function wb(a,b,c,d){a||(a=this);this.parent=a;this.ma=a.ma;this.pa=null;this.id=qb++;this.name=b;this.mode=c;this.ea={};this.fa={};this.rdev=d}Object.defineProperties(wb.prototype,{read:{get:function(){return 365===(this.mode&365)},set:function(a){a?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146===(this.mode&146)},set:function(a){a?this.mode|=146:this.mode&=-147}}});Pb();S=Array(4096);Eb(N,"/");V("/tmp");V("/home");V("/home/web_user");
57
+ (()=>{V("/dev");fb(259,{read:()=>0,write:(b,c,d,e)=>e});Gb("/dev/null",259);eb(1280,hb);eb(1536,ib);Gb("/dev/tty",1280);Gb("/dev/tty1",1536);var a=bb();Wb("random",a);Wb("urandom",a);V("/dev/shm");V("/dev/shm/tmp")})();(()=>{V("/proc");var a=V("/proc/self");V("/proc/self/fd");Eb({ma:()=>{var b=mb(a,"fd",16895,73);b.ea={lookup:(c,d)=>{var e=R[+d];if(!e)throw new M(8);c={parent:null,ma:{Fa:"fake"},ea:{readlink:()=>e.path}};return c.parent=c}};return b}},"/proc/self/fd")})();
58
+ var hc={u:function(a,b){try{a=F(a);if(b&-8)var c=-28;else{var d=T(a,{na:!0}).node;d?(a="",b&4&&(a+="r"),b&2&&(a+="w"),b&1&&(a+="x"),c=a&&U(d,a)?-2:0):c=-44}return c}catch(e){if("undefined"===typeof X||!(e instanceof M))throw e;return-e.ha}},K:function(a,b){try{return a=F(a),Jb(a,b),0}catch(c){if("undefined"===typeof X||!(c instanceof M))throw c;return-c.ha}},I:function(a){try{return a=F(a),Kb(a),0}catch(b){if("undefined"===typeof X||!(b instanceof M))throw b;return-b.ha}},i:function(a,b){try{var c=
59
+ R[a];if(!c)throw new M(8);Jb(c.node,b);return 0}catch(d){if("undefined"===typeof X||!(d instanceof M))throw d;return-d.ha}},J:function(a){try{var b=R[a];if(!b)throw new M(8);Kb(b.node);return 0}catch(c){if("undefined"===typeof X||!(c instanceof M))throw c;return-c.ha}},a:function(a,b,c){Zb=c;try{var d=Z(a);switch(b){case 0:var e=Y();return 0>e?-28:n(d.path,d.flags,0,e).fd;case 1:case 2:return 0;case 3:return d.flags;case 4:return e=Y(),d.flags|=e,0;case 5:return e=Y(),Ia[e+0>>1]=2,0;case 6:case 7:return 0;
60
+ case 16:case 8:return-28;case 9:return I[fc()>>2]=28,-1;default:return-28}}catch(f){if("undefined"===typeof X||!(f instanceof M))throw f;return-f.ha}},F:function(a,b){try{var c=Z(a);return Yb(r,c.path,b)}catch(d){if("undefined"===typeof X||!(d instanceof M))throw d;return-d.ha}},B:function(a,b,c,d){try{b=F(b);var e=d&256;d&=4096;var f=b;if("/"===f[0])b=f;else{if(-100===a)var k="/";else{var m=R[a];if(!m)throw new M(8);k=m.path}if(0==f.length){if(!d)throw new M(44);b=k}else b=L(k+"/"+f)}return Yb(e?
61
+ Ib:r,b,c)}catch(p){if("undefined"===typeof X||!(p instanceof M))throw p;return-p.ha}},z:function(a,b){try{var c=R[a];if(!c)throw new M(8);if(0===(c.flags&2097155))throw new M(28);Lb(c.node,b);return 0}catch(d){if("undefined"===typeof X||!(d instanceof M))throw d;return-d.ha}},y:function(a,b){try{if(0===b)return-28;if(b<Ea("/")+1)return-68;D("/",l,a,b);return a}catch(c){if("undefined"===typeof X||!(c instanceof M))throw c;return-c.ha}},v:function(){return 0},H:function(a,b,c){Zb=c;try{var d=Z(a);switch(b){case 21509:case 21505:return d.tty?
62
+ 0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return d.tty?0:-59;case 21519:if(!d.tty)return-59;var e=Y();return I[e>>2]=0;case 21520:return d.tty?-28:-59;case 21531:a=e=Y();if(!d.fa.Ja)throw new M(59);return d.fa.Ja(d,b,a);case 21523:return d.tty?0:-59;case 21524:return d.tty?0:-59;default:B("bad ioctl syscall "+b)}}catch(f){if("undefined"===typeof X||!(f instanceof M))throw f;return-f.ha}},C:function(a,b){try{return a=F(a),Yb(Ib,a,b)}catch(c){if("undefined"===typeof X||
63
+ !(c instanceof M))throw c;return-c.ha}},s:function(a,b){try{return a=F(a),a=L(a),"/"===a[a.length-1]&&(a=a.substr(0,a.length-1)),V(a,b),0}catch(c){if("undefined"===typeof X||!(c instanceof M))throw c;return-c.ha}},r:function(a,b,c,d,e,f){try{a:{f<<=12;var k=!1;if(0!==(d&16)&&0!==a%65536)var m=-28;else{if(0!==(d&32)){var p=jb(b);if(!p){m=-48;break a}k=!0}else{var q=R[e];if(!q){m=-8;break a}var t=f;if(0!==(c&2)&&0===(d&2)&&2!==(q.flags&2097155))throw new M(2);if(1===(q.flags&2097155))throw new M(2);
64
+ if(!q.fa.ta)throw new M(43);var v=q.fa.ta(q,a,b,t,c,d);p=v.Oa;k=v.va}Xb[p]={La:p,Ka:b,va:k,fd:e,Na:c,flags:d,offset:f};m=p}}return m}catch(H){if("undefined"===typeof X||!(H instanceof M))throw H;return-H.ha}},q:function(a,b){try{var c=Xb[a];if(0!==b&&c){if(b===c.Ka){var d=R[c.fd];if(d&&c.Na&2){var e=c.flags,f=c.offset,k=l.slice(a,a+b);d&&d.fa.ua&&d.fa.ua(d,k,f,b,e)}Xb[a]=null;c.va&&gc(c.La)}var m=0}else m=-28;return m}catch(p){if("undefined"===typeof X||!(p instanceof M))throw p;return-p.ha}},h:function(a,
65
+ b,c){Zb=c;try{var d=F(a),e=c?Y():0;return n(d,b,e).fd}catch(f){if("undefined"===typeof X||!(f instanceof M))throw f;return-f.ha}},p:function(a,b,c){try{a=F(a);if(0>=c)var d=-28;else{var e=sb(a),f=Math.min(c,Ea(e)),k=E[b+f];D(e,l,b,c+1);E[b+f]=k;d=f}return d}catch(m){if("undefined"===typeof X||!(m instanceof M))throw m;return-m.ha}},o:function(a){try{a=F(a);var b=T(a,{parent:!0}).node,c=ab(a),d=O(b,c),e=Ab(b,c,!0);if(e)throw new M(e);if(!b.ea.rmdir)throw new M(63);if(d.pa)throw new M(10);b.ea.rmdir(b,
66
+ c);vb(d);return 0}catch(f){if("undefined"===typeof X||!(f instanceof M))throw f;return-f.ha}},D:function(a,b){try{return a=F(a),Yb(r,a,b)}catch(c){if("undefined"===typeof X||!(c instanceof M))throw c;return-c.ha}},n:function(a){try{return a=F(a),ka(a),0}catch(b){if("undefined"===typeof X||!(b instanceof M))throw b;return-b.ha}},d:function(){B("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")},l:function(){B("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")},
67
+ j:function(a,b){a=new Date(1E3*I[a>>2]);I[b>>2]=a.getSeconds();I[b+4>>2]=a.getMinutes();I[b+8>>2]=a.getHours();I[b+12>>2]=a.getDate();I[b+16>>2]=a.getMonth();I[b+20>>2]=a.getFullYear()-1900;I[b+24>>2]=a.getDay();var c=new Date(a.getFullYear(),0,1);I[b+28>>2]=(a.getTime()-c.getTime())/864E5|0;I[b+36>>2]=-(60*a.getTimezoneOffset());var d=(new Date(a.getFullYear(),6,1)).getTimezoneOffset();c=c.getTimezoneOffset();I[b+32>>2]=(d!=c&&a.getTimezoneOffset()==Math.min(c,d))|0},k:ac,e:bc,G:function(a,b,c){l.copyWithin(a,
68
+ b,b+c)},c:function(a){var b=l.length;a>>>=0;if(2147483648<a)return!1;for(var c=1;4>=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);d=Math.max(a,d);0<d%65536&&(d+=65536-d%65536);a:{try{xa.grow(Math.min(2147483648,d)-Ha.byteLength+65535>>>16);Ka();var e=1;break a}catch(f){}e=void 0}if(e)return!0}return!1},w:function(a,b){var c=0;dc().forEach(function(d,e){var f=b+c;e=I[a+4*e>>2]=f;for(f=0;f<d.length;++f)E[e++>>0]=d.charCodeAt(f);E[e>>0]=0;c+=d.length+1});return 0},x:function(a,b){var c=dc();I[a>>
69
+ 2]=c.length;var d=0;c.forEach(function(e){d+=e.length+1});I[b>>2]=d;return 0},b:function(a){try{var b=Z(a);ja(b);return 0}catch(c){if("undefined"===typeof X||!(c instanceof M))throw c;return c.ha}},m:function(a,b){try{var c=Z(a);E[b>>0]=c.tty?2:16384===(c.mode&61440)?3:40960===(c.mode&61440)?7:4;return 0}catch(d){if("undefined"===typeof X||!(d instanceof M))throw d;return d.ha}},g:function(a,b,c,d){try{a:{for(var e=Z(a),f=a=0;f<c;f++){var k=I[b+(8*f+4)>>2],m=ia(e,E,I[b+8*f>>2],k,void 0);if(0>m){var p=
70
+ -1;break a}a+=m;if(m<k)break}p=a}I[d>>2]=p;return 0}catch(q){if("undefined"===typeof X||!(q instanceof M))throw q;return q.ha}},t:function(a,b,c,d){try{var e=Number(b&BigInt(4294967295))|0,f=Number(b>>BigInt(32))|0,k=Z(a);a=4294967296*f+(e>>>0);if(-9007199254740992>=a||9007199254740992<=a)return-61;Nb(k,a,c);Ja[d>>3]=BigInt(k.position);k.xa&&0===a&&0===c&&(k.xa=null);return 0}catch(m){if("undefined"===typeof X||!(m instanceof M))throw m;return m.ha}},A:function(a){try{var b=Z(a);return b.fa&&b.fa.fsync?
71
+ -b.fa.fsync(b):0}catch(c){if("undefined"===typeof X||!(c instanceof M))throw c;return c.ha}},f:function(a,b,c,d){try{a:{for(var e=Z(a),f=a=0;f<c;f++){var k=Ob(e,E,I[b+8*f>>2],I[b+(8*f+4)>>2]);if(0>k){var m=-1;break a}a+=k}m=a}I[d>>2]=m;return 0}catch(p){if("undefined"===typeof X||!(p instanceof M))throw p;return p.ha}},E:function(a){var b=Date.now();I[a>>2]=b/1E3|0;I[a+4>>2]=b%1E3*1E3|0;return 0},L:function(a){var b=Date.now()/1E3|0;a&&(I[a>>2]=b);return b},M:function(a,b){if(b){var c=b+8;b=1E3*I[c>>
72
+ 2];b+=I[c+4>>2]/1E3}else b=Date.now();a=F(a);try{var d=T(a,{na:!0}).node;d.ea.ja(d,{timestamp:Math.max(b,b)});var e=0}catch(f){if(!(f instanceof M)){b:{e=Error();if(!e.stack){try{throw Error();}catch(k){e=k}if(!e.stack){e="(no stack trace available)";break b}}e=e.stack.toString()}g.extraStackTrace&&(e+="\n"+g.extraStackTrace());e=Ya(e);throw f+" : "+e;}e=f.ha;I[fc()>>2]=e;e=-1}return e}};
73
+ (function(){function a(e){g.asm=e.exports;xa=g.asm.N;Ka();La=g.asm.$;Na.unshift(g.asm.O);J--;g.monitorRunDependencies&&g.monitorRunDependencies(J);0==J&&(null!==Qa&&(clearInterval(Qa),Qa=null),Ra&&(e=Ra,Ra=null,e()))}function b(e){a(e.instance)}function c(e){return Wa().then(function(f){return WebAssembly.instantiate(f,d)}).then(function(f){return f}).then(e,function(f){y("failed to asynchronously prepare wasm: "+f);B(f)})}var d={a:hc};J++;g.monitorRunDependencies&&g.monitorRunDependencies(J);if(g.instantiateWasm)try{return g.instantiateWasm(d,
74
+ a)}catch(e){return y("Module.instantiateWasm callback failed with error: "+e),!1}(function(){return z||"function"!==typeof WebAssembly.instantiateStreaming||Sa()||K.startsWith("file://")||"function"!==typeof fetch?c(b):fetch(K,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,d).then(b,function(f){y("wasm streaming compile failed: "+f);y("falling back to ArrayBuffer instantiation");return c(b)})})})();return{}})();
75
+ g.___wasm_call_ctors=function(){return(g.___wasm_call_ctors=g.asm.O).apply(null,arguments)};var fa=g._dbCall=function(){return(fa=g._dbCall=g.asm.P).apply(null,arguments)};g._jsbatonGetString=function(){return(g._jsbatonGetString=g.asm.Q).apply(null,arguments)};var ca=g._sqlite3_malloc=function(){return(ca=g._sqlite3_malloc=g.asm.R).apply(null,arguments)},ha=g._sqlite3_free=function(){return(ha=g._sqlite3_free=g.asm.S).apply(null,arguments)};
76
+ g._dbFileLoadOrSave=function(){return(g._dbFileLoadOrSave=g.asm.T).apply(null,arguments)};var la=g._jsbatonGetInt64=function(){return(la=g._jsbatonGetInt64=g.asm.U).apply(null,arguments)};g._sqlite3_errmsg=function(){return(g._sqlite3_errmsg=g.asm.V).apply(null,arguments)};g._jsbatonGetErrmsg=function(){return(g._jsbatonGetErrmsg=g.asm.W).apply(null,arguments)};
77
+ var ma=g._sqlite3_initialize=function(){return(ma=g._sqlite3_initialize=g.asm.X).apply(null,arguments)},fc=g.___errno_location=function(){return(fc=g.___errno_location=g.asm.Y).apply(null,arguments)},Ga=g._malloc=function(){return(Ga=g._malloc=g.asm.Z).apply(null,arguments)},gc=g._free=function(){return(gc=g._free=g.asm._).apply(null,arguments)},kb=g._memalign=function(){return(kb=g._memalign=g.asm.aa).apply(null,arguments)},Ba=g.stackSave=function(){return(Ba=g.stackSave=g.asm.ba).apply(null,arguments)},
78
+ Ca=g.stackRestore=function(){return(Ca=g.stackRestore=g.asm.ca).apply(null,arguments)},Aa=g.stackAlloc=function(){return(Aa=g.stackAlloc=g.asm.da).apply(null,arguments)};g.cwrap=h;var ic;Ra=function jc(){ic||kc();ic||(Ra=jc)};
79
+ function kc(){function a(){if(!ic&&(ic=!0,g.calledRun=!0,!ya)){g.noFSInit||Qb||(Qb=!0,Pb(),g.stdin=g.stdin,g.stdout=g.stdout,g.stderr=g.stderr,g.stdin?Wb("stdin",g.stdin):Hb("/dev/tty","/dev/stdin"),g.stdout?Wb("stdout",null,g.stdout):Hb("/dev/tty","/dev/stdout"),g.stderr?Wb("stderr",null,g.stderr):Hb("/dev/tty1","/dev/stderr"),n("/dev/stdin",0),n("/dev/stdout",1),n("/dev/stderr",1));rb=!1;Xa(Na);if(g.onRuntimeInitialized)g.onRuntimeInitialized();if(g.postRun)for("function"==typeof g.postRun&&(g.postRun=
80
+ [g.postRun]);g.postRun.length;){var b=g.postRun.shift();Oa.unshift(b)}Xa(Oa)}}if(!(0<J)){if(g.preRun)for("function"==typeof g.preRun&&(g.preRun=[g.preRun]);g.preRun.length;)Pa();Xa(Ma);0<J||(g.setStatus?(g.setStatus("Running..."),setTimeout(function(){setTimeout(function(){g.setStatus("")},1);a()},1)):a())}}g.run=kc;if(g.preInit)for("function"==typeof g.preInit&&(g.preInit=[g.preInit]);0<g.preInit.length;)g.preInit.pop()();kc();
81
+
82
+ }());
83
+ /*jslint-enable*/
Binary file
package/test.mjs CHANGED
@@ -1108,30 +1108,20 @@ UPDATE __lgbm_state
1108
1108
  `);
1109
1109
  async function testLgbm(sqlDataXxx, sqlTrainXxx, sqlPredictXxx, sqlIi) {
1110
1110
  let db = await dbOpenAsync({});
1111
- let fileActual = `.tmp/test_lgbm_preb_${sqlIi}.txt`;
1111
+ let fileActual = `.tmp/test_lgbm_preb_${sqlIi}.js.txt`;
1112
1112
  await Promise.all([
1113
- dbTableImportAsync({
1113
+ [filePreb, "__lgbm_file_preb"],
1114
+ [fileTest, "__lgbm_file_test"],
1115
+ [fileTrain, "__lgbm_file_train"]
1116
+ ].map(async function ([filename, tableName]) {
1117
+ await dbTableImportAsync({
1114
1118
  db,
1115
- filename: filePreb,
1119
+ filename,
1116
1120
  headerMissing: true,
1117
1121
  mode: "tsv",
1118
- tableName: "__lgbm_file_preb"
1119
- }),
1120
- dbTableImportAsync({
1121
- db,
1122
- filename: fileTest,
1123
- headerMissing: true,
1124
- mode: "tsv",
1125
- tableName: "__lgbm_file_test"
1126
- }),
1127
- dbTableImportAsync({
1128
- db,
1129
- filename: fileTrain,
1130
- headerMissing: true,
1131
- mode: "tsv",
1132
- tableName: "__lgbm_file_train"
1133
- })
1134
- ]);
1122
+ tableName
1123
+ });
1124
+ }));
1135
1125
  await dbExecAsync({
1136
1126
  db,
1137
1127
  sql: (`
@@ -1186,7 +1176,7 @@ SELECT
1186
1176
  }
1187
1177
  await dbFileSaveAsync({
1188
1178
  db,
1189
- filename: `.tmp/test_lgbm_${sqlIi}.sqlite`
1179
+ filename: `.tmp/test_lgbm_${sqlIi}.js.sqlite`
1190
1180
  });
1191
1181
  assertJsonEqual(
1192
1182
  noop(
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file