@siyavuyachagi/typesharp 0.1.6 ā 0.2.1
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/README.md +40 -23
- package/dist/cli/index.js +23 -15
- package/dist/cli/index.js.map +1 -1
- package/dist/core/create-sample-config.d.ts.map +1 -1
- package/dist/core/create-sample-config.js +3 -3
- package/dist/core/create-sample-config.js.map +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +17 -55
- package/dist/core/index.js.map +1 -1
- package/dist/core/watch.d.ts +11 -0
- package/dist/core/watch.d.ts.map +1 -0
- package/dist/core/watch.js +82 -0
- package/dist/core/watch.js.map +1 -0
- package/dist/generator/generate-enum.d.ts +6 -0
- package/dist/generator/generate-enum.d.ts.map +1 -0
- package/dist/generator/generate-enum.js +26 -0
- package/dist/generator/generate-enum.js.map +1 -0
- package/dist/generator/generate-union-enum.d.ts +6 -0
- package/dist/generator/generate-union-enum.d.ts.map +1 -0
- package/dist/generator/generate-union-enum.js +13 -0
- package/dist/generator/generate-union-enum.js.map +1 -0
- package/dist/generator/index.d.ts +5 -1
- package/dist/generator/index.d.ts.map +1 -1
- package/dist/generator/index.js +23 -20
- package/dist/generator/index.js.map +1 -1
- package/dist/helpers/change-tracker.d.ts.map +1 -1
- package/dist/helpers/change-tracker.js.map +1 -1
- package/dist/helpers/watcher.d.ts +4 -0
- package/dist/helpers/watcher.d.ts.map +1 -0
- package/dist/helpers/watcher.js +5 -0
- package/dist/helpers/watcher.js.map +1 -0
- package/dist/parser/index.d.ts +28 -0
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/index.js +64 -2
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/parse-classes-from-file.d.ts.map +1 -1
- package/dist/parser/parse-classes-from-file.js +33 -3
- package/dist/parser/parse-classes-from-file.js.map +1 -1
- package/dist/parser/parse-properties.js +3 -3
- package/dist/parser/parse-properties.js.map +1 -1
- package/dist/parser/resolve-project-files-from-source.d.ts.map +1 -1
- package/dist/parser/resolve-project-files-from-source.js +4 -1
- package/dist/parser/resolve-project-files-from-source.js.map +1 -1
- package/dist/scripts/pre-unistall.d.ts +2 -0
- package/dist/scripts/pre-unistall.d.ts.map +1 -0
- package/dist/scripts/pre-unistall.js +10 -0
- package/dist/scripts/pre-unistall.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/typesharp-config.d.ts +0 -4
- package/dist/types/typesharp-config.d.ts.map +1 -1
- package/package.json +13 -4
package/README.md
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/siyavuyachagi/typesharp/watch-feature/public/BannerTransparent.svg" alt="TypeSharp" height="120" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align='center'>
|
|
2
6
|
|
|
3
7
|
[](https://opensource.org/licenses/MIT)
|
|
4
8
|
[](https://www.npmjs.com/package/@siyavuyachagi/typesharp)
|
|
@@ -8,6 +12,8 @@
|
|
|
8
12
|
[](https://github.com/siyavuyachagi/typesharp/stargazers)
|
|
9
13
|
[](https://github.com/sponsors/siyavuyachagi)
|
|
10
14
|
|
|
15
|
+
</p>
|
|
16
|
+
|
|
11
17
|
Generate TypeScript types from C# models with ease! TypeSharp scans your ASP.NET Core projects and automatically generates TypeScript interfaces from your C# classes and records decorated with the `[TypeSharp]` attribute.
|
|
12
18
|
|
|
13
19
|
Project structure: [docs/project-structure](docs/project-structure.md)
|
|
@@ -129,7 +135,6 @@ This creates `typesharp.config.json`:
|
|
|
129
135
|
"C:/Users/User/Desktop/MyApp/Domain/Domain.csproj"
|
|
130
136
|
],
|
|
131
137
|
"outputPath": "./app/types",
|
|
132
|
-
"targetAnnotation": "TypeSharp",
|
|
133
138
|
"singleOutputFile": false,
|
|
134
139
|
"namingConvention": "camel"
|
|
135
140
|
}
|
|
@@ -139,12 +144,15 @@ This creates `typesharp.config.json`:
|
|
|
139
144
|
|
|
140
145
|
```bash
|
|
141
146
|
npx typesharp
|
|
147
|
+
# OR
|
|
148
|
+
npx typesharp generate
|
|
142
149
|
|
|
143
|
-
# -----
|
|
150
|
+
# ----- With options -------
|
|
144
151
|
|
|
145
|
-
|
|
146
|
-
# or with custom config
|
|
152
|
+
# custom config
|
|
147
153
|
npx typesharp generate --config ./custom-config.ts
|
|
154
|
+
# force clean generation
|
|
155
|
+
npx typesharp generate --no-incremental
|
|
148
156
|
```
|
|
149
157
|
|
|
150
158
|
For more advanced usage [docs/usage](docs/usage.md)
|
|
@@ -153,14 +161,13 @@ For more advanced usage [docs/usage](docs/usage.md)
|
|
|
153
161
|
|
|
154
162
|
### 1. Configuration Options
|
|
155
163
|
|
|
156
|
-
| Option | Type | Default
|
|
157
|
-
| ------------------ | ----------------------------------------- |
|
|
158
|
-
| `source` | `string \| string[]` | _required_
|
|
159
|
-
| `outputPath` | `string` | _required_
|
|
160
|
-
| `
|
|
161
|
-
| `
|
|
162
|
-
| `
|
|
163
|
-
| `fileSuffix` | `string` | _optional_ | Suffix appended to generated file names: `user-dto.ts` |
|
|
164
|
+
| Option | Type | Default | Description |
|
|
165
|
+
| ------------------ | ----------------------------------------- | ---------- | ------------------------------------------------------------- |
|
|
166
|
+
| `source` | `string \| string[]` | _required_ | Full path(s) to your C# .csproj file(s) |
|
|
167
|
+
| `outputPath` | `string` | _required_ | Where to generate TypeScript files |
|
|
168
|
+
| `singleOutputFile` | `boolean` | `false` | Generate one file or multiple files (see below) |
|
|
169
|
+
| `namingConvention` | `string \| { dir: string, file: string }` | `'camel'` | Property/file/dir naming: `kebab`, `camel`, `pascal`, `snake` |
|
|
170
|
+
| `fileSuffix` | `string` | _optional_ | Suffix appended to generated file names: `user-dto.ts` |
|
|
164
171
|
|
|
165
172
|
### 2. Naming Convention
|
|
166
173
|
|
|
@@ -206,8 +213,8 @@ TypeSharp supports multiple configuration formats:
|
|
|
206
213
|
|
|
207
214
|
```javascript
|
|
208
215
|
const config = {
|
|
209
|
-
source: [
|
|
210
|
-
outputPath:
|
|
216
|
+
source: ['C:/Users/User/Desktop/MyApp/Domain/Domain.csproj'],
|
|
217
|
+
outputPath: './src/types',
|
|
211
218
|
};
|
|
212
219
|
|
|
213
220
|
export default config;
|
|
@@ -524,8 +531,8 @@ export interface auth_response {
|
|
|
524
531
|
|
|
525
532
|
```typescript
|
|
526
533
|
const config: TypeSharpConfig = {
|
|
527
|
-
source:
|
|
528
|
-
outputPath:
|
|
534
|
+
source: './Backend/Backend.csproj',
|
|
535
|
+
outputPath: './src/types',
|
|
529
536
|
singleOutputFile: true,
|
|
530
537
|
};
|
|
531
538
|
```
|
|
@@ -534,11 +541,11 @@ const config: TypeSharpConfig = {
|
|
|
534
541
|
|
|
535
542
|
```typescript
|
|
536
543
|
const config: TypeSharpConfig = {
|
|
537
|
-
source:
|
|
538
|
-
outputPath:
|
|
544
|
+
source: './Backend/Backend.csproj',
|
|
545
|
+
outputPath: './src/types',
|
|
539
546
|
namingConvention: {
|
|
540
|
-
dir:
|
|
541
|
-
file:
|
|
547
|
+
dir: 'kebab',
|
|
548
|
+
file: 'camel',
|
|
542
549
|
},
|
|
543
550
|
};
|
|
544
551
|
```
|
|
@@ -573,15 +580,25 @@ const config: TypeSharpConfig = {
|
|
|
573
580
|
## Programmatic Usage
|
|
574
581
|
|
|
575
582
|
```typescript
|
|
576
|
-
import { generate } from
|
|
583
|
+
import { generate } from 'typesharp';
|
|
577
584
|
|
|
578
585
|
async function generateTypes() {
|
|
579
|
-
await generate(
|
|
586
|
+
await generate('./path/to/config.ts');
|
|
580
587
|
}
|
|
581
588
|
|
|
582
589
|
generateTypes();
|
|
583
590
|
```
|
|
584
591
|
|
|
592
|
+
## Preview
|
|
593
|
+
|
|
594
|
+
### Terminal Output
|
|
595
|
+
|
|
596
|
+
<img src="https://github.com/siyavuyachagi/typesharp/blob/main/public/images/terminal.png?raw=true" alt="TypeSharp" />
|
|
597
|
+
|
|
598
|
+
### Test Results
|
|
599
|
+
|
|
600
|
+
<img src="./public/images/tests.png" alt="TypeSharp" />
|
|
601
|
+
|
|
585
602
|
## Requirements
|
|
586
603
|
|
|
587
604
|
- Node.js >= 20
|
package/dist/cli/index.js
CHANGED
|
@@ -4,6 +4,7 @@ import { generate } from '../core/index.js';
|
|
|
4
4
|
import chalk from 'chalk';
|
|
5
5
|
import pkg from '../../package.json' with { type: 'json' };
|
|
6
6
|
import { createSampleConfig } from '../core/create-sample-config.js';
|
|
7
|
+
import { startWatch } from '../core/watch.js';
|
|
7
8
|
const { version, name, description } = pkg;
|
|
8
9
|
const program = new Command();
|
|
9
10
|
program
|
|
@@ -11,21 +12,6 @@ program
|
|
|
11
12
|
.description(description)
|
|
12
13
|
.version(version)
|
|
13
14
|
.usage('[command] [options]');
|
|
14
|
-
// Generate command (default)
|
|
15
|
-
program
|
|
16
|
-
.command('generate', { isDefault: true })
|
|
17
|
-
.description('Generate TypeScript types from C# files')
|
|
18
|
-
.option('-c, --config <path>', 'Path to configuration file')
|
|
19
|
-
.option('--no-incremental', 'Disable incremental generation (full clean)')
|
|
20
|
-
.action(async (options) => {
|
|
21
|
-
try {
|
|
22
|
-
await generate(options.config, options.incremental !== false);
|
|
23
|
-
process.exit(0);
|
|
24
|
-
}
|
|
25
|
-
catch (error) {
|
|
26
|
-
process.exit(1);
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
15
|
// Init command
|
|
30
16
|
program
|
|
31
17
|
.command('init')
|
|
@@ -48,5 +34,27 @@ program
|
|
|
48
34
|
process.exit(1);
|
|
49
35
|
}
|
|
50
36
|
});
|
|
37
|
+
// Generate command (default)
|
|
38
|
+
program
|
|
39
|
+
.command('generate', { isDefault: true })
|
|
40
|
+
.description('Generate TypeScript types from C# files')
|
|
41
|
+
.option('-c, --config <path>', 'Path to configuration file')
|
|
42
|
+
.option('--no-incremental', 'Disable incremental generation (full clean)')
|
|
43
|
+
.option('-w, --watch', 'Watch for file changes and re-run generation')
|
|
44
|
+
.action(async (options) => {
|
|
45
|
+
try {
|
|
46
|
+
const incremental = options.incremental !== false;
|
|
47
|
+
if (options.watch) {
|
|
48
|
+
await startWatch(options.config, incremental);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
await generate(options.config, incremental);
|
|
52
|
+
}
|
|
53
|
+
process.exit(0);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
51
59
|
program.parse();
|
|
52
60
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-sample-config.d.ts","sourceRoot":"","sources":["../../src/core/create-sample-config.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"create-sample-config.d.ts","sourceRoot":"","sources":["../../src/core/create-sample-config.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,MAAM,KAAG,IA0CjE,CAAA"}
|
|
@@ -9,7 +9,6 @@ export const createSampleConfig = (format) => {
|
|
|
9
9
|
'C:/Users/User/Desktop/MyApp/MyApp.sln',
|
|
10
10
|
],
|
|
11
11
|
outputPath: './app/types',
|
|
12
|
-
targetAnnotation: 'TypeSharp',
|
|
13
12
|
singleOutputFile: false,
|
|
14
13
|
namingConvention: 'camel',
|
|
15
14
|
fileSuffix: ''
|
|
@@ -26,7 +25,7 @@ export const createSampleConfig = (format) => {
|
|
|
26
25
|
}
|
|
27
26
|
else {
|
|
28
27
|
fileName = 'typesharp.config.ts';
|
|
29
|
-
|
|
28
|
+
const namespace = '@siyavuyachagi/typesharp';
|
|
30
29
|
content = [
|
|
31
30
|
`import type { TypeSharpConfig } from '${namespace}';`,
|
|
32
31
|
``,
|
|
@@ -43,11 +42,12 @@ export const createSampleConfig = (format) => {
|
|
|
43
42
|
return;
|
|
44
43
|
}
|
|
45
44
|
fs.writeFileSync(fileName, content, 'utf-8');
|
|
46
|
-
console.log(chalk.
|
|
45
|
+
console.log(chalk.gray('āāā ') + chalk.blue(`./${fileName}`));
|
|
47
46
|
};
|
|
48
47
|
/**
|
|
49
48
|
* Format a plain object as a JS/TS object literal (no quoted keys)
|
|
50
49
|
*/
|
|
50
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
51
51
|
const formatAsJsObject = (obj, indent = 0) => {
|
|
52
52
|
const pad = ' '.repeat(indent + 2);
|
|
53
53
|
const closePad = ' '.repeat(indent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-sample-config.js","sourceRoot":"","sources":["../../src/core/create-sample-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAA4B,EAAQ,EAAE;IACrE,MAAM,YAAY,GAAoB;QAClC,MAAM,EAAE;YACJ,uCAAuC;SAC1C;QACD,UAAU,EAAE,aAAa;QACzB,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"create-sample-config.js","sourceRoot":"","sources":["../../src/core/create-sample-config.ts"],"names":[],"mappings":"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"}
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAsD/D;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,OAAO,CAAC,eAAe,CAAC,KAAG,eAsBpE,CAAC;AAMF,wBAAsB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,WAAW,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C9F;AAuCD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,QAoB/C;AAkCD;;GAEG;AACH,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAqB9E"}
|
package/dist/core/index.js
CHANGED
|
@@ -4,12 +4,10 @@ import { parseCSharpFiles } from '../parser/index.js';
|
|
|
4
4
|
import { convertFileName, generateTypeScriptFiles } from '../generator/index.js';
|
|
5
5
|
import chalk from 'chalk';
|
|
6
6
|
import { pathToFileURL } from 'url';
|
|
7
|
-
import { resolveProjectFilesFromSource } from '../parser/resolve-project-files-from-source.js';
|
|
8
7
|
/**
|
|
9
8
|
* Default configuration values
|
|
10
9
|
*/
|
|
11
10
|
const DEFAULT_CONFIG = {
|
|
12
|
-
targetAnnotation: 'TypeSharp',
|
|
13
11
|
singleOutputFile: false,
|
|
14
12
|
namingConvention: 'camel'
|
|
15
13
|
};
|
|
@@ -75,27 +73,27 @@ export async function generate(configPath, incremental = true) {
|
|
|
75
73
|
const config = await loadConfig(configPath);
|
|
76
74
|
console.log(chalk.green.bold('\nā Configuration loaded'));
|
|
77
75
|
console.log(chalk.cyan(`-> Output:`), chalk.white(config.outputPath));
|
|
78
|
-
console.log(chalk.cyan(`-> Annotation:`), chalk.white(`[${config.targetAnnotation}]`));
|
|
79
76
|
console.log(chalk.cyan(`-> Single file:`), chalk.white(config.singleOutputFile));
|
|
77
|
+
console.log(chalk.cyan(`-> Naming convention:`), chalk.white(config.namingConvention));
|
|
80
78
|
console.log(chalk.cyan('\nā§ Parsing C# files...'));
|
|
81
79
|
const parseResults = await parseCSharpFiles(config);
|
|
82
80
|
if (parseResults.length === 0) {
|
|
83
|
-
console.warn(chalk.yellow.bold('ā Warning:'), chalk.white(`No C# files found with [
|
|
81
|
+
console.warn(chalk.yellow.bold('\nā Warning:'), chalk.white(`No C# files found with [TypeSharp] attribute\n`));
|
|
84
82
|
return;
|
|
85
83
|
}
|
|
84
|
+
const allClasses = parseResults.flatMap(result => result.classes);
|
|
85
|
+
console.log(chalk.green.bold(`\nā Found ${allClasses.length} ${allClasses.length === 1 ? 'class' : 'classes'} with [TypeSharp] attribute`));
|
|
86
|
+
let metrics;
|
|
86
87
|
if (incremental) {
|
|
87
88
|
const changedFiles = await cleanOnlyChangedOutputFiles(config, parseResults);
|
|
88
|
-
generateTypeScriptFiles(config, parseResults, changedFiles);
|
|
89
|
+
metrics = generateTypeScriptFiles(config, parseResults, changedFiles);
|
|
89
90
|
}
|
|
90
91
|
else {
|
|
91
92
|
cleanOutputDirectory(config.outputPath);
|
|
92
|
-
generateTypeScriptFiles(config, parseResults);
|
|
93
|
+
metrics = generateTypeScriptFiles(config, parseResults);
|
|
93
94
|
}
|
|
94
|
-
|
|
95
|
-
console.log(chalk.green.bold(
|
|
96
|
-
console.log(chalk.blue.cyan('\nā§ Generating TypeScript files...'));
|
|
97
|
-
generateTypeScriptFiles(config, parseResults);
|
|
98
|
-
console.log(chalk.green.bold('ā
Generation completed successfully!\n'));
|
|
95
|
+
console.log(chalk.blue(`\nCreated: ${metrics.created} | Updated: ${metrics.updated} | Total files: ${metrics.total}`));
|
|
96
|
+
console.log(chalk.green.bold('\nā Generation completed successfully!'));
|
|
99
97
|
}
|
|
100
98
|
catch (error) {
|
|
101
99
|
if (error instanceof Error) {
|
|
@@ -115,17 +113,10 @@ async function cleanOnlyChangedOutputFiles(config, parseResults) {
|
|
|
115
113
|
const csharpFiles = parseResults.map(r => r.filePath);
|
|
116
114
|
const previousHashes = loadPreviousHashes();
|
|
117
115
|
const { changed, deleted } = getChangedFiles(csharpFiles, previousHashes);
|
|
118
|
-
console.log('\nš Change Detection:');
|
|
119
|
-
if (changed.length > 0) {
|
|
120
|
-
console.log(chalk.yellow(` Changed files: ${changed.length}`));
|
|
121
|
-
changed.forEach((f) => console.log(chalk.yellow(` ā³ ${f}`)));
|
|
122
|
-
}
|
|
123
116
|
if (deleted.length > 0) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
for (const deletedFile of deleted) {
|
|
128
|
-
removeCorrespondingTsFile(config, deletedFile);
|
|
117
|
+
for (const deletedFile of deleted) {
|
|
118
|
+
removeCorrespondingTsFile(config, deletedFile);
|
|
119
|
+
}
|
|
129
120
|
}
|
|
130
121
|
const currentHashes = new Map();
|
|
131
122
|
for (const file of csharpFiles) {
|
|
@@ -142,10 +133,12 @@ export function cleanOutputDirectory(dir) {
|
|
|
142
133
|
if (!fs.existsSync(dir))
|
|
143
134
|
return;
|
|
144
135
|
const entries = fs.readdirSync(dir);
|
|
145
|
-
console.log('\
|
|
146
|
-
for (const entry of entries) {
|
|
136
|
+
console.log(chalk.cyan('\nā§ Clearing output directory:'));
|
|
137
|
+
for (const [index, entry] of entries.entries()) {
|
|
147
138
|
const fullPath = path.join(dir, entry);
|
|
148
|
-
|
|
139
|
+
const isLast = index === entries.length - 1;
|
|
140
|
+
const tree = chalk.gray(isLast ? 'āāā' : 'āāā');
|
|
141
|
+
console.log(tree, chalk.red('deleted'), chalk.gray(`${chalk.strikethrough(fullPath)}`));
|
|
149
142
|
const stat = fs.lstatSync(fullPath);
|
|
150
143
|
if (stat.isDirectory()) {
|
|
151
144
|
fs.rmSync(fullPath, { recursive: true, force: true });
|
|
@@ -196,35 +189,4 @@ export async function loadConfig(configPath) {
|
|
|
196
189
|
}
|
|
197
190
|
throw new Error('No configuration file found. Please create typesharp.config.ts, typesharp.config.js, or typesharp.config.json');
|
|
198
191
|
}
|
|
199
|
-
/**
|
|
200
|
-
* Validate configuration
|
|
201
|
-
*/
|
|
202
|
-
function validateConfig(config) {
|
|
203
|
-
// Convert single project to array for unified handling
|
|
204
|
-
const projectFiles = resolveProjectFilesFromSource(config.source);
|
|
205
|
-
// Validate each project file
|
|
206
|
-
for (const projectFile of projectFiles) {
|
|
207
|
-
if (!fs.existsSync(projectFile)) {
|
|
208
|
-
throw new Error(`Project file does not exist: ${projectFile}`);
|
|
209
|
-
}
|
|
210
|
-
const stats = fs.statSync(projectFile);
|
|
211
|
-
if (!stats.isFile()) {
|
|
212
|
-
throw new Error(`Target path is not a file: ${projectFile}`);
|
|
213
|
-
}
|
|
214
|
-
if (!projectFile.endsWith('.csproj')) {
|
|
215
|
-
throw new Error(`Target file is not a .csproj: ${projectFile}`);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Optional fields sanitization
|
|
220
|
-
*/
|
|
221
|
-
if (config.targetAnnotation) {
|
|
222
|
-
const original = config.targetAnnotation;
|
|
223
|
-
// Remove spaces, [ and ]
|
|
224
|
-
config.targetAnnotation = config.targetAnnotation.replace(/[ \[\]]/g, '');
|
|
225
|
-
if (config.targetAnnotation !== original) {
|
|
226
|
-
console.warn(chalk.yellow.bold('ā Warning:'), chalk.white(`remove invalid characters (space, [ or ]) from your`), chalk.bold('targetAnnotation'), `\n`);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
192
|
//# sourceMappingURL=index.js.map
|
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Start TypeSharp in watch mode.
|
|
3
|
+
* Runs an initial generation (respecting the incremental flag),
|
|
4
|
+
* then watches the entire project for any file change and re-runs
|
|
5
|
+
* incremental generation on each detected save.
|
|
6
|
+
*
|
|
7
|
+
* Note: fs.watch recursive mode requires Node >= 20 on Windows/macOS.
|
|
8
|
+
* Linux support requires Node >= 22.
|
|
9
|
+
*/
|
|
10
|
+
export declare function startWatch(configPath: string | undefined, incremental: boolean): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=watch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/core/watch.ts"],"names":[],"mappings":"AAoBA;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA+DpG"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { generate, loadConfig } from './index.js';
|
|
4
|
+
import { watchDirectory } from '../helpers/watcher.js';
|
|
5
|
+
const DEBOUNCE_MS = 300;
|
|
6
|
+
const IGNORED_SEGMENTS = [
|
|
7
|
+
'node_modules',
|
|
8
|
+
'.git',
|
|
9
|
+
'.typesharp',
|
|
10
|
+
'dist',
|
|
11
|
+
'build',
|
|
12
|
+
'.nuxt',
|
|
13
|
+
'.output',
|
|
14
|
+
'.next',
|
|
15
|
+
'.svelte-kit'
|
|
16
|
+
];
|
|
17
|
+
/**
|
|
18
|
+
* Start TypeSharp in watch mode.
|
|
19
|
+
* Runs an initial generation (respecting the incremental flag),
|
|
20
|
+
* then watches the entire project for any file change and re-runs
|
|
21
|
+
* incremental generation on each detected save.
|
|
22
|
+
*
|
|
23
|
+
* Note: fs.watch recursive mode requires Node >= 20 on Windows/macOS.
|
|
24
|
+
* Linux support requires Node >= 22.
|
|
25
|
+
*/
|
|
26
|
+
export async function startWatch(configPath, incremental) {
|
|
27
|
+
console.log(chalk.cyan.bold('\nš TypeSharp - Starting watch mode...'));
|
|
28
|
+
// Initial generation ā full or incremental depending on the flag
|
|
29
|
+
await generate(configPath, incremental);
|
|
30
|
+
// Load config so we can exclude the output directory from watch events
|
|
31
|
+
const config = await loadConfig(configPath);
|
|
32
|
+
const outputPath = path.resolve(config.outputPath);
|
|
33
|
+
const watchDir = process.cwd();
|
|
34
|
+
console.log(chalk.cyan('\nš Watching for changes...'));
|
|
35
|
+
console.log(chalk.gray(` Directory : ${watchDir}`));
|
|
36
|
+
console.log(chalk.gray(` Debounce : ${DEBOUNCE_MS}ms`));
|
|
37
|
+
console.log(chalk.gray(' Press Ctrl+C to stop\n'));
|
|
38
|
+
let debounceTimer = null;
|
|
39
|
+
let isGenerating = false;
|
|
40
|
+
const watcher = watchDirectory(watchDir, (_eventType, filename) => {
|
|
41
|
+
if (!filename)
|
|
42
|
+
return;
|
|
43
|
+
const absoluteFile = path.resolve(watchDir, filename);
|
|
44
|
+
// Ignore changes inside the output directory ā prevents infinite loop
|
|
45
|
+
if (absoluteFile.startsWith(outputPath + path.sep) || absoluteFile === outputPath)
|
|
46
|
+
return;
|
|
47
|
+
const normalized = filename.replace(/\\/g, '/');
|
|
48
|
+
const segments = normalized.split('/');
|
|
49
|
+
// Ignore common non-source directories
|
|
50
|
+
if (segments.some(seg => IGNORED_SEGMENTS.includes(seg)))
|
|
51
|
+
return;
|
|
52
|
+
// Debounce ā batch rapid saves (e.g. formatter running on save)
|
|
53
|
+
if (debounceTimer)
|
|
54
|
+
clearTimeout(debounceTimer);
|
|
55
|
+
debounceTimer = setTimeout(async () => {
|
|
56
|
+
if (isGenerating)
|
|
57
|
+
return;
|
|
58
|
+
isGenerating = true;
|
|
59
|
+
console.log(chalk.gray(`\nā§ Change detected: ${filename}`));
|
|
60
|
+
try {
|
|
61
|
+
// Always incremental after the initial run ā
|
|
62
|
+
// hashing determines which C# files actually changed
|
|
63
|
+
await generate(configPath, true);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// generate() already logs the error ā don't kill the watcher
|
|
67
|
+
}
|
|
68
|
+
finally {
|
|
69
|
+
isGenerating = false;
|
|
70
|
+
}
|
|
71
|
+
}, DEBOUNCE_MS);
|
|
72
|
+
});
|
|
73
|
+
// Graceful shutdown on Ctrl+C
|
|
74
|
+
process.on('SIGINT', () => {
|
|
75
|
+
console.log(chalk.yellow('\n\nš TypeSharp watch stopped.'));
|
|
76
|
+
watcher.close();
|
|
77
|
+
process.exit(0);
|
|
78
|
+
});
|
|
79
|
+
// Keep the process alive indefinitely
|
|
80
|
+
await new Promise(() => { });
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/core/watch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-enum.d.ts","sourceRoot":"","sources":["../../src/generator/generate-enum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAWrD"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate TypeScript enum
|
|
3
|
+
*/
|
|
4
|
+
export function generateEnum(cls) {
|
|
5
|
+
if (cls.isUnion) {
|
|
6
|
+
return generateUnionEnum(cls);
|
|
7
|
+
}
|
|
8
|
+
const values = cls.enumValues || [];
|
|
9
|
+
const enumValues = values
|
|
10
|
+
.map(v => ` ${v} = '${v}'`)
|
|
11
|
+
.join(',\n');
|
|
12
|
+
return `export enum ${cls.name} {\n${enumValues}\n}`;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Generate a const object + union type from a [Union]-decorated enum
|
|
16
|
+
*/
|
|
17
|
+
function generateUnionEnum(cls) {
|
|
18
|
+
const values = cls.enumValues || [];
|
|
19
|
+
const entries = values.map(v => ` ${v}: '${v}'`).join(',\n');
|
|
20
|
+
return [
|
|
21
|
+
`export const ${cls.name} = {\n${entries}\n} as const;`,
|
|
22
|
+
``,
|
|
23
|
+
`export type ${cls.name} = typeof ${cls.name}[keyof typeof ${cls.name}];`
|
|
24
|
+
].join('\n');
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=generate-enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-enum.js","sourceRoot":"","sources":["../../src/generator/generate-enum.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAgB;IAC3C,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,MAAM;SACpB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;SAC3B,IAAI,CAAC,KAAK,CAAC,CAAC;IAEjB,OAAO,eAAe,GAAG,CAAC,IAAI,OAAO,UAAU,KAAK,CAAC;AACvD,CAAC;AAID;;GAEG;AACH,SAAS,iBAAiB,CAAC,GAAgB;IACvC,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9D,OAAO;QACH,gBAAgB,GAAG,CAAC,IAAI,SAAS,OAAO,eAAe;QACvD,EAAE;QACF,eAAe,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,IAAI,iBAAiB,GAAG,CAAC,IAAI,IAAI;KAC5E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-union-enum.d.ts","sourceRoot":"","sources":["../../src/generator/generate-union-enum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAQ1D"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate a const object + union type from a [Union]-decorated enum
|
|
3
|
+
*/
|
|
4
|
+
export function generateUnionEnum(cls) {
|
|
5
|
+
const values = cls.enumValues || [];
|
|
6
|
+
const entries = values.map(v => ` ${v}: '${v}'`).join(',\n');
|
|
7
|
+
return [
|
|
8
|
+
`export const ${cls.name} = {\n${entries}\n} as const;`,
|
|
9
|
+
``,
|
|
10
|
+
`export type ${cls.name} = typeof ${cls.name}[keyof typeof ${cls.name}];`
|
|
11
|
+
].join('\n');
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=generate-union-enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-union-enum.js","sourceRoot":"","sources":["../../src/generator/generate-union-enum.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAgB;IAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9D,OAAO;QACH,gBAAgB,GAAG,CAAC,IAAI,SAAS,OAAO,eAAe;QACvD,EAAE;QACF,eAAe,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,IAAI,iBAAiB,GAAG,CAAC,IAAI,IAAI;KAC5E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC"}
|
|
@@ -3,7 +3,11 @@ import type { ParseResult, TypeSharpConfig } from '../types/index.js';
|
|
|
3
3
|
/**
|
|
4
4
|
* Generate TypeScript files from parsed C# classes
|
|
5
5
|
*/
|
|
6
|
-
export declare function generateTypeScriptFiles(config: TypeSharpConfig, parseResults: ParseResult[], changedFiles?: Set<string>):
|
|
6
|
+
export declare function generateTypeScriptFiles(config: TypeSharpConfig, parseResults: ParseResult[], changedFiles?: Set<string>): {
|
|
7
|
+
created: number;
|
|
8
|
+
updated: number;
|
|
9
|
+
total: number;
|
|
10
|
+
};
|
|
7
11
|
/**
|
|
8
12
|
* Convert file name to specified convention
|
|
9
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAA+B,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAA+B,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAItE;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,eAAe,EACvB,YAAY,EAAE,WAAW,EAAE,EAC3B,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GACzB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAarD;AAsYD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,GAAG,MAAM,CAalF"}
|