js-dev-tool 1.2.13 → 1.2.16
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/extras/json-minify.js +23 -23
- package/extras/toggle-jsonl.js +60 -0
- package/package.json +6 -4
- package/tool-lib/rws.js +5 -2
- package/tool-lib/tools.d.ts +6 -1
package/extras/json-minify.js
CHANGED
|
@@ -11,28 +11,28 @@
|
|
|
11
11
|
* @version 2.3 2026/04/06 16:11:36
|
|
12
12
|
* @version 2.4 2026/04/08 08:31:11 - expand `sjv` to v25x
|
|
13
13
|
*/
|
|
14
|
-
const
|
|
14
|
+
const { ECC_MAP } = require("ts-cc-map");
|
|
15
15
|
/**
|
|
16
16
|
* @typedef {{ src: string }} TJsonSourceEnvelop
|
|
17
17
|
* @typedef {[ open: number, close: number ]} TBlacketPairCode
|
|
18
18
|
*/
|
|
19
19
|
/** @type {TBlacketPairCode} */
|
|
20
|
-
const array = [
|
|
20
|
+
const array = [ECC_MAP.LEFT_BRACKET, ECC_MAP.RIGHT_BRACKET];
|
|
21
21
|
/** @type {TBlacketPairCode} */
|
|
22
|
-
const object = [
|
|
22
|
+
const object = [ECC_MAP.LEFT_BRACE, ECC_MAP.RIGHT_BRACE];
|
|
23
23
|
/**
|
|
24
24
|
* ### (O)thers (M)ap
|
|
25
25
|
*
|
|
26
26
|
* @type {(0 | 1)[]}
|
|
27
27
|
*/
|
|
28
28
|
const om = Array(127).fill(0);
|
|
29
|
-
om[
|
|
30
|
-
om[
|
|
31
|
-
om[
|
|
32
|
-
om[
|
|
33
|
-
om[
|
|
34
|
-
om[
|
|
35
|
-
om[
|
|
29
|
+
om[ECC_MAP.DOUBLE_QUOTE] = 1;
|
|
30
|
+
om[ECC_MAP.COMMA] = 1;
|
|
31
|
+
om[ECC_MAP.COLON] = 1;
|
|
32
|
+
om[ECC_MAP.LEFT_BRACKET] = 1;
|
|
33
|
+
om[ECC_MAP.RIGHT_BRACKET] = 1;
|
|
34
|
+
om[ECC_MAP.LEFT_BRACE] = 1;
|
|
35
|
+
om[ECC_MAP.RIGHT_BRACE] = 1;
|
|
36
36
|
/**
|
|
37
37
|
* @param {string} message
|
|
38
38
|
* @param {number} offset
|
|
@@ -73,14 +73,14 @@ function v25x(source) {
|
|
|
73
73
|
out.src += "\n";
|
|
74
74
|
}
|
|
75
75
|
switch (source.charCodeAt(next)) {
|
|
76
|
-
case
|
|
76
|
+
case ECC_MAP.DOUBLE_QUOTE: {
|
|
77
77
|
const skiped = sqs(source, next);
|
|
78
78
|
out.src += source.slice(next, skiped);
|
|
79
79
|
offset = skiped;
|
|
80
80
|
break;
|
|
81
81
|
}
|
|
82
|
-
case
|
|
83
|
-
case
|
|
82
|
+
case ECC_MAP.LEFT_BRACKET:
|
|
83
|
+
case ECC_MAP.LEFT_BRACE:
|
|
84
84
|
offset = sjoCode(source, next, out);
|
|
85
85
|
break;
|
|
86
86
|
default: {
|
|
@@ -103,9 +103,9 @@ function v25x(source) {
|
|
|
103
103
|
*/
|
|
104
104
|
function sjv(source, offset, out) {
|
|
105
105
|
switch (source.charCodeAt(offset)) {
|
|
106
|
-
case
|
|
107
|
-
case
|
|
108
|
-
case
|
|
106
|
+
case ECC_MAP.LEFT_BRACE:
|
|
107
|
+
case ECC_MAP.LEFT_BRACKET: return sjoCode(source, offset, out);
|
|
108
|
+
case ECC_MAP.DOUBLE_QUOTE: {
|
|
109
109
|
const next = sqs(source, offset);
|
|
110
110
|
out.src += source.slice(offset, next);
|
|
111
111
|
return next;
|
|
@@ -136,8 +136,8 @@ function sjoCode(source, offset, out) {
|
|
|
136
136
|
const sourceLen = source.length;
|
|
137
137
|
while (offset < sourceLen) {
|
|
138
138
|
const code = source.charCodeAt(offset++);
|
|
139
|
-
if (code <= 32 /*
|
|
140
|
-
if (code === 34 /*
|
|
139
|
+
if (code <= 32 /* ECC_MAP.SPACE */) continue;
|
|
140
|
+
if (code === 34 /* ECC_MAP.DOUBLE_QUOTE */) {
|
|
141
141
|
const next = sqs(source, offset - 1);
|
|
142
142
|
sourceRef += source.slice(offset - 1, next);
|
|
143
143
|
offset = next;
|
|
@@ -188,11 +188,11 @@ function sqs(source, offset) {
|
|
|
188
188
|
let inEscape = false;
|
|
189
189
|
while (next < srcLen) {
|
|
190
190
|
const code = source.charCodeAt(next++);
|
|
191
|
-
if (code === 92 /*
|
|
191
|
+
if (code === 92 /* ECC_MAP.BACKSLASH */) {
|
|
192
192
|
inEscape = !inEscape;
|
|
193
193
|
} else if (inEscape) {
|
|
194
194
|
inEscape = false;
|
|
195
|
-
} else if (code === 34 /*
|
|
195
|
+
} else if (code === 34 /* ECC_MAP.DOUBLE_QUOTE */) {
|
|
196
196
|
return next;
|
|
197
197
|
}
|
|
198
198
|
}
|
|
@@ -258,14 +258,14 @@ function parseJsonl(source) {
|
|
|
258
258
|
out.src = "";
|
|
259
259
|
}
|
|
260
260
|
switch (source.charCodeAt(next)) {
|
|
261
|
-
case
|
|
261
|
+
case ECC_MAP.DOUBLE_QUOTE: {
|
|
262
262
|
const skiped = sqs(source, next);
|
|
263
263
|
out.src += source.slice(next, skiped);
|
|
264
264
|
offset = skiped;
|
|
265
265
|
break;
|
|
266
266
|
}
|
|
267
|
-
case
|
|
268
|
-
case
|
|
267
|
+
case ECC_MAP.LEFT_BRACKET:
|
|
268
|
+
case ECC_MAP.LEFT_BRACE:
|
|
269
269
|
offset = sjoCode(source, next, out);
|
|
270
270
|
break;
|
|
271
271
|
default: {
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/*!
|
|
3
|
+
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
4
|
+
// Copyright (C) 2026 jeffy-g <hirotom1107@gmail.com>
|
|
5
|
+
// Released under the MIT license
|
|
6
|
+
// https://opensource.org/licenses/mit-license.php
|
|
7
|
+
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
8
|
+
*/
|
|
9
|
+
"use strict";
|
|
10
|
+
/**
|
|
11
|
+
* @file extras/toggle-jsonl.js
|
|
12
|
+
* @command tgl-jsonl [-un] <jsonl path> <jsonl path>
|
|
13
|
+
* @command node extras/toggle-jsonl.js
|
|
14
|
+
*/
|
|
15
|
+
const tinArgs = require("tin-args");
|
|
16
|
+
const utils = require("../utils.js");
|
|
17
|
+
const { parseJsonl } = require("./json-minify.js");
|
|
18
|
+
const reset = "\x1b[0m";
|
|
19
|
+
const green = "\x1b[32m";
|
|
20
|
+
const yellow = "\x1b[33m";
|
|
21
|
+
const blue = "\x1b[34m";
|
|
22
|
+
const orange = "\x1b[38;5;208m";
|
|
23
|
+
/**
|
|
24
|
+
* @typedef TToggleJsonArgs
|
|
25
|
+
* @prop {true=} un un format jsonl file
|
|
26
|
+
*/
|
|
27
|
+
/** @type {tinArgs.TTinArgsReturnType<TToggleJsonArgs>} */
|
|
28
|
+
const args = tinArgs();
|
|
29
|
+
const files = args.args;
|
|
30
|
+
if (files) {
|
|
31
|
+
const needFormat = !args.un;
|
|
32
|
+
for (const file of files) {
|
|
33
|
+
utils.log(`${blue}[toggle-jsonl]${reset}: convert to ${yellow}${needFormat ? "" : "un-"}formatted jsonl${reset} - ${green}${file}${reset}`);
|
|
34
|
+
let jsonlSource = "";
|
|
35
|
+
const source = utils.readText(file);
|
|
36
|
+
/** @type {Record<string, any>[]} */
|
|
37
|
+
const jsonArray = parseJsonl(source);
|
|
38
|
+
if (needFormat) {
|
|
39
|
+
for (const json of jsonArray) {
|
|
40
|
+
jsonlSource += utils.formatedStringify(json) + "\n";
|
|
41
|
+
}
|
|
42
|
+
} else {
|
|
43
|
+
for (const json of jsonArray) {
|
|
44
|
+
jsonlSource += JSON.stringify(json) + "\n";
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
utils.writeText(jsonlSource, file);
|
|
48
|
+
}
|
|
49
|
+
} else {
|
|
50
|
+
utils.log(
|
|
51
|
+
`${orange}Please specify the path to the JSONL file to process...${reset}` +
|
|
52
|
+
`
|
|
53
|
+
|
|
54
|
+
Usage: ${yellow}tgl-jsonl${reset} [-un] <jsonl path> <jsonl path>
|
|
55
|
+
|
|
56
|
+
about: options
|
|
57
|
+
-un: convert to "un-formatted jsonl", if not spcedified then will be formatted jsonl source
|
|
58
|
+
`
|
|
59
|
+
);
|
|
60
|
+
}
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "js-dev-tool",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.16",
|
|
4
4
|
"bin": {
|
|
5
|
-
"jstool": "tools.js"
|
|
5
|
+
"jstool": "tools.js",
|
|
6
|
+
"tgl-jsonl": "extras/toggle-jsonl.js"
|
|
6
7
|
},
|
|
7
8
|
"types": "./index.d.ts",
|
|
8
9
|
"main": "./index.js",
|
|
@@ -91,7 +92,8 @@
|
|
|
91
92
|
"mini-semaphore": "^1.5.4",
|
|
92
93
|
"replace": "^1.2.2",
|
|
93
94
|
"rm-cstyle-cmts": "^3.4.4",
|
|
94
|
-
"terser": "^5.
|
|
95
|
-
"tin-args": "^0.1.
|
|
95
|
+
"terser": "^5.47.1",
|
|
96
|
+
"tin-args": "^0.1.6",
|
|
97
|
+
"ts-cc-map": "^1.1.0"
|
|
96
98
|
}
|
|
97
99
|
}
|
package/tool-lib/rws.js
CHANGED
|
@@ -73,7 +73,9 @@ module.exports = (fs, utils) => {
|
|
|
73
73
|
return {
|
|
74
74
|
taskName: "(R)ecord(W)ebpack(S)ize",
|
|
75
75
|
fn() {
|
|
76
|
-
const
|
|
76
|
+
const versionSourcePath = params.versionSource || "./package.json";
|
|
77
|
+
/** @type {{ version: TVersionString }} */
|
|
78
|
+
const thisPackage = utils.readJson(versionSourcePath);
|
|
77
79
|
const recordPath = params.dest || "./logs/webpack-size.json";
|
|
78
80
|
/** @type {TVersionRecords} */
|
|
79
81
|
const sizeRecord = fs.existsSync(recordPath)
|
|
@@ -162,8 +164,9 @@ module.exports = (fs, utils) => {
|
|
|
162
164
|
},
|
|
163
165
|
get help() {
|
|
164
166
|
return `${this.taskName}
|
|
165
|
-
ex - jstool -cmd rws [-webpack lib/webpack.js -umd umd/webpack.js -dest "./dev-extras/webpack-size.json"] [-rws-tags "web/login:./dist/es/web/login.mjs,webpack-esm:./dist/webpack-esm/index.mjs"]
|
|
167
|
+
ex - jstool -cmd rws [-versionSource "<version source path>"] [-webpack lib/webpack.js -umd umd/webpack.js -dest "./dev-extras/webpack-size.json"] [-rws-tags "web/login:./dist/es/web/login.mjs,webpack-esm:./dist/webpack-esm/index.mjs"]
|
|
166
168
|
note:
|
|
169
|
+
versionSource - JSON file path used to read the "version" field. if not specified then apply "./package.json"
|
|
167
170
|
webpack - if not specified then apply "./dist/webpack/index.js"
|
|
168
171
|
umd - if not specified then apply "./dist/umd/index.js"
|
|
169
172
|
bin - if not specified then apply "./dist/bin/index.js"
|
package/tool-lib/tools.d.ts
CHANGED
|
@@ -77,6 +77,11 @@ declare global {
|
|
|
77
77
|
regex: RegExp;
|
|
78
78
|
/** rmc */
|
|
79
79
|
rmc4ts: boolean | "keepBangLine";
|
|
80
|
+
/**
|
|
81
|
+
* @default `./package.json`
|
|
82
|
+
* @date 2026/05/12 22:06:36
|
|
83
|
+
*/
|
|
84
|
+
versionSource?: string;
|
|
80
85
|
/**
|
|
81
86
|
* webpacked source path.
|
|
82
87
|
* @default `./dist/webpack/index.js`
|
|
@@ -137,7 +142,7 @@ declare global {
|
|
|
137
142
|
/**
|
|
138
143
|
* version command type
|
|
139
144
|
*/
|
|
140
|
-
declare type TVersionString = `${number}.${number}.${number}`;
|
|
145
|
+
declare type TVersionString = `${number}.${number}.${number}${string}`;
|
|
141
146
|
declare type TVersionRecords = Record<TVersionString, Partial<Record<TRwsTags, number>>>;
|
|
142
147
|
declare type TSizeRecordEntry = TVersionRecords["0.0.0"];
|
|
143
148
|
}
|