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.
Files changed (176) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +83 -0
  3. package/dist/cli/commands/check.d.ts +27 -0
  4. package/dist/cli/commands/check.d.ts.map +1 -0
  5. package/dist/cli/commands/check.js +91 -0
  6. package/dist/cli/commands/check.js.map +1 -0
  7. package/dist/cli/commands/generate.d.ts +28 -0
  8. package/dist/cli/commands/generate.d.ts.map +1 -0
  9. package/dist/cli/commands/generate.js +129 -0
  10. package/dist/cli/commands/generate.js.map +1 -0
  11. package/dist/cli/commands/watch.d.ts +21 -0
  12. package/dist/cli/commands/watch.d.ts.map +1 -0
  13. package/dist/cli/commands/watch.js +113 -0
  14. package/dist/cli/commands/watch.js.map +1 -0
  15. package/dist/cli/index.d.ts +14 -0
  16. package/dist/cli/index.d.ts.map +1 -0
  17. package/dist/cli/index.js +40 -0
  18. package/dist/cli/index.js.map +1 -0
  19. package/dist/cli/utils/api-client.d.ts +41 -0
  20. package/dist/cli/utils/api-client.d.ts.map +1 -0
  21. package/dist/cli/utils/api-client.js +81 -0
  22. package/dist/cli/utils/api-client.js.map +1 -0
  23. package/dist/cli/utils/file-writer.d.ts +44 -0
  24. package/dist/cli/utils/file-writer.d.ts.map +1 -0
  25. package/dist/cli/utils/file-writer.js +89 -0
  26. package/dist/cli/utils/file-writer.js.map +1 -0
  27. package/dist/cli.d.ts +3 -0
  28. package/dist/cli.d.ts.map +1 -0
  29. package/dist/cli.js +37 -0
  30. package/dist/cli.js.map +1 -0
  31. package/dist/client.d.ts +622 -0
  32. package/dist/client.js +688 -0
  33. package/dist/core/endpoint-converter.d.ts +26 -0
  34. package/dist/core/endpoint-converter.d.ts.map +1 -0
  35. package/dist/core/endpoint-converter.js +161 -0
  36. package/dist/core/endpoint-converter.js.map +1 -0
  37. package/dist/core/generator/filters-generator.d.ts +22 -0
  38. package/dist/core/generator/filters-generator.d.ts.map +1 -0
  39. package/dist/core/generator/filters-generator.js +236 -0
  40. package/dist/core/generator/filters-generator.js.map +1 -0
  41. package/dist/core/index.d.ts +8 -0
  42. package/dist/core/index.d.ts.map +1 -0
  43. package/dist/core/index.js +11 -0
  44. package/dist/core/index.js.map +1 -0
  45. package/dist/core/schema-transformer.d.ts +19 -0
  46. package/dist/core/schema-transformer.d.ts.map +1 -0
  47. package/dist/core/schema-transformer.js +306 -0
  48. package/dist/core/schema-transformer.js.map +1 -0
  49. package/dist/generator/auth-api-generator.d.ts +14 -0
  50. package/dist/generator/auth-api-generator.d.ts.map +1 -0
  51. package/dist/generator/auth-api-generator.js +518 -0
  52. package/dist/generator/auth-api-generator.js.map +1 -0
  53. package/dist/generator/blocks-types-template.d.ts +134 -0
  54. package/dist/generator/blocks-types-template.d.ts.map +1 -0
  55. package/dist/generator/blocks-types-template.js +4 -0
  56. package/dist/generator/blocks-types-template.js.map +1 -0
  57. package/dist/generator/client-generator.d.ts +19 -0
  58. package/dist/generator/client-generator.d.ts.map +1 -0
  59. package/dist/generator/client-generator.js +707 -0
  60. package/dist/generator/client-generator.js.map +1 -0
  61. package/dist/generator/custom-api-generator.d.ts +26 -0
  62. package/dist/generator/custom-api-generator.d.ts.map +1 -0
  63. package/dist/generator/custom-api-generator.js +145 -0
  64. package/dist/generator/custom-api-generator.js.map +1 -0
  65. package/dist/generator/index-generator.d.ts +4 -0
  66. package/dist/generator/index-generator.d.ts.map +1 -0
  67. package/dist/generator/index-generator.js +11 -0
  68. package/dist/generator/index-generator.js.map +1 -0
  69. package/dist/generator/index.d.ts +14 -0
  70. package/dist/generator/index.d.ts.map +1 -0
  71. package/dist/generator/index.js +94 -0
  72. package/dist/generator/index.js.map +1 -0
  73. package/dist/generator/types-generator.d.ts +35 -0
  74. package/dist/generator/types-generator.d.ts.map +1 -0
  75. package/dist/generator/types-generator.js +641 -0
  76. package/dist/generator/types-generator.js.map +1 -0
  77. package/dist/index.d.ts +2 -0
  78. package/dist/index.js +4 -0
  79. package/dist/next/index.d.ts +16 -0
  80. package/dist/next/index.d.ts.map +1 -0
  81. package/dist/next/index.js +224 -0
  82. package/dist/next/index.js.map +1 -0
  83. package/dist/parser/custom-types-parser.d.ts +39 -0
  84. package/dist/parser/custom-types-parser.d.ts.map +1 -0
  85. package/dist/parser/custom-types-parser.js +206 -0
  86. package/dist/parser/custom-types-parser.js.map +1 -0
  87. package/dist/parser/index.d.ts +23 -0
  88. package/dist/parser/index.d.ts.map +1 -0
  89. package/dist/parser/index.js +457 -0
  90. package/dist/parser/index.js.map +1 -0
  91. package/dist/parser/routes-parser.d.ts +21 -0
  92. package/dist/parser/routes-parser.d.ts.map +1 -0
  93. package/dist/parser/routes-parser.js +184 -0
  94. package/dist/parser/routes-parser.js.map +1 -0
  95. package/dist/plugin/admin/src/index.d.ts +16 -0
  96. package/dist/plugin/admin/src/index.d.ts.map +1 -0
  97. package/dist/plugin/admin/src/index.js +30 -0
  98. package/dist/plugin/admin/src/index.js.map +1 -0
  99. package/dist/plugin/admin/src/pages/HomePage.d.ts +2 -0
  100. package/dist/plugin/admin/src/pages/HomePage.d.ts.map +1 -0
  101. package/dist/plugin/admin/src/pages/HomePage.js +273 -0
  102. package/dist/plugin/admin/src/pages/HomePage.js.map +1 -0
  103. package/dist/plugin/admin/src/pluginId.d.ts +2 -0
  104. package/dist/plugin/admin/src/pluginId.d.ts.map +1 -0
  105. package/dist/plugin/admin/src/pluginId.js +2 -0
  106. package/dist/plugin/admin/src/pluginId.js.map +1 -0
  107. package/dist/plugin/index.d.ts +22 -0
  108. package/dist/plugin/index.d.ts.map +1 -0
  109. package/dist/plugin/index.js +22 -0
  110. package/dist/plugin/index.js.map +1 -0
  111. package/dist/plugin/server/src/config/index.d.ts +31 -0
  112. package/dist/plugin/server/src/config/index.d.ts.map +1 -0
  113. package/dist/plugin/server/src/config/index.js +35 -0
  114. package/dist/plugin/server/src/config/index.js.map +1 -0
  115. package/dist/plugin/server/src/controllers/schema.d.ts +41 -0
  116. package/dist/plugin/server/src/controllers/schema.d.ts.map +1 -0
  117. package/dist/plugin/server/src/controllers/schema.js +51 -0
  118. package/dist/plugin/server/src/controllers/schema.js.map +1 -0
  119. package/dist/plugin/server/src/index.d.ts +114 -0
  120. package/dist/plugin/server/src/index.d.ts.map +1 -0
  121. package/dist/plugin/server/src/index.js +76 -0
  122. package/dist/plugin/server/src/index.js.map +1 -0
  123. package/dist/plugin/server/src/routes/index.d.ts +14 -0
  124. package/dist/plugin/server/src/routes/index.d.ts.map +1 -0
  125. package/dist/plugin/server/src/routes/index.js +23 -0
  126. package/dist/plugin/server/src/routes/index.js.map +1 -0
  127. package/dist/plugin/server/src/services/endpoints.d.ts +36 -0
  128. package/dist/plugin/server/src/services/endpoints.d.ts.map +1 -0
  129. package/dist/plugin/server/src/services/endpoints.js +523 -0
  130. package/dist/plugin/server/src/services/endpoints.js.map +1 -0
  131. package/dist/plugin/server/src/services/schema.d.ts +25 -0
  132. package/dist/plugin/server/src/services/schema.d.ts.map +1 -0
  133. package/dist/plugin/server/src/services/schema.js +164 -0
  134. package/dist/plugin/server/src/services/schema.js.map +1 -0
  135. package/dist/schema-meta.ts +7 -0
  136. package/dist/schema-types.d.ts +104 -0
  137. package/dist/schema-types.d.ts.map +1 -0
  138. package/dist/schema-types.js +3 -0
  139. package/dist/schema-types.js.map +1 -0
  140. package/dist/shared/constants.d.ts +99 -0
  141. package/dist/shared/constants.d.ts.map +1 -0
  142. package/dist/shared/constants.js +89 -0
  143. package/dist/shared/constants.js.map +1 -0
  144. package/dist/shared/endpoint-types.d.ts +42 -0
  145. package/dist/shared/endpoint-types.d.ts.map +1 -0
  146. package/dist/shared/endpoint-types.js +6 -0
  147. package/dist/shared/endpoint-types.js.map +1 -0
  148. package/dist/shared/index.d.ts +12 -0
  149. package/dist/shared/index.d.ts.map +1 -0
  150. package/dist/shared/index.js +13 -0
  151. package/dist/shared/index.js.map +1 -0
  152. package/dist/shared/naming-utils.d.ts +55 -0
  153. package/dist/shared/naming-utils.d.ts.map +1 -0
  154. package/dist/shared/naming-utils.js +106 -0
  155. package/dist/shared/naming-utils.js.map +1 -0
  156. package/dist/shared/schema-hash.d.ts +39 -0
  157. package/dist/shared/schema-hash.d.ts.map +1 -0
  158. package/dist/shared/schema-hash.js +67 -0
  159. package/dist/shared/schema-hash.js.map +1 -0
  160. package/dist/shared/strapi-schema-types.d.ts +77 -0
  161. package/dist/shared/strapi-schema-types.d.ts.map +1 -0
  162. package/dist/shared/strapi-schema-types.js +10 -0
  163. package/dist/shared/strapi-schema-types.js.map +1 -0
  164. package/dist/shared/string-utils.d.ts +68 -0
  165. package/dist/shared/string-utils.d.ts.map +1 -0
  166. package/dist/shared/string-utils.js +124 -0
  167. package/dist/shared/string-utils.js.map +1 -0
  168. package/dist/transformer/index.d.ts +17 -0
  169. package/dist/transformer/index.d.ts.map +1 -0
  170. package/dist/transformer/index.js +83 -0
  171. package/dist/transformer/index.js.map +1 -0
  172. package/dist/types.d.ts +3430 -0
  173. package/dist/types.js +3 -0
  174. package/package.json +152 -0
  175. package/strapi-admin.js +2 -0
  176. package/strapi-server.js +2 -0
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Schema service for Strapi Types Plugin
3
+ * Extracts schema information from Strapi and computes hashes for change detection
4
+ */
5
+ import { computeSchemaHash } from '../../../../shared/schema-hash.js';
6
+ import { SYSTEM_FIELDS, PRIVATE_FIELDS } from '../../../../shared/constants.js';
7
+ /**
8
+ * Filter out system attributes that shouldn't be exposed
9
+ */
10
+ function filterAttributes(attributes) {
11
+ // Combine system fields (createdAt, updatedAt — added by generator as base fields)
12
+ // and private fields (createdBy, updatedBy, publishedAt, locale, localizations)
13
+ const systemFields = [
14
+ ...SYSTEM_FIELDS.filter(f => f !== 'id' && f !== 'documentId'),
15
+ ...PRIVATE_FIELDS,
16
+ ];
17
+ const filtered = {};
18
+ for (const [name, attr] of Object.entries(attributes)) {
19
+ // Skip system fields
20
+ if (systemFields.includes(name)) {
21
+ continue;
22
+ }
23
+ // Skip private attributes
24
+ if (attr.private) {
25
+ continue;
26
+ }
27
+ // Skip admin relations
28
+ if (attr.type === 'relation') {
29
+ const target = attr.target;
30
+ if (target?.startsWith('admin::')) {
31
+ continue;
32
+ }
33
+ // Allow users-permissions relations
34
+ if (target?.startsWith('plugin::') &&
35
+ !target.includes('users-permissions')) {
36
+ continue;
37
+ }
38
+ }
39
+ filtered[name] = attr;
40
+ }
41
+ return filtered;
42
+ }
43
+ /**
44
+ * Extract clean content type schema
45
+ */
46
+ function extractContentType(ct) {
47
+ const uid = ct.uid;
48
+ // Only include API content types and users-permissions
49
+ if (!uid.startsWith('api::') && !uid.includes('users-permissions')) {
50
+ return null;
51
+ }
52
+ return {
53
+ uid,
54
+ kind: ct.kind || 'collectionType',
55
+ collectionName: ct.collectionName,
56
+ info: {
57
+ singularName: ct.info?.singularName || '',
58
+ pluralName: ct.info?.pluralName || '',
59
+ displayName: ct.info?.displayName || '',
60
+ description: ct.info?.description,
61
+ },
62
+ attributes: filterAttributes(ct.attributes || {}),
63
+ };
64
+ }
65
+ /**
66
+ * Extract clean component schema
67
+ */
68
+ function extractComponent(component) {
69
+ const uid = component.uid;
70
+ return {
71
+ uid,
72
+ category: component.category || uid.split('.')[0],
73
+ info: {
74
+ displayName: component.info?.displayName || '',
75
+ description: component.info?.description,
76
+ },
77
+ attributes: filterAttributes(component.attributes || {}),
78
+ };
79
+ }
80
+ export default ({ strapi }) => ({
81
+ /**
82
+ * Extract the complete schema from Strapi
83
+ */
84
+ extractSchema() {
85
+ const contentTypes = {};
86
+ const components = {};
87
+ // Extract content types
88
+ for (const [uid, ct] of Object.entries(strapi.contentTypes)) {
89
+ const extracted = extractContentType(ct);
90
+ if (extracted) {
91
+ contentTypes[uid] = extracted;
92
+ }
93
+ }
94
+ // Extract components
95
+ for (const [uid, component] of Object.entries(strapi.components)) {
96
+ const extracted = extractComponent(component);
97
+ if (extracted) {
98
+ components[uid] = extracted;
99
+ }
100
+ }
101
+ return { contentTypes, components };
102
+ },
103
+ /**
104
+ * Get the full schema with hash and endpoints
105
+ */
106
+ getSchema() {
107
+ const schema = this.extractSchema();
108
+ // Get endpoints from endpoints service
109
+ let endpoints = [];
110
+ let extraTypes = [];
111
+ try {
112
+ const endpointsService = strapi
113
+ .plugin('strapi-typed-client')
114
+ .service('endpoints');
115
+ if (endpointsService) {
116
+ const endpointsResult = endpointsService.extractEndpoints();
117
+ endpoints = endpointsResult.endpoints;
118
+ extraTypes = endpointsResult.extraTypes || [];
119
+ }
120
+ }
121
+ catch {
122
+ // Endpoints service might not be available, continue without endpoints
123
+ }
124
+ // Include endpoints and extraTypes in hash computation for complete change detection
125
+ const hashData = { schema, endpoints, extraTypes };
126
+ const hash = computeSchemaHash(hashData);
127
+ return {
128
+ schema,
129
+ endpoints,
130
+ extraTypes,
131
+ hash,
132
+ generatedAt: new Date().toISOString(),
133
+ };
134
+ },
135
+ /**
136
+ * Get only the schema hash (lightweight operation)
137
+ */
138
+ getSchemaHash() {
139
+ const schema = this.extractSchema();
140
+ // Include endpoints and extraTypes in hash computation for consistency with getSchema()
141
+ let endpoints = [];
142
+ let extraTypes = [];
143
+ try {
144
+ const endpointsService = strapi
145
+ .plugin('strapi-typed-client')
146
+ .service('endpoints');
147
+ if (endpointsService) {
148
+ const endpointsResult = endpointsService.extractEndpoints();
149
+ endpoints = endpointsResult.endpoints;
150
+ extraTypes = endpointsResult.extraTypes || [];
151
+ }
152
+ }
153
+ catch {
154
+ // Endpoints service might not be available
155
+ }
156
+ const hashData = { schema, endpoints, extraTypes };
157
+ const hash = computeSchemaHash(hashData);
158
+ return {
159
+ hash,
160
+ generatedAt: new Date().toISOString(),
161
+ };
162
+ },
163
+ });
164
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../../src/plugin/server/src/services/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Schema metadata - auto-generated, do not edit
3
+ * Generated at: 2026-02-09T23:56:29.059Z
4
+ */
5
+
6
+ export const SCHEMA_HASH = '16b8218a282c1702c287f64538567bd1391b0fc84d001cbb58de4288639feb94'
7
+ export const GENERATED_AT = '2026-02-09T23:56:29.059Z'
@@ -0,0 +1,104 @@
1
+ export interface ParsedSchema {
2
+ contentTypes: ContentType[];
3
+ components: Component[];
4
+ }
5
+ export interface ContentType {
6
+ name: string;
7
+ cleanName: string;
8
+ collectionName: string;
9
+ kind: 'collection' | 'single';
10
+ attributes: Attribute[];
11
+ relations: Relation[];
12
+ media: MediaField[];
13
+ components: ComponentField[];
14
+ dynamicZones: DynamicZoneField[];
15
+ }
16
+ export interface Component {
17
+ name: string;
18
+ cleanName: string;
19
+ category: string;
20
+ attributes: Attribute[];
21
+ relations: Relation[];
22
+ media: MediaField[];
23
+ components: ComponentField[];
24
+ dynamicZones: DynamicZoneField[];
25
+ }
26
+ export interface Relation {
27
+ name: string;
28
+ relationType: 'oneToOne' | 'oneToMany' | 'manyToOne' | 'manyToMany';
29
+ target: string;
30
+ targetType: string;
31
+ required: boolean;
32
+ }
33
+ export interface MediaField {
34
+ name: string;
35
+ multiple: boolean;
36
+ required: boolean;
37
+ }
38
+ export interface ComponentField {
39
+ name: string;
40
+ component: string;
41
+ componentType: string;
42
+ repeatable: boolean;
43
+ required: boolean;
44
+ }
45
+ export interface DynamicZoneField {
46
+ name: string;
47
+ components: string[];
48
+ componentTypes: string[];
49
+ required: boolean;
50
+ }
51
+ export interface Attribute {
52
+ name: string;
53
+ type: AttributeType;
54
+ required: boolean;
55
+ unique?: boolean;
56
+ defaultValue?: any;
57
+ }
58
+ export type AttributeType = {
59
+ kind: 'string';
60
+ } | {
61
+ kind: 'text';
62
+ } | {
63
+ kind: 'richtext';
64
+ } | {
65
+ kind: 'blocks';
66
+ } | {
67
+ kind: 'email';
68
+ } | {
69
+ kind: 'integer';
70
+ } | {
71
+ kind: 'biginteger';
72
+ } | {
73
+ kind: 'float';
74
+ } | {
75
+ kind: 'decimal';
76
+ } | {
77
+ kind: 'boolean';
78
+ } | {
79
+ kind: 'date';
80
+ } | {
81
+ kind: 'datetime';
82
+ } | {
83
+ kind: 'time';
84
+ } | {
85
+ kind: 'json';
86
+ } | {
87
+ kind: 'enumeration';
88
+ values: string[];
89
+ } | {
90
+ kind: 'media';
91
+ multiple?: boolean;
92
+ } | {
93
+ kind: 'component';
94
+ component: string;
95
+ repeatable?: boolean;
96
+ } | {
97
+ kind: 'dynamiczone';
98
+ components: string[];
99
+ } | {
100
+ kind: 'relation';
101
+ relationType: 'oneToOne' | 'oneToMany' | 'manyToOne' | 'manyToMany';
102
+ target: string;
103
+ };
104
+ //# sourceMappingURL=schema-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-types.d.ts","sourceRoot":"","sources":["../src/schema-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ // Intermediate Representation (IR) types
2
+ export {};
3
+ //# sourceMappingURL=schema-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-types.js","sourceRoot":"","sources":["../src/schema-types.ts"],"names":[],"mappings":"AAAA,yCAAyC"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Constants for Strapi Types Generator
3
+ * @module shared/constants
4
+ */
5
+ /**
6
+ * System fields that are automatically added to all Strapi content types
7
+ * These are included in output types but not in input types
8
+ */
9
+ export declare const SYSTEM_FIELDS: readonly ["id", "documentId", "createdAt", "updatedAt"];
10
+ /**
11
+ * Private/internal Strapi fields that should be excluded from generated types
12
+ * These fields are managed by Strapi and not accessible via API
13
+ */
14
+ export declare const PRIVATE_FIELDS: readonly ["createdBy", "updatedBy", "publishedAt", "locale", "localizations"];
15
+ /**
16
+ * All fields to skip when generating entity types
17
+ */
18
+ export declare const SKIP_FIELDS: readonly ["createdBy", "updatedBy", "publishedAt", "locale", "localizations"];
19
+ /**
20
+ * Strapi filter operators
21
+ */
22
+ export declare const FILTER_OPERATORS: {
23
+ readonly $eq: "Equal";
24
+ readonly $eqi: "Equal (case-insensitive)";
25
+ readonly $ne: "Not equal";
26
+ readonly $nei: "Not equal (case-insensitive)";
27
+ readonly $lt: "Less than";
28
+ readonly $lte: "Less than or equal";
29
+ readonly $gt: "Greater than";
30
+ readonly $gte: "Greater than or equal";
31
+ readonly $in: "In array";
32
+ readonly $notIn: "Not in array";
33
+ readonly $null: "Is null";
34
+ readonly $notNull: "Is not null";
35
+ readonly $between: "Between (array of [start, end])";
36
+ readonly $contains: "Contains substring";
37
+ readonly $notContains: "Does not contain substring";
38
+ readonly $containsi: "Contains substring (case-insensitive)";
39
+ readonly $notContainsi: "Does not contain substring (case-insensitive)";
40
+ readonly $startsWith: "Starts with";
41
+ readonly $startsWithi: "Starts with (case-insensitive)";
42
+ readonly $endsWith: "Ends with";
43
+ readonly $endsWithi: "Ends with (case-insensitive)";
44
+ readonly $and: "Logical AND";
45
+ readonly $or: "Logical OR";
46
+ readonly $not: "Logical NOT";
47
+ };
48
+ /**
49
+ * Strapi relation types
50
+ */
51
+ export declare const RELATION_TYPES: {
52
+ readonly oneToOne: {
53
+ readonly isArray: false;
54
+ readonly nullable: true;
55
+ };
56
+ readonly oneToMany: {
57
+ readonly isArray: true;
58
+ readonly nullable: false;
59
+ };
60
+ readonly manyToOne: {
61
+ readonly isArray: false;
62
+ readonly nullable: true;
63
+ };
64
+ readonly manyToMany: {
65
+ readonly isArray: true;
66
+ readonly nullable: false;
67
+ };
68
+ readonly morphToOne: {
69
+ readonly isArray: false;
70
+ readonly nullable: true;
71
+ };
72
+ readonly morphToMany: {
73
+ readonly isArray: true;
74
+ readonly nullable: false;
75
+ };
76
+ readonly morphOne: {
77
+ readonly isArray: false;
78
+ readonly nullable: true;
79
+ };
80
+ readonly morphMany: {
81
+ readonly isArray: true;
82
+ readonly nullable: false;
83
+ };
84
+ };
85
+ /**
86
+ * Default HTTP methods for Strapi CRUD operations
87
+ */
88
+ export declare const CRUD_METHODS: {
89
+ readonly find: "GET";
90
+ readonly findOne: "GET";
91
+ readonly create: "POST";
92
+ readonly update: "PUT";
93
+ readonly delete: "DELETE";
94
+ };
95
+ /**
96
+ * Package version (injected at build time or read from package.json)
97
+ */
98
+ export declare const PACKAGE_NAME = "strapi-typed-client";
99
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,eAAO,MAAM,aAAa,yDAKhB,CAAA;AAEV;;;GAGG;AACH,eAAO,MAAM,cAAc,+EAMjB,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,WAAW,+EAA+B,CAAA;AAEvD;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;CA8BnB,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CASjB,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;CAMf,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,YAAY,wBAAwB,CAAA"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Constants for Strapi Types Generator
3
+ * @module shared/constants
4
+ */
5
+ /**
6
+ * System fields that are automatically added to all Strapi content types
7
+ * These are included in output types but not in input types
8
+ */
9
+ export const SYSTEM_FIELDS = [
10
+ 'id',
11
+ 'documentId',
12
+ 'createdAt',
13
+ 'updatedAt',
14
+ ];
15
+ /**
16
+ * Private/internal Strapi fields that should be excluded from generated types
17
+ * These fields are managed by Strapi and not accessible via API
18
+ */
19
+ export const PRIVATE_FIELDS = [
20
+ 'createdBy',
21
+ 'updatedBy',
22
+ 'publishedAt',
23
+ 'locale',
24
+ 'localizations',
25
+ ];
26
+ /**
27
+ * All fields to skip when generating entity types
28
+ */
29
+ export const SKIP_FIELDS = [...PRIVATE_FIELDS];
30
+ /**
31
+ * Strapi filter operators
32
+ */
33
+ export const FILTER_OPERATORS = {
34
+ // Comparison operators
35
+ $eq: 'Equal',
36
+ $eqi: 'Equal (case-insensitive)',
37
+ $ne: 'Not equal',
38
+ $nei: 'Not equal (case-insensitive)',
39
+ $lt: 'Less than',
40
+ $lte: 'Less than or equal',
41
+ $gt: 'Greater than',
42
+ $gte: 'Greater than or equal',
43
+ $in: 'In array',
44
+ $notIn: 'Not in array',
45
+ $null: 'Is null',
46
+ $notNull: 'Is not null',
47
+ $between: 'Between (array of [start, end])',
48
+ // String operators
49
+ $contains: 'Contains substring',
50
+ $notContains: 'Does not contain substring',
51
+ $containsi: 'Contains substring (case-insensitive)',
52
+ $notContainsi: 'Does not contain substring (case-insensitive)',
53
+ $startsWith: 'Starts with',
54
+ $startsWithi: 'Starts with (case-insensitive)',
55
+ $endsWith: 'Ends with',
56
+ $endsWithi: 'Ends with (case-insensitive)',
57
+ // Logical operators (for combining filters)
58
+ $and: 'Logical AND',
59
+ $or: 'Logical OR',
60
+ $not: 'Logical NOT',
61
+ };
62
+ /**
63
+ * Strapi relation types
64
+ */
65
+ export const RELATION_TYPES = {
66
+ oneToOne: { isArray: false, nullable: true },
67
+ oneToMany: { isArray: true, nullable: false },
68
+ manyToOne: { isArray: false, nullable: true },
69
+ manyToMany: { isArray: true, nullable: false },
70
+ morphToOne: { isArray: false, nullable: true },
71
+ morphToMany: { isArray: true, nullable: false },
72
+ morphOne: { isArray: false, nullable: true },
73
+ morphMany: { isArray: true, nullable: false },
74
+ };
75
+ /**
76
+ * Default HTTP methods for Strapi CRUD operations
77
+ */
78
+ export const CRUD_METHODS = {
79
+ find: 'GET',
80
+ findOne: 'GET',
81
+ create: 'POST',
82
+ update: 'PUT',
83
+ delete: 'DELETE',
84
+ };
85
+ /**
86
+ * Package version (injected at build time or read from package.json)
87
+ */
88
+ export const PACKAGE_NAME = 'strapi-typed-client';
89
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IACzB,IAAI;IACJ,YAAY;IACZ,WAAW;IACX,WAAW;CACL,CAAA;AAEV;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,WAAW;IACX,WAAW;IACX,aAAa;IACb,QAAQ;IACR,eAAe;CACT,CAAA;AAEV;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAG,cAAc,CAAU,CAAA;AAEvD;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,uBAAuB;IACvB,GAAG,EAAE,OAAO;IACZ,IAAI,EAAE,0BAA0B;IAChC,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,8BAA8B;IACpC,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,oBAAoB;IAC1B,GAAG,EAAE,cAAc;IACnB,IAAI,EAAE,uBAAuB;IAC7B,GAAG,EAAE,UAAU;IACf,MAAM,EAAE,cAAc;IACtB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,aAAa;IACvB,QAAQ,EAAE,iCAAiC;IAE3C,mBAAmB;IACnB,SAAS,EAAE,oBAAoB;IAC/B,YAAY,EAAE,4BAA4B;IAC1C,UAAU,EAAE,uCAAuC;IACnD,aAAa,EAAE,+CAA+C;IAC9D,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,gCAAgC;IAC9C,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,8BAA8B;IAE1C,4CAA4C;IAC5C,IAAI,EAAE,aAAa;IACnB,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,aAAa;CACb,CAAA;AAEV;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC5C,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC7C,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC7C,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC9C,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC9C,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC/C,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC5C,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;CACvC,CAAA;AAEV;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,QAAQ;CACV,CAAA;AAEV;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,qBAAqB,CAAA"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Shared endpoint types used by both the Strapi plugin (server) and CLI
3
+ * @module shared/endpoint-types
4
+ */
5
+ /**
6
+ * Type information for a custom endpoint (body, response, params, query)
7
+ */
8
+ export interface EndpointType {
9
+ body?: string;
10
+ response?: string;
11
+ params?: string;
12
+ query?: string;
13
+ }
14
+ /**
15
+ * A parsed endpoint from Strapi custom routes
16
+ */
17
+ export interface ParsedEndpoint {
18
+ method: string;
19
+ path: string;
20
+ handler: string;
21
+ controller: string;
22
+ action: string;
23
+ types?: EndpointType;
24
+ }
25
+ /**
26
+ * Extra exported type from a controller file (not part of Endpoints interface)
27
+ * e.g., `export type SSEEvent = { type: 'connected' } | { type: 'progress', ... }`
28
+ */
29
+ export interface ExtraControllerType {
30
+ controller: string;
31
+ typeName: string;
32
+ typeDefinition: string;
33
+ }
34
+ /**
35
+ * Response from the endpoints service
36
+ */
37
+ export interface EndpointsResponse {
38
+ endpoints: ParsedEndpoint[];
39
+ extraTypes: ExtraControllerType[];
40
+ count: number;
41
+ }
42
+ //# sourceMappingURL=endpoint-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-types.d.ts","sourceRoot":"","sources":["../../src/shared/endpoint-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,YAAY,CAAA;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,cAAc,EAAE,CAAA;IAC3B,UAAU,EAAE,mBAAmB,EAAE,CAAA;IACjC,KAAK,EAAE,MAAM,CAAA;CAChB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Shared endpoint types used by both the Strapi plugin (server) and CLI
3
+ * @module shared/endpoint-types
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=endpoint-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-types.js","sourceRoot":"","sources":["../../src/shared/endpoint-types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Shared utilities for Strapi Types Generator
3
+ * @module shared
4
+ */
5
+ export { toCamelCase, toLowerFirst, toPascalCase, toKebabCase, toSnakeCase, capitalize, pluralize, toPascalCasePreserve, extractPathParams, } from './string-utils.js';
6
+ export { convertComponentName, extractCleanName, toEndpointName, extractRelationTarget, toComponentUid, extractComponentCategory, } from './naming-utils.js';
7
+ export { computeSchemaHash, schemasMatch, shortHash, generateSchemaMetadata, } from './schema-hash.js';
8
+ export type { SchemaMetadata } from './schema-hash.js';
9
+ export type { EndpointType, ParsedEndpoint, ExtraControllerType, EndpointsResponse, } from './endpoint-types.js';
10
+ export type { StrapiAttribute, StrapiContentType, StrapiComponent, ExtractedSchema, SchemaResponse, HashResponse, } from './strapi-schema-types.js';
11
+ export { SYSTEM_FIELDS, PRIVATE_FIELDS, SKIP_FIELDS, FILTER_OPERATORS, RELATION_TYPES, CRUD_METHODS, PACKAGE_NAME, } from './constants.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACH,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,SAAS,EACT,oBAAoB,EACpB,iBAAiB,GACpB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACH,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,wBAAwB,GAC3B,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACH,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,sBAAsB,GACzB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGtD,YAAY,EACR,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,iBAAiB,GACpB,MAAM,qBAAqB,CAAA;AAG5B,YAAY,EACR,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,cAAc,EACd,YAAY,GACf,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EACH,aAAa,EACb,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,YAAY,GACf,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Shared utilities for Strapi Types Generator
3
+ * @module shared
4
+ */
5
+ // String manipulation utilities
6
+ export { toCamelCase, toLowerFirst, toPascalCase, toKebabCase, toSnakeCase, capitalize, pluralize, toPascalCasePreserve, extractPathParams, } from './string-utils.js';
7
+ // Naming conventions utilities
8
+ export { convertComponentName, extractCleanName, toEndpointName, extractRelationTarget, toComponentUid, extractComponentCategory, } from './naming-utils.js';
9
+ // Schema hashing utilities
10
+ export { computeSchemaHash, schemasMatch, shortHash, generateSchemaMetadata, } from './schema-hash.js';
11
+ // Constants
12
+ export { SYSTEM_FIELDS, PRIVATE_FIELDS, SKIP_FIELDS, FILTER_OPERATORS, RELATION_TYPES, CRUD_METHODS, PACKAGE_NAME, } from './constants.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,gCAAgC;AAChC,OAAO,EACH,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,SAAS,EACT,oBAAoB,EACpB,iBAAiB,GACpB,MAAM,mBAAmB,CAAA;AAE1B,+BAA+B;AAC/B,OAAO,EACH,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,wBAAwB,GAC3B,MAAM,mBAAmB,CAAA;AAE1B,2BAA2B;AAC3B,OAAO,EACH,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,sBAAsB,GACzB,MAAM,kBAAkB,CAAA;AAqBzB,YAAY;AACZ,OAAO,EACH,aAAa,EACb,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,YAAY,GACf,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Naming utilities for Strapi Types Generator
3
+ * Handles conversion of Strapi-specific naming patterns to TypeScript
4
+ * @module shared/naming-utils
5
+ */
6
+ /**
7
+ * Convert Strapi component UID to TypeScript interface name
8
+ * @example
9
+ * convertComponentName('shared.feature') // 'SharedFeature'
10
+ * convertComponentName('landing.editor-feature') // 'LandingEditorFeature'
11
+ */
12
+ export declare function convertComponentName(component: string): string;
13
+ /**
14
+ * Extract clean entity name from Strapi API interface name
15
+ * Handles both Api* and Plugin* prefixes
16
+ * @example
17
+ * extractCleanName('ApiItemItem') // 'Item'
18
+ * extractCleanName('ApiCategoryCategory') // 'Category'
19
+ * extractCleanName('PluginUsersPermissionsUser') // 'User'
20
+ * extractCleanName('PluginUsersPermissionsRole') // 'Role'
21
+ */
22
+ export declare function extractCleanName(apiName: string): string;
23
+ /**
24
+ * Convert clean entity name to API endpoint name
25
+ * Follows Strapi's convention of pluralized kebab-case for collections
26
+ * and plain kebab-case for single types
27
+ * @example
28
+ * toEndpointName('Item') // 'items'
29
+ * toEndpointName('SaveGame') // 'save-games'
30
+ * toEndpointName('Category') // 'categories'
31
+ * toEndpointName('Homepage', true) // 'homepage'
32
+ */
33
+ export declare function toEndpointName(cleanName: string, isSingle?: boolean): string;
34
+ /**
35
+ * Extract Strapi relation target to TypeScript type name
36
+ * Handles both API and Plugin relation targets
37
+ * @example
38
+ * extractRelationTarget("'api::item.item'") // 'Item'
39
+ * extractRelationTarget("'plugin::users-permissions.user'") // 'User'
40
+ */
41
+ export declare function extractRelationTarget(target: string): string;
42
+ /**
43
+ * Convert Strapi component category and name to component UID
44
+ * @example
45
+ * toComponentUid('Landing', 'EditorFeature') // 'landing.editor-feature'
46
+ */
47
+ export declare function toComponentUid(category: string, name: string): string;
48
+ /**
49
+ * Extract component category from component name
50
+ * @example
51
+ * extractComponentCategory('landing.editor-feature') // 'landing'
52
+ * extractComponentCategory('shared.seo') // 'shared'
53
+ */
54
+ export declare function extractComponentCategory(componentUid: string): string;
55
+ //# sourceMappingURL=naming-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"naming-utils.d.ts","sourceRoot":"","sources":["../../src/shared/naming-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAuBxD;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAG5E;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAqB5D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAGrE"}