strapi-typed-client 1.6.1 → 2.0.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 +2 -2
- package/dist/cli/commands/check.d.ts +2 -3
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +3 -3
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/generate.d.ts +3 -3
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +6 -4
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/watch.d.ts +3 -3
- package/dist/cli/commands/watch.d.ts.map +1 -1
- package/dist/cli/commands/watch.js +19 -9
- package/dist/cli/commands/watch.js.map +1 -1
- package/dist/cli/utils/file-writer.d.ts +8 -7
- package/dist/cli/utils/file-writer.d.ts.map +1 -1
- package/dist/cli/utils/file-writer.js +17 -61
- package/dist/cli/utils/file-writer.js.map +1 -1
- package/dist/core/endpoint-converter.d.ts +5 -1
- package/dist/core/endpoint-converter.d.ts.map +1 -1
- package/dist/core/endpoint-converter.js +114 -8
- package/dist/core/endpoint-converter.js.map +1 -1
- package/dist/generator/auth-api-generator.d.ts +11 -3
- package/dist/generator/auth-api-generator.d.ts.map +1 -1
- package/dist/generator/auth-api-generator.js +213 -220
- package/dist/generator/auth-api-generator.js.map +1 -1
- package/dist/generator/client-generator.d.ts +9 -0
- package/dist/generator/client-generator.d.ts.map +1 -1
- package/dist/generator/client-generator.js +201 -78
- package/dist/generator/client-generator.js.map +1 -1
- package/dist/generator/custom-api-generator.d.ts +1 -1
- package/dist/generator/custom-api-generator.d.ts.map +1 -1
- package/dist/generator/custom-api-generator.js +29 -5
- package/dist/generator/custom-api-generator.js.map +1 -1
- package/dist/generator/index-generator.d.ts.map +1 -1
- package/dist/generator/index-generator.js +0 -1
- package/dist/generator/index-generator.js.map +1 -1
- package/dist/generator/index.d.ts +18 -1
- package/dist/generator/index.d.ts.map +1 -1
- package/dist/generator/index.js +85 -9
- package/dist/generator/index.js.map +1 -1
- package/dist/generator/plugin-api-generator.d.ts +2 -0
- package/dist/generator/plugin-api-generator.d.ts.map +1 -1
- package/dist/generator/plugin-api-generator.js +23 -1
- package/dist/generator/plugin-api-generator.js.map +1 -1
- package/dist/generator/plugin-registry.d.ts +5 -0
- package/dist/generator/plugin-registry.d.ts.map +1 -1
- package/dist/generator/plugin-registry.js +2 -1
- package/dist/generator/plugin-registry.js.map +1 -1
- package/dist/generator/types-generator.d.ts +13 -3
- package/dist/generator/types-generator.d.ts.map +1 -1
- package/dist/generator/types-generator.js +91 -101
- package/dist/generator/types-generator.js.map +1 -1
- package/dist/next/index.d.ts +9 -1
- package/dist/next/index.d.ts.map +1 -1
- package/dist/next/index.js +46 -45
- package/dist/next/index.js.map +1 -1
- package/dist/schema-types.d.ts +1 -1
- package/dist/schema-types.d.ts.map +1 -1
- package/dist/shared/client-header.d.ts +19 -0
- package/dist/shared/client-header.d.ts.map +1 -0
- package/dist/shared/client-header.js +58 -0
- package/dist/shared/client-header.js.map +1 -0
- package/package.json +9 -15
- package/dist/index.d.ts +0 -102
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -79
- package/dist/index.js.map +0 -1
- package/src/generator/templates/stringify-query.ts +0 -36
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ Generate into your source tree and commit the result:
|
|
|
31
31
|
npx strapi-types generate --url http://localhost:1337 --output ./src/strapi
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
-
Committed types survive reinstalls and show up as reviewable diffs.
|
|
34
|
+
Committed types survive reinstalls and show up as reviewable diffs.
|
|
35
35
|
|
|
36
36
|
### 4. Use
|
|
37
37
|
|
|
@@ -69,7 +69,7 @@ articles[0].category.name // fully typed
|
|
|
69
69
|
## Requirements
|
|
70
70
|
|
|
71
71
|
- **Strapi v5**
|
|
72
|
-
- **Node.js >=
|
|
72
|
+
- **Node.js >= 22**
|
|
73
73
|
|
|
74
74
|
## Documentation
|
|
75
75
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Check command - verifies that local types are in sync with remote schema
|
|
3
3
|
* Returns exit code 0 if in sync, 1 if out of sync
|
|
4
4
|
*/
|
|
5
|
+
import type { Command } from 'commander';
|
|
5
6
|
export interface CheckOptions {
|
|
6
7
|
url?: string;
|
|
7
8
|
token?: string;
|
|
@@ -21,7 +22,5 @@ export declare function check(options: CheckOptions): Promise<CheckResult>;
|
|
|
21
22
|
/**
|
|
22
23
|
* CLI handler for check command
|
|
23
24
|
*/
|
|
24
|
-
export declare function createCheckCommand(program:
|
|
25
|
-
command: (...args: any[]) => any;
|
|
26
|
-
}): void;
|
|
25
|
+
export declare function createCheckCommand(program: Command): void;
|
|
27
26
|
//# sourceMappingURL=check.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/check.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/check.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASxC,MAAM,WAAW,YAAY;IACzB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA6EvE;AASD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2CzD"}
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
* Returns exit code 0 if in sync, 1 if out of sync
|
|
4
4
|
*/
|
|
5
5
|
import { createApiClient } from '../utils/api-client.js';
|
|
6
|
-
import { readLocalSchemaHash, readLocalGeneratorVersion,
|
|
6
|
+
import { readLocalSchemaHash, readLocalGeneratorVersion, requireOutputDir, } from '../utils/file-writer.js';
|
|
7
7
|
import { getGeneratorVersion } from '../../shared/version.js';
|
|
8
8
|
/**
|
|
9
9
|
* Check if local types are in sync with remote schema
|
|
10
10
|
*/
|
|
11
11
|
export async function check(options) {
|
|
12
|
-
const outputDir = options.output || getDefaultOutputDir();
|
|
13
12
|
try {
|
|
13
|
+
const outputDir = requireOutputDir(options.output);
|
|
14
14
|
// Read local hash
|
|
15
15
|
const localHash = readLocalSchemaHash(outputDir);
|
|
16
16
|
if (!localHash) {
|
|
@@ -80,7 +80,7 @@ export function createCheckCommand(program) {
|
|
|
80
80
|
.description('Check if local types are in sync with remote Strapi schema')
|
|
81
81
|
.option('-u, --url <url>', 'Strapi API URL (default: STRAPI_URL env or http://localhost:1337)')
|
|
82
82
|
.option('-t, --token <token>', 'Strapi API token (default: STRAPI_TOKEN env)')
|
|
83
|
-
.option('-o, --output <path>', 'Output directory to check (
|
|
83
|
+
.option('-o, --output <path>', 'Output directory to check (required) — where you generated, e.g. ./src/strapi')
|
|
84
84
|
.option('-s, --silent', 'Suppress output messages')
|
|
85
85
|
.action(async (opts) => {
|
|
86
86
|
const result = await check({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/cli/commands/check.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/cli/commands/check.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generate command - generates TypeScript types from Strapi schema
|
|
3
3
|
*/
|
|
4
|
+
import type { Command } from 'commander';
|
|
4
5
|
export interface GenerateOptions {
|
|
5
6
|
url?: string;
|
|
6
7
|
token?: string;
|
|
@@ -8,6 +9,7 @@ export interface GenerateOptions {
|
|
|
8
9
|
silent?: boolean;
|
|
9
10
|
force?: boolean;
|
|
10
11
|
format?: 'js' | 'ts';
|
|
12
|
+
typecheck?: boolean;
|
|
11
13
|
}
|
|
12
14
|
export interface GenerateResult {
|
|
13
15
|
success: boolean;
|
|
@@ -36,7 +38,5 @@ export declare function generate(options: GenerateOptions): Promise<GenerateResu
|
|
|
36
38
|
/**
|
|
37
39
|
* CLI handler for generate command
|
|
38
40
|
*/
|
|
39
|
-
export declare function createGenerateCommand(program:
|
|
40
|
-
command: (...args: any[]) => any;
|
|
41
|
-
}): void;
|
|
41
|
+
export declare function createGenerateCommand(program: Command): void;
|
|
42
42
|
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAWxC,MAAM,WAAW,eAAe;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;CACtB;AA+BD,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC3C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,OAAO,CAAA;CACzB,GAAG,OAAO,CAOV;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC1B,OAAO,EAAE,eAAe,GACzB,OAAO,CAAC,cAAc,CAAC,CAiLzB;AAYD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2D5D"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import * as fs from 'fs';
|
|
5
5
|
import * as path from 'path';
|
|
6
6
|
import { createApiClient } from '../utils/api-client.js';
|
|
7
|
-
import { readLocalSchemaHash, readLocalGeneratorVersion,
|
|
7
|
+
import { readLocalSchemaHash, readLocalGeneratorVersion, requireOutputDir, } from '../utils/file-writer.js';
|
|
8
8
|
import { Generator } from '../../generator/index.js';
|
|
9
9
|
import { transformSchema } from '../../core/schema-transformer.js';
|
|
10
10
|
import { getGeneratorVersion } from '../../shared/version.js';
|
|
@@ -50,10 +50,10 @@ export function isGeneratedOutputFresh(params) {
|
|
|
50
50
|
* Generate types from Strapi API
|
|
51
51
|
*/
|
|
52
52
|
export async function generate(options) {
|
|
53
|
-
const outputDir = options.output || getDefaultOutputDir();
|
|
54
53
|
const format = options.format ?? 'js';
|
|
55
54
|
const filesWritten = [];
|
|
56
55
|
try {
|
|
56
|
+
const outputDir = requireOutputDir(options.output);
|
|
57
57
|
assertOutputDirForFormat(outputDir, format);
|
|
58
58
|
// Create API client
|
|
59
59
|
const client = createApiClient({
|
|
@@ -140,7 +140,7 @@ export async function generate(options) {
|
|
|
140
140
|
console.log('Generating TypeScript types...');
|
|
141
141
|
}
|
|
142
142
|
const generator = new Generator(outputDir);
|
|
143
|
-
await generator.generate(parsedSchema, endpoints, extraTypes, hash, getGeneratorVersion(), format);
|
|
143
|
+
await generator.generate(parsedSchema, endpoints, extraTypes, hash, getGeneratorVersion(), format, options.typecheck ?? true);
|
|
144
144
|
// Track generated files
|
|
145
145
|
const emittedFiles = format === 'ts'
|
|
146
146
|
? ['types.ts', 'client.ts', 'index.ts']
|
|
@@ -183,10 +183,11 @@ export function createGenerateCommand(program) {
|
|
|
183
183
|
.description('Generate TypeScript types from Strapi schema')
|
|
184
184
|
.option('-u, --url <url>', 'Strapi API URL (default: STRAPI_URL env or http://localhost:1337)')
|
|
185
185
|
.option('-t, --token <token>', 'Strapi API token (default: STRAPI_TOKEN env)')
|
|
186
|
-
.option('-o, --output <path>', 'Output directory (
|
|
186
|
+
.option('-o, --output <path>', 'Output directory (required) — your source tree, e.g. ./src/strapi')
|
|
187
187
|
.option('-s, --silent', 'Suppress output messages')
|
|
188
188
|
.option('-f, --force', 'Force regeneration even if schema unchanged')
|
|
189
189
|
.option('--format <js|ts>', 'Output format: js (compiled .js + .d.ts, default) or ts (raw .ts for monorepo/source-tree output)', 'js')
|
|
190
|
+
.option('--no-typecheck', 'Write the generated client even if it fails type-checking (escape hatch for strict-only false positives)')
|
|
190
191
|
.action(async (opts) => {
|
|
191
192
|
if (opts.format && opts.format !== 'js' && opts.format !== 'ts') {
|
|
192
193
|
console.error(`Invalid --format value: ${opts.format}. Expected 'js' or 'ts'.`);
|
|
@@ -199,6 +200,7 @@ export function createGenerateCommand(program) {
|
|
|
199
200
|
silent: opts.silent,
|
|
200
201
|
force: opts.force,
|
|
201
202
|
format: opts.format,
|
|
203
|
+
typecheck: opts.typecheck,
|
|
202
204
|
});
|
|
203
205
|
if (!result.success) {
|
|
204
206
|
console.error('Generation failed:', result.error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Watch command - connects to SSE stream and regenerates types on schema changes
|
|
3
3
|
*/
|
|
4
|
+
import type { Command } from 'commander';
|
|
4
5
|
export interface WatchOptions {
|
|
5
6
|
url?: string;
|
|
6
7
|
token?: string;
|
|
7
8
|
output?: string;
|
|
8
9
|
silent?: boolean;
|
|
10
|
+
typecheck?: boolean;
|
|
9
11
|
}
|
|
10
12
|
/**
|
|
11
13
|
* Watch for schema changes via SSE
|
|
@@ -14,7 +16,5 @@ export declare function watch(options: WatchOptions): Promise<void>;
|
|
|
14
16
|
/**
|
|
15
17
|
* CLI handler for watch command
|
|
16
18
|
*/
|
|
17
|
-
export declare function createWatchCommand(program:
|
|
18
|
-
command: (...args: any[]) => any;
|
|
19
|
-
}): void;
|
|
19
|
+
export declare function createWatchCommand(program: Command): void;
|
|
20
20
|
//# sourceMappingURL=watch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKxC,MAAM,WAAW,YAAY;IACzB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;CACtB;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAoGhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqCzD"}
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
* Watch command - connects to SSE stream and regenerates types on schema changes
|
|
3
3
|
*/
|
|
4
4
|
import { createApiClient } from '../utils/api-client.js';
|
|
5
|
-
import { readLocalSchemaHash,
|
|
5
|
+
import { readLocalSchemaHash, requireOutputDir } from '../utils/file-writer.js';
|
|
6
6
|
import { SseConnection } from '../../shared/sse-client.js';
|
|
7
7
|
import { generate } from './generate.js';
|
|
8
8
|
/**
|
|
9
9
|
* Watch for schema changes via SSE
|
|
10
10
|
*/
|
|
11
11
|
export async function watch(options) {
|
|
12
|
-
const outputDir = options.output
|
|
12
|
+
const outputDir = requireOutputDir(options.output);
|
|
13
13
|
const client = createApiClient({
|
|
14
14
|
url: options.url,
|
|
15
15
|
token: options.token,
|
|
@@ -30,6 +30,7 @@ export async function watch(options) {
|
|
|
30
30
|
token: options.token,
|
|
31
31
|
output: outputDir,
|
|
32
32
|
silent: options.silent,
|
|
33
|
+
typecheck: options.typecheck,
|
|
33
34
|
});
|
|
34
35
|
}
|
|
35
36
|
let lastHash = readLocalSchemaHash(outputDir);
|
|
@@ -53,6 +54,7 @@ export async function watch(options) {
|
|
|
53
54
|
token: options.token,
|
|
54
55
|
output: outputDir,
|
|
55
56
|
silent: true,
|
|
57
|
+
typecheck: options.typecheck,
|
|
56
58
|
});
|
|
57
59
|
if (result.success) {
|
|
58
60
|
console.log('Types regenerated successfully.\n');
|
|
@@ -97,15 +99,23 @@ export function createWatchCommand(program) {
|
|
|
97
99
|
.description('Watch for schema changes and regenerate types automatically')
|
|
98
100
|
.option('-u, --url <url>', 'Strapi API URL (default: STRAPI_URL env or http://localhost:1337)')
|
|
99
101
|
.option('-t, --token <token>', 'Strapi API token (default: STRAPI_TOKEN env)')
|
|
100
|
-
.option('-o, --output <path>', 'Output directory (
|
|
102
|
+
.option('-o, --output <path>', 'Output directory (required) — your source tree, e.g. ./src/strapi')
|
|
101
103
|
.option('-s, --silent', 'Suppress regeneration messages')
|
|
104
|
+
.option('--no-typecheck', 'Write regenerated types even if they fail type-checking (escape hatch for strict-only false positives)')
|
|
102
105
|
.action(async (opts) => {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
106
|
+
try {
|
|
107
|
+
await watch({
|
|
108
|
+
url: opts.url,
|
|
109
|
+
token: opts.token,
|
|
110
|
+
output: opts.output,
|
|
111
|
+
silent: opts.silent,
|
|
112
|
+
typecheck: opts.typecheck,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
console.error(err.message);
|
|
117
|
+
process.exit(1);
|
|
118
|
+
}
|
|
109
119
|
});
|
|
110
120
|
}
|
|
111
121
|
//# sourceMappingURL=watch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,15 +30,16 @@ export declare function writeFiles(files: Array<{
|
|
|
30
30
|
content: string;
|
|
31
31
|
}>): WriteResult[];
|
|
32
32
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
33
|
+
* Require an explicit output directory. The generated client is meant to be
|
|
34
|
+
* written into your source tree and committed — there is no implicit
|
|
35
|
+
* node_modules default (a reinstall would wipe it). Throws an actionable error
|
|
36
|
+
* when no output was given, so both the CLI and programmatic callers fail loudly
|
|
37
|
+
* instead of silently writing somewhere unexpected.
|
|
35
38
|
*/
|
|
36
|
-
export declare function
|
|
39
|
+
export declare function requireOutputDir(output: string | undefined): string;
|
|
37
40
|
/**
|
|
38
|
-
* Read schema hash from the generated client.
|
|
39
|
-
*
|
|
40
|
-
* client at generation time as the first export — reading the file head is
|
|
41
|
-
* enough and avoids parsing the full client.
|
|
41
|
+
* Read schema hash from the generated client. SCHEMA_HASH is baked into the
|
|
42
|
+
* client at generation time as the first export.
|
|
42
43
|
*/
|
|
43
44
|
export declare function readLocalSchemaHash(outputDir: string): string | null;
|
|
44
45
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-writer.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/file-writer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,KAAK,CAAA;CAChB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAI/C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,CASxE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMxD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,UAAU,CACtB,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAChD,WAAW,EAAE,CAgBf;AAED
|
|
1
|
+
{"version":3,"file":"file-writer.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/file-writer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,KAAK,CAAA;CAChB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAI/C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,CASxE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMxD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,UAAU,CACtB,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAChD,WAAW,EAAE,CAgBf;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAUnE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEpE;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE1E"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* File writer utilities for CLI output
|
|
3
3
|
*/
|
|
4
4
|
import * as fs from 'fs';
|
|
5
|
-
import { createRequire } from 'module';
|
|
6
5
|
import * as path from 'path';
|
|
6
|
+
import { readClientHeaderConst } from '../../shared/client-header.js';
|
|
7
7
|
/**
|
|
8
8
|
* Ensure directory exists
|
|
9
9
|
*/
|
|
@@ -58,54 +58,27 @@ export function writeFiles(files) {
|
|
|
58
58
|
return results;
|
|
59
59
|
}
|
|
60
60
|
/**
|
|
61
|
-
*
|
|
62
|
-
*
|
|
61
|
+
* Require an explicit output directory. The generated client is meant to be
|
|
62
|
+
* written into your source tree and committed — there is no implicit
|
|
63
|
+
* node_modules default (a reinstall would wipe it). Throws an actionable error
|
|
64
|
+
* when no output was given, so both the CLI and programmatic callers fail loudly
|
|
65
|
+
* instead of silently writing somewhere unexpected.
|
|
63
66
|
*/
|
|
64
|
-
export function
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
catch {
|
|
71
|
-
return './dist';
|
|
67
|
+
export function requireOutputDir(output) {
|
|
68
|
+
if (!output || !output.trim()) {
|
|
69
|
+
throw new Error('No output directory specified.\n' +
|
|
70
|
+
'Pass --output pointing at your source tree, e.g.:\n' +
|
|
71
|
+
' strapi-types generate --output ./src/strapi --format ts\n' +
|
|
72
|
+
'Generated code is meant to be committed to your repo, not written into node_modules.');
|
|
72
73
|
}
|
|
74
|
+
return output.trim();
|
|
73
75
|
}
|
|
74
|
-
const HEADER_HEAD_BYTES = 512;
|
|
75
76
|
/**
|
|
76
|
-
* Read
|
|
77
|
-
*
|
|
78
|
-
*/
|
|
79
|
-
function readFileHead(filePath, bytes) {
|
|
80
|
-
let fd;
|
|
81
|
-
try {
|
|
82
|
-
fd = fs.openSync(filePath, 'r');
|
|
83
|
-
const buf = Buffer.alloc(bytes);
|
|
84
|
-
const read = fs.readSync(fd, buf, 0, bytes, 0);
|
|
85
|
-
return buf.slice(0, read).toString('utf-8');
|
|
86
|
-
}
|
|
87
|
-
catch {
|
|
88
|
-
return null;
|
|
89
|
-
}
|
|
90
|
-
finally {
|
|
91
|
-
if (fd !== undefined) {
|
|
92
|
-
try {
|
|
93
|
-
fs.closeSync(fd);
|
|
94
|
-
}
|
|
95
|
-
catch {
|
|
96
|
-
/* ignore */
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Read schema hash from the generated client. Tries client.ts (raw, .ts mode)
|
|
103
|
-
* first, then client.js (compiled, .js mode). SCHEMA_HASH is baked into the
|
|
104
|
-
* client at generation time as the first export — reading the file head is
|
|
105
|
-
* enough and avoids parsing the full client.
|
|
77
|
+
* Read schema hash from the generated client. SCHEMA_HASH is baked into the
|
|
78
|
+
* client at generation time as the first export.
|
|
106
79
|
*/
|
|
107
80
|
export function readLocalSchemaHash(outputDir) {
|
|
108
|
-
return
|
|
81
|
+
return readClientHeaderConst(outputDir, 'SCHEMA_HASH');
|
|
109
82
|
}
|
|
110
83
|
/**
|
|
111
84
|
* Read the GENERATOR_VERSION baked into the generated client at generation
|
|
@@ -114,23 +87,6 @@ export function readLocalSchemaHash(outputDir) {
|
|
|
114
87
|
* clients generated before version stamping was introduced).
|
|
115
88
|
*/
|
|
116
89
|
export function readLocalGeneratorVersion(outputDir) {
|
|
117
|
-
return
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Read a `export const <NAME> = '<value>'` baked into the generated client
|
|
121
|
-
* header. Both SCHEMA_HASH and GENERATOR_VERSION live in the first bytes of
|
|
122
|
-
* client.ts/client.js, so reading the head is enough.
|
|
123
|
-
*/
|
|
124
|
-
function readLocalHeaderConst(outputDir, name) {
|
|
125
|
-
const re = new RegExp(`${name}\\s*=\\s*['"]([^'"]*)['"]`);
|
|
126
|
-
for (const file of ['client.ts', 'client.js']) {
|
|
127
|
-
const head = readFileHead(path.join(outputDir, file), HEADER_HEAD_BYTES);
|
|
128
|
-
if (!head)
|
|
129
|
-
continue;
|
|
130
|
-
const match = head.match(re);
|
|
131
|
-
if (match)
|
|
132
|
-
return match[1];
|
|
133
|
-
}
|
|
134
|
-
return null;
|
|
90
|
+
return readClientHeaderConst(outputDir, 'GENERATOR_VERSION');
|
|
135
91
|
}
|
|
136
92
|
//# sourceMappingURL=file-writer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-writer.js","sourceRoot":"","sources":["../../../src/cli/utils/file-writer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,
|
|
1
|
+
{"version":3,"file":"file-writer.js","sourceRoot":"","sources":["../../../src/cli/utils/file-writer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAQrE;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe;IACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9C,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,OAAe;IACvD,IAAI,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;QACjC,6GAA6G;QAC7G,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAC5C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAc,EAAE,CAAA;IACpE,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,QAAgB;IACrC,IAAI,CAAC;QACD,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC7C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACvC,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACtB,KAA+C;IAE/C,MAAM,OAAO,GAAkB,EAAE,CAAA;IAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QACjD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAEpB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CACT,mBAAmB,IAAI,CAAC,IAAI,GAAG,EAC/B,MAAM,CAAC,KAAK,EAAE,OAAO,CACxB,CAAA;QACL,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAA;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA0B;IACvD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACX,kCAAkC;YAC9B,qDAAqD;YACrD,6DAA6D;YAC7D,sFAAsF,CAC7F,CAAA;IACL,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAA;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACjD,OAAO,qBAAqB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAAiB;IACvD,OAAO,qBAAqB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;AAChE,CAAC"}
|
|
@@ -21,6 +21,10 @@ export declare function convertEndpointsToRoutes(endpoints: ParsedEndpoint[]): P
|
|
|
21
21
|
*
|
|
22
22
|
* Extracts inline type definitions from endpoint types (body/response)
|
|
23
23
|
* and creates handler-to-type mappings.
|
|
24
|
+
*
|
|
25
|
+
* `knownTypeNames` is the set of type names the generated client defines
|
|
26
|
+
* (content-type + component cleanNames, MediaFile, extra controller types) so
|
|
27
|
+
* the sanitizer can tell a resolvable reference from a dangling one.
|
|
24
28
|
*/
|
|
25
|
-
export declare function convertEndpointsToCustomTypes(endpoints: ParsedEndpoint[], extraTypes?: ExtraControllerType[]): ParsedCustomTypes;
|
|
29
|
+
export declare function convertEndpointsToCustomTypes(endpoints: ParsedEndpoint[], extraTypes?: ExtraControllerType[], knownTypeNames?: Set<string>): ParsedCustomTypes;
|
|
26
30
|
//# sourceMappingURL=endpoint-converter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint-converter.d.ts","sourceRoot":"","sources":["../../src/core/endpoint-converter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACR,cAAc,EACd,mBAAmB,EACtB,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACzE,OAAO,KAAK,EACR,iBAAiB,EAEpB,MAAM,2BAA2B,CAAA;AAMlC;;GAEG;AACH,wBAAgB,wBAAwB,CACpC,SAAS,EAAE,cAAc,EAAE,GAC5B,YAAY,CAyBd;
|
|
1
|
+
{"version":3,"file":"endpoint-converter.d.ts","sourceRoot":"","sources":["../../src/core/endpoint-converter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACR,cAAc,EACd,mBAAmB,EACtB,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACzE,OAAO,KAAK,EACR,iBAAiB,EAEpB,MAAM,2BAA2B,CAAA;AAMlC;;GAEG;AACH,wBAAgB,wBAAwB,CACpC,SAAS,EAAE,cAAc,EAAE,GAC5B,YAAY,CAyBd;AAoFD;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CACzC,SAAS,EAAE,cAAc,EAAE,EAC3B,UAAU,CAAC,EAAE,mBAAmB,EAAE,EAClC,cAAc,GAAE,GAAG,CAAC,MAAM,CAAa,GACxC,iBAAiB,CA4InB"}
|