sqlmath 2025.9.30 → 2025.12.28

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/CHANGELOG.md CHANGED
@@ -1,10 +1,16 @@
1
1
  # Changelog
2
2
 
3
3
  # Todo
4
+ - betadog - Add function taskBacktest() to auto-remove features with low feature-importance.
4
5
  - sqlmath - Re-introduce sliding-discrete-fourier-transform to improve initial guess in sql-function WIN_SINEFIT2().
5
6
  - sqlite - Add similar error-handling from builtin-sql-function PERCENTILE() into custom-sql-function QUANTILE().
6
7
  - none
7
8
 
9
+ # v2025.12.28
10
+ - jslint - Upgrade to jslint-v2025.12.28.
11
+ - sqlmath - Update function dbOpenAsync() with default-prm timeoutBusy=5000.
12
+ - ci - Upgrade nodejs used in ci to v24.
13
+
8
14
  # v2025.9.30
9
15
  - sqlmath - Update function dbExecProfile() with additional-arg sqlLength.
10
16
  - sqlmath - Update function dbOpenAsync() with default-filename :memory:.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
  # Status
5
- | Branch | [master<br>(v2025.9.30)](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>(v2025.12.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) |
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-2025.9.30*
125
- py -m pip install --index-url https://test.pypi.org/simple/ sqlmath==2025.9.30
124
+ twine upload --repository testpypi dist/sqlmath-2025.12.28*
125
+ py -m pip install --index-url https://test.pypi.org/simple/ sqlmath==2025.12.28
126
126
  #
127
- twine upload dist/sqlmath-2025.9.30*
128
- pip install sqlmath==2025.9.30
127
+ twine upload dist/sqlmath-2025.12.28*
128
+ pip install sqlmath==2025.12.28
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
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 = "v2025.9.1-beta";
166
+ let jslint_edition = "v2025.12.28";
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.
@@ -4674,7 +4674,13 @@ function jslint_phase3_parse(state) {
4674
4674
 
4675
4675
  test_cause("free");
4676
4676
  the_paren.free = true;
4677
- if (the_argument.wrapped === true) {
4677
+ if (
4678
+ the_argument.wrapped === true
4679
+
4680
+ // PR-483 - Allow parenthesis after ellipsis inside a function call.
4681
+
4682
+ && the_argument.ellipsis !== true
4683
+ ) {
4678
4684
 
4679
4685
  // test_cause:
4680
4686
  // ["aa((0))", "infix_lparen", "unexpected_a", "(", 3]
@@ -5158,6 +5164,10 @@ function jslint_phase3_parse(state) {
5158
5164
  the_label.dead = false;
5159
5165
  the_label.init = true;
5160
5166
  the_statement = parse_statement();
5167
+
5168
+ // Issue #458 - Regression - Warn about variable usage before initialization.
5169
+
5170
+ the_label.dead = true;
5161
5171
  functionage.statement_prv = the_statement;
5162
5172
  the_statement.label = the_label;
5163
5173
  the_statement.statement = true;
@@ -5204,9 +5214,13 @@ function jslint_phase3_parse(state) {
5204
5214
  }
5205
5215
  semicolon();
5206
5216
  }
5207
- if (the_label !== undefined) {
5208
- the_label.dead = true;
5209
- }
5217
+
5218
+ // Issue #458 - Regression - Warn about variable usage before initialization.
5219
+
5220
+ // if (the_label !== undefined) {
5221
+ // the_label.dead = true;
5222
+ // }
5223
+
5210
5224
  return the_statement;
5211
5225
  }
5212
5226
 
@@ -6987,8 +7001,16 @@ function jslint_phase3_parse(state) {
6987
7001
  the_variable.names.push(name);
6988
7002
  enroll(name, "variable", mode_const);
6989
7003
  }
6990
- name.dead = false;
7004
+
7005
+ // Issue #458 - Regression - Warn about variable usage before initialization.
7006
+
7007
+ // name.dead = false;
7008
+
6991
7009
  name.init = true;
7010
+
7011
+ // test_cause:
7012
+ // ["const {aa}=bb;\nconst bb=0;", "lookup", "out_of_scope_a", "bb", 12]
7013
+
6992
7014
  if (token_nxt.id === "=") {
6993
7015
 
6994
7016
  // test_cause:
@@ -7039,8 +7061,16 @@ function jslint_phase3_parse(state) {
7039
7061
  advance();
7040
7062
  the_variable.names.push(name);
7041
7063
  enroll(name, "variable", mode_const);
7042
- name.dead = false;
7064
+
7065
+ // Issue #458 - Regression - Warn about variable usage before initialization.
7066
+
7067
+ // name.dead = false;
7068
+
7043
7069
  name.init = true;
7070
+
7071
+ // test_cause:
7072
+ // ["const [aa]=bb;\nconst bb=0;", "lookup", "out_of_scope_a", "bb", 12]
7073
+
7044
7074
  if (ellipsis) {
7045
7075
  name.ellipsis = true;
7046
7076
  break;
@@ -7073,8 +7103,16 @@ function jslint_phase3_parse(state) {
7073
7103
  enroll(name, "variable", mode_const);
7074
7104
  if (token_nxt.id === "=" || mode_const) {
7075
7105
  advance("=");
7076
- name.dead = false;
7106
+
7107
+ // Issue #458 - Regression - Warn about variable usage before initialization.
7108
+
7109
+ // name.dead = false;
7110
+
7077
7111
  name.init = true;
7112
+
7113
+ // test_cause:
7114
+ // ["const aa=bb;\nconst bb=0;", "lookup", "out_of_scope_a", "bb", 10]
7115
+
7078
7116
  name.expression = parse_expression(0);
7079
7117
  }
7080
7118
  the_variable.names.push(name);
package/package.json CHANGED
@@ -32,5 +32,5 @@
32
32
  },
33
33
  "shCiArtifactUpload": 1,
34
34
  "shCiPublishNpm": 1,
35
- "version": "2025.9.30"
35
+ "version": "2025.12.28"
36
36
  }
package/sqlmath.mjs CHANGED
@@ -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 = "v2025.9.30";
131
+ let version = "v2025.12.28";
132
132
 
133
133
  async function assertErrorThrownAsync(asyncFunc, regexp) {
134
134
 
@@ -1003,7 +1003,8 @@ async function dbOpenAsync({
1003
1003
  dbData,
1004
1004
  filename = ":memory:",
1005
1005
  flags,
1006
- threadCount = 1
1006
+ threadCount = 1,
1007
+ timeoutBusy = 5000
1007
1008
  }) {
1008
1009
 
1009
1010
  // This function will open and return sqlite-database-connection <db>.
@@ -1057,7 +1058,10 @@ async function dbOpenAsync({
1057
1058
  libLgbm = `${import.meta.dirname}/sqlmath/${libLgbm}`;
1058
1059
  await dbExecAsync({
1059
1060
  db,
1060
- sql: `SELECT LGBM_DLOPEN('${libLgbm}');`
1061
+ sql: (`
1062
+ PRAGMA busy_timeout = ${timeoutBusy};
1063
+ SELECT LGBM_DLOPEN('${libLgbm}');
1064
+ `)
1061
1065
  });
1062
1066
  }
1063
1067
  return db;
@@ -2046,6 +2046,7 @@ DELETE FROM ${baton.dbtableName} WHERE rowid = ${baton.rowid};
2046
2046
  data = (
2047
2047
  String(`
2048
2048
  -- DROP TABLE __sqlite_table_01;
2049
+ -- IF OBJECT_ID('tempdb..#tmp1') IS NOT NULL DROP TABLE #tmp1;
2049
2050
  -- SELECT * FROM __sqlite_table_01;
2050
2051
  -- ALTER TABLE __sqlite_table_01 RENAME TO __sqlite_table_02;
2051
2052
  -- EXEC sp_rename '__sqlite_table_01', '__sqlite_table_02';