strapi-typed-client 1.0.0
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/LICENSE +21 -0
- package/README.md +83 -0
- package/dist/cli/commands/check.d.ts +27 -0
- package/dist/cli/commands/check.d.ts.map +1 -0
- package/dist/cli/commands/check.js +91 -0
- package/dist/cli/commands/check.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +28 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/generate.js +129 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/watch.d.ts +21 -0
- package/dist/cli/commands/watch.d.ts.map +1 -0
- package/dist/cli/commands/watch.js +113 -0
- package/dist/cli/commands/watch.js.map +1 -0
- package/dist/cli/index.d.ts +14 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +40 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/api-client.d.ts +41 -0
- package/dist/cli/utils/api-client.d.ts.map +1 -0
- package/dist/cli/utils/api-client.js +81 -0
- package/dist/cli/utils/api-client.js.map +1 -0
- package/dist/cli/utils/file-writer.d.ts +44 -0
- package/dist/cli/utils/file-writer.d.ts.map +1 -0
- package/dist/cli/utils/file-writer.js +89 -0
- package/dist/cli/utils/file-writer.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +37 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +622 -0
- package/dist/client.js +688 -0
- package/dist/core/endpoint-converter.d.ts +26 -0
- package/dist/core/endpoint-converter.d.ts.map +1 -0
- package/dist/core/endpoint-converter.js +161 -0
- package/dist/core/endpoint-converter.js.map +1 -0
- package/dist/core/generator/filters-generator.d.ts +22 -0
- package/dist/core/generator/filters-generator.d.ts.map +1 -0
- package/dist/core/generator/filters-generator.js +236 -0
- package/dist/core/generator/filters-generator.js.map +1 -0
- package/dist/core/index.d.ts +8 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +11 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/schema-transformer.d.ts +19 -0
- package/dist/core/schema-transformer.d.ts.map +1 -0
- package/dist/core/schema-transformer.js +306 -0
- package/dist/core/schema-transformer.js.map +1 -0
- package/dist/generator/auth-api-generator.d.ts +14 -0
- package/dist/generator/auth-api-generator.d.ts.map +1 -0
- package/dist/generator/auth-api-generator.js +518 -0
- package/dist/generator/auth-api-generator.js.map +1 -0
- package/dist/generator/blocks-types-template.d.ts +134 -0
- package/dist/generator/blocks-types-template.d.ts.map +1 -0
- package/dist/generator/blocks-types-template.js +4 -0
- package/dist/generator/blocks-types-template.js.map +1 -0
- package/dist/generator/client-generator.d.ts +19 -0
- package/dist/generator/client-generator.d.ts.map +1 -0
- package/dist/generator/client-generator.js +707 -0
- package/dist/generator/client-generator.js.map +1 -0
- package/dist/generator/custom-api-generator.d.ts +26 -0
- package/dist/generator/custom-api-generator.d.ts.map +1 -0
- package/dist/generator/custom-api-generator.js +145 -0
- package/dist/generator/custom-api-generator.js.map +1 -0
- package/dist/generator/index-generator.d.ts +4 -0
- package/dist/generator/index-generator.d.ts.map +1 -0
- package/dist/generator/index-generator.js +11 -0
- package/dist/generator/index-generator.js.map +1 -0
- package/dist/generator/index.d.ts +14 -0
- package/dist/generator/index.d.ts.map +1 -0
- package/dist/generator/index.js +94 -0
- package/dist/generator/index.js.map +1 -0
- package/dist/generator/types-generator.d.ts +35 -0
- package/dist/generator/types-generator.d.ts.map +1 -0
- package/dist/generator/types-generator.js +641 -0
- package/dist/generator/types-generator.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +4 -0
- package/dist/next/index.d.ts +16 -0
- package/dist/next/index.d.ts.map +1 -0
- package/dist/next/index.js +224 -0
- package/dist/next/index.js.map +1 -0
- package/dist/parser/custom-types-parser.d.ts +39 -0
- package/dist/parser/custom-types-parser.d.ts.map +1 -0
- package/dist/parser/custom-types-parser.js +206 -0
- package/dist/parser/custom-types-parser.js.map +1 -0
- package/dist/parser/index.d.ts +23 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +457 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/routes-parser.d.ts +21 -0
- package/dist/parser/routes-parser.d.ts.map +1 -0
- package/dist/parser/routes-parser.js +184 -0
- package/dist/parser/routes-parser.js.map +1 -0
- package/dist/plugin/admin/src/index.d.ts +16 -0
- package/dist/plugin/admin/src/index.d.ts.map +1 -0
- package/dist/plugin/admin/src/index.js +30 -0
- package/dist/plugin/admin/src/index.js.map +1 -0
- package/dist/plugin/admin/src/pages/HomePage.d.ts +2 -0
- package/dist/plugin/admin/src/pages/HomePage.d.ts.map +1 -0
- package/dist/plugin/admin/src/pages/HomePage.js +273 -0
- package/dist/plugin/admin/src/pages/HomePage.js.map +1 -0
- package/dist/plugin/admin/src/pluginId.d.ts +2 -0
- package/dist/plugin/admin/src/pluginId.d.ts.map +1 -0
- package/dist/plugin/admin/src/pluginId.js +2 -0
- package/dist/plugin/admin/src/pluginId.js.map +1 -0
- package/dist/plugin/index.d.ts +22 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +22 -0
- package/dist/plugin/index.js.map +1 -0
- package/dist/plugin/server/src/config/index.d.ts +31 -0
- package/dist/plugin/server/src/config/index.d.ts.map +1 -0
- package/dist/plugin/server/src/config/index.js +35 -0
- package/dist/plugin/server/src/config/index.js.map +1 -0
- package/dist/plugin/server/src/controllers/schema.d.ts +41 -0
- package/dist/plugin/server/src/controllers/schema.d.ts.map +1 -0
- package/dist/plugin/server/src/controllers/schema.js +51 -0
- package/dist/plugin/server/src/controllers/schema.js.map +1 -0
- package/dist/plugin/server/src/index.d.ts +114 -0
- package/dist/plugin/server/src/index.d.ts.map +1 -0
- package/dist/plugin/server/src/index.js +76 -0
- package/dist/plugin/server/src/index.js.map +1 -0
- package/dist/plugin/server/src/routes/index.d.ts +14 -0
- package/dist/plugin/server/src/routes/index.d.ts.map +1 -0
- package/dist/plugin/server/src/routes/index.js +23 -0
- package/dist/plugin/server/src/routes/index.js.map +1 -0
- package/dist/plugin/server/src/services/endpoints.d.ts +36 -0
- package/dist/plugin/server/src/services/endpoints.d.ts.map +1 -0
- package/dist/plugin/server/src/services/endpoints.js +523 -0
- package/dist/plugin/server/src/services/endpoints.js.map +1 -0
- package/dist/plugin/server/src/services/schema.d.ts +25 -0
- package/dist/plugin/server/src/services/schema.d.ts.map +1 -0
- package/dist/plugin/server/src/services/schema.js +164 -0
- package/dist/plugin/server/src/services/schema.js.map +1 -0
- package/dist/schema-meta.ts +7 -0
- package/dist/schema-types.d.ts +104 -0
- package/dist/schema-types.d.ts.map +1 -0
- package/dist/schema-types.js +3 -0
- package/dist/schema-types.js.map +1 -0
- package/dist/shared/constants.d.ts +99 -0
- package/dist/shared/constants.d.ts.map +1 -0
- package/dist/shared/constants.js +89 -0
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/endpoint-types.d.ts +42 -0
- package/dist/shared/endpoint-types.d.ts.map +1 -0
- package/dist/shared/endpoint-types.js +6 -0
- package/dist/shared/endpoint-types.js.map +1 -0
- package/dist/shared/index.d.ts +12 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +13 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/naming-utils.d.ts +55 -0
- package/dist/shared/naming-utils.d.ts.map +1 -0
- package/dist/shared/naming-utils.js +106 -0
- package/dist/shared/naming-utils.js.map +1 -0
- package/dist/shared/schema-hash.d.ts +39 -0
- package/dist/shared/schema-hash.d.ts.map +1 -0
- package/dist/shared/schema-hash.js +67 -0
- package/dist/shared/schema-hash.js.map +1 -0
- package/dist/shared/strapi-schema-types.d.ts +77 -0
- package/dist/shared/strapi-schema-types.d.ts.map +1 -0
- package/dist/shared/strapi-schema-types.js +10 -0
- package/dist/shared/strapi-schema-types.js.map +1 -0
- package/dist/shared/string-utils.d.ts +68 -0
- package/dist/shared/string-utils.d.ts.map +1 -0
- package/dist/shared/string-utils.js +124 -0
- package/dist/shared/string-utils.js.map +1 -0
- package/dist/transformer/index.d.ts +17 -0
- package/dist/transformer/index.d.ts.map +1 -0
- package/dist/transformer/index.js +83 -0
- package/dist/transformer/index.js.map +1 -0
- package/dist/types.d.ts +3430 -0
- package/dist/types.js +3 -0
- package/package.json +152 -0
- package/strapi-admin.js +2 -0
- package/strapi-server.js +2 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/api-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACR,cAAc,EACd,YAAY,EACf,MAAM,qCAAqC,CAAA;AAE5C,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,CAAA;AAE5C,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,qBAAa,SAAS;IAClB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,KAAK,CAAC,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAQ;gBAEX,OAAO,EAAE,gBAAgB;IAMrC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC;IAO1C;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC;IAO5C;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAS9B;;OAEG;YACW,OAAO;CAiCxB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE;IACrC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB,GAAG,SAAS,CAUZ"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API client for fetching schema from Strapi backend
|
|
3
|
+
*/
|
|
4
|
+
export class ApiClient {
|
|
5
|
+
baseUrl;
|
|
6
|
+
token;
|
|
7
|
+
timeout;
|
|
8
|
+
constructor(options) {
|
|
9
|
+
this.baseUrl = options.baseUrl.replace(/\/$/, '');
|
|
10
|
+
this.token = options.token;
|
|
11
|
+
this.timeout = options.timeout || 30000;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Fetch the full schema from Strapi
|
|
15
|
+
*/
|
|
16
|
+
async getSchema() {
|
|
17
|
+
const response = await this.request('/api/strapi-typed-client/schema');
|
|
18
|
+
return response;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Fetch only the schema hash from Strapi
|
|
22
|
+
*/
|
|
23
|
+
async getSchemaHash() {
|
|
24
|
+
const response = await this.request('/api/strapi-typed-client/schema-hash');
|
|
25
|
+
return response;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Check if the Strapi instance is reachable
|
|
29
|
+
*/
|
|
30
|
+
async ping() {
|
|
31
|
+
try {
|
|
32
|
+
await this.getSchemaHash();
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Make a request to the Strapi API
|
|
41
|
+
*/
|
|
42
|
+
async request(path) {
|
|
43
|
+
const url = `${this.baseUrl}${path}`;
|
|
44
|
+
const headers = {
|
|
45
|
+
'Content-Type': 'application/json',
|
|
46
|
+
};
|
|
47
|
+
if (this.token) {
|
|
48
|
+
headers['Authorization'] = `Bearer ${this.token}`;
|
|
49
|
+
}
|
|
50
|
+
const controller = new AbortController();
|
|
51
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
52
|
+
try {
|
|
53
|
+
const response = await fetch(url, {
|
|
54
|
+
method: 'GET',
|
|
55
|
+
headers,
|
|
56
|
+
signal: controller.signal,
|
|
57
|
+
});
|
|
58
|
+
if (!response.ok) {
|
|
59
|
+
const error = await response.text();
|
|
60
|
+
throw new Error(`API request failed: ${response.status} ${response.statusText}\n${error}`);
|
|
61
|
+
}
|
|
62
|
+
return response.json();
|
|
63
|
+
}
|
|
64
|
+
finally {
|
|
65
|
+
clearTimeout(timeoutId);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Create an API client from environment variables or CLI options
|
|
71
|
+
*/
|
|
72
|
+
export function createApiClient(options) {
|
|
73
|
+
const baseUrl = options.url || process.env.STRAPI_URL || 'http://localhost:1337';
|
|
74
|
+
const token = options.token || process.env.STRAPI_TOKEN;
|
|
75
|
+
return new ApiClient({
|
|
76
|
+
baseUrl,
|
|
77
|
+
token,
|
|
78
|
+
timeout: options.timeout,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=api-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../src/cli/utils/api-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH,MAAM,OAAO,SAAS;IACV,OAAO,CAAQ;IACf,KAAK,CAAS;IACd,OAAO,CAAQ;IAEvB,YAAY,OAAyB;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACjD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAA;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS;QACX,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,iCAAiC,CACpC,CAAA;QACD,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,sCAAsC,CACzC,CAAA;QACD,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACN,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;YAC1B,OAAO,IAAI,CAAA;QACf,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,KAAK,CAAA;QAChB,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO,CAAI,IAAY;QACjC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAA;QAEpC,MAAM,OAAO,GAA2B;YACpC,cAAc,EAAE,kBAAkB;SACrC,CAAA;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,KAAK,EAAE,CAAA;QACrD,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAEpE,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC9B,MAAM,EAAE,KAAK;gBACb,OAAO;gBACP,MAAM,EAAE,UAAU,CAAC,MAAM;aAC5B,CAAC,CAAA;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACf,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;gBACnC,MAAM,IAAI,KAAK,CACX,uBAAuB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,KAAK,KAAK,EAAE,CAC5E,CAAA;YACL,CAAC;YAED,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAA;QACxC,CAAC;gBAAS,CAAC;YACP,YAAY,CAAC,SAAS,CAAC,CAAA;QAC3B,CAAC;IACL,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAI/B;IACG,MAAM,OAAO,GACT,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,uBAAuB,CAAA;IACpE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAA;IAEvD,OAAO,IAAI,SAAS,CAAC;QACjB,OAAO;QACP,KAAK;QACL,OAAO,EAAE,OAAO,CAAC,OAAO;KAC3B,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File writer utilities for CLI output
|
|
3
|
+
*/
|
|
4
|
+
export interface WriteResult {
|
|
5
|
+
path: string;
|
|
6
|
+
success: boolean;
|
|
7
|
+
error?: Error;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Ensure directory exists
|
|
11
|
+
*/
|
|
12
|
+
export declare function ensureDir(dirPath: string): void;
|
|
13
|
+
/**
|
|
14
|
+
* Write content to a file
|
|
15
|
+
*/
|
|
16
|
+
export declare function writeFile(filePath: string, content: string): WriteResult;
|
|
17
|
+
/**
|
|
18
|
+
* Read content from a file
|
|
19
|
+
*/
|
|
20
|
+
export declare function readFile(filePath: string): string | null;
|
|
21
|
+
/**
|
|
22
|
+
* Check if file exists
|
|
23
|
+
*/
|
|
24
|
+
export declare function fileExists(filePath: string): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Write multiple files. Reports all results even if some fail.
|
|
27
|
+
*/
|
|
28
|
+
export declare function writeFiles(files: Array<{
|
|
29
|
+
path: string;
|
|
30
|
+
content: string;
|
|
31
|
+
}>): WriteResult[];
|
|
32
|
+
/**
|
|
33
|
+
* Get the schema metadata file path
|
|
34
|
+
*/
|
|
35
|
+
export declare function getSchemaMetaPath(outputDir: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Generate schema metadata file content
|
|
38
|
+
*/
|
|
39
|
+
export declare function generateSchemaMetaContent(hash: string, generatedAt: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* Read schema hash from existing schema-meta.ts
|
|
42
|
+
*/
|
|
43
|
+
export declare function readLocalSchemaHash(outputDir: string): string | null;
|
|
44
|
+
//# sourceMappingURL=file-writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-writer.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/file-writer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,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,CAQxE;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;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACrC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GACpB,MAAM,CASR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUpE"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File writer utilities for CLI output
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
/**
|
|
7
|
+
* Ensure directory exists
|
|
8
|
+
*/
|
|
9
|
+
export function ensureDir(dirPath) {
|
|
10
|
+
if (!fs.existsSync(dirPath)) {
|
|
11
|
+
fs.mkdirSync(dirPath, { recursive: true });
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Write content to a file
|
|
16
|
+
*/
|
|
17
|
+
export function writeFile(filePath, content) {
|
|
18
|
+
try {
|
|
19
|
+
ensureDir(path.dirname(filePath));
|
|
20
|
+
fs.writeFileSync(filePath, content, 'utf-8');
|
|
21
|
+
return { path: filePath, success: true };
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
return { path: filePath, success: false, error: error };
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Read content from a file
|
|
29
|
+
*/
|
|
30
|
+
export function readFile(filePath) {
|
|
31
|
+
try {
|
|
32
|
+
return fs.readFileSync(filePath, 'utf-8');
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Check if file exists
|
|
40
|
+
*/
|
|
41
|
+
export function fileExists(filePath) {
|
|
42
|
+
return fs.existsSync(filePath);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Write multiple files. Reports all results even if some fail.
|
|
46
|
+
*/
|
|
47
|
+
export function writeFiles(files) {
|
|
48
|
+
const results = [];
|
|
49
|
+
for (const file of files) {
|
|
50
|
+
const result = writeFile(file.path, file.content);
|
|
51
|
+
results.push(result);
|
|
52
|
+
if (!result.success) {
|
|
53
|
+
console.error(`Failed to write ${file.path}:`, result.error?.message);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return results;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get the schema metadata file path
|
|
60
|
+
*/
|
|
61
|
+
export function getSchemaMetaPath(outputDir) {
|
|
62
|
+
return path.join(outputDir, 'schema-meta.ts');
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Generate schema metadata file content
|
|
66
|
+
*/
|
|
67
|
+
export function generateSchemaMetaContent(hash, generatedAt) {
|
|
68
|
+
return `/**
|
|
69
|
+
* Schema metadata - auto-generated, do not edit
|
|
70
|
+
* Generated at: ${generatedAt}
|
|
71
|
+
*/
|
|
72
|
+
|
|
73
|
+
export const SCHEMA_HASH = '${hash}'
|
|
74
|
+
export const GENERATED_AT = '${generatedAt}'
|
|
75
|
+
`;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Read schema hash from existing schema-meta.ts
|
|
79
|
+
*/
|
|
80
|
+
export function readLocalSchemaHash(outputDir) {
|
|
81
|
+
const metaPath = getSchemaMetaPath(outputDir);
|
|
82
|
+
const content = readFile(metaPath);
|
|
83
|
+
if (!content) {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
const match = content.match(/SCHEMA_HASH\s*=\s*['"]([^'"]+)['"]/);
|
|
87
|
+
return match ? match[1] : null;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=file-writer.js.map
|
|
@@ -0,0 +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,KAAK,IAAI,MAAM,MAAM,CAAA;AAQ5B;;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,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;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACrC,IAAY,EACZ,WAAmB;IAEnB,OAAO;;mBAEQ,WAAW;;;8BAGA,IAAI;+BACH,WAAW;CACzC,CAAA;AACD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACjD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAElC,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,IAAI,CAAA;IACf,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACjE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAClC,CAAC"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
import { StrapiTypeParser } from './parser/index.js';
|
|
5
|
+
import { Generator } from './generator/index.js';
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = path.dirname(__filename);
|
|
8
|
+
async function main() {
|
|
9
|
+
console.log('🚀 Strapi Types Generator');
|
|
10
|
+
console.log('');
|
|
11
|
+
const inputDir = path.join(__dirname, 'input');
|
|
12
|
+
const outputDir = path.join(process.cwd(), 'dist');
|
|
13
|
+
console.log(`📂 Input directory: ${inputDir}`);
|
|
14
|
+
console.log(`📂 Output directory: ${outputDir}`);
|
|
15
|
+
console.log('');
|
|
16
|
+
try {
|
|
17
|
+
// Parse Strapi types
|
|
18
|
+
console.log('📖 Parsing Strapi types...');
|
|
19
|
+
const parser = new StrapiTypeParser(inputDir);
|
|
20
|
+
const schema = parser.parse();
|
|
21
|
+
console.log(` Found ${schema.contentTypes.length} content types`);
|
|
22
|
+
console.log(` Found ${schema.components.length} components`);
|
|
23
|
+
console.log('');
|
|
24
|
+
// Generate TypeScript files
|
|
25
|
+
console.log('⚙️ Generating TypeScript files...');
|
|
26
|
+
const generator = new Generator(outputDir, inputDir);
|
|
27
|
+
await generator.generate(schema);
|
|
28
|
+
console.log('');
|
|
29
|
+
console.log('✨ Done!');
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
console.error('❌ Error:', error);
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
main();
|
|
37
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAEhD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AAE1C,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;IACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAA;IAElD,OAAO,CAAC,GAAG,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAA;IAC9C,OAAO,CAAC,GAAG,CAAC,wBAAwB,SAAS,EAAE,CAAC,CAAA;IAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAEf,IAAI,CAAC;QACH,qBAAqB;QACrB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;QACzC,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAA;QAE7B,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,YAAY,CAAC,MAAM,gBAAgB,CAAC,CAAA;QACnE,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,UAAU,CAAC,MAAM,aAAa,CAAC,CAAA;QAC9D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAEf,4BAA4B;QAC5B,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;QACjD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QACpD,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEhC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAA"}
|