@fgv/ts-res-browser 5.0.0-2 → 5.0.0-20

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.
Files changed (99) hide show
  1. package/cli.js +132 -21
  2. package/dist/bundle.js +1 -1
  3. package/dist/bundle.js.LICENSE.txt +11 -1
  4. package/package.json +42 -36
  5. package/.rush/temp/587277bfc395406ad444e989b6c309b9698f534c.tar.log +0 -15
  6. package/.rush/temp/chunked-rush-logs/ts-res-browser.build.chunks.jsonl +0 -35
  7. package/.rush/temp/operation/build/all.log +0 -35
  8. package/.rush/temp/operation/build/log-chunks.jsonl +0 -35
  9. package/.rush/temp/operation/build/state.json +0 -3
  10. package/.rush/temp/shrinkwrap-deps.json +0 -1225
  11. package/TS_RES_BROWSER_PLAN.md +0 -689
  12. package/babel.config.js +0 -17
  13. package/config/jest.config.json +0 -13
  14. package/config/rig.json +0 -16
  15. package/postcss.config.js +0 -3
  16. package/public/index.html +0 -15
  17. package/rush-logs/ts-res-browser.build.cache.log +0 -3
  18. package/rush-logs/ts-res-browser.build.log +0 -35
  19. package/src/App.tsx +0 -274
  20. package/src/cli.ts +0 -44
  21. package/src/components/common/FileImporter.tsx +0 -143
  22. package/src/components/common/NavigationWarningModal.tsx +0 -62
  23. package/src/components/layout/AppLayout.tsx +0 -46
  24. package/src/components/layout/Header.tsx +0 -22
  25. package/src/components/layout/MessagesWindow.tsx +0 -108
  26. package/src/components/layout/Sidebar.tsx +0 -99
  27. package/src/components/tools/CompiledBrowser.tsx +0 -949
  28. package/src/components/tools/ConfigurationTool.tsx +0 -1405
  29. package/src/components/tools/FilterTool.tsx +0 -1114
  30. package/src/components/tools/ImportTool.tsx +0 -249
  31. package/src/components/tools/ResolutionViewer.tsx +0 -1672
  32. package/src/components/tools/SourceBrowser.tsx +0 -496
  33. package/src/components/tools/ZipLoader.tsx +0 -302
  34. package/src/hooks/useAppState.ts +0 -111
  35. package/src/hooks/useFileImport.ts +0 -86
  36. package/src/hooks/useNavigationWarning.ts +0 -67
  37. package/src/hooks/useResourceManager.ts +0 -295
  38. package/src/hooks/useUrlParams.ts +0 -56
  39. package/src/index.css +0 -38
  40. package/src/main.tsx +0 -16
  41. package/src/types/app.ts +0 -70
  42. package/src/types/fileSystemAccess.d.ts +0 -94
  43. package/src/utils/browserFileTreeAccessors.ts +0 -245
  44. package/src/utils/fileImport.ts +0 -336
  45. package/src/utils/fileTreeConverter.ts +0 -160
  46. package/src/utils/filterResources.ts +0 -677
  47. package/src/utils/tsResIntegration.ts +0 -467
  48. package/src/utils/urlParams.ts +0 -238
  49. package/src/utils/zip/browserZipFileTreeAccessors.ts +0 -385
  50. package/tailwind.config.js +0 -21
  51. package/test-data/README.md +0 -184
  52. package/test-data/config-variations/README.md +0 -64
  53. package/test-data/config-variations/composition-terminology.json +0 -112
  54. package/test-data/config-variations/enterprise-complex.json +0 -129
  55. package/test-data/config-variations/gaming-app.json +0 -87
  56. package/test-data/config-variations/high-priority-language.json +0 -65
  57. package/test-data/config-variations/minimal-basic.json +0 -37
  58. package/test-data/config-variations/qualifier-default-values.json +0 -71
  59. package/test-data/config-variations/territory-first.json +0 -68
  60. package/test-data/config-variations/territory-hierarchy-test.json +0 -31
  61. package/test-data/config-variations/territory-hierarchy-unconstrained.json +0 -32
  62. package/test-data/default-matching-test/greeting.res.json +0 -83
  63. package/test-data/default-matching-test/only-defaults.res.json +0 -48
  64. package/test-data/sample-project/package.json +0 -27
  65. package/test-data/sample-project/src/resources/app-config.json +0 -27
  66. package/test-data/sample-project/src/resources/app.json +0 -177
  67. package/test-data/sample-project/src/resources/config/app.env=development.json +0 -21
  68. package/test-data/sample-project/src/resources/config/app.json +0 -21
  69. package/test-data/sample-project/src/resources/config/app.platform=mobile.json +0 -23
  70. package/test-data/sample-project/src/resources/feature-flags.json +0 -23
  71. package/test-data/sample-project/src/resources/home=CA/common.json +0 -16
  72. package/test-data/sample-project/src/resources/images/density=hdpi.json +0 -29
  73. package/test-data/sample-project/src/resources/images/home.json +0 -29
  74. package/test-data/sample-project/src/resources/images/logout.json +0 -14
  75. package/test-data/sample-project/src/resources/images/settings.json +0 -14
  76. package/test-data/sample-project/src/resources/images/ui-icons.json +0 -29
  77. package/test-data/sample-project/src/resources/images/user.density=hdpi.json +0 -14
  78. package/test-data/sample-project/src/resources/images/user.json +0 -14
  79. package/test-data/sample-project/src/resources/lang=en-US/common.json +0 -15
  80. package/test-data/sample-project/src/resources/language=en-CA/ui-terms.json +0 -19
  81. package/test-data/sample-project/src/resources/language=en-GB/ui-terms.json +0 -30
  82. package/test-data/sample-project/src/resources/language=fr-CA/ui-terms.json +0 -25
  83. package/test-data/sample-project/src/resources/language=nl-BE/ui-terms.json +0 -17
  84. package/test-data/sample-project/src/resources/region=europe/feature-flags.json +0 -17
  85. package/test-data/sample-project/src/resources/region=north-america/feature-flags.json +0 -18
  86. package/test-data/sample-project/src/resources/strings/dashboard.home=CA,language=fr.json +0 -20
  87. package/test-data/sample-project/src/resources/strings/dashboard.json +0 -18
  88. package/test-data/sample-project/src/resources/strings/dashboard.role=admin.json +0 -23
  89. package/test-data/sample-project/src/resources/strings/dashboard.role=user.json +0 -21
  90. package/test-data/sample-project/src/resources/strings/language=en-US.json +0 -16
  91. package/test-data/sample-project/src/resources/strings.json +0 -78
  92. package/test-data/sample-project/src/resources/territory=BE/app-config.json +0 -19
  93. package/test-data/sample-project/src/resources/territory=CA/app-config.json +0 -21
  94. package/test-data/sample-project/src/resources/territory=GB/app-config.json +0 -25
  95. package/test-data/sample-project/src/resources/territory=NL/app-config.json +0 -25
  96. package/test-data/sample-project/src/resources/ui-terms.json +0 -96
  97. package/test-data/sample-project/src/resources-config.json +0 -111
  98. package/tsconfig.json +0 -27
  99. package/webpack.config.js +0 -60
package/cli.js CHANGED
@@ -1,33 +1,121 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const { exec } = require('child_process');
3
+ const { exec, spawn } = require('child_process');
4
4
  const path = require('path');
5
+ const fs = require('fs');
5
6
 
6
7
  const command = process.argv[2];
7
8
  const projectRoot = __dirname;
8
9
 
10
+ // Check if we have a built dist directory
11
+ const distPath = path.join(projectRoot, 'dist');
12
+ const hasBuiltFiles = fs.existsSync(distPath) && fs.existsSync(path.join(distPath, 'index.html'));
13
+
14
+ function startDevServer(port = 3000) {
15
+ // Check if we have webpack-cli available (needed for dev server)
16
+ try {
17
+ require.resolve('webpack-cli');
18
+ require.resolve('webpack-dev-server');
19
+ } catch (error) {
20
+ console.error('❌ Development server is not available in the published package.');
21
+ console.error('');
22
+ console.error('The dev server requires webpack-cli and webpack-dev-server which are');
23
+ console.error('not included in the published package to keep it lightweight.');
24
+ console.error('');
25
+ console.error('To use the development server:');
26
+ console.error('1. Clone the repository: git clone <repo-url>');
27
+ console.error('2. Install dependencies: rush install');
28
+ console.error('3. Run: rushx dev');
29
+ console.error('');
30
+ console.error('For production use, run: ts-res-browser serve');
31
+ process.exit(1);
32
+ }
33
+
34
+ const packageManager = fs.existsSync(path.join(projectRoot, 'package-lock.json'))
35
+ ? 'npm'
36
+ : fs.existsSync(path.join(projectRoot, 'yarn.lock'))
37
+ ? 'yarn'
38
+ : 'npm';
39
+
40
+ console.log('Starting TS-RES Browser development server...');
41
+ console.log(`Using ${packageManager} to start server...`);
42
+
43
+ const child = spawn(packageManager, ['run', 'dev'], {
44
+ cwd: projectRoot,
45
+ stdio: 'inherit',
46
+ env: { ...process.env, PORT: port.toString() }
47
+ });
48
+
49
+ child.on('error', (error) => {
50
+ console.error(`Error starting dev server: ${error.message}`);
51
+ process.exit(1);
52
+ });
53
+ }
54
+
55
+ function serveBuildFiles(port = 8080) {
56
+ if (!hasBuiltFiles) {
57
+ console.error('No built files found. Please run "ts-res-browser build" first.');
58
+ process.exit(1);
59
+ }
60
+
61
+ // Try to use a simple static server
62
+ try {
63
+ const handler = require('serve-handler');
64
+ const http = require('http');
65
+
66
+ const server = http.createServer((request, response) => {
67
+ return handler(request, response, {
68
+ public: distPath,
69
+ rewrites: [{ source: '**', destination: '/index.html' }]
70
+ });
71
+ });
72
+
73
+ server.listen(port, () => {
74
+ console.log(`TS-RES Browser running at http://localhost:${port}`);
75
+ console.log('Press Ctrl+C to stop');
76
+ });
77
+ } catch (error) {
78
+ // Fallback: just open the HTML file
79
+ console.log(`Built files available at: ${path.join(distPath, 'index.html')}`);
80
+ console.log('To serve the files, install a static server like: npm install -g serve');
81
+ console.log(`Then run: serve -s ${distPath} -p ${port}`);
82
+ }
83
+ }
84
+
9
85
  switch (command) {
10
86
  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
- });
87
+ const devPort = process.argv[3] || process.env.PORT || 3000;
88
+ startDevServer(devPort);
89
+ break;
90
+
91
+ case 'serve':
92
+ case 'start':
93
+ const servePort = process.argv[3] || 8080;
94
+ serveBuildFiles(servePort);
20
95
  break;
21
96
 
22
97
  case 'build':
23
98
  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;
99
+ const packageManager = fs.existsSync(path.join(projectRoot, 'package-lock.json')) ? 'npm' : 'npm';
100
+
101
+ const buildChild = spawn(packageManager, ['run', 'build'], {
102
+ cwd: projectRoot,
103
+ stdio: 'inherit'
104
+ });
105
+
106
+ buildChild.on('error', (error) => {
107
+ console.error(`Error building: ${error.message}`);
108
+ process.exit(1);
109
+ });
110
+
111
+ buildChild.on('close', (code) => {
112
+ if (code === 0) {
113
+ console.log('Build completed successfully!');
114
+ console.log('To serve the built files, run: ts-res-browser serve');
115
+ } else {
116
+ console.error(`Build failed with code ${code}`);
117
+ process.exit(code);
28
118
  }
29
- console.log(stdout);
30
- if (stderr) console.error(stderr);
31
119
  });
32
120
  break;
33
121
 
@@ -35,11 +123,34 @@ switch (command) {
35
123
  console.log('TS-RES Browser CLI');
36
124
  console.log('');
37
125
  console.log('Usage:');
38
- console.log(' ts-res-browser dev - Start development server');
39
- console.log(' ts-res-browser build - Build for production');
126
+ console.log(' ts-res-browser dev - Start development server (requires dev dependencies)');
127
+ console.log(' ts-res-browser build - Build for production');
128
+ console.log(' ts-res-browser serve - Serve built files');
129
+ console.log('');
130
+ console.log('Options:');
131
+ console.log(' ts-res-browser dev [port] - Start dev server on specific port');
132
+ console.log(' ts-res-browser serve [port] - Serve on specific port');
40
133
  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');
134
+
135
+ // Check if dev dependencies are available
136
+ let hasDevDeps = false;
137
+ try {
138
+ require.resolve('webpack-cli');
139
+ require.resolve('webpack-dev-server');
140
+ hasDevDeps = true;
141
+ } catch (error) {
142
+ // Dev dependencies not available
143
+ }
144
+
145
+ if (hasBuiltFiles) {
146
+ console.log('✅ Built files found - you can run "ts-res-browser serve"');
147
+ } else {
148
+ console.log('⚠️ No built files - run "ts-res-browser build" first');
149
+ }
150
+
151
+ if (!hasDevDeps) {
152
+ console.log('ℹ️ Development server not available in published package');
153
+ console.log(' Use "ts-res-browser serve" for production serving');
154
+ }
44
155
  break;
45
156
  }