@fgv/ts-res-browser 1.0.0 → 5.0.0-2
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/.rush/temp/{5fc90bc7c2ccf812114ea099111568e5429be2a2.tar.log → 587277bfc395406ad444e989b6c309b9698f534c.tar.log} +2 -2
- package/.rush/temp/chunked-rush-logs/ts-res-browser.build.chunks.jsonl +12 -12
- package/.rush/temp/operation/build/all.log +12 -12
- package/.rush/temp/operation/build/log-chunks.jsonl +12 -12
- package/.rush/temp/operation/build/state.json +1 -1
- package/.rush/temp/shrinkwrap-deps.json +11 -3
- package/README.md +85 -15
- package/cli.js +45 -0
- package/dist/bundle.js +1 -1
- package/package.json +12 -7
- package/rush-logs/ts-res-browser.build.cache.log +1 -1
- package/rush-logs/ts-res-browser.build.log +12 -12
- package/src/App.tsx +122 -1
- package/src/components/common/FileImporter.tsx +10 -5
- package/src/components/layout/Sidebar.tsx +8 -1
- package/src/components/tools/ConfigurationTool.tsx +4 -1
- package/src/components/tools/FilterTool.tsx +106 -19
- package/src/components/tools/ImportTool.tsx +3 -0
- package/src/components/tools/ZipLoader.tsx +302 -0
- package/src/hooks/useAppState.ts +4 -0
- package/src/hooks/useResourceManager.ts +52 -1
- package/src/hooks/useUrlParams.ts +56 -0
- package/src/types/app.ts +9 -1
- package/src/utils/fileImport.ts +7 -5
- package/src/utils/fileTreeConverter.ts +160 -0
- package/src/utils/urlParams.ts +238 -0
- package/src/utils/zip/browserZipFileTreeAccessors.ts +385 -0
- package/webpack.config.js +7 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
Start time:
|
|
2
|
-
Invoking "/usr/bin/tar -c -f /home/runner/work/fgv/fgv/common/temp/build-cache/
|
|
1
|
+
Start time: Tue Jul 22 2025 06:50:27 GMT+0000 (Coordinated Universal Time)
|
|
2
|
+
Invoking "/usr/bin/tar -c -f /home/runner/work/fgv/fgv/common/temp/build-cache/587277bfc395406ad444e989b6c309b9698f534c-4fe947f985563cb6.temp -z --files-from=-"
|
|
3
3
|
|
|
4
4
|
======= BEGIN PROCESS INPUT ======
|
|
5
5
|
.rush/temp/operation/build/all.log
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
{"kind":"O","text":"Invoking: webpack --mode production \n"}
|
|
2
|
-
{"kind":"O","text":"asset \u001b[1m\u001b[33mbundle.js\u001b[39m\u001b[22m \u001b[1m\u001b[33m2.
|
|
2
|
+
{"kind":"O","text":"asset \u001b[1m\u001b[33mbundle.js\u001b[39m\u001b[22m \u001b[1m\u001b[33m2.41 MiB\u001b[39m\u001b[22m \u001b[1m\u001b[32m[emitted]\u001b[39m\u001b[22m \u001b[1m\u001b[32m[minimized]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[big]\u001b[39m\u001b[22m (name: main) 1 related asset\n"}
|
|
3
3
|
{"kind":"O","text":"asset \u001b[1m\u001b[32mindex.html\u001b[39m\u001b[22m 478 bytes \u001b[1m\u001b[32m[emitted]\u001b[39m\u001b[22m\n"}
|
|
4
|
-
{"kind":"O","text":"orphan modules
|
|
4
|
+
{"kind":"O","text":"orphan modules 678 KiB \u001b[1m\u001b[33m[orphan]\u001b[39m\u001b[22m 353 modules\n"}
|
|
5
5
|
{"kind":"O","text":"runtime modules 1.02 KiB 6 modules\n"}
|
|
6
|
-
{"kind":"O","text":"modules by path \u001b[1m../../common/temp/node_modules/.pnpm/\u001b[39m\u001b[22m 2.
|
|
7
|
-
{"kind":"O","text":"modules by path \u001b[1m../../libraries/\u001b[39m\u001b[22m 2.
|
|
8
|
-
{"kind":"O","text":" javascript modules 1.
|
|
6
|
+
{"kind":"O","text":"modules by path \u001b[1m../../common/temp/node_modules/.pnpm/\u001b[39m\u001b[22m 2.38 MiB 841 modules\n"}
|
|
7
|
+
{"kind":"O","text":"modules by path \u001b[1m../../libraries/\u001b[39m\u001b[22m 2.24 MiB\n"}
|
|
8
|
+
{"kind":"O","text":" javascript modules 1.41 MiB 314 modules\n"}
|
|
9
9
|
{"kind":"O","text":" json modules 849 KiB 4 modules\n"}
|
|
10
10
|
{"kind":"O","text":"optional modules 60 bytes \u001b[1m\u001b[33m[optional]\u001b[39m\u001b[22m\n"}
|
|
11
11
|
{"kind":"O","text":" \u001b[1mbuffer (ignored)\u001b[39m\u001b[22m 15 bytes \u001b[1m\u001b[33m[optional]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[built]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[code generated]\u001b[39m\u001b[22m\n"}
|
|
12
12
|
{"kind":"O","text":" \u001b[1mcrypto (ignored)\u001b[39m\u001b[22m 15 bytes \u001b[1m\u001b[33m[optional]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[built]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[code generated]\u001b[39m\u001b[22m\n"}
|
|
13
13
|
{"kind":"O","text":" \u001b[1mbuffer (ignored)\u001b[39m\u001b[22m 15 bytes \u001b[1m\u001b[33m[optional]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[built]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[code generated]\u001b[39m\u001b[22m\n"}
|
|
14
14
|
{"kind":"O","text":" \u001b[1mvm (ignored)\u001b[39m\u001b[22m 15 bytes \u001b[1m\u001b[33m[optional]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[built]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[code generated]\u001b[39m\u001b[22m\n"}
|
|
15
|
-
{"kind":"O","text":"modules by path \u001b[1m./src/\u001b[39m\u001b[22m
|
|
16
|
-
{"kind":"O","text":" \u001b[1m./src/main.tsx +
|
|
17
|
-
{"kind":"O","text":" ../../common/temp/node_modules/.pnpm/css-loader@7.1.2_webpack@5.100.1/node_modules/css-loader/dist/cjs.js!../../common/temp/node_modules/.pnpm/postcss-loader@8.1.1_postcss@8.5.6_typescript@5.8.3_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js!\u001b[1m./src/index.css\u001b[39m\u001b[22m 35.
|
|
18
|
-
{"kind":"O","text":"+
|
|
15
|
+
{"kind":"O","text":"modules by path \u001b[1m./src/\u001b[39m\u001b[22m 406 KiB\n"}
|
|
16
|
+
{"kind":"O","text":" \u001b[1m./src/main.tsx + 54 modules\u001b[39m\u001b[22m 370 KiB \u001b[1m\u001b[33m[built]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[code generated]\u001b[39m\u001b[22m\n"}
|
|
17
|
+
{"kind":"O","text":" ../../common/temp/node_modules/.pnpm/css-loader@7.1.2_webpack@5.100.1/node_modules/css-loader/dist/cjs.js!../../common/temp/node_modules/.pnpm/postcss-loader@8.1.1_postcss@8.5.6_typescript@5.8.3_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js!\u001b[1m./src/index.css\u001b[39m\u001b[22m 35.7 KiB \u001b[1m\u001b[33m[built]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[code generated]\u001b[39m\u001b[22m\n"}
|
|
18
|
+
{"kind":"O","text":"+ 15 modules\n"}
|
|
19
19
|
{"kind":"O","text":"\n"}
|
|
20
20
|
{"kind":"O","text":"\u001b[1m\u001b[33mWARNING\u001b[39m\u001b[22m in \u001b[1masset size limit: The following asset(s) exceed the recommended size limit (244 KiB).\n"}
|
|
21
21
|
{"kind":"O","text":"This can impact web performance.\n"}
|
|
22
22
|
{"kind":"O","text":"Assets: \n"}
|
|
23
|
-
{"kind":"O","text":" bundle.js (2.
|
|
23
|
+
{"kind":"O","text":" bundle.js (2.41 MiB)\u001b[39m\u001b[22m\n"}
|
|
24
24
|
{"kind":"O","text":"\n"}
|
|
25
25
|
{"kind":"O","text":"\u001b[1m\u001b[33mWARNING\u001b[39m\u001b[22m in \u001b[1mentrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.\n"}
|
|
26
26
|
{"kind":"O","text":"Entrypoints:\n"}
|
|
27
|
-
{"kind":"O","text":" main (2.
|
|
27
|
+
{"kind":"O","text":" main (2.41 MiB)\n"}
|
|
28
28
|
{"kind":"O","text":" bundle.js\n"}
|
|
29
29
|
{"kind":"O","text":"\u001b[39m\u001b[22m\n"}
|
|
30
30
|
{"kind":"O","text":"\n"}
|
|
@@ -32,4 +32,4 @@
|
|
|
32
32
|
{"kind":"O","text":"You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application.\n"}
|
|
33
33
|
{"kind":"O","text":"For more info visit https://webpack.js.org/guides/code-splitting/\u001b[39m\u001b[22m\n"}
|
|
34
34
|
{"kind":"O","text":"\n"}
|
|
35
|
-
{"kind":"O","text":"webpack 5.100.1 compiled with \u001b[1m\u001b[33m3 warnings\u001b[39m\u001b[22m in
|
|
35
|
+
{"kind":"O","text":"webpack 5.100.1 compiled with \u001b[1m\u001b[33m3 warnings\u001b[39m\u001b[22m in 21598 ms\n"}
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
Invoking: webpack --mode production
|
|
2
|
-
asset bundle.js 2.
|
|
2
|
+
asset bundle.js 2.41 MiB [emitted] [minimized] [big] (name: main) 1 related asset
|
|
3
3
|
asset index.html 478 bytes [emitted]
|
|
4
|
-
orphan modules
|
|
4
|
+
orphan modules 678 KiB [orphan] 353 modules
|
|
5
5
|
runtime modules 1.02 KiB 6 modules
|
|
6
|
-
modules by path ../../common/temp/node_modules/.pnpm/ 2.
|
|
7
|
-
modules by path ../../libraries/ 2.
|
|
8
|
-
javascript modules 1.
|
|
6
|
+
modules by path ../../common/temp/node_modules/.pnpm/ 2.38 MiB 841 modules
|
|
7
|
+
modules by path ../../libraries/ 2.24 MiB
|
|
8
|
+
javascript modules 1.41 MiB 314 modules
|
|
9
9
|
json modules 849 KiB 4 modules
|
|
10
10
|
optional modules 60 bytes [optional]
|
|
11
11
|
buffer (ignored) 15 bytes [optional] [built] [code generated]
|
|
12
12
|
crypto (ignored) 15 bytes [optional] [built] [code generated]
|
|
13
13
|
buffer (ignored) 15 bytes [optional] [built] [code generated]
|
|
14
14
|
vm (ignored) 15 bytes [optional] [built] [code generated]
|
|
15
|
-
modules by path ./src/
|
|
16
|
-
./src/main.tsx +
|
|
17
|
-
../../common/temp/node_modules/.pnpm/css-loader@7.1.2_webpack@5.100.1/node_modules/css-loader/dist/cjs.js!../../common/temp/node_modules/.pnpm/postcss-loader@8.1.1_postcss@8.5.6_typescript@5.8.3_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js!./src/index.css 35.
|
|
18
|
-
+
|
|
15
|
+
modules by path ./src/ 406 KiB
|
|
16
|
+
./src/main.tsx + 54 modules 370 KiB [built] [code generated]
|
|
17
|
+
../../common/temp/node_modules/.pnpm/css-loader@7.1.2_webpack@5.100.1/node_modules/css-loader/dist/cjs.js!../../common/temp/node_modules/.pnpm/postcss-loader@8.1.1_postcss@8.5.6_typescript@5.8.3_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js!./src/index.css 35.7 KiB [built] [code generated]
|
|
18
|
+
+ 15 modules
|
|
19
19
|
|
|
20
20
|
WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
|
|
21
21
|
This can impact web performance.
|
|
22
22
|
Assets:
|
|
23
|
-
bundle.js (2.
|
|
23
|
+
bundle.js (2.41 MiB)
|
|
24
24
|
|
|
25
25
|
WARNING in entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
|
|
26
26
|
Entrypoints:
|
|
27
|
-
main (2.
|
|
27
|
+
main (2.41 MiB)
|
|
28
28
|
bundle.js
|
|
29
29
|
|
|
30
30
|
|
|
@@ -32,4 +32,4 @@ WARNING in webpack performance recommendations:
|
|
|
32
32
|
You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application.
|
|
33
33
|
For more info visit https://webpack.js.org/guides/code-splitting/
|
|
34
34
|
|
|
35
|
-
webpack 5.100.1 compiled with 3 warnings in
|
|
35
|
+
webpack 5.100.1 compiled with 3 warnings in 21598 ms
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
{"kind":"O","text":"Invoking: webpack --mode production \n"}
|
|
2
|
-
{"kind":"O","text":"asset \u001b[1m\u001b[33mbundle.js\u001b[39m\u001b[22m \u001b[1m\u001b[33m2.
|
|
2
|
+
{"kind":"O","text":"asset \u001b[1m\u001b[33mbundle.js\u001b[39m\u001b[22m \u001b[1m\u001b[33m2.41 MiB\u001b[39m\u001b[22m \u001b[1m\u001b[32m[emitted]\u001b[39m\u001b[22m \u001b[1m\u001b[32m[minimized]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[big]\u001b[39m\u001b[22m (name: main) 1 related asset\n"}
|
|
3
3
|
{"kind":"O","text":"asset \u001b[1m\u001b[32mindex.html\u001b[39m\u001b[22m 478 bytes \u001b[1m\u001b[32m[emitted]\u001b[39m\u001b[22m\n"}
|
|
4
|
-
{"kind":"O","text":"orphan modules
|
|
4
|
+
{"kind":"O","text":"orphan modules 678 KiB \u001b[1m\u001b[33m[orphan]\u001b[39m\u001b[22m 353 modules\n"}
|
|
5
5
|
{"kind":"O","text":"runtime modules 1.02 KiB 6 modules\n"}
|
|
6
|
-
{"kind":"O","text":"modules by path \u001b[1m../../common/temp/node_modules/.pnpm/\u001b[39m\u001b[22m 2.
|
|
7
|
-
{"kind":"O","text":"modules by path \u001b[1m../../libraries/\u001b[39m\u001b[22m 2.
|
|
8
|
-
{"kind":"O","text":" javascript modules 1.
|
|
6
|
+
{"kind":"O","text":"modules by path \u001b[1m../../common/temp/node_modules/.pnpm/\u001b[39m\u001b[22m 2.38 MiB 841 modules\n"}
|
|
7
|
+
{"kind":"O","text":"modules by path \u001b[1m../../libraries/\u001b[39m\u001b[22m 2.24 MiB\n"}
|
|
8
|
+
{"kind":"O","text":" javascript modules 1.41 MiB 314 modules\n"}
|
|
9
9
|
{"kind":"O","text":" json modules 849 KiB 4 modules\n"}
|
|
10
10
|
{"kind":"O","text":"optional modules 60 bytes \u001b[1m\u001b[33m[optional]\u001b[39m\u001b[22m\n"}
|
|
11
11
|
{"kind":"O","text":" \u001b[1mbuffer (ignored)\u001b[39m\u001b[22m 15 bytes \u001b[1m\u001b[33m[optional]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[built]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[code generated]\u001b[39m\u001b[22m\n"}
|
|
12
12
|
{"kind":"O","text":" \u001b[1mcrypto (ignored)\u001b[39m\u001b[22m 15 bytes \u001b[1m\u001b[33m[optional]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[built]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[code generated]\u001b[39m\u001b[22m\n"}
|
|
13
13
|
{"kind":"O","text":" \u001b[1mbuffer (ignored)\u001b[39m\u001b[22m 15 bytes \u001b[1m\u001b[33m[optional]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[built]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[code generated]\u001b[39m\u001b[22m\n"}
|
|
14
14
|
{"kind":"O","text":" \u001b[1mvm (ignored)\u001b[39m\u001b[22m 15 bytes \u001b[1m\u001b[33m[optional]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[built]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[code generated]\u001b[39m\u001b[22m\n"}
|
|
15
|
-
{"kind":"O","text":"modules by path \u001b[1m./src/\u001b[39m\u001b[22m
|
|
16
|
-
{"kind":"O","text":" \u001b[1m./src/main.tsx +
|
|
17
|
-
{"kind":"O","text":" ../../common/temp/node_modules/.pnpm/css-loader@7.1.2_webpack@5.100.1/node_modules/css-loader/dist/cjs.js!../../common/temp/node_modules/.pnpm/postcss-loader@8.1.1_postcss@8.5.6_typescript@5.8.3_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js!\u001b[1m./src/index.css\u001b[39m\u001b[22m 35.
|
|
18
|
-
{"kind":"O","text":"+
|
|
15
|
+
{"kind":"O","text":"modules by path \u001b[1m./src/\u001b[39m\u001b[22m 406 KiB\n"}
|
|
16
|
+
{"kind":"O","text":" \u001b[1m./src/main.tsx + 54 modules\u001b[39m\u001b[22m 370 KiB \u001b[1m\u001b[33m[built]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[code generated]\u001b[39m\u001b[22m\n"}
|
|
17
|
+
{"kind":"O","text":" ../../common/temp/node_modules/.pnpm/css-loader@7.1.2_webpack@5.100.1/node_modules/css-loader/dist/cjs.js!../../common/temp/node_modules/.pnpm/postcss-loader@8.1.1_postcss@8.5.6_typescript@5.8.3_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js!\u001b[1m./src/index.css\u001b[39m\u001b[22m 35.7 KiB \u001b[1m\u001b[33m[built]\u001b[39m\u001b[22m \u001b[1m\u001b[33m[code generated]\u001b[39m\u001b[22m\n"}
|
|
18
|
+
{"kind":"O","text":"+ 15 modules\n"}
|
|
19
19
|
{"kind":"O","text":"\n"}
|
|
20
20
|
{"kind":"O","text":"\u001b[1m\u001b[33mWARNING\u001b[39m\u001b[22m in \u001b[1masset size limit: The following asset(s) exceed the recommended size limit (244 KiB).\n"}
|
|
21
21
|
{"kind":"O","text":"This can impact web performance.\n"}
|
|
22
22
|
{"kind":"O","text":"Assets: \n"}
|
|
23
|
-
{"kind":"O","text":" bundle.js (2.
|
|
23
|
+
{"kind":"O","text":" bundle.js (2.41 MiB)\u001b[39m\u001b[22m\n"}
|
|
24
24
|
{"kind":"O","text":"\n"}
|
|
25
25
|
{"kind":"O","text":"\u001b[1m\u001b[33mWARNING\u001b[39m\u001b[22m in \u001b[1mentrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.\n"}
|
|
26
26
|
{"kind":"O","text":"Entrypoints:\n"}
|
|
27
|
-
{"kind":"O","text":" main (2.
|
|
27
|
+
{"kind":"O","text":" main (2.41 MiB)\n"}
|
|
28
28
|
{"kind":"O","text":" bundle.js\n"}
|
|
29
29
|
{"kind":"O","text":"\u001b[39m\u001b[22m\n"}
|
|
30
30
|
{"kind":"O","text":"\n"}
|
|
@@ -32,4 +32,4 @@
|
|
|
32
32
|
{"kind":"O","text":"You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application.\n"}
|
|
33
33
|
{"kind":"O","text":"For more info visit https://webpack.js.org/guides/code-splitting/\u001b[39m\u001b[22m\n"}
|
|
34
34
|
{"kind":"O","text":"\n"}
|
|
35
|
-
{"kind":"O","text":"webpack 5.100.1 compiled with \u001b[1m\u001b[33m3 warnings\u001b[39m\u001b[22m in
|
|
35
|
+
{"kind":"O","text":"webpack 5.100.1 compiled with \u001b[1m\u001b[33m3 warnings\u001b[39m\u001b[22m in 21598 ms\n"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"../../tools/ts-res-browser": "../../tools/ts-res-browser:
|
|
2
|
+
"../../tools/ts-res-browser": "../../tools/ts-res-browser:zkH7/bylvhDuJKy40gKgE82S6JOUAV+lF/AqxPTthME=:",
|
|
3
3
|
"/@aashutoshrathi/word-wrap@1.2.6": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
|
|
4
4
|
"/@alloc/quick-lru@5.2.0": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
|
|
5
5
|
"/@ampproject/remapping@2.2.0": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
|
|
@@ -268,6 +268,7 @@
|
|
|
268
268
|
"/@types/jest@29.5.14": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==",
|
|
269
269
|
"/@types/jsdom@20.0.1": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==",
|
|
270
270
|
"/@types/json-schema@7.0.15": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
|
|
271
|
+
"/@types/jszip@3.4.1": "sha512-TezXjmf3lj+zQ651r6hPqvSScqBLvyPI9FxdXBqpEwBijNGQ2NXpaFW/7joGzveYkKQUil7iiDHLo6LV71Pc0A==",
|
|
271
272
|
"/@types/mime@1.3.5": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
|
|
272
273
|
"/@types/node-forge@1.3.13": "sha512-zePQJSW5QkwSHKRApqWCVKeKoSOt4xvEnLENZPjyvm9Ezdf/EyDeJM7jqLzOwjVICQQzvLZ63T55MKdJB5H6ww==",
|
|
273
274
|
"/@types/node@20.14.9": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==",
|
|
@@ -354,6 +355,7 @@
|
|
|
354
355
|
"/array.prototype.tosorted@1.1.4": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==",
|
|
355
356
|
"/arraybuffer.prototype.slice@1.0.4": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==",
|
|
356
357
|
"/asn1.js@4.10.1": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
|
|
358
|
+
"/assert@2.1.0": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==",
|
|
357
359
|
"/asynckit@0.4.0": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
|
|
358
360
|
"/autoprefixer@10.4.21(postcss@8.4.49)": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==",
|
|
359
361
|
"/autoprefixer@10.4.21(postcss@8.5.6)": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==",
|
|
@@ -386,6 +388,7 @@
|
|
|
386
388
|
"/browserify-des@1.0.2": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
|
|
387
389
|
"/browserify-rsa@4.1.1": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==",
|
|
388
390
|
"/browserify-sign@4.2.3": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==",
|
|
391
|
+
"/browserify-zlib@0.2.0": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
|
|
389
392
|
"/browserslist@4.25.1": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==",
|
|
390
393
|
"/bser@2.1.1": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
|
|
391
394
|
"/buffer-builder@0.2.0": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==",
|
|
@@ -598,7 +601,6 @@
|
|
|
598
601
|
"/generic-names@4.0.0": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==",
|
|
599
602
|
"/gensync@1.0.0-beta.2": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
|
|
600
603
|
"/get-caller-file@2.0.5": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
|
|
601
|
-
"/get-intrinsic@1.2.2": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
|
|
602
604
|
"/get-intrinsic@1.2.7": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==",
|
|
603
605
|
"/get-intrinsic@1.3.0": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
|
|
604
606
|
"/get-package-type@0.1.0": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
|
|
@@ -624,7 +626,6 @@
|
|
|
624
626
|
"/has-flag@4.0.0": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
|
625
627
|
"/has-property-descriptors@1.0.0": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
|
|
626
628
|
"/has-property-descriptors@1.0.2": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
|
|
627
|
-
"/has-proto@1.0.1": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
|
|
628
629
|
"/has-proto@1.2.0": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==",
|
|
629
630
|
"/has-symbols@1.1.0": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
|
|
630
631
|
"/has-tostringtag@1.0.2": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
|
|
@@ -659,6 +660,7 @@
|
|
|
659
660
|
"/ieee754@1.2.1": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
|
|
660
661
|
"/ignore@5.1.9": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==",
|
|
661
662
|
"/ignore@5.3.1": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
|
|
663
|
+
"/immediate@3.0.6": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
|
|
662
664
|
"/immutable@4.3.7": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==",
|
|
663
665
|
"/immutable@5.1.3": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==",
|
|
664
666
|
"/import-fresh@3.3.0": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
|
|
@@ -695,6 +697,7 @@
|
|
|
695
697
|
"/is-glob@4.0.3": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
|
696
698
|
"/is-inside-container@1.0.0": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
|
|
697
699
|
"/is-map@2.0.3": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
|
|
700
|
+
"/is-nan@1.3.2": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
|
|
698
701
|
"/is-network-error@1.1.0": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==",
|
|
699
702
|
"/is-number-object@1.1.1": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==",
|
|
700
703
|
"/is-number@7.0.0": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
|
@@ -778,6 +781,7 @@
|
|
|
778
781
|
"/jsonfile@6.1.0": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
|
|
779
782
|
"/jsonpath-plus@10.3.0": "sha512-8TNmfeTCk2Le33A3vRRwtuworG/L5RrgMvdjhKZxvyShO+mBu2fP50OWUjRLNtvw344DdDarFh9buFAZs5ujeA==",
|
|
780
783
|
"/jsx-ast-utils@3.3.3": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==",
|
|
784
|
+
"/jszip@3.10.1": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
|
|
781
785
|
"/keyv@4.5.4": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
|
|
782
786
|
"/kind-of@6.0.3": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
|
|
783
787
|
"/kleur@3.0.3": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
|
|
@@ -785,6 +789,7 @@
|
|
|
785
789
|
"/launch-editor@2.10.0": "sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==",
|
|
786
790
|
"/leven@3.1.0": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
|
|
787
791
|
"/levn@0.4.1": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
|
|
792
|
+
"/lie@3.3.0": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
|
|
788
793
|
"/lightningcss-darwin-arm64@1.30.1": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==",
|
|
789
794
|
"/lightningcss-darwin-x64@1.30.1": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==",
|
|
790
795
|
"/lightningcss-freebsd-x64@1.30.1": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==",
|
|
@@ -867,6 +872,7 @@
|
|
|
867
872
|
"/nwsapi@2.2.20": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==",
|
|
868
873
|
"/object-assign@4.1.1": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
|
|
869
874
|
"/object-inspect@1.13.3": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==",
|
|
875
|
+
"/object-is@1.1.6": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==",
|
|
870
876
|
"/object-keys@1.1.1": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
|
|
871
877
|
"/object.assign@4.1.7": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==",
|
|
872
878
|
"/object.entries@1.1.9": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==",
|
|
@@ -887,6 +893,7 @@
|
|
|
887
893
|
"/p-locate@5.0.0": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
|
|
888
894
|
"/p-retry@6.2.1": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==",
|
|
889
895
|
"/p-try@2.2.0": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
|
|
896
|
+
"/pako@1.0.11": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
|
|
890
897
|
"/param-case@3.0.4": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
|
|
891
898
|
"/parent-module@1.0.1": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
|
|
892
899
|
"/parse-asn1@5.1.7": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==",
|
|
@@ -1054,6 +1061,7 @@
|
|
|
1054
1061
|
"/set-function-length@1.2.2": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
|
|
1055
1062
|
"/set-function-name@2.0.2": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
|
|
1056
1063
|
"/set-proto@1.0.0": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==",
|
|
1064
|
+
"/setimmediate@1.0.5": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
|
|
1057
1065
|
"/setprototypeof@1.1.0": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
|
|
1058
1066
|
"/setprototypeof@1.2.0": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
|
|
1059
1067
|
"/sha.js@2.4.12": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==",
|
package/README.md
CHANGED
|
@@ -4,9 +4,20 @@ A visual tool for loading, browsing, and experimenting with ts-res resources. Bu
|
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- **
|
|
9
|
-
- **
|
|
7
|
+
### Core Tools
|
|
8
|
+
- **Import Tool**: Load resources from files or directories using File System Access API
|
|
9
|
+
- **ZIP Loader**: Load pre-bundled ZIP archives created by ts-res-browser-cli
|
|
10
|
+
- **Source Browser**: Browse and explore built resources in alphabetical order
|
|
11
|
+
- **Compiled Browser**: Navigate compiled resource collections in tree view
|
|
12
|
+
- **Filter Tool**: Filter resources by context for focused analysis
|
|
13
|
+
- **Resolution Viewer**: Test resource resolution with different qualifiers and contexts
|
|
14
|
+
- **Configuration Tool**: Manage qualifier types, qualifiers, and resource types
|
|
15
|
+
|
|
16
|
+
### Advanced Features
|
|
17
|
+
- **ZIP Archive Support**: Direct loading of ZIP bundles with automatic configuration application
|
|
18
|
+
- **URL Parameter Integration**: Launch with pre-configured settings via command line
|
|
19
|
+
- **Context Filtering**: Advanced filtering by language, territory, and custom qualifiers
|
|
20
|
+
- **Interactive Mode**: Explore with sample data and predefined configurations
|
|
10
21
|
- **Modern UI**: Built with React, TypeScript, and Tailwind CSS
|
|
11
22
|
|
|
12
23
|
## Getting Started
|
|
@@ -37,10 +48,40 @@ The application will open in your browser at `http://localhost:3000`.
|
|
|
37
48
|
|
|
38
49
|
### Usage
|
|
39
50
|
|
|
40
|
-
|
|
41
|
-
|
|
51
|
+
#### Option 1: Direct File Loading
|
|
52
|
+
1. **Import Files**: Use the Import Tool to select your ts-res project files/directories
|
|
53
|
+
2. **Browse Resources**: Navigate between different tools using the sidebar
|
|
42
54
|
3. **Explore**: View resource details, test resolution, and experiment with qualifiers
|
|
43
55
|
|
|
56
|
+
#### Option 2: ZIP Archive Workflow (Recommended)
|
|
57
|
+
1. **Create Archive**: Use ts-res-browser-cli to create ZIP archives:
|
|
58
|
+
```bash
|
|
59
|
+
ts-res-browser-cli browse --input ./resources --config extended-example
|
|
60
|
+
```
|
|
61
|
+
2. **Load Archive**: Use the ZIP Loader tool to load the created archive
|
|
62
|
+
3. **Automatic Setup**: Configuration and resources are applied automatically
|
|
63
|
+
|
|
64
|
+
#### Option 3: Command Line Integration
|
|
65
|
+
Launch directly with pre-configured settings:
|
|
66
|
+
```bash
|
|
67
|
+
# Launch with automatic development server
|
|
68
|
+
ts-res-browser-cli browse --input ./resources --dev
|
|
69
|
+
|
|
70
|
+
# Launch with ZIP creation but no browser opening
|
|
71
|
+
ts-res-browser-cli browse --input ./resources --no-open
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### URL Parameters
|
|
75
|
+
|
|
76
|
+
The browser supports URL parameters for automated setup:
|
|
77
|
+
- `config=<name>`: Load predefined configuration
|
|
78
|
+
- `contextFilter=<filter>`: Apply context filtering
|
|
79
|
+
- `loadZip=true`: Navigate directly to ZIP Loader
|
|
80
|
+
- `interactive=true`: Launch in interactive mode
|
|
81
|
+
- `reduceQualifiers=true`: Enable qualifier reduction
|
|
82
|
+
|
|
83
|
+
Example: `http://localhost:3000?config=extended-example&loadZip=true`
|
|
84
|
+
|
|
44
85
|
## Development
|
|
45
86
|
|
|
46
87
|
### Scripts
|
|
@@ -55,32 +96,61 @@ The application will open in your browser at `http://localhost:3000`.
|
|
|
55
96
|
```
|
|
56
97
|
src/
|
|
57
98
|
├── components/
|
|
58
|
-
│ ├── layout/ # Layout components
|
|
99
|
+
│ ├── layout/ # Layout components (Header, Sidebar, etc.)
|
|
59
100
|
│ ├── tools/ # Tool-specific components
|
|
101
|
+
│ │ ├── ImportTool.tsx # File/directory import
|
|
102
|
+
│ │ ├── ZipLoader.tsx # ZIP archive loader
|
|
103
|
+
│ │ ├── SourceBrowser.tsx # Resource browsing
|
|
104
|
+
│ │ ├── CompiledBrowser.tsx # Tree view navigation
|
|
105
|
+
│ │ ├── FilterTool.tsx # Context filtering
|
|
106
|
+
│ │ ├── ResolutionViewer.tsx # Resolution testing
|
|
107
|
+
│ │ └── ConfigurationTool.tsx # Configuration management
|
|
60
108
|
│ └── common/ # Shared components
|
|
61
109
|
├── hooks/ # Custom React hooks
|
|
62
|
-
├──
|
|
110
|
+
│ ├── useAppState.ts # Main application state
|
|
111
|
+
│ ├── useResourceManager.ts # Resource processing
|
|
112
|
+
│ ├── useFileImport.ts # File system operations
|
|
113
|
+
│ └── useUrlParams.ts # URL parameter parsing
|
|
63
114
|
├── utils/ # Utility functions
|
|
64
|
-
├──
|
|
115
|
+
│ ├── zip/ # Browser-specific ZIP utilities
|
|
116
|
+
│ ├── fileImport.ts # File system integration
|
|
117
|
+
│ ├── fileTreeConverter.ts # FileTree integration
|
|
118
|
+
│ └── urlParams.ts # URL parameter utilities
|
|
119
|
+
├── types/ # TypeScript type definitions
|
|
120
|
+
├── App.tsx # Main application component
|
|
65
121
|
└── main.tsx # Application entry point
|
|
66
122
|
```
|
|
67
123
|
|
|
68
124
|
### Technology Stack
|
|
69
125
|
|
|
70
|
-
- **React
|
|
71
|
-
- **Webpack** for bundling
|
|
126
|
+
- **React 19** with TypeScript
|
|
127
|
+
- **Webpack 5** for bundling with browser polyfills
|
|
72
128
|
- **Tailwind CSS** for styling
|
|
73
|
-
- **Heroicons** for iconography
|
|
129
|
+
- **Heroicons** for iconography
|
|
130
|
+
- **JSZip** for browser-based ZIP processing
|
|
74
131
|
- **@fgv/ts-res** for resource management
|
|
132
|
+
- **@fgv/ts-utils** for Result pattern and FileTree abstraction
|
|
75
133
|
|
|
76
134
|
## Architecture
|
|
77
135
|
|
|
78
136
|
The application follows a component-based architecture with:
|
|
79
137
|
|
|
80
|
-
|
|
81
|
-
- **
|
|
82
|
-
- **
|
|
83
|
-
- **
|
|
138
|
+
### Core Systems
|
|
139
|
+
- **State Management**: React hooks with centralized state management
|
|
140
|
+
- **File Access**: File System Access API with fallback to input elements
|
|
141
|
+
- **ZIP Processing**: Browser-compatible ZIP implementation using JSZip
|
|
142
|
+
- **Resource Processing**: FileTree abstraction for unified file access
|
|
143
|
+
- **Error Handling**: Result pattern from @fgv/ts-utils throughout
|
|
144
|
+
|
|
145
|
+
### Integration Points
|
|
146
|
+
- **CLI Integration**: Seamless workflow with ts-res-browser-cli via ZIP archives
|
|
147
|
+
- **URL Parameters**: Support for automated setup and configuration
|
|
148
|
+
- **Development Server**: Integration with webpack-dev-server for hot reloading
|
|
149
|
+
|
|
150
|
+
### Browser Compatibility
|
|
151
|
+
- **File System Access API**: Modern file access with graceful fallback
|
|
152
|
+
- **Node.js Polyfills**: Webpack configuration for browser compatibility
|
|
153
|
+
- **ZIP Archives**: Client-side processing without server dependencies
|
|
84
154
|
|
|
85
155
|
## Contributing
|
|
86
156
|
|
package/cli.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const { exec } = require('child_process');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
|
|
6
|
+
const command = process.argv[2];
|
|
7
|
+
const projectRoot = __dirname;
|
|
8
|
+
|
|
9
|
+
switch (command) {
|
|
10
|
+
case 'dev':
|
|
11
|
+
console.log('Starting TS-RES Browser development server...');
|
|
12
|
+
exec('npm run dev', { cwd: projectRoot }, (error, stdout, stderr) => {
|
|
13
|
+
if (error) {
|
|
14
|
+
console.error(`Error: ${error}`);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
console.log(stdout);
|
|
18
|
+
if (stderr) console.error(stderr);
|
|
19
|
+
});
|
|
20
|
+
break;
|
|
21
|
+
|
|
22
|
+
case 'build':
|
|
23
|
+
console.log('Building TS-RES Browser...');
|
|
24
|
+
exec('npm run build', { cwd: projectRoot }, (error, stdout, stderr) => {
|
|
25
|
+
if (error) {
|
|
26
|
+
console.error(`Error: ${error}`);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
console.log(stdout);
|
|
30
|
+
if (stderr) console.error(stderr);
|
|
31
|
+
});
|
|
32
|
+
break;
|
|
33
|
+
|
|
34
|
+
default:
|
|
35
|
+
console.log('TS-RES Browser CLI');
|
|
36
|
+
console.log('');
|
|
37
|
+
console.log('Usage:');
|
|
38
|
+
console.log(' ts-res-browser dev - Start development server');
|
|
39
|
+
console.log(' ts-res-browser build - Build for production');
|
|
40
|
+
console.log('');
|
|
41
|
+
console.log('For development, you can also use:');
|
|
42
|
+
console.log(' rushx dev - Start development server');
|
|
43
|
+
console.log(' rushx build - Build for production');
|
|
44
|
+
break;
|
|
45
|
+
}
|