@odata-effect/odata-effect-generator 0.1.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 (131) hide show
  1. package/Cli/package.json +6 -0
  2. package/LICENSE +21 -0
  3. package/README.md +37 -0
  4. package/bin/package.json +6 -0
  5. package/digester/Digester/package.json +6 -0
  6. package/digester/TypeMapper/package.json +6 -0
  7. package/dist/cjs/Cli.js +95 -0
  8. package/dist/cjs/Cli.js.map +1 -0
  9. package/dist/cjs/bin.js +14 -0
  10. package/dist/cjs/bin.js.map +1 -0
  11. package/dist/cjs/digester/Digester.js +488 -0
  12. package/dist/cjs/digester/Digester.js.map +1 -0
  13. package/dist/cjs/digester/TypeMapper.js +262 -0
  14. package/dist/cjs/digester/TypeMapper.js.map +1 -0
  15. package/dist/cjs/generator/Generator.js +126 -0
  16. package/dist/cjs/generator/Generator.js.map +1 -0
  17. package/dist/cjs/generator/IndexGenerator.js +164 -0
  18. package/dist/cjs/generator/IndexGenerator.js.map +1 -0
  19. package/dist/cjs/generator/ModelsGenerator.js +255 -0
  20. package/dist/cjs/generator/ModelsGenerator.js.map +1 -0
  21. package/dist/cjs/generator/NamingHelper.js +164 -0
  22. package/dist/cjs/generator/NamingHelper.js.map +1 -0
  23. package/dist/cjs/generator/PackageGenerator.js +168 -0
  24. package/dist/cjs/generator/PackageGenerator.js.map +1 -0
  25. package/dist/cjs/generator/QueryModelsGenerator.js +182 -0
  26. package/dist/cjs/generator/QueryModelsGenerator.js.map +1 -0
  27. package/dist/cjs/generator/ServiceFnGenerator.js +258 -0
  28. package/dist/cjs/generator/ServiceFnGenerator.js.map +1 -0
  29. package/dist/cjs/generator/ServiceFnPromiseGenerator.js +182 -0
  30. package/dist/cjs/generator/ServiceFnPromiseGenerator.js.map +1 -0
  31. package/dist/cjs/index.js +38 -0
  32. package/dist/cjs/index.js.map +1 -0
  33. package/dist/cjs/model/DataModel.js +28 -0
  34. package/dist/cjs/model/DataModel.js.map +1 -0
  35. package/dist/cjs/parser/EdmxSchema.js +20 -0
  36. package/dist/cjs/parser/EdmxSchema.js.map +1 -0
  37. package/dist/cjs/parser/XmlParser.js +47 -0
  38. package/dist/cjs/parser/XmlParser.js.map +1 -0
  39. package/dist/dts/Cli.d.ts +9 -0
  40. package/dist/dts/Cli.d.ts.map +1 -0
  41. package/dist/dts/bin.d.ts +3 -0
  42. package/dist/dts/bin.d.ts.map +1 -0
  43. package/dist/dts/digester/Digester.d.ts +33 -0
  44. package/dist/dts/digester/Digester.d.ts.map +1 -0
  45. package/dist/dts/digester/TypeMapper.d.ts +79 -0
  46. package/dist/dts/digester/TypeMapper.d.ts.map +1 -0
  47. package/dist/dts/generator/Generator.d.ts +45 -0
  48. package/dist/dts/generator/Generator.d.ts.map +1 -0
  49. package/dist/dts/generator/IndexGenerator.d.ts +14 -0
  50. package/dist/dts/generator/IndexGenerator.d.ts.map +1 -0
  51. package/dist/dts/generator/ModelsGenerator.d.ts +14 -0
  52. package/dist/dts/generator/ModelsGenerator.d.ts.map +1 -0
  53. package/dist/dts/generator/NamingHelper.d.ts +110 -0
  54. package/dist/dts/generator/NamingHelper.d.ts.map +1 -0
  55. package/dist/dts/generator/PackageGenerator.d.ts +53 -0
  56. package/dist/dts/generator/PackageGenerator.d.ts.map +1 -0
  57. package/dist/dts/generator/QueryModelsGenerator.d.ts +14 -0
  58. package/dist/dts/generator/QueryModelsGenerator.d.ts.map +1 -0
  59. package/dist/dts/generator/ServiceFnGenerator.d.ts +37 -0
  60. package/dist/dts/generator/ServiceFnGenerator.d.ts.map +1 -0
  61. package/dist/dts/generator/ServiceFnPromiseGenerator.d.ts +40 -0
  62. package/dist/dts/generator/ServiceFnPromiseGenerator.d.ts.map +1 -0
  63. package/dist/dts/index.d.ts +101 -0
  64. package/dist/dts/index.d.ts.map +1 -0
  65. package/dist/dts/model/DataModel.d.ts +188 -0
  66. package/dist/dts/model/DataModel.d.ts.map +1 -0
  67. package/dist/dts/parser/EdmxSchema.d.ts +228 -0
  68. package/dist/dts/parser/EdmxSchema.d.ts.map +1 -0
  69. package/dist/dts/parser/XmlParser.d.ts +31 -0
  70. package/dist/dts/parser/XmlParser.d.ts.map +1 -0
  71. package/dist/esm/Cli.js +87 -0
  72. package/dist/esm/Cli.js.map +1 -0
  73. package/dist/esm/bin.js +12 -0
  74. package/dist/esm/bin.js.map +1 -0
  75. package/dist/esm/digester/Digester.js +478 -0
  76. package/dist/esm/digester/Digester.js.map +1 -0
  77. package/dist/esm/digester/TypeMapper.js +248 -0
  78. package/dist/esm/digester/TypeMapper.js.map +1 -0
  79. package/dist/esm/generator/Generator.js +116 -0
  80. package/dist/esm/generator/Generator.js.map +1 -0
  81. package/dist/esm/generator/IndexGenerator.js +157 -0
  82. package/dist/esm/generator/IndexGenerator.js.map +1 -0
  83. package/dist/esm/generator/ModelsGenerator.js +248 -0
  84. package/dist/esm/generator/ModelsGenerator.js.map +1 -0
  85. package/dist/esm/generator/NamingHelper.js +147 -0
  86. package/dist/esm/generator/NamingHelper.js.map +1 -0
  87. package/dist/esm/generator/PackageGenerator.js +156 -0
  88. package/dist/esm/generator/PackageGenerator.js.map +1 -0
  89. package/dist/esm/generator/QueryModelsGenerator.js +175 -0
  90. package/dist/esm/generator/QueryModelsGenerator.js.map +1 -0
  91. package/dist/esm/generator/ServiceFnGenerator.js +251 -0
  92. package/dist/esm/generator/ServiceFnGenerator.js.map +1 -0
  93. package/dist/esm/generator/ServiceFnPromiseGenerator.js +174 -0
  94. package/dist/esm/generator/ServiceFnPromiseGenerator.js.map +1 -0
  95. package/dist/esm/index.js +101 -0
  96. package/dist/esm/index.js.map +1 -0
  97. package/dist/esm/model/DataModel.js +21 -0
  98. package/dist/esm/model/DataModel.js.map +1 -0
  99. package/dist/esm/package.json +4 -0
  100. package/dist/esm/parser/EdmxSchema.js +13 -0
  101. package/dist/esm/parser/EdmxSchema.js.map +1 -0
  102. package/dist/esm/parser/XmlParser.js +37 -0
  103. package/dist/esm/parser/XmlParser.js.map +1 -0
  104. package/generator/Generator/package.json +6 -0
  105. package/generator/IndexGenerator/package.json +6 -0
  106. package/generator/ModelsGenerator/package.json +6 -0
  107. package/generator/NamingHelper/package.json +6 -0
  108. package/generator/PackageGenerator/package.json +6 -0
  109. package/generator/QueryModelsGenerator/package.json +6 -0
  110. package/generator/ServiceFnGenerator/package.json +6 -0
  111. package/generator/ServiceFnPromiseGenerator/package.json +6 -0
  112. package/model/DataModel/package.json +6 -0
  113. package/package.json +157 -0
  114. package/parser/EdmxSchema/package.json +6 -0
  115. package/parser/XmlParser/package.json +6 -0
  116. package/src/Cli.ts +115 -0
  117. package/src/bin.ts +17 -0
  118. package/src/digester/Digester.ts +600 -0
  119. package/src/digester/TypeMapper.ts +181 -0
  120. package/src/generator/Generator.ts +183 -0
  121. package/src/generator/IndexGenerator.ts +189 -0
  122. package/src/generator/ModelsGenerator.ts +344 -0
  123. package/src/generator/NamingHelper.ts +159 -0
  124. package/src/generator/PackageGenerator.ts +176 -0
  125. package/src/generator/QueryModelsGenerator.ts +228 -0
  126. package/src/generator/ServiceFnGenerator.ts +324 -0
  127. package/src/generator/ServiceFnPromiseGenerator.ts +242 -0
  128. package/src/index.ts +114 -0
  129. package/src/model/DataModel.ts +254 -0
  130. package/src/parser/EdmxSchema.ts +308 -0
  131. package/src/parser/XmlParser.ts +47 -0
@@ -0,0 +1,255 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.generateModels = void 0;
7
+ var _NamingHelper = require("./NamingHelper.js");
8
+ /**
9
+ * Get dependencies for a type (complex types it references via properties or baseType).
10
+ */
11
+ const getTypeDependencies = (type, allComplexTypes, allEntityTypes) => {
12
+ const deps = new Set();
13
+ // Add base type dependency if it exists
14
+ if (type.baseType) {
15
+ const baseTypeName = (0, _NamingHelper.getClassName)(type.baseType.split(".").pop() ?? type.baseType);
16
+ if (allComplexTypes.has(baseTypeName) || allEntityTypes.has(baseTypeName)) {
17
+ deps.add(baseTypeName);
18
+ }
19
+ }
20
+ // Add property type dependencies (for complex types referenced in properties)
21
+ for (const prop of type.properties) {
22
+ const propTypeName = prop.typeMapping.effectSchema;
23
+ if (allComplexTypes.has(propTypeName)) {
24
+ deps.add(propTypeName);
25
+ }
26
+ }
27
+ return deps;
28
+ };
29
+ /**
30
+ * Topologically sort types based on their dependencies.
31
+ */
32
+ const sortTypesByDependency = (types, allComplexTypes, allEntityTypes) => {
33
+ const sorted = [];
34
+ const visited = new Set();
35
+ const visiting = new Set();
36
+ const visit = type => {
37
+ if (visited.has(type.name)) return;
38
+ if (visiting.has(type.name)) {
39
+ // Circular dependency - just add it
40
+ visited.add(type.name);
41
+ sorted.push(type);
42
+ return;
43
+ }
44
+ visiting.add(type.name);
45
+ const deps = getTypeDependencies(type, allComplexTypes, allEntityTypes);
46
+ for (const depName of deps) {
47
+ const depType = types.find(t => t.name === depName);
48
+ if (depType && !visited.has(depName)) {
49
+ visit(depType);
50
+ }
51
+ }
52
+ visiting.delete(type.name);
53
+ visited.add(type.name);
54
+ sorted.push(type);
55
+ };
56
+ for (const type of types) {
57
+ visit(type);
58
+ }
59
+ return sorted;
60
+ };
61
+ /**
62
+ * Generate the Models.ts file content.
63
+ *
64
+ * @since 1.0.0
65
+ * @category generation
66
+ */
67
+ const generateModels = dataModel => {
68
+ const lines = [];
69
+ // Collect all type names for dependency resolution
70
+ const allComplexTypes = new Set(Array.from(dataModel.complexTypes.values()).map(t => t.name));
71
+ const allEntityTypes = new Set(Array.from(dataModel.entityTypes.values()).map(t => t.name));
72
+ // Header
73
+ lines.push(`/**`);
74
+ lines.push(` * Effect Schema models for ${dataModel.serviceName} OData service.`);
75
+ lines.push(` * Generated by odata-effect-gen.`);
76
+ lines.push(` *`);
77
+ lines.push(` * @since 1.0.0`);
78
+ lines.push(` */`);
79
+ lines.push(`import * as Schema from "effect/Schema"`);
80
+ lines.push(``);
81
+ // Generate enum types (no dependencies, always first)
82
+ for (const enumType of dataModel.enumTypes.values()) {
83
+ for (const line of generateEnumType(enumType)) lines.push(line);
84
+ lines.push(``);
85
+ }
86
+ // Generate complex types in dependency order
87
+ const sortedComplexTypes = sortTypesByDependency(Array.from(dataModel.complexTypes.values()), allComplexTypes, allEntityTypes);
88
+ for (const complexType of sortedComplexTypes) {
89
+ for (const line of generateComplexType(complexType, dataModel)) lines.push(line);
90
+ lines.push(``);
91
+ }
92
+ // Generate entity types in dependency order
93
+ const sortedEntityTypes = sortTypesByDependency(Array.from(dataModel.entityTypes.values()), allComplexTypes, allEntityTypes);
94
+ for (const entityType of sortedEntityTypes) {
95
+ for (const line of generateEntityType(entityType, dataModel)) lines.push(line);
96
+ lines.push(``);
97
+ }
98
+ return lines.join("\n");
99
+ };
100
+ /**
101
+ * Generate an enum type.
102
+ */
103
+ exports.generateModels = generateModels;
104
+ const generateEnumType = enumType => {
105
+ const lines = [];
106
+ const members = enumType.members.map(m => `"${m.name}"`).join(", ");
107
+ lines.push(`/**`);
108
+ lines.push(` * ${enumType.odataName} enum type.`);
109
+ lines.push(` *`);
110
+ lines.push(` * @since 1.0.0`);
111
+ lines.push(` * @category enums`);
112
+ lines.push(` */`);
113
+ lines.push(`export const ${enumType.name} = Schema.Literal(${members})`);
114
+ lines.push(`export type ${enumType.name} = Schema.Schema.Type<typeof ${enumType.name}>`);
115
+ return lines;
116
+ };
117
+ /**
118
+ * Generate a complex type.
119
+ */
120
+ const generateComplexType = (complexType, dataModel) => {
121
+ const lines = [];
122
+ lines.push(`/**`);
123
+ lines.push(` * ${complexType.odataName} complex type.`);
124
+ lines.push(` *`);
125
+ lines.push(` * @since 1.0.0`);
126
+ lines.push(` * @category models`);
127
+ lines.push(` */`);
128
+ const fields = generateSchemaFields(complexType.properties, complexType.navigationProperties, dataModel);
129
+ lines.push(`export class ${complexType.name} extends Schema.Class<${complexType.name}>("${complexType.name}")({`);
130
+ for (const f of fields) lines.push(` ${f}`);
131
+ lines.push(`}) {}`);
132
+ // Generate editable type
133
+ lines.push(``);
134
+ lines.push(`/**`);
135
+ lines.push(` * Editable ${complexType.odataName} for creating/updating operations.`);
136
+ lines.push(` *`);
137
+ lines.push(` * @since 1.0.0`);
138
+ lines.push(` * @category models`);
139
+ lines.push(` */`);
140
+ const editableFields = generateEditableSchemaFields(complexType.properties);
141
+ const editableName = (0, _NamingHelper.getEditableTypeName)(complexType.name);
142
+ lines.push(`export const ${editableName} = Schema.Struct({`);
143
+ for (const f of editableFields) lines.push(` ${f}`);
144
+ lines.push(`})`);
145
+ lines.push(`export type ${editableName} = Schema.Schema.Type<typeof ${editableName}>`);
146
+ return lines;
147
+ };
148
+ /**
149
+ * Generate an entity type with ID and editable variants.
150
+ */
151
+ const generateEntityType = (entityType, dataModel) => {
152
+ const lines = [];
153
+ // Main entity class
154
+ lines.push(`/**`);
155
+ lines.push(` * ${entityType.odataName} entity type.`);
156
+ lines.push(` *`);
157
+ lines.push(` * @since 1.0.0`);
158
+ lines.push(` * @category models`);
159
+ lines.push(` */`);
160
+ const fields = generateSchemaFields(entityType.properties, entityType.navigationProperties, dataModel);
161
+ lines.push(`export class ${entityType.name} extends Schema.Class<${entityType.name}>("${entityType.name}")({`);
162
+ for (const f of fields) lines.push(` ${f}`);
163
+ lines.push(`}) {}`);
164
+ // ID type
165
+ if (entityType.keys.length > 0) {
166
+ lines.push(``);
167
+ lines.push(`/**`);
168
+ lines.push(` * ${entityType.odataName} ID type.`);
169
+ lines.push(` *`);
170
+ lines.push(` * @since 1.0.0`);
171
+ lines.push(` * @category models`);
172
+ lines.push(` */`);
173
+ const idTypeName = (0, _NamingHelper.getIdTypeName)(entityType.name);
174
+ if (entityType.keys.length === 1) {
175
+ const key = entityType.keys[0];
176
+ const keySchema = getPropertySchemaType(key, false);
177
+ lines.push(`export const ${idTypeName} = Schema.Union(`);
178
+ lines.push(` ${keySchema},`);
179
+ lines.push(` Schema.Struct({ ${key.name}: ${keySchema} })`);
180
+ lines.push(`)`);
181
+ } else {
182
+ // Composite key
183
+ const keyFields = entityType.keys.map(k => {
184
+ const schema = getPropertySchemaType(k, false);
185
+ return `${k.name}: ${schema}`;
186
+ });
187
+ lines.push(`export const ${idTypeName} = Schema.Union(`);
188
+ lines.push(` Schema.String,`);
189
+ lines.push(` Schema.Struct({ ${keyFields.join(", ")} })`);
190
+ lines.push(`)`);
191
+ }
192
+ lines.push(`export type ${idTypeName} = Schema.Schema.Type<typeof ${idTypeName}>`);
193
+ }
194
+ // Editable type
195
+ lines.push(``);
196
+ lines.push(`/**`);
197
+ lines.push(` * Editable ${entityType.odataName} for creating/updating operations.`);
198
+ lines.push(` *`);
199
+ lines.push(` * @since 1.0.0`);
200
+ lines.push(` * @category models`);
201
+ lines.push(` */`);
202
+ const editableFields = generateEditableSchemaFields(entityType.properties.filter(p => !p.isKey));
203
+ const editableName = (0, _NamingHelper.getEditableTypeName)(entityType.name);
204
+ lines.push(`export const ${editableName} = Schema.Struct({`);
205
+ for (const f of editableFields) lines.push(` ${f}`);
206
+ lines.push(`})`);
207
+ lines.push(`export type ${editableName} = Schema.Schema.Type<typeof ${editableName}>`);
208
+ return lines;
209
+ };
210
+ /**
211
+ * Generate schema field definitions for a class.
212
+ * Note: Navigation properties are excluded to avoid circular reference issues.
213
+ * They can be loaded via $expand queries.
214
+ */
215
+ const generateSchemaFields = (properties, _navigationProperties, _dataModel) => {
216
+ const fields = [];
217
+ for (let i = 0; i < properties.length; i++) {
218
+ const prop = properties[i];
219
+ const schemaType = getPropertySchemaType(prop, prop.isNullable && !prop.isKey);
220
+ const isLast = i === properties.length - 1;
221
+ fields.push(`${prop.name}: ${schemaType}${isLast ? "" : ","}`);
222
+ }
223
+ // Navigation properties are intentionally excluded from Schema.Class
224
+ // to avoid circular reference issues. They can be loaded via $expand.
225
+ return fields;
226
+ };
227
+ /**
228
+ * Generate schema field definitions for an editable struct.
229
+ */
230
+ const generateEditableSchemaFields = properties => {
231
+ const fields = [];
232
+ for (let i = 0; i < properties.length; i++) {
233
+ const prop = properties[i];
234
+ const schemaType = getPropertySchemaType(prop, prop.isNullable);
235
+ const isLast = i === properties.length - 1;
236
+ fields.push(`${prop.name}: ${schemaType}${isLast ? "" : ","}`);
237
+ }
238
+ return fields;
239
+ };
240
+ /**
241
+ * Get the Schema type for a property.
242
+ */
243
+ const getPropertySchemaType = (prop, makeOptional) => {
244
+ let baseType = prop.typeMapping.effectSchema;
245
+ // Handle collection
246
+ if (prop.isCollection) {
247
+ baseType = `Schema.Array(${baseType})`;
248
+ }
249
+ // Handle nullable/optional
250
+ if (makeOptional) {
251
+ return `Schema.optionalWith(${baseType}, { nullable: true })`;
252
+ }
253
+ return baseType;
254
+ };
255
+ //# sourceMappingURL=ModelsGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelsGenerator.js","names":["_NamingHelper","require","getTypeDependencies","type","allComplexTypes","allEntityTypes","deps","Set","baseType","baseTypeName","getClassName","split","pop","has","add","prop","properties","propTypeName","typeMapping","effectSchema","sortTypesByDependency","types","sorted","visited","visiting","visit","name","push","depName","depType","find","t","delete","generateModels","dataModel","lines","Array","from","complexTypes","values","map","entityTypes","serviceName","enumType","enumTypes","line","generateEnumType","sortedComplexTypes","complexType","generateComplexType","sortedEntityTypes","entityType","generateEntityType","join","exports","members","m","odataName","fields","generateSchemaFields","navigationProperties","f","editableFields","generateEditableSchemaFields","editableName","getEditableTypeName","keys","length","idTypeName","getIdTypeName","key","keySchema","getPropertySchemaType","keyFields","k","schema","filter","p","isKey","_navigationProperties","_dataModel","i","schemaType","isNullable","isLast","makeOptional","isCollection"],"sources":["../../../src/generator/ModelsGenerator.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.toValidIdentifier = exports.toPascalCase = exports.toCamelCase = exports.getServiceClassName = exports.getQueryInterfaceName = exports.getQueryInstanceName = exports.getQueryFactoryName = exports.getPropertyName = exports.getIdTypeName = exports.getEditableTypeName = exports.getClassName = void 0;
7
+ /**
8
+ * Naming utilities for code generation.
9
+ *
10
+ * @since 1.0.0
11
+ */
12
+ /**
13
+ * Convert a string to PascalCase.
14
+ *
15
+ * @example
16
+ * toPascalCase("hello_world") // "HelloWorld"
17
+ * toPascalCase("helloWorld") // "HelloWorld"
18
+ *
19
+ * @since 1.0.0
20
+ * @category naming
21
+ */
22
+ const toPascalCase = str => {
23
+ return str.replace(/[-_](.)/g, (_, char) => char.toUpperCase()).replace(/^(.)/, char => char.toUpperCase());
24
+ };
25
+ /**
26
+ * Convert a string to camelCase.
27
+ *
28
+ * @example
29
+ * toCamelCase("HelloWorld") // "helloWorld"
30
+ * toCamelCase("hello_world") // "helloWorld"
31
+ *
32
+ * @since 1.0.0
33
+ * @category naming
34
+ */
35
+ exports.toPascalCase = toPascalCase;
36
+ const toCamelCase = str => {
37
+ const pascal = toPascalCase(str);
38
+ return pascal.charAt(0).toLowerCase() + pascal.slice(1);
39
+ };
40
+ /**
41
+ * Ensure a string is a valid TypeScript identifier.
42
+ * Prefixes with underscore if it starts with a number.
43
+ *
44
+ * @since 1.0.0
45
+ * @category naming
46
+ */
47
+ exports.toCamelCase = toCamelCase;
48
+ const toValidIdentifier = str => {
49
+ // If starts with a number, prefix with underscore
50
+ if (/^[0-9]/.test(str)) {
51
+ return `_${str}`;
52
+ }
53
+ // Replace invalid characters with underscores
54
+ return str.replace(/[^a-zA-Z0-9_$]/g, "_");
55
+ };
56
+ /**
57
+ * Get the TypeScript property name for an OData property.
58
+ *
59
+ * @since 1.0.0
60
+ * @category naming
61
+ */
62
+ exports.toValidIdentifier = toValidIdentifier;
63
+ const getPropertyName = odataName => {
64
+ return toCamelCase(toValidIdentifier(odataName));
65
+ };
66
+ /**
67
+ * Get the TypeScript class name for an OData entity or complex type.
68
+ *
69
+ * @since 1.0.0
70
+ * @category naming
71
+ */
72
+ exports.getPropertyName = getPropertyName;
73
+ const getClassName = odataName => {
74
+ return toPascalCase(toValidIdentifier(odataName));
75
+ };
76
+ /**
77
+ * Get the service class name for an entity set.
78
+ *
79
+ * @example
80
+ * getServiceClassName("Products") // "ProductService"
81
+ *
82
+ * @since 1.0.0
83
+ * @category naming
84
+ */
85
+ exports.getClassName = getClassName;
86
+ const getServiceClassName = entitySetName => {
87
+ // Remove trailing 's' if present to singularize
88
+ let singular = entitySetName;
89
+ if (singular.endsWith("ies")) {
90
+ singular = singular.slice(0, -3) + "y";
91
+ } else if (singular.endsWith("es") && !singular.endsWith("ses")) {
92
+ singular = singular.slice(0, -2);
93
+ } else if (singular.endsWith("s") && !singular.endsWith("ss")) {
94
+ singular = singular.slice(0, -1);
95
+ }
96
+ return `${toPascalCase(singular)}Service`;
97
+ };
98
+ /**
99
+ * Get the query paths interface name for a type.
100
+ *
101
+ * @example
102
+ * getQueryInterfaceName("Product") // "QProduct"
103
+ *
104
+ * @since 1.0.0
105
+ * @category naming
106
+ */
107
+ exports.getServiceClassName = getServiceClassName;
108
+ const getQueryInterfaceName = typeName => {
109
+ return `Q${toPascalCase(typeName)}`;
110
+ };
111
+ /**
112
+ * Get the query paths instance name for a type.
113
+ *
114
+ * @example
115
+ * getQueryInstanceName("Product") // "qProduct"
116
+ *
117
+ * @since 1.0.0
118
+ * @category naming
119
+ */
120
+ exports.getQueryInterfaceName = getQueryInterfaceName;
121
+ const getQueryInstanceName = typeName => {
122
+ return `q${toPascalCase(typeName)}`;
123
+ };
124
+ /**
125
+ * Get the query builder factory function name for a type.
126
+ *
127
+ * @example
128
+ * getQueryFactoryName("Product") // "productQuery"
129
+ *
130
+ * @since 1.0.0
131
+ * @category naming
132
+ */
133
+ exports.getQueryInstanceName = getQueryInstanceName;
134
+ const getQueryFactoryName = typeName => {
135
+ return `${toCamelCase(typeName)}Query`;
136
+ };
137
+ /**
138
+ * Get the editable type name for an entity type.
139
+ *
140
+ * @example
141
+ * getEditableTypeName("Product") // "EditableProduct"
142
+ *
143
+ * @since 1.0.0
144
+ * @category naming
145
+ */
146
+ exports.getQueryFactoryName = getQueryFactoryName;
147
+ const getEditableTypeName = typeName => {
148
+ return `Editable${toPascalCase(typeName)}`;
149
+ };
150
+ /**
151
+ * Get the ID type name for an entity type.
152
+ *
153
+ * @example
154
+ * getIdTypeName("Product") // "ProductId"
155
+ *
156
+ * @since 1.0.0
157
+ * @category naming
158
+ */
159
+ exports.getEditableTypeName = getEditableTypeName;
160
+ const getIdTypeName = typeName => {
161
+ return `${toPascalCase(typeName)}Id`;
162
+ };
163
+ exports.getIdTypeName = getIdTypeName;
164
+ //# sourceMappingURL=NamingHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NamingHelper.js","names":["toPascalCase","str","replace","_","char","toUpperCase","exports","toCamelCase","pascal","charAt","toLowerCase","slice","toValidIdentifier","test","getPropertyName","odataName","getClassName","getServiceClassName","entitySetName","singular","endsWith","getQueryInterfaceName","typeName","getQueryInstanceName","getQueryFactoryName","getEditableTypeName","getIdTypeName"],"sources":["../../../src/generator/NamingHelper.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.generateVitestConfig = exports.generateTsconfigTest = exports.generateTsconfigSrc = exports.generateTsconfigBuild = exports.generateTsconfig = exports.generatePackageJson = void 0;
7
+ /**
8
+ * Generate package.json content.
9
+ *
10
+ * @since 1.0.0
11
+ * @category generation
12
+ */
13
+ const generatePackageJson = (dataModel, config) => {
14
+ const packageJson = {
15
+ name: config.packageName,
16
+ version: "0.0.0",
17
+ type: "module",
18
+ license: "MIT",
19
+ description: `Effect-based OData client for ${dataModel.serviceName} service`,
20
+ publishConfig: {
21
+ access: "public",
22
+ directory: "dist"
23
+ },
24
+ scripts: {
25
+ codegen: "build-utils prepare-v2",
26
+ build: "pnpm build-esm && pnpm build-annotate && pnpm build-cjs && build-utils pack-v2",
27
+ "build-esm": "tsc -b tsconfig.build.json",
28
+ "build-cjs": "babel build/esm --plugins @babel/transform-export-namespace-from --plugins @babel/transform-modules-commonjs --out-dir build/cjs --source-maps",
29
+ "build-annotate": "babel build/esm --plugins annotate-pure-calls --out-dir build/esm --source-maps",
30
+ check: "tsc -b tsconfig.json",
31
+ test: "vitest",
32
+ coverage: "vitest --coverage"
33
+ },
34
+ dependencies: {
35
+ "@effect/platform": "^0.94.0",
36
+ "@odata-effect/odata-effect": "workspace:*",
37
+ "@odata-effect/odata-effect-promise": "workspace:*",
38
+ effect: "^3.10.7"
39
+ },
40
+ devDependencies: {
41
+ "@odata-effect/odata-effect": "workspace:*",
42
+ "@odata-effect/odata-effect-promise": "workspace:*"
43
+ },
44
+ effect: {
45
+ generateExports: {
46
+ include: ["**/*.ts"]
47
+ },
48
+ generateIndex: {
49
+ include: ["**/*.ts"]
50
+ }
51
+ }
52
+ };
53
+ return JSON.stringify(packageJson, null, 2);
54
+ };
55
+ /**
56
+ * Generate tsconfig.json content.
57
+ *
58
+ * @since 1.0.0
59
+ * @category generation
60
+ */
61
+ exports.generatePackageJson = generatePackageJson;
62
+ const generateTsconfig = () => {
63
+ const tsconfig = {
64
+ extends: "../../tsconfig.base.json",
65
+ include: [],
66
+ references: [{
67
+ path: "tsconfig.src.json"
68
+ }, {
69
+ path: "tsconfig.test.json"
70
+ }]
71
+ };
72
+ return JSON.stringify(tsconfig, null, 2);
73
+ };
74
+ /**
75
+ * Generate tsconfig.src.json content.
76
+ *
77
+ * @since 1.0.0
78
+ * @category generation
79
+ */
80
+ exports.generateTsconfig = generateTsconfig;
81
+ const generateTsconfigSrc = () => {
82
+ const tsconfig = {
83
+ extends: "../../tsconfig.base.json",
84
+ include: ["src"],
85
+ references: [{
86
+ path: "../ODataEffect/tsconfig.src.json"
87
+ }, {
88
+ path: "../ODataEffectPromise/tsconfig.src.json"
89
+ }],
90
+ compilerOptions: {
91
+ types: ["node"],
92
+ outDir: "build/src",
93
+ tsBuildInfoFile: ".tsbuildinfo/src.tsbuildinfo",
94
+ rootDir: "src"
95
+ }
96
+ };
97
+ return JSON.stringify(tsconfig, null, 2);
98
+ };
99
+ /**
100
+ * Generate tsconfig.test.json content.
101
+ *
102
+ * @since 1.0.0
103
+ * @category generation
104
+ */
105
+ exports.generateTsconfigSrc = generateTsconfigSrc;
106
+ const generateTsconfigTest = () => {
107
+ const tsconfig = {
108
+ extends: "../../tsconfig.base.json",
109
+ include: ["test"],
110
+ references: [{
111
+ path: "tsconfig.src.json"
112
+ }, {
113
+ path: "../ODataEffect/tsconfig.src.json"
114
+ }, {
115
+ path: "../ODataEffectPromise/tsconfig.src.json"
116
+ }],
117
+ compilerOptions: {
118
+ types: ["node"],
119
+ tsBuildInfoFile: ".tsbuildinfo/test.tsbuildinfo",
120
+ rootDir: "test",
121
+ noEmit: true
122
+ }
123
+ };
124
+ return JSON.stringify(tsconfig, null, 2);
125
+ };
126
+ /**
127
+ * Generate tsconfig.build.json content.
128
+ *
129
+ * @since 1.0.0
130
+ * @category generation
131
+ */
132
+ exports.generateTsconfigTest = generateTsconfigTest;
133
+ const generateTsconfigBuild = () => {
134
+ const tsconfig = {
135
+ extends: "./tsconfig.src.json",
136
+ references: [{
137
+ path: "../ODataEffect/tsconfig.build.json"
138
+ }, {
139
+ path: "../ODataEffectPromise/tsconfig.build.json"
140
+ }],
141
+ compilerOptions: {
142
+ types: ["node"],
143
+ tsBuildInfoFile: ".tsbuildinfo/build.tsbuildinfo",
144
+ outDir: "build/esm",
145
+ declarationDir: "build/dts",
146
+ stripInternal: true
147
+ }
148
+ };
149
+ return JSON.stringify(tsconfig, null, 2);
150
+ };
151
+ /**
152
+ * Generate vitest.config.ts content.
153
+ *
154
+ * @since 1.0.0
155
+ * @category generation
156
+ */
157
+ exports.generateTsconfigBuild = generateTsconfigBuild;
158
+ const generateVitestConfig = () => {
159
+ return `import { mergeConfig, type UserConfigExport } from "vitest/config"
160
+ import shared from "../../vitest.shared.js"
161
+
162
+ const config: UserConfigExport = {}
163
+
164
+ export default mergeConfig(shared, config)
165
+ `;
166
+ };
167
+ exports.generateVitestConfig = generateVitestConfig;
168
+ //# sourceMappingURL=PackageGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PackageGenerator.js","names":["generatePackageJson","dataModel","config","packageJson","name","packageName","version","type","license","description","serviceName","publishConfig","access","directory","scripts","codegen","build","check","test","coverage","dependencies","effect","devDependencies","generateExports","include","generateIndex","JSON","stringify","exports","generateTsconfig","tsconfig","extends","references","path","generateTsconfigSrc","compilerOptions","types","outDir","tsBuildInfoFile","rootDir","generateTsconfigTest","noEmit","generateTsconfigBuild","declarationDir","stripInternal","generateVitestConfig"],"sources":["../../../src/generator/PackageGenerator.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}