@odata-effect/odata-effect-generator 0.5.0 → 0.6.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/dist/cjs/generator/Generator.js +10 -5
- package/dist/cjs/generator/Generator.js.map +1 -1
- package/dist/cjs/generator/IndexGenerator.js +7 -6
- package/dist/cjs/generator/IndexGenerator.js.map +1 -1
- package/dist/cjs/generator/NamingHelper.js +23 -1
- package/dist/cjs/generator/NamingHelper.js.map +1 -1
- package/dist/cjs/generator/NavigationGenerator.js +5 -4
- package/dist/cjs/generator/NavigationGenerator.js.map +1 -1
- package/dist/cjs/generator/OperationsGenerator.js +5 -4
- package/dist/cjs/generator/OperationsGenerator.js.map +1 -1
- package/dist/cjs/generator/QueryModelsGenerator.js +3 -2
- package/dist/cjs/generator/QueryModelsGenerator.js.map +1 -1
- package/dist/cjs/generator/ServiceFnGenerator.js +5 -4
- package/dist/cjs/generator/ServiceFnGenerator.js.map +1 -1
- package/dist/cjs/model/GeneratorConfig.js.map +1 -1
- package/dist/dts/generator/Generator.d.ts +6 -0
- package/dist/dts/generator/Generator.d.ts.map +1 -1
- package/dist/dts/generator/IndexGenerator.d.ts +14 -1
- package/dist/dts/generator/IndexGenerator.d.ts.map +1 -1
- package/dist/dts/generator/NamingHelper.d.ts +15 -0
- package/dist/dts/generator/NamingHelper.d.ts.map +1 -1
- package/dist/dts/generator/NavigationGenerator.d.ts +14 -1
- package/dist/dts/generator/NavigationGenerator.d.ts.map +1 -1
- package/dist/dts/generator/OperationsGenerator.d.ts +14 -1
- package/dist/dts/generator/OperationsGenerator.d.ts.map +1 -1
- package/dist/dts/generator/QueryModelsGenerator.d.ts +14 -1
- package/dist/dts/generator/QueryModelsGenerator.d.ts.map +1 -1
- package/dist/dts/generator/ServiceFnGenerator.d.ts +14 -1
- package/dist/dts/generator/ServiceFnGenerator.d.ts.map +1 -1
- package/dist/dts/model/GeneratorConfig.d.ts +20 -0
- package/dist/dts/model/GeneratorConfig.d.ts.map +1 -1
- package/dist/esm/generator/Generator.js +10 -5
- package/dist/esm/generator/Generator.js.map +1 -1
- package/dist/esm/generator/IndexGenerator.js +8 -7
- package/dist/esm/generator/IndexGenerator.js.map +1 -1
- package/dist/esm/generator/NamingHelper.js +21 -0
- package/dist/esm/generator/NamingHelper.js.map +1 -1
- package/dist/esm/generator/NavigationGenerator.js +6 -5
- package/dist/esm/generator/NavigationGenerator.js.map +1 -1
- package/dist/esm/generator/OperationsGenerator.js +6 -5
- package/dist/esm/generator/OperationsGenerator.js.map +1 -1
- package/dist/esm/generator/QueryModelsGenerator.js +4 -3
- package/dist/esm/generator/QueryModelsGenerator.js.map +1 -1
- package/dist/esm/generator/ServiceFnGenerator.js +6 -5
- package/dist/esm/generator/ServiceFnGenerator.js.map +1 -1
- package/dist/esm/model/GeneratorConfig.js.map +1 -1
- package/package.json +1 -1
- package/src/generator/Generator.ts +15 -5
- package/src/generator/IndexGenerator.ts +27 -6
- package/src/generator/NamingHelper.ts +26 -0
- package/src/generator/NavigationGenerator.ts +23 -5
- package/src/generator/OperationsGenerator.ts +25 -5
- package/src/generator/QueryModelsGenerator.ts +27 -3
- package/src/generator/ServiceFnGenerator.ts +23 -5
- package/src/model/GeneratorConfig.ts +22 -0
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import type { DataModel, EntitySetModel, EntityTypeModel } from "../model/DataModel.js"
|
|
10
10
|
import type { ODataVersion } from "../parser/EdmxSchema.js"
|
|
11
|
-
import { getEditableTypeName, getIdTypeName, getServiceClassName } from "./NamingHelper.js"
|
|
11
|
+
import { formatRelativeImport, getEditableTypeName, getIdTypeName, getServiceClassName } from "./NamingHelper.js"
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Generated service file.
|
|
@@ -31,14 +31,32 @@ export interface ServiceGenerationResult {
|
|
|
31
31
|
readonly servicesFile: GeneratedServiceFile
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Options for service generation.
|
|
36
|
+
*
|
|
37
|
+
* @since 1.0.0
|
|
38
|
+
* @category types
|
|
39
|
+
*/
|
|
40
|
+
export interface ServiceGeneratorOptions {
|
|
41
|
+
/**
|
|
42
|
+
* Add .js extensions to relative imports for ESM compatibility.
|
|
43
|
+
* @default true
|
|
44
|
+
*/
|
|
45
|
+
readonly esmExtensions?: boolean
|
|
46
|
+
}
|
|
47
|
+
|
|
34
48
|
/**
|
|
35
49
|
* Generate the Services.ts file using crud factory.
|
|
36
50
|
*
|
|
37
51
|
* @since 1.0.0
|
|
38
52
|
* @category generation
|
|
39
53
|
*/
|
|
40
|
-
export const generateServiceFns = (
|
|
41
|
-
|
|
54
|
+
export const generateServiceFns = (
|
|
55
|
+
dataModel: DataModel,
|
|
56
|
+
options?: ServiceGeneratorOptions
|
|
57
|
+
): ServiceGenerationResult => {
|
|
58
|
+
const esmExtensions = options?.esmExtensions ?? true
|
|
59
|
+
const content = generateServicesFile(dataModel, esmExtensions)
|
|
42
60
|
return {
|
|
43
61
|
servicesFile: {
|
|
44
62
|
fileName: "Services.ts",
|
|
@@ -50,7 +68,7 @@ export const generateServiceFns = (dataModel: DataModel): ServiceGenerationResul
|
|
|
50
68
|
/**
|
|
51
69
|
* Generate the Services.ts file content.
|
|
52
70
|
*/
|
|
53
|
-
const generateServicesFile = (dataModel: DataModel): string => {
|
|
71
|
+
const generateServicesFile = (dataModel: DataModel, esmExtensions: boolean): string => {
|
|
54
72
|
const lines: Array<string> = []
|
|
55
73
|
const isV4 = dataModel.version === "V4"
|
|
56
74
|
const crudImportPath = isV4
|
|
@@ -97,7 +115,7 @@ const generateServicesFile = (dataModel: DataModel): string => {
|
|
|
97
115
|
const isLast = i === modelImports.length - 1
|
|
98
116
|
lines.push(` ${modelImports[i]}${isLast ? "" : ","}`)
|
|
99
117
|
}
|
|
100
|
-
lines.push(`} from "
|
|
118
|
+
lines.push(`} from "${formatRelativeImport("Models", esmExtensions)}"`)
|
|
101
119
|
lines.push(``)
|
|
102
120
|
|
|
103
121
|
// Re-export types from the crud module
|
|
@@ -4,6 +4,28 @@
|
|
|
4
4
|
* @since 1.0.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Generator options for code generation.
|
|
9
|
+
*
|
|
10
|
+
* @since 1.0.0
|
|
11
|
+
* @category config
|
|
12
|
+
*/
|
|
13
|
+
export interface GeneratorOptions {
|
|
14
|
+
/**
|
|
15
|
+
* Add .js extensions to relative imports for ESM compatibility.
|
|
16
|
+
* Required for moduleResolution: node16/nodenext.
|
|
17
|
+
* Default: true (recommended for ESM projects)
|
|
18
|
+
*
|
|
19
|
+
* @default true
|
|
20
|
+
*/
|
|
21
|
+
readonly esmExtensions?: boolean
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Naming overrides for customizing generated type and property names.
|
|
25
|
+
*/
|
|
26
|
+
readonly overrides?: NamingOverrides
|
|
27
|
+
}
|
|
28
|
+
|
|
7
29
|
/**
|
|
8
30
|
* Override configuration for property names.
|
|
9
31
|
* Maps OData property names to TypeScript property names.
|