@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.
@@ -1,5 +1,5 @@
1
- Start time: Mon Jul 21 2025 06:35:53 GMT+0000 (Coordinated Universal Time)
2
- Invoking "/usr/bin/tar -c -f /home/runner/work/fgv/fgv/common/temp/build-cache/5fc90bc7c2ccf812114ea099111568e5429be2a2-dc1d0d05286fd751.temp -z --files-from=-"
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.31 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"}
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 636 KiB \u001b[1m\u001b[33m[orphan]\u001b[39m\u001b[22m 348 modules\n"}
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.31 MiB 846 modules\n"}
7
- {"kind":"O","text":"modules by path \u001b[1m../../libraries/\u001b[39m\u001b[22m 2.23 MiB\n"}
8
- {"kind":"O","text":" javascript modules 1.4 MiB 312 modules\n"}
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 362 KiB\n"}
16
- {"kind":"O","text":" \u001b[1m./src/main.tsx + 47 modules\u001b[39m\u001b[22m 327 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.6 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":"+ 14 modules\n"}
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.31 MiB)\u001b[39m\u001b[22m\n"}
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.31 MiB)\n"}
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 19176 ms\n"}
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.31 MiB [emitted] [minimized] [big] (name: main) 1 related asset
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 636 KiB [orphan] 348 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.31 MiB 846 modules
7
- modules by path ../../libraries/ 2.23 MiB
8
- javascript modules 1.4 MiB 312 modules
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/ 362 KiB
16
- ./src/main.tsx + 47 modules 327 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.6 KiB [built] [code generated]
18
- + 14 modules
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.31 MiB)
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.31 MiB)
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 19176 ms
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.31 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"}
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 636 KiB \u001b[1m\u001b[33m[orphan]\u001b[39m\u001b[22m 348 modules\n"}
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.31 MiB 846 modules\n"}
7
- {"kind":"O","text":"modules by path \u001b[1m../../libraries/\u001b[39m\u001b[22m 2.23 MiB\n"}
8
- {"kind":"O","text":" javascript modules 1.4 MiB 312 modules\n"}
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 362 KiB\n"}
16
- {"kind":"O","text":" \u001b[1m./src/main.tsx + 47 modules\u001b[39m\u001b[22m 327 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.6 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":"+ 14 modules\n"}
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.31 MiB)\u001b[39m\u001b[22m\n"}
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.31 MiB)\n"}
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 19176 ms\n"}
35
+ {"kind":"O","text":"webpack 5.100.1 compiled with \u001b[1m\u001b[33m3 warnings\u001b[39m\u001b[22m in 21598 ms\n"}
@@ -1,3 +1,3 @@
1
1
  {
2
- "nonCachedDurationMs": 19961.586035
2
+ "nonCachedDurationMs": 22601.520310000007
3
3
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "../../tools/ts-res-browser": "../../tools/ts-res-browser:yzg2dg/VRAs+0ZJQUOBUqw07y2frVxn1ZD4c08LcDBw=:",
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
- - **Source Browser**: Browse and explore built resources
8
- - **Compiled Browser**: Navigate compiled resource collections
9
- - **Resolution Viewer**: Test resource resolution with different qualifiers
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
- 1. **Import Files**: Click "Import Files" to select your ts-res project files
41
- 2. **Browse Resources**: Use the sidebar to navigate between different tools
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
- ├── types/ # TypeScript type definitions
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
- ├── App.tsx # Main application component
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 18+** with TypeScript
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
- - **State Management**: React Context + useReducer
81
- - **File Access**: File System Access API with fallback
82
- - **Error Handling**: Result pattern from @fgv/ts-utils
83
- - **Testing**: Jest with React Testing Library
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
+ }