@odata-effect/odata-effect-generator 0.1.2 → 0.3.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 (74) hide show
  1. package/README.md +232 -5
  2. package/dist/cjs/Cli.js +5 -1
  3. package/dist/cjs/Cli.js.map +1 -1
  4. package/dist/cjs/generator/Generator.js +35 -25
  5. package/dist/cjs/generator/Generator.js.map +1 -1
  6. package/dist/cjs/generator/IndexGenerator.js +29 -80
  7. package/dist/cjs/generator/IndexGenerator.js.map +1 -1
  8. package/dist/cjs/generator/ModelsGenerator.js +2 -5
  9. package/dist/cjs/generator/ModelsGenerator.js.map +1 -1
  10. package/dist/cjs/generator/NamingHelper.js +4 -1
  11. package/dist/cjs/generator/NamingHelper.js.map +1 -1
  12. package/dist/cjs/generator/NavigationGenerator.js +370 -0
  13. package/dist/cjs/generator/NavigationGenerator.js.map +1 -0
  14. package/dist/cjs/generator/OperationsGenerator.js +384 -0
  15. package/dist/cjs/generator/OperationsGenerator.js.map +1 -0
  16. package/dist/cjs/generator/QueryModelsGenerator.js +2 -2
  17. package/dist/cjs/generator/QueryModelsGenerator.js.map +1 -1
  18. package/dist/cjs/generator/ServiceFnGenerator.js +102 -224
  19. package/dist/cjs/generator/ServiceFnGenerator.js.map +1 -1
  20. package/dist/cjs/index.js +3 -3
  21. package/dist/dts/Cli.d.ts.map +1 -1
  22. package/dist/dts/generator/Generator.d.ts +2 -0
  23. package/dist/dts/generator/Generator.d.ts.map +1 -1
  24. package/dist/dts/generator/IndexGenerator.d.ts.map +1 -1
  25. package/dist/dts/generator/NamingHelper.d.ts.map +1 -1
  26. package/dist/dts/generator/NavigationGenerator.d.ts +55 -0
  27. package/dist/dts/generator/NavigationGenerator.d.ts.map +1 -0
  28. package/dist/dts/generator/OperationsGenerator.d.ts +50 -0
  29. package/dist/dts/generator/OperationsGenerator.d.ts.map +1 -0
  30. package/dist/dts/generator/ServiceFnGenerator.d.ts +10 -11
  31. package/dist/dts/generator/ServiceFnGenerator.d.ts.map +1 -1
  32. package/dist/dts/index.d.ts +4 -4
  33. package/dist/dts/index.d.ts.map +1 -1
  34. package/dist/esm/Cli.js +5 -1
  35. package/dist/esm/Cli.js.map +1 -1
  36. package/dist/esm/generator/Generator.js +35 -25
  37. package/dist/esm/generator/Generator.js.map +1 -1
  38. package/dist/esm/generator/IndexGenerator.js +29 -80
  39. package/dist/esm/generator/IndexGenerator.js.map +1 -1
  40. package/dist/esm/generator/ModelsGenerator.js +2 -5
  41. package/dist/esm/generator/ModelsGenerator.js.map +1 -1
  42. package/dist/esm/generator/NamingHelper.js +4 -1
  43. package/dist/esm/generator/NamingHelper.js.map +1 -1
  44. package/dist/esm/generator/NavigationGenerator.js +362 -0
  45. package/dist/esm/generator/NavigationGenerator.js.map +1 -0
  46. package/dist/esm/generator/OperationsGenerator.js +375 -0
  47. package/dist/esm/generator/OperationsGenerator.js.map +1 -0
  48. package/dist/esm/generator/QueryModelsGenerator.js +2 -2
  49. package/dist/esm/generator/QueryModelsGenerator.js.map +1 -1
  50. package/dist/esm/generator/ServiceFnGenerator.js +102 -224
  51. package/dist/esm/generator/ServiceFnGenerator.js.map +1 -1
  52. package/dist/esm/index.js +4 -4
  53. package/dist/esm/index.js.map +1 -1
  54. package/generator/NavigationGenerator/package.json +6 -0
  55. package/generator/OperationsGenerator/package.json +6 -0
  56. package/package.json +17 -9
  57. package/src/Cli.ts +15 -2
  58. package/src/generator/Generator.ts +44 -23
  59. package/src/generator/IndexGenerator.ts +29 -80
  60. package/src/generator/ModelsGenerator.ts +2 -5
  61. package/src/generator/NamingHelper.ts +8 -1
  62. package/src/generator/NavigationGenerator.ts +485 -0
  63. package/src/generator/OperationsGenerator.ts +507 -0
  64. package/src/generator/QueryModelsGenerator.ts +2 -2
  65. package/src/generator/ServiceFnGenerator.ts +117 -265
  66. package/src/index.ts +4 -4
  67. package/dist/cjs/generator/ServiceFnPromiseGenerator.js +0 -183
  68. package/dist/cjs/generator/ServiceFnPromiseGenerator.js.map +0 -1
  69. package/dist/dts/generator/ServiceFnPromiseGenerator.d.ts +0 -40
  70. package/dist/dts/generator/ServiceFnPromiseGenerator.d.ts.map +0 -1
  71. package/dist/esm/generator/ServiceFnPromiseGenerator.js +0 -175
  72. package/dist/esm/generator/ServiceFnPromiseGenerator.js.map +0 -1
  73. package/generator/ServiceFnPromiseGenerator/package.json +0 -6
  74. package/src/generator/ServiceFnPromiseGenerator.ts +0 -243
package/README.md CHANGED
@@ -26,16 +26,243 @@ odata-effect-gen generate ./metadata.xml ./generated
26
26
  - `--service-name`: Override service name (defaults to EntityContainer name)
27
27
  - `--package-name`: NPM package name (defaults to @template/<service-name>-effect)
28
28
  - `--force`: Overwrite existing files
29
+ - `--files-only`: Generate only source files directly in output-dir (no package.json, tsconfig, src/ subdirectory)
29
30
 
30
31
  ## Generated Code
31
32
 
32
33
  The generator produces:
33
34
 
34
- - `Models.ts` - Schema classes for entities and complex types
35
- - `QueryModels.ts` - Type-safe query paths for filtering and ordering
36
- - `*Service.ts` - Effect-based service functions for each entity set
37
- - `*ServicePromise.ts` - Promise-based service functions
38
- - `index.ts` - Re-exports all generated code
35
+ | File | Description |
36
+ |------|-------------|
37
+ | `Models.ts` | Schema classes for entities and complex types |
38
+ | `QueryModels.ts` | Type-safe query paths for filtering and ordering |
39
+ | `Services.ts` | CRUD services for all entity sets (using crud factory) |
40
+ | `PathBuilders.ts` | Tree-shakable navigation path builders with `toPromise` |
41
+ | `Operations.ts` | Functions/Actions (if present in metadata) |
42
+ | `index.ts` | Re-exports all generated code |
43
+
44
+ ## Two Ways to Query Data
45
+
46
+ The generator provides two complementary approaches for querying OData services:
47
+
48
+ ### 1. Service Functions (Direct Operations)
49
+
50
+ Best for simple CRUD operations on a single entity set:
51
+
52
+ ```typescript
53
+ import { ProductService } from "./generated"
54
+
55
+ // Get all products
56
+ const products = yield* ProductService.getAll()
57
+
58
+ // Get by ID
59
+ const product = yield* ProductService.getById(123)
60
+
61
+ // Create
62
+ const newProduct = yield* ProductService.create({ name: "Widget", price: 9.99 })
63
+
64
+ // Update
65
+ yield* ProductService.update(123, { price: 12.99 })
66
+
67
+ // Delete
68
+ yield* ProductService.delete(123)
69
+ ```
70
+
71
+ ### 2. Path Builders (Pipe-based Navigation)
72
+
73
+ Best for navigating relationships with full type safety. Uses branded types to ensure you can only navigate to valid properties:
74
+
75
+ ```typescript
76
+ import { pipe } from "effect"
77
+ import {
78
+ People, byKey, trips, planItems, asFlight, bestFriend,
79
+ fetchCollection, fetchOne
80
+ } from "./generated"
81
+ import { Person, Trip, Flight } from "./generated"
82
+
83
+ // Navigate through relationships with pipe()
84
+ const flights = yield* pipe(
85
+ People, // Path<PersonModel, true> - collection
86
+ byKey("russellwhyte"), // Path<PersonModel, false> - single entity
87
+ trips, // Path<TripModel, true> - collection
88
+ byKey(0), // Path<TripModel, false> - single entity
89
+ planItems, // Path<PlanItemModel, true>
90
+ asFlight, // Path<FlightModel, true> - type cast
91
+ fetchCollection(Flight) // Execute the query
92
+ )
93
+
94
+ // Get a single entity
95
+ const person = yield* pipe(
96
+ People,
97
+ byKey("russellwhyte"),
98
+ fetchOne(Person)
99
+ )
100
+
101
+ // Navigate to a single related entity
102
+ const friend = yield* pipe(
103
+ People,
104
+ byKey("russellwhyte"),
105
+ bestFriend,
106
+ fetchOne(Person)
107
+ )
108
+ ```
109
+
110
+ ### Type Safety with Branded Types
111
+
112
+ The path builders use branded types to ensure type-safe navigation at compile time:
113
+
114
+ ```typescript
115
+ // Path<TEntity, IsCollection> tracks what entity type you're "at"
116
+ type Path<TEntity, IsCollection extends boolean = false> = string & {
117
+ readonly _entity: TEntity
118
+ readonly _collection: IsCollection
119
+ }
120
+
121
+ // TypeScript prevents invalid navigation:
122
+
123
+ // ✅ Valid - trips is a navigation property on Person
124
+ pipe(People, byKey("russell"), trips)
125
+
126
+ // ❌ Compile error - planItems is on Trip, not Person
127
+ pipe(People, byKey("russell"), planItems)
128
+
129
+ // ❌ Compile error - can't byKey on a single entity (not a collection)
130
+ pipe(People, byKey("russell"), byKey("other"))
131
+ ```
132
+
133
+ ### Path Builder Features
134
+
135
+ | Feature | Example |
136
+ |---------|---------|
137
+ | Entity set root | `People` → `Path<PersonModel, true>` |
138
+ | Key access | `byKey("id")` → converts collection to single |
139
+ | Navigation | `trips` → type-safe navigation to related entity |
140
+ | Type casting | `asFlight` → filter to derived type |
141
+ | Terminal ops | `fetchCollection(Schema)`, `fetchOne(Schema)` |
142
+
143
+ ### Tree-Shaking
144
+
145
+ Path builders are fully tree-shakable. Each navigation function is a separate export:
146
+
147
+ ```typescript
148
+ // Only import what you use - unused navigation functions are removed by bundler
149
+ import { People, byKey, trips } from "./generated"
150
+ ```
151
+
152
+ ### Comparison with odata2ts
153
+
154
+ If you're familiar with odata2ts, here's how the APIs compare:
155
+
156
+ ```typescript
157
+ // odata2ts (method chaining)
158
+ const response = await trippinService
159
+ .people("russellwhyte")
160
+ .trips(0)
161
+ .planItems()
162
+ .asFlightCollectionService()
163
+ .query()
164
+
165
+ // odata-effect (pipe composition)
166
+ const flights = yield* pipe(
167
+ People,
168
+ byKey("russellwhyte"),
169
+ trips,
170
+ byKey(0),
171
+ planItems,
172
+ asFlight,
173
+ fetchCollection(Flight)
174
+ )
175
+ ```
176
+
177
+ ## Query Options
178
+
179
+ Both service functions and path builders support OData query options:
180
+
181
+ ```typescript
182
+ // With service functions
183
+ const products = yield* ProductService.getAll({
184
+ $filter: "price gt 10",
185
+ $orderby: "name",
186
+ $top: 10,
187
+ $select: "id,name,price"
188
+ })
189
+
190
+ // With path builders (via fetchCollection/fetchOne)
191
+ const myTrips = yield* pipe(
192
+ People,
193
+ byKey("russellwhyte"),
194
+ trips,
195
+ (path) => fetchCollection(Trip)(path, {
196
+ $filter: "budget gt 1000",
197
+ $orderby: "startsAt desc"
198
+ })
199
+ )
200
+ ```
201
+
202
+ ## Type-Safe Query Building
203
+
204
+ Use the generated `QueryModels` for type-safe filter and orderby construction:
205
+
206
+ ```typescript
207
+ import { productQuery } from "./generated"
208
+
209
+ const query = productQuery()
210
+ .filter(q => q.price.gt(10).and(q.name.contains("Widget")))
211
+ .orderBy(q => q.name.asc())
212
+ .select("id", "name", "price")
213
+ .top(10)
214
+ .build()
215
+
216
+ const products = yield* ProductService.getAll(query)
217
+ ```
218
+
219
+ ## Promise-Based Usage
220
+
221
+ For non-Effect environments, use the `toPromise` function to convert any Effect to a Promise:
222
+
223
+ ```typescript
224
+ import { pipe } from "effect"
225
+ import { createODataRuntime } from "@odata-effect/odata-effect-promise"
226
+ import { ProductService, toPromise, People, byKey, trips, fetchCollection, Trip } from "./generated"
227
+
228
+ const runtime = createODataRuntime({
229
+ baseUrl: "https://api.example.com",
230
+ servicePath: "/odata/v4/"
231
+ })
232
+
233
+ // Service functions - pipe through toPromise
234
+ const products = await ProductService.getAll().pipe(toPromise(runtime))
235
+ const product = await ProductService.getById(123).pipe(toPromise(runtime))
236
+
237
+ // Path builders - add toPromise at the end of the pipe
238
+ const myTrips = await pipe(
239
+ People,
240
+ byKey("russellwhyte"),
241
+ trips,
242
+ fetchCollection(Trip),
243
+ toPromise(runtime)
244
+ )
245
+
246
+ // Don't forget to dispose when done
247
+ await runtime.dispose()
248
+ ```
249
+
250
+ ## Operations (Functions & Actions)
251
+
252
+ If your OData service defines FunctionImports (V2) or Functions/Actions (V4), they are generated in `Operations.ts`:
253
+
254
+ ```typescript
255
+ import { Operations } from "./generated"
256
+
257
+ // V2 FunctionImport
258
+ const result = yield* Operations.getProductsByRating({ rating: 5 })
259
+
260
+ // V4 Function (no side effects)
261
+ const airport = yield* Operations.getNearestAirport({ lat: 51.5, lon: -0.1 })
262
+
263
+ // V4 Action (may have side effects)
264
+ yield* Operations.resetDataSource()
265
+ ```
39
266
 
40
267
  ## License
41
268
 
package/dist/cjs/Cli.js CHANGED
@@ -30,6 +30,7 @@ const outputDir = /*#__PURE__*/_cli.Args.path({
30
30
  const serviceName = /*#__PURE__*/_cli.Options.text("service-name").pipe(_cli.Options.optional, /*#__PURE__*/_cli.Options.withDescription("Override service name (defaults to EntityContainer name)"));
31
31
  const packageName = /*#__PURE__*/_cli.Options.text("package-name").pipe(_cli.Options.optional, /*#__PURE__*/_cli.Options.withDescription("NPM package name (defaults to @template/<service-name>-effect)"));
32
32
  const force = /*#__PURE__*/_cli.Options.boolean("force").pipe(/*#__PURE__*/_cli.Options.withDefault(false), /*#__PURE__*/_cli.Options.withDescription("Overwrite existing files"));
33
+ const filesOnly = /*#__PURE__*/_cli.Options.boolean("files-only").pipe(/*#__PURE__*/_cli.Options.withDefault(false), /*#__PURE__*/_cli.Options.withDescription("Generate only source files (no package.json, tsconfig, etc.) directly in output-dir"));
33
34
  // ============================================================================
34
35
  // Generate Command
35
36
  // ============================================================================
@@ -38,8 +39,10 @@ const generateCommand = /*#__PURE__*/_cli.Command.make("generate", {
38
39
  outputDir,
39
40
  serviceName,
40
41
  packageName,
41
- force
42
+ force,
43
+ filesOnly
42
44
  }).pipe(/*#__PURE__*/_cli.Command.withDescription("Generate Effect OData client from metadata"), /*#__PURE__*/_cli.Command.withHandler(({
45
+ filesOnly: onlyFiles,
43
46
  force: forceOverwrite,
44
47
  metadataPath: metaPath,
45
48
  outputDir: outDir,
@@ -68,6 +71,7 @@ const generateCommand = /*#__PURE__*/_cli.Command.make("generate", {
68
71
  const config = {
69
72
  outputDir: outDir,
70
73
  force: forceOverwrite,
74
+ filesOnly: onlyFiles,
71
75
  ...(svcName._tag === "Some" ? {
72
76
  serviceName: svcName.value
73
77
  } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"Cli.js","names":["_cli","require","FileSystem","_interopRequireWildcard","Console","Effect","_Digester","_Generator","_XmlParser","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","metadataPath","Args","path","name","pipe","withDescription","outputDir","serviceName","Options","text","optional","packageName","force","boolean","withDefault","generateCommand","Command","make","withHandler","forceOverwrite","metaPath","outDir","pkgName","svcName","gen","fs","log","metadataContent","readFileString","mapError","error","Error","edmx","parseODataMetadata","dataModel","digestMetadata","version","namespace","entityTypes","size","complexTypes","enumTypes","entitySets","config","_tag","value","generate","rootCommand","withSubcommands","cli","exports","run"],"sources":["../../src/Cli.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Cli.js","names":["_cli","require","FileSystem","_interopRequireWildcard","Console","Effect","_Digester","_Generator","_XmlParser","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","metadataPath","Args","path","name","pipe","withDescription","outputDir","serviceName","Options","text","optional","packageName","force","boolean","withDefault","filesOnly","generateCommand","Command","make","withHandler","onlyFiles","forceOverwrite","metaPath","outDir","pkgName","svcName","gen","fs","log","metadataContent","readFileString","mapError","error","Error","edmx","parseODataMetadata","dataModel","digestMetadata","version","namespace","entityTypes","size","complexTypes","enumTypes","entitySets","config","_tag","value","generate","rootCommand","withSubcommands","cli","exports","run"],"sources":["../../src/Cli.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -10,10 +10,11 @@ var Effect = _interopRequireWildcard(require("effect/Effect"));
10
10
  var Schema = _interopRequireWildcard(require("effect/Schema"));
11
11
  var _IndexGenerator = require("./IndexGenerator.js");
12
12
  var _ModelsGenerator = require("./ModelsGenerator.js");
13
+ var _NavigationGenerator = require("./NavigationGenerator.js");
14
+ var _OperationsGenerator = require("./OperationsGenerator.js");
13
15
  var _PackageGenerator = require("./PackageGenerator.js");
14
16
  var _QueryModelsGenerator = require("./QueryModelsGenerator.js");
15
17
  var _ServiceFnGenerator = require("./ServiceFnGenerator.js");
16
- var _ServiceFnPromiseGenerator = require("./ServiceFnPromiseGenerator.js");
17
18
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
18
19
  /**
19
20
  * Main generator that orchestrates all code generation.
@@ -44,39 +45,47 @@ const generate = (dataModel, config) => Effect.gen(function* () {
44
45
  const outputDir = config.outputDir;
45
46
  const serviceName = config.serviceName ?? dataModel.serviceName;
46
47
  const packageName = config.packageName ?? `@template/${serviceName.toLowerCase()}-effect`;
48
+ const filesOnly = config.filesOnly ?? false;
49
+ // When filesOnly is true, output directly to outputDir; otherwise use outputDir/src
50
+ const sourceDir = filesOnly ? outputDir : path.join(outputDir, "src");
47
51
  const packageConfig = {
48
52
  packageName,
49
53
  serviceName
50
54
  };
51
55
  // Generate tree-shakable service function files
52
56
  const serviceResult = (0, _ServiceFnGenerator.generateServiceFns)(dataModel);
53
- // Generate Promise-based service function files
54
- const promiseServiceResult = (0, _ServiceFnPromiseGenerator.generatePromiseServiceFns)(dataModel);
55
- // Generate all files
56
- const files = [
57
- // Source files
58
- {
59
- path: path.join(outputDir, "src", "Models.ts"),
57
+ // Generate operations file (FunctionImports, Functions, Actions)
58
+ const operationsResult = (0, _OperationsGenerator.generateOperations)(dataModel);
59
+ // Generate navigation builders
60
+ const navigationResult = (0, _NavigationGenerator.generateNavigations)(dataModel);
61
+ // Generate source files
62
+ const sourceFiles = [{
63
+ path: path.join(sourceDir, "Models.ts"),
60
64
  content: (0, _ModelsGenerator.generateModels)(dataModel)
61
65
  }, {
62
- path: path.join(outputDir, "src", "QueryModels.ts"),
66
+ path: path.join(sourceDir, "QueryModels.ts"),
63
67
  content: (0, _QueryModelsGenerator.generateQueryModels)(dataModel)
64
68
  },
65
- // Individual entity service function files (tree-shakable)
66
- ...serviceResult.entityServices.map(svc => ({
67
- path: path.join(outputDir, "src", svc.fileName),
68
- content: svc.content
69
- })),
70
- // Promise-based entity service function files
71
- ...promiseServiceResult.entityServices.map(svc => ({
72
- path: path.join(outputDir, "src", svc.fileName),
73
- content: svc.content
69
+ // Services file (all entity CRUD services in one file)
70
+ {
71
+ path: path.join(sourceDir, serviceResult.servicesFile.fileName),
72
+ content: serviceResult.servicesFile.content
73
+ },
74
+ // Operations file (only if there are unbound operations)
75
+ ...(operationsResult.operationsFile ? [{
76
+ path: path.join(sourceDir, operationsResult.operationsFile.fileName),
77
+ content: operationsResult.operationsFile.content
78
+ }] : []),
79
+ // Navigation builder files
80
+ ...navigationResult.navigationFiles.map(nav => ({
81
+ path: path.join(sourceDir, nav.fileName),
82
+ content: nav.content
74
83
  })), {
75
- path: path.join(outputDir, "src", "index.ts"),
84
+ path: path.join(sourceDir, "index.ts"),
76
85
  content: (0, _IndexGenerator.generateIndex)(dataModel)
77
- },
78
- // Package configuration files
79
- {
86
+ }];
87
+ // Package configuration files (only when not filesOnly)
88
+ const packageFiles = filesOnly ? [] : [{
80
89
  path: path.join(outputDir, "package.json"),
81
90
  content: (0, _PackageGenerator.generatePackageJson)(dataModel, packageConfig)
82
91
  }, {
@@ -95,11 +104,12 @@ const generate = (dataModel, config) => Effect.gen(function* () {
95
104
  path: path.join(outputDir, "vitest.config.ts"),
96
105
  content: (0, _PackageGenerator.generateVitestConfig)()
97
106
  }];
98
- // Create output directories
99
- yield* fs.makeDirectory(path.join(outputDir, "src"), {
107
+ const files = [...sourceFiles, ...packageFiles];
108
+ // Create output directory
109
+ yield* fs.makeDirectory(sourceDir, {
100
110
  recursive: true
101
111
  }).pipe(Effect.mapError(error => new GeneratorError({
102
- message: `Failed to create output directory: ${outputDir}/src`,
112
+ message: `Failed to create output directory: ${sourceDir}`,
103
113
  cause: error
104
114
  })));
105
115
  // Write all files
@@ -1 +1 @@
1
- {"version":3,"file":"Generator.js","names":["FileSystem","_interopRequireWildcard","require","Path","Effect","Schema","_IndexGenerator","_ModelsGenerator","_PackageGenerator","_QueryModelsGenerator","_ServiceFnGenerator","_ServiceFnPromiseGenerator","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","GeneratorError","TaggedError","message","String","cause","optional","Unknown","exports","generate","dataModel","config","gen","fs","path","outputDir","serviceName","packageName","toLowerCase","packageConfig","serviceResult","generateServiceFns","promiseServiceResult","generatePromiseServiceFns","files","join","content","generateModels","generateQueryModels","entityServices","map","svc","fileName","generateIndex","generatePackageJson","generateTsconfig","generateTsconfigSrc","generateTsconfigTest","generateTsconfigBuild","generateVitestConfig","makeDirectory","recursive","pipe","mapError","error","file","force","exists","logWarning","writeFileString","logInfo"],"sources":["../../../src/generator/Generator.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Generator.js","names":["FileSystem","_interopRequireWildcard","require","Path","Effect","Schema","_IndexGenerator","_ModelsGenerator","_NavigationGenerator","_OperationsGenerator","_PackageGenerator","_QueryModelsGenerator","_ServiceFnGenerator","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","GeneratorError","TaggedError","message","String","cause","optional","Unknown","exports","generate","dataModel","config","gen","fs","path","outputDir","serviceName","packageName","toLowerCase","filesOnly","sourceDir","join","packageConfig","serviceResult","generateServiceFns","operationsResult","generateOperations","navigationResult","generateNavigations","sourceFiles","content","generateModels","generateQueryModels","servicesFile","fileName","operationsFile","navigationFiles","map","nav","generateIndex","packageFiles","generatePackageJson","generateTsconfig","generateTsconfigSrc","generateTsconfigTest","generateTsconfigBuild","generateVitestConfig","files","makeDirectory","recursive","pipe","mapError","error","file","force","exists","logWarning","writeFileString","logInfo"],"sources":["../../../src/generator/Generator.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -5,7 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.generateIndex = void 0;
7
7
  var _NamingHelper = require("./NamingHelper.js");
8
- var _ServiceFnPromiseGenerator = require("./ServiceFnPromiseGenerator.js");
8
+ var _NavigationGenerator = require("./NavigationGenerator.js");
9
+ var _OperationsGenerator = require("./OperationsGenerator.js");
9
10
  /**
10
11
  * Generate the index.ts file content.
11
12
  *
@@ -47,90 +48,38 @@ const generateIndex = dataModel => {
47
48
  const isLast = i === modelExports.length - 1;
48
49
  lines.push(` ${modelExports[i]}${isLast ? "" : ","}`);
49
50
  }
50
- lines.push(`} from "./Models.js"`);
51
+ lines.push(`} from "./Models"`);
51
52
  lines.push(``);
52
- // Re-export OData infrastructure
53
- const isV4 = dataModel.version === "V4";
54
- lines.push(`// Re-export OData infrastructure from @odata-effect/odata-effect`);
53
+ // Entity Services (all in one file using crud factory)
54
+ lines.push(`// Entity Services`);
55
+ lines.push(`// Use toPromise(runtime) from PathBuilders to convert Effect to Promise`);
55
56
  lines.push(`export {`);
56
- lines.push(` // Errors`);
57
- if (!isV4) {
58
- lines.push(` SapErrorDetail,`);
59
- lines.push(` SapErrorResolution,`);
60
- lines.push(` SapApplication,`);
61
- lines.push(` SapInnerError,`);
62
- lines.push(` SapErrorMessage,`);
63
- lines.push(` SapErrorBody,`);
64
- lines.push(` SapErrorResponse,`);
65
- lines.push(` SapError,`);
66
- }
67
- lines.push(` ODataError,`);
68
- lines.push(` EntityNotFoundError,`);
69
- lines.push(` ParseError,`);
70
- if (isV4) {
71
- // V4 exports
72
- lines.push(` // OData V4`);
73
- lines.push(` ODataV4,`);
74
- lines.push(` ODataV4CollectionResponse,`);
75
- lines.push(` ODataV4ValueResponse,`);
76
- lines.push(` ODataV4Annotations,`);
77
- lines.push(` ODataV4ClientConfig,`);
78
- lines.push(` buildEntityPathV4,`);
79
- lines.push(` type ODataV4QueryOptions,`);
80
- lines.push(` type ODataV4RequestOptions,`);
81
- lines.push(` type ODataV4ClientConfigService,`);
82
- lines.push(` type PagedResultV4,`);
83
- } else {
84
- // V2 exports
85
- lines.push(` // OData V2`);
86
- lines.push(` OData,`);
87
- lines.push(` ODataSingleResponse,`);
88
- lines.push(` ODataCollectionResponse,`);
89
- lines.push(` ODataCollectionResponseWithMeta,`);
90
- lines.push(` ODataValueResponse,`);
91
- lines.push(` EntityMetadata,`);
92
- lines.push(` MediaMetadata,`);
93
- lines.push(` DeferredContent,`);
94
- lines.push(` ODataClientConfig,`);
95
- lines.push(` buildEntityPath,`);
96
- lines.push(` DEFAULT_HEADERS,`);
97
- lines.push(` MERGE_HEADERS,`);
98
- lines.push(` type ODataQueryOptions,`);
99
- lines.push(` type ODataRequestOptions,`);
100
- lines.push(` type ODataClientConfigService,`);
101
- lines.push(` type PagedResult,`);
102
- }
103
- lines.push(` // Query Builder`);
104
- lines.push(` FilterExpression,`);
105
- lines.push(` StringPath,`);
106
- lines.push(` NumberPath,`);
107
- lines.push(` BooleanPath,`);
108
- lines.push(` DateTimePath,`);
109
- lines.push(` EntityPath,`);
110
- lines.push(` CollectionPath,`);
111
- lines.push(` QueryBuilder,`);
112
- lines.push(` createQueryPaths,`);
113
- lines.push(` createQueryBuilder,`);
114
- lines.push(` type FieldToPath,`);
115
- lines.push(` type QueryPaths,`);
116
- lines.push(` type SelectableKeys,`);
117
- lines.push(` type ExpandableKeys,`);
118
- lines.push(` type BuiltQuery`);
119
- lines.push(`} from "@odata-effect/odata-effect"`);
120
- lines.push(``);
121
- // Individual Entity Services (tree-shakable module namespace re-exports)
122
- lines.push(`// Individual Entity Services (tree-shakable)`);
57
+ const serviceExports = [];
123
58
  for (const entitySet of dataModel.entitySets.values()) {
124
- const serviceClassName = (0, _NamingHelper.getServiceClassName)(entitySet.name);
125
- lines.push(`export * as ${serviceClassName} from "./${serviceClassName}.js"`);
59
+ serviceExports.push((0, _NamingHelper.getServiceClassName)(entitySet.name));
126
60
  }
61
+ // Also export types
62
+ serviceExports.push(`type CrudError`);
63
+ serviceExports.push(`type CrudContext`);
64
+ serviceExports.push(`type CrudService`);
65
+ for (let i = 0; i < serviceExports.length; i++) {
66
+ const isLast = i === serviceExports.length - 1;
67
+ lines.push(` ${serviceExports[i]}${isLast ? "" : ","}`);
68
+ }
69
+ lines.push(`} from "./Services"`);
127
70
  lines.push(``);
128
- // Promise-based Entity Services (for non-Effect environments)
129
- lines.push(`// Promise-based Entity Services (for non-Effect environments)`);
130
- for (const entitySet of dataModel.entitySets.values()) {
131
- const promiseServiceName = (0, _ServiceFnPromiseGenerator.getPromiseServiceName)(entitySet.name);
132
- lines.push(`export * as ${promiseServiceName} from "./${promiseServiceName}.js"`);
71
+ // Operations (FunctionImports, Functions, Actions) - only if there are unbound operations
72
+ const hasUnboundOperations = Array.from(dataModel.operations.values()).some(op => !op.isBound);
73
+ if (hasUnboundOperations) {
74
+ lines.push(`// Operations (FunctionImports, Functions, Actions)`);
75
+ const operationsModuleName = (0, _OperationsGenerator.getOperationsModuleName)();
76
+ lines.push(`export * as ${operationsModuleName} from "./${operationsModuleName}"`);
77
+ lines.push(``);
133
78
  }
79
+ // Path Builders (tree-shakable navigation)
80
+ lines.push(`// Path Builders (tree-shakable navigation)`);
81
+ const pathBuildersModuleName = (0, _NavigationGenerator.getPathBuildersModuleName)();
82
+ lines.push(`export * from "./${pathBuildersModuleName}"`);
134
83
  lines.push(``);
135
84
  // Query Models
136
85
  lines.push(`// Query Models`);
@@ -157,7 +106,7 @@ const generateIndex = dataModel => {
157
106
  const isLast = i === queryExports.length - 1;
158
107
  lines.push(` ${queryExports[i]}${isLast ? "" : ","}`);
159
108
  }
160
- lines.push(`} from "./QueryModels.js"`);
109
+ lines.push(`} from "./QueryModels"`);
161
110
  return lines.join("\n");
162
111
  };
163
112
  exports.generateIndex = generateIndex;
@@ -1 +1 @@
1
- {"version":3,"file":"IndexGenerator.js","names":["_NamingHelper","require","_ServiceFnPromiseGenerator","generateIndex","dataModel","lines","push","serviceName","modelExports","enumType","enumTypes","values","name","complexType","complexTypes","getEditableTypeName","entityType","entityTypes","keys","length","getIdTypeName","i","isLast","isV4","version","entitySet","entitySets","serviceClassName","getServiceClassName","promiseServiceName","getPromiseServiceName","queryExports","getQueryInstanceName","getQueryInterfaceName","get","entityTypeFqName","getQueryFactoryName","join","exports"],"sources":["../../../src/generator/IndexGenerator.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"IndexGenerator.js","names":["_NamingHelper","require","_NavigationGenerator","_OperationsGenerator","generateIndex","dataModel","lines","push","serviceName","modelExports","enumType","enumTypes","values","name","complexType","complexTypes","getEditableTypeName","entityType","entityTypes","keys","length","getIdTypeName","i","isLast","serviceExports","entitySet","entitySets","getServiceClassName","hasUnboundOperations","Array","from","operations","some","op","isBound","operationsModuleName","getOperationsModuleName","pathBuildersModuleName","getPathBuildersModuleName","queryExports","getQueryInstanceName","getQueryInterfaceName","get","entityTypeFqName","getQueryFactoryName","join","exports"],"sources":["../../../src/generator/IndexGenerator.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -179,15 +179,12 @@ const generateEntityType = (entityType, dataModel) => {
179
179
  lines.push(` Schema.Struct({ ${key.name}: ${keySchema} })`);
180
180
  lines.push(`)`);
181
181
  } else {
182
- // Composite key
182
+ // Composite key - only struct form makes sense
183
183
  const keyFields = entityType.keys.map(k => {
184
184
  const schema = getPropertySchemaType(k, false);
185
185
  return `${k.name}: ${schema}`;
186
186
  });
187
- lines.push(`export const ${idTypeName} = Schema.Union(`);
188
- lines.push(` Schema.String,`);
189
- lines.push(` Schema.Struct({ ${keyFields.join(", ")} })`);
190
- lines.push(`)`);
187
+ lines.push(`export const ${idTypeName} = Schema.Struct({ ${keyFields.join(", ")} })`);
191
188
  }
192
189
  lines.push(`export type ${idTypeName} = Schema.Schema.Type<typeof ${idTypeName}>`);
193
190
  }