@skmtc/core 0.0.371 → 0.0.373

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/esm/mod.d.ts CHANGED
@@ -39,7 +39,6 @@ export * from './oas/schema/Schema.js';
39
39
  export * from './oas/string/String.js';
40
40
  export * from './oas/tag/Tag.js';
41
41
  export * from './oas/void/Void.js';
42
- export * from './server/createServer.js';
43
42
  export * from './transform/transform.js';
44
43
  export * from './types/CustomValue.js';
45
44
  export * from './types/GeneratedValue.js';
package/esm/mod.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,oCAAoC,CAAA;AAClD,cAAc,wCAAwC,CAAA;AACtD,cAAc,oCAAoC,CAAA;AAClD,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qCAAqC,CAAA;AACnD,cAAc,sCAAsC,CAAA;AACpD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,kBAAkB,CAAA;AAChC,cAAc,kCAAkC,CAAA;AAChD,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mCAAmC,CAAA;AACjD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uCAAuC,CAAA;AACrD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,iCAAiC,CAAA"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,oCAAoC,CAAA;AAClD,cAAc,wCAAwC,CAAA;AACtD,cAAc,oCAAoC,CAAA;AAClD,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qCAAqC,CAAA;AACnD,cAAc,sCAAsC,CAAA;AACpD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,kBAAkB,CAAA;AAChC,cAAc,kCAAkC,CAAA;AAChD,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mCAAmC,CAAA;AACjD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uCAAuC,CAAA;AACrD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,iCAAiC,CAAA"}
package/esm/mod.js CHANGED
@@ -39,7 +39,6 @@ export * from './oas/schema/Schema.js';
39
39
  export * from './oas/string/String.js';
40
40
  export * from './oas/tag/Tag.js';
41
41
  export * from './oas/void/Void.js';
42
- export * from './server/createServer.js';
43
42
  export * from './transform/transform.js';
44
43
  export * from './types/CustomValue.js';
45
44
  export * from './types/GeneratedValue.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skmtc/core",
3
- "version": "0.0.371",
3
+ "version": "0.0.373",
4
4
  "main": "./script/mod.js",
5
5
  "module": "./esm/mod.js",
6
6
  "exports": {
@@ -48,7 +48,6 @@
48
48
  "@babel/helper-validator-identifier": "7.22.20",
49
49
  "@sentry/deno": "8.26.0",
50
50
  "@types/babel__helper-validator-identifier": "7.15.2",
51
- "hono": "4.5.6",
52
51
  "lodash-es": "4.17.21",
53
52
  "openapi-types": "12.1.3",
54
53
  "tiny-invariant": "1.3.3",
package/script/mod.d.ts CHANGED
@@ -39,7 +39,6 @@ export * from './oas/schema/Schema.js';
39
39
  export * from './oas/string/String.js';
40
40
  export * from './oas/tag/Tag.js';
41
41
  export * from './oas/void/Void.js';
42
- export * from './server/createServer.js';
43
42
  export * from './transform/transform.js';
44
43
  export * from './types/CustomValue.js';
45
44
  export * from './types/GeneratedValue.js';
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,oCAAoC,CAAA;AAClD,cAAc,wCAAwC,CAAA;AACtD,cAAc,oCAAoC,CAAA;AAClD,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qCAAqC,CAAA;AACnD,cAAc,sCAAsC,CAAA;AACpD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,kBAAkB,CAAA;AAChC,cAAc,kCAAkC,CAAA;AAChD,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mCAAmC,CAAA;AACjD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uCAAuC,CAAA;AACrD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,iCAAiC,CAAA"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,oCAAoC,CAAA;AAClD,cAAc,wCAAwC,CAAA;AACtD,cAAc,oCAAoC,CAAA;AAClD,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qCAAqC,CAAA;AACnD,cAAc,sCAAsC,CAAA;AACpD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,kBAAkB,CAAA;AAChC,cAAc,kCAAkC,CAAA;AAChD,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mCAAmC,CAAA;AACjD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uCAAuC,CAAA;AACrD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,iCAAiC,CAAA"}
package/script/mod.js CHANGED
@@ -55,7 +55,6 @@ __exportStar(require("./oas/schema/Schema.js"), exports);
55
55
  __exportStar(require("./oas/string/String.js"), exports);
56
56
  __exportStar(require("./oas/tag/Tag.js"), exports);
57
57
  __exportStar(require("./oas/void/Void.js"), exports);
58
- __exportStar(require("./server/createServer.js"), exports);
59
58
  __exportStar(require("./transform/transform.js"), exports);
60
59
  __exportStar(require("./types/CustomValue.js"), exports);
61
60
  __exportStar(require("./types/GeneratedValue.js"), exports);
@@ -1,5 +0,0 @@
1
- import { Hono } from 'hono';
2
- import type { OperationGateway } from '../dsl/operation/OperationInsertable.js';
3
- import type { ModelGateway } from '../dsl/model/ModelInsertable.js';
4
- export declare const createServer: (generators: (OperationGateway | ModelGateway)[]) => Hono;
5
- //# sourceMappingURL=createServer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createServer.d.ts","sourceRoot":"","sources":["../../src/server/createServer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAK3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAA;AAC/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAkBnE,eAAO,MAAM,YAAY,eACX,CAAC,gBAAgB,GAAG,YAAY,CAAC,EAAE,KAC9C,IA0GF,CAAA"}
@@ -1,112 +0,0 @@
1
- import * as Sentry from '@sentry/deno';
2
- import { Hono } from 'hono';
3
- import { match } from 'ts-pattern';
4
- import { z } from 'zod';
5
- import { clientSettings as settingsSchema } from '../types/Settings.js';
6
- import { transform } from '../transform/transform.js';
7
- import { CoreContext } from '../context/CoreContext.js';
8
- const postSettingsBody = z.object({
9
- defaultSelected: z.boolean().optional(),
10
- schema: z.string(),
11
- clientSettings: settingsSchema.optional()
12
- });
13
- const postGenerateBody = z.object({
14
- schema: z.string(),
15
- clientSettings: settingsSchema.optional(),
16
- prettier: z.record(z.unknown()).optional()
17
- });
18
- export const createServer = (generators) => {
19
- const app = new Hono();
20
- app.post('/artifacts', async (c) => {
21
- const startAt = Date.now();
22
- const result = await Sentry.startSpan({ name: 'POST /artifacts' }, async (span) => {
23
- const body = await Sentry.startSpan({ name: 'Parse JSON' }, () => c.req.json());
24
- const { schema, clientSettings, prettier } = await Sentry.startSpan({ name: 'Validate request content' }, () => postGenerateBody.parseAsync(body));
25
- return Sentry.startSpan({ name: 'Generate' }, () => {
26
- const generatorsMap = Object.fromEntries(generators.map(generator => [generator.id, generator]));
27
- const { traceId, spanId } = span.spanContext();
28
- const { artifacts, manifest } = transform({
29
- traceId,
30
- spanId,
31
- startAt,
32
- schema,
33
- prettier,
34
- settings: clientSettings,
35
- generatorsMap
36
- });
37
- return { artifacts, manifest };
38
- });
39
- });
40
- return c.json(result);
41
- });
42
- app.get('/generators', c => {
43
- return Sentry.startSpan({ name: 'GET /generators' }, () => c.json({ generators }));
44
- });
45
- app.post('/settings', async (c) => {
46
- return await Sentry.startSpan({ name: 'POST /settings' }, async (span) => {
47
- const body = await c.req.json();
48
- const { clientSettings, defaultSelected = false } = postSettingsBody.parse(body);
49
- const oasDocument = toOasDocument({
50
- schema: body.schema,
51
- spanId: span.spanContext().spanId
52
- });
53
- const out = generators.map(generator => {
54
- const generatorSettings = clientSettings?.generators.find(({ id }) => id === generator.id);
55
- const generatorType = generator.type;
56
- return match(generatorType)
57
- .with('operation', () => ({
58
- ...generatorSettings,
59
- id: generator.id,
60
- operations: toOperations({
61
- generator: generator,
62
- oasDocument,
63
- defaultSelected,
64
- operationsSettings: generatorSettings && 'operations' in generatorSettings
65
- ? generatorSettings.operations
66
- : undefined
67
- })
68
- }))
69
- .with('model', () => ({
70
- ...generatorSettings,
71
- id: generator.id,
72
- models: toModels({
73
- oasDocument,
74
- defaultSelected,
75
- modelsSettings: generatorSettings && 'models' in generatorSettings
76
- ? generatorSettings.models
77
- : undefined
78
- })
79
- }))
80
- .otherwise(matched => {
81
- throw new Error(`Invalid generator type: '${matched}' for ${generator.id}`);
82
- });
83
- });
84
- return c.json({ generators: out });
85
- });
86
- });
87
- return app;
88
- };
89
- const toModels = ({ defaultSelected, oasDocument, modelsSettings }) => {
90
- return Object.fromEntries(Object.keys(oasDocument.components?.schemas ?? {}).map(refName => [
91
- refName,
92
- modelsSettings?.[refName]
93
- ? modelsSettings?.[refName]
94
- : { selected: defaultSelected }
95
- ]));
96
- };
97
- const toOperations = ({ generator, oasDocument, operationsSettings, defaultSelected }) => {
98
- return Object.values(oasDocument.operations)
99
- .filter(operation => generator.isSupported(operation))
100
- .reduce((acc, operation) => {
101
- const { path, method } = operation;
102
- acc[path] = acc[path] ?? {};
103
- acc[path][method] = operationsSettings?.[path]?.[method]
104
- ? operationsSettings?.[path]?.[method]
105
- : { selected: defaultSelected };
106
- return acc;
107
- }, {});
108
- };
109
- const toOasDocument = ({ schema, spanId }) => {
110
- const context = new CoreContext({ spanId });
111
- return context.parse(schema);
112
- };
@@ -1,5 +0,0 @@
1
- import { Hono } from 'hono';
2
- import type { OperationGateway } from '../dsl/operation/OperationInsertable.js';
3
- import type { ModelGateway } from '../dsl/model/ModelInsertable.js';
4
- export declare const createServer: (generators: (OperationGateway | ModelGateway)[]) => Hono;
5
- //# sourceMappingURL=createServer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createServer.d.ts","sourceRoot":"","sources":["../../src/server/createServer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAK3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAA;AAC/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAkBnE,eAAO,MAAM,YAAY,eACX,CAAC,gBAAgB,GAAG,YAAY,CAAC,EAAE,KAC9C,IA0GF,CAAA"}
@@ -1,139 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.createServer = void 0;
27
- const Sentry = __importStar(require("@sentry/deno"));
28
- const hono_1 = require("hono");
29
- const ts_pattern_1 = require("ts-pattern");
30
- const zod_1 = require("zod");
31
- const Settings_js_1 = require("../types/Settings.js");
32
- const transform_js_1 = require("../transform/transform.js");
33
- const CoreContext_js_1 = require("../context/CoreContext.js");
34
- const postSettingsBody = zod_1.z.object({
35
- defaultSelected: zod_1.z.boolean().optional(),
36
- schema: zod_1.z.string(),
37
- clientSettings: Settings_js_1.clientSettings.optional()
38
- });
39
- const postGenerateBody = zod_1.z.object({
40
- schema: zod_1.z.string(),
41
- clientSettings: Settings_js_1.clientSettings.optional(),
42
- prettier: zod_1.z.record(zod_1.z.unknown()).optional()
43
- });
44
- const createServer = (generators) => {
45
- const app = new hono_1.Hono();
46
- app.post('/artifacts', async (c) => {
47
- const startAt = Date.now();
48
- const result = await Sentry.startSpan({ name: 'POST /artifacts' }, async (span) => {
49
- const body = await Sentry.startSpan({ name: 'Parse JSON' }, () => c.req.json());
50
- const { schema, clientSettings, prettier } = await Sentry.startSpan({ name: 'Validate request content' }, () => postGenerateBody.parseAsync(body));
51
- return Sentry.startSpan({ name: 'Generate' }, () => {
52
- const generatorsMap = Object.fromEntries(generators.map(generator => [generator.id, generator]));
53
- const { traceId, spanId } = span.spanContext();
54
- const { artifacts, manifest } = (0, transform_js_1.transform)({
55
- traceId,
56
- spanId,
57
- startAt,
58
- schema,
59
- prettier,
60
- settings: clientSettings,
61
- generatorsMap
62
- });
63
- return { artifacts, manifest };
64
- });
65
- });
66
- return c.json(result);
67
- });
68
- app.get('/generators', c => {
69
- return Sentry.startSpan({ name: 'GET /generators' }, () => c.json({ generators }));
70
- });
71
- app.post('/settings', async (c) => {
72
- return await Sentry.startSpan({ name: 'POST /settings' }, async (span) => {
73
- const body = await c.req.json();
74
- const { clientSettings, defaultSelected = false } = postSettingsBody.parse(body);
75
- const oasDocument = toOasDocument({
76
- schema: body.schema,
77
- spanId: span.spanContext().spanId
78
- });
79
- const out = generators.map(generator => {
80
- const generatorSettings = clientSettings?.generators.find(({ id }) => id === generator.id);
81
- const generatorType = generator.type;
82
- return (0, ts_pattern_1.match)(generatorType)
83
- .with('operation', () => ({
84
- ...generatorSettings,
85
- id: generator.id,
86
- operations: toOperations({
87
- generator: generator,
88
- oasDocument,
89
- defaultSelected,
90
- operationsSettings: generatorSettings && 'operations' in generatorSettings
91
- ? generatorSettings.operations
92
- : undefined
93
- })
94
- }))
95
- .with('model', () => ({
96
- ...generatorSettings,
97
- id: generator.id,
98
- models: toModels({
99
- oasDocument,
100
- defaultSelected,
101
- modelsSettings: generatorSettings && 'models' in generatorSettings
102
- ? generatorSettings.models
103
- : undefined
104
- })
105
- }))
106
- .otherwise(matched => {
107
- throw new Error(`Invalid generator type: '${matched}' for ${generator.id}`);
108
- });
109
- });
110
- return c.json({ generators: out });
111
- });
112
- });
113
- return app;
114
- };
115
- exports.createServer = createServer;
116
- const toModels = ({ defaultSelected, oasDocument, modelsSettings }) => {
117
- return Object.fromEntries(Object.keys(oasDocument.components?.schemas ?? {}).map(refName => [
118
- refName,
119
- modelsSettings?.[refName]
120
- ? modelsSettings?.[refName]
121
- : { selected: defaultSelected }
122
- ]));
123
- };
124
- const toOperations = ({ generator, oasDocument, operationsSettings, defaultSelected }) => {
125
- return Object.values(oasDocument.operations)
126
- .filter(operation => generator.isSupported(operation))
127
- .reduce((acc, operation) => {
128
- const { path, method } = operation;
129
- acc[path] = acc[path] ?? {};
130
- acc[path][method] = operationsSettings?.[path]?.[method]
131
- ? operationsSettings?.[path]?.[method]
132
- : { selected: defaultSelected };
133
- return acc;
134
- }, {});
135
- };
136
- const toOasDocument = ({ schema, spanId }) => {
137
- const context = new CoreContext_js_1.CoreContext({ spanId });
138
- return context.parse(schema);
139
- };