@dbos-inc/dbos-sdk 0.10.6-preview → 0.10.12-preview.gd659422f8d

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 (101) hide show
  1. package/dist/src/dbos-executor.d.ts +1 -1
  2. package/dist/src/dbos-executor.d.ts.map +1 -1
  3. package/dist/src/testing/testing_runtime.d.ts +2 -0
  4. package/dist/src/testing/testing_runtime.d.ts.map +1 -1
  5. package/dist/src/testing/testing_runtime.js +4 -1
  6. package/dist/src/testing/testing_runtime.js.map +1 -1
  7. package/dist/tsconfig.build.tsbuildinfo +1 -1
  8. package/examples/hello/migrations/20240212161006_create_dbos_hello_tables.js +2 -0
  9. package/package.json +1 -1
  10. package/dist/packages/communicator-bcrypt/index.d.ts +0 -8
  11. package/dist/packages/communicator-bcrypt/index.d.ts.map +0 -1
  12. package/dist/packages/communicator-bcrypt/index.js +0 -43
  13. package/dist/packages/communicator-bcrypt/index.js.map +0 -1
  14. package/dist/packages/communicator-datetime/index.d.ts +0 -7
  15. package/dist/packages/communicator-datetime/index.d.ts.map +0 -1
  16. package/dist/packages/communicator-datetime/index.js +0 -35
  17. package/dist/packages/communicator-datetime/index.js.map +0 -1
  18. package/dist/packages/communicator-random/index.d.ts +0 -6
  19. package/dist/packages/communicator-random/index.d.ts.map +0 -1
  20. package/dist/packages/communicator-random/index.js +0 -26
  21. package/dist/packages/communicator-random/index.js.map +0 -1
  22. package/dist/packages/dbos-cloud/applications/delete-app.d.ts +0 -2
  23. package/dist/packages/dbos-cloud/applications/delete-app.d.ts.map +0 -1
  24. package/dist/packages/dbos-cloud/applications/delete-app.js +0 -41
  25. package/dist/packages/dbos-cloud/applications/delete-app.js.map +0 -1
  26. package/dist/packages/dbos-cloud/applications/deploy-app-code.d.ts +0 -2
  27. package/dist/packages/dbos-cloud/applications/deploy-app-code.d.ts.map +0 -1
  28. package/dist/packages/dbos-cloud/applications/deploy-app-code.js +0 -161
  29. package/dist/packages/dbos-cloud/applications/deploy-app-code.js.map +0 -1
  30. package/dist/packages/dbos-cloud/applications/get-app-info.d.ts +0 -2
  31. package/dist/packages/dbos-cloud/applications/get-app-info.d.ts.map +0 -1
  32. package/dist/packages/dbos-cloud/applications/get-app-info.js +0 -54
  33. package/dist/packages/dbos-cloud/applications/get-app-info.js.map +0 -1
  34. package/dist/packages/dbos-cloud/applications/get-app-logs.d.ts +0 -2
  35. package/dist/packages/dbos-cloud/applications/get-app-logs.d.ts.map +0 -1
  36. package/dist/packages/dbos-cloud/applications/get-app-logs.js +0 -53
  37. package/dist/packages/dbos-cloud/applications/get-app-logs.js.map +0 -1
  38. package/dist/packages/dbos-cloud/applications/index.d.ts +0 -7
  39. package/dist/packages/dbos-cloud/applications/index.d.ts.map +0 -1
  40. package/dist/packages/dbos-cloud/applications/index.js +0 -16
  41. package/dist/packages/dbos-cloud/applications/index.js.map +0 -1
  42. package/dist/packages/dbos-cloud/applications/list-apps.d.ts +0 -2
  43. package/dist/packages/dbos-cloud/applications/list-apps.d.ts.map +0 -1
  44. package/dist/packages/dbos-cloud/applications/list-apps.js +0 -54
  45. package/dist/packages/dbos-cloud/applications/list-apps.js.map +0 -1
  46. package/dist/packages/dbos-cloud/applications/register-app.d.ts +0 -2
  47. package/dist/packages/dbos-cloud/applications/register-app.d.ts.map +0 -1
  48. package/dist/packages/dbos-cloud/applications/register-app.js +0 -46
  49. package/dist/packages/dbos-cloud/applications/register-app.js.map +0 -1
  50. package/dist/packages/dbos-cloud/applications/types.d.ts +0 -9
  51. package/dist/packages/dbos-cloud/applications/types.d.ts.map +0 -1
  52. package/dist/packages/dbos-cloud/applications/types.js +0 -3
  53. package/dist/packages/dbos-cloud/applications/types.js.map +0 -1
  54. package/dist/packages/dbos-cloud/applications/update-app.d.ts +0 -2
  55. package/dist/packages/dbos-cloud/applications/update-app.d.ts.map +0 -1
  56. package/dist/packages/dbos-cloud/applications/update-app.js +0 -45
  57. package/dist/packages/dbos-cloud/applications/update-app.js.map +0 -1
  58. package/dist/packages/dbos-cloud/cli.d.ts +0 -3
  59. package/dist/packages/dbos-cloud/cli.d.ts.map +0 -1
  60. package/dist/packages/dbos-cloud/cli.js +0 -155
  61. package/dist/packages/dbos-cloud/cli.js.map +0 -1
  62. package/dist/packages/dbos-cloud/cloudutils.d.ts +0 -29
  63. package/dist/packages/dbos-cloud/cloudutils.d.ts.map +0 -1
  64. package/dist/packages/dbos-cloud/cloudutils.js +0 -138
  65. package/dist/packages/dbos-cloud/cloudutils.js.map +0 -1
  66. package/dist/packages/dbos-cloud/login.d.ts +0 -2
  67. package/dist/packages/dbos-cloud/login.d.ts.map +0 -1
  68. package/dist/packages/dbos-cloud/login.js +0 -103
  69. package/dist/packages/dbos-cloud/login.js.map +0 -1
  70. package/dist/packages/dbos-cloud/register.d.ts +0 -2
  71. package/dist/packages/dbos-cloud/register.d.ts.map +0 -1
  72. package/dist/packages/dbos-cloud/register.js +0 -75
  73. package/dist/packages/dbos-cloud/register.js.map +0 -1
  74. package/dist/packages/dbos-cloud/userdb.d.ts +0 -13
  75. package/dist/packages/dbos-cloud/userdb.d.ts.map +0 -1
  76. package/dist/packages/dbos-cloud/userdb.js +0 -153
  77. package/dist/packages/dbos-cloud/userdb.js.map +0 -1
  78. package/dist/packages/dbos-openapi/TypeParser.d.ts +0 -36
  79. package/dist/packages/dbos-openapi/TypeParser.d.ts.map +0 -1
  80. package/dist/packages/dbos-openapi/TypeParser.js +0 -162
  81. package/dist/packages/dbos-openapi/TypeParser.js.map +0 -1
  82. package/dist/packages/dbos-openapi/cli.d.ts +0 -3
  83. package/dist/packages/dbos-openapi/cli.d.ts.map +0 -1
  84. package/dist/packages/dbos-openapi/cli.js +0 -32
  85. package/dist/packages/dbos-openapi/cli.js.map +0 -1
  86. package/dist/packages/dbos-openapi/openApi.d.ts +0 -36
  87. package/dist/packages/dbos-openapi/openApi.d.ts.map +0 -1
  88. package/dist/packages/dbos-openapi/openApi.js +0 -566
  89. package/dist/packages/dbos-openapi/openApi.js.map +0 -1
  90. package/dist/packages/dbos-openapi/tests/makeProgram.d.ts +0 -3
  91. package/dist/packages/dbos-openapi/tests/makeProgram.d.ts.map +0 -1
  92. package/dist/packages/dbos-openapi/tests/makeProgram.js +0 -71
  93. package/dist/packages/dbos-openapi/tests/makeProgram.js.map +0 -1
  94. package/dist/packages/dbos-openapi/tests/openapi.test.d.ts +0 -2
  95. package/dist/packages/dbos-openapi/tests/openapi.test.d.ts.map +0 -1
  96. package/dist/packages/dbos-openapi/tests/openapi.test.js +0 -373
  97. package/dist/packages/dbos-openapi/tests/openapi.test.js.map +0 -1
  98. package/dist/packages/dbos-openapi/tsDiagUtil.d.ts +0 -16
  99. package/dist/packages/dbos-openapi/tsDiagUtil.d.ts.map +0 -1
  100. package/dist/packages/dbos-openapi/tsDiagUtil.js +0 -72
  101. package/dist/packages/dbos-openapi/tsDiagUtil.js.map +0 -1
@@ -1,36 +0,0 @@
1
- import ts from 'typescript';
2
- import { DecoratorInfo, MethodInfo, ClassInfo, ParameterInfo } from './TypeParser';
3
- import { ArgSources } from "../../src/httpServer/handlerTypes";
4
- import { APITypes } from "../../src/httpServer/handlerTypes";
5
- import { Schema } from 'ts-json-schema-generator';
6
- import { OpenAPIV3 as OpenApi3 } from 'openapi-types';
7
- interface HttpEndpointInfo {
8
- verb: APITypes;
9
- path: string;
10
- }
11
- export declare class OpenApiGenerator {
12
- #private;
13
- readonly program: ts.Program;
14
- get diags(): readonly ts.Diagnostic[];
15
- constructor(program: ts.Program);
16
- generate(classes: readonly ClassInfo[], title: string, version: string): OpenApi3.Document | undefined;
17
- generatePath(method: MethodInfo, { verb, path }: HttpEndpointInfo, defaultRoles: readonly string[], securityScheme: string | undefined): [string, OpenApi3.PathItemObject] | undefined;
18
- getMethodReturnType(node: ts.MethodDeclaration): ts.Type | undefined;
19
- generateResponse(method: MethodInfo): [string, OpenApi3.ResponseObject] | undefined;
20
- generateParameters(sourcedParams: [ParameterInfo, ArgSources][]): OpenApi3.ParameterObject[];
21
- generateParameter(parameter: ParameterInfo, argSource: ArgSources): OpenApi3.ParameterObject | undefined;
22
- getLocation(parameter: ParameterInfo, argSource: ArgSources): "query" | "path" | undefined;
23
- generateRequestBody(sourcedParams: [ParameterInfo, ArgSources][]): OpenApi3.RequestBodyObject | undefined;
24
- generateSchema(node?: ts.Node): OpenApi3.SchemaObject | OpenApi3.ReferenceObject | undefined;
25
- getDBOSDecorator(decorated: MethodInfo | ParameterInfo | ClassInfo, name: string): DecoratorInfo | undefined;
26
- getHttpInfo(method: MethodInfo): HttpEndpointInfo | undefined;
27
- getParamSource(parameter: ParameterInfo, verb: APITypes): ArgSources.BODY | ArgSources.QUERY | ArgSources.URL | undefined;
28
- getParamName(parameter: ParameterInfo): string | undefined;
29
- mapSchema(schema: Schema): OpenApi3.SchemaObject | OpenApi3.ReferenceObject | undefined;
30
- parseStringLiteralArray(node: ts.Expression | undefined): string[] | undefined;
31
- parseSecurityScheme(arg?: ts.Expression): SecurityScheme | undefined;
32
- }
33
- type SecurityScheme = Exclude<OpenApi3.SecuritySchemeObject, OpenApi3.OAuth2SecurityScheme>;
34
- export declare function generateOpenApi(entrypoint: string): Promise<OpenApi3.Document | undefined>;
35
- export {};
36
- //# sourceMappingURL=openApi.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openApi.d.ts","sourceRoot":"","sources":["../../../packages/dbos-openapi/openApi.ts"],"names":[],"mappings":"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"}
@@ -1,566 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.generateOpenApi = exports.OpenApiGenerator = void 0;
7
- const typescript_1 = __importDefault(require("typescript"));
8
- const TypeParser_1 = require("./TypeParser");
9
- const handlerTypes_1 = require("../../src/httpServer/handlerTypes");
10
- const handlerTypes_2 = require("../../src/httpServer/handlerTypes");
11
- const ts_json_schema_generator_1 = require("ts-json-schema-generator");
12
- const tsDiagUtil_1 = require("./tsDiagUtil");
13
- function isValid(value) { return value !== undefined; }
14
- // ts-json-schema-generator does not support BigInt, so OpenApiGenerator needs a custom type, formatter and parser for it
15
- class BigIntType extends ts_json_schema_generator_1.PrimitiveType {
16
- getId() { return "integer"; }
17
- }
18
- class BigIntKeywordParser {
19
- supportsNode(node) {
20
- return node.kind === typescript_1.default.SyntaxKind.BigIntKeyword;
21
- }
22
- createType(_node, _context, _reference) {
23
- return new BigIntType();
24
- }
25
- }
26
- class BigIntTypeFormatter {
27
- supportsType(type) {
28
- return type instanceof BigIntType;
29
- }
30
- getDefinition(_type) {
31
- // Note, JSON Schema integer type is not constrained to a specific size, so it is a valid type for BigInt
32
- return { type: "integer", description: "bigint" };
33
- }
34
- getChildren(_type) {
35
- return [];
36
- }
37
- }
38
- // type guard functions for ts.Type/TypeNode
39
- function isNodeWithTypeArguments(node) {
40
- return "typeArguments" in node;
41
- }
42
- function isObjectType(node) {
43
- return !!(node.flags & typescript_1.default.TypeFlags.Object);
44
- }
45
- function isTypeReference(node) {
46
- return isObjectType(node) && !!(node.objectFlags & typescript_1.default.ObjectFlags.Reference);
47
- }
48
- // workflow UUID header parameter info which is added to every generated endpoint
49
- const workflowUuidParamName = "dbosWorkflowUUID";
50
- const workflowUuidRef = { $ref: `#/components/parameters/${workflowUuidParamName}` };
51
- const workflowUuidParam = [workflowUuidParamName, {
52
- name: 'dbos-workflowuuid',
53
- in: 'header',
54
- required: false,
55
- description: "Caller specified [workflow idempotency key](https://docs.dbos.dev/tutorials/idempotency-tutorial#setting-idempotency-keys)",
56
- schema: { type: 'string' },
57
- }];
58
- class OpenApiGenerator {
59
- program;
60
- #checker;
61
- #schemaGenerator;
62
- #schemaMap = new Map();
63
- #securitySchemeMap = new Map();
64
- #diags = new tsDiagUtil_1.DiagnosticsCollector();
65
- get diags() { return this.#diags.diags; }
66
- constructor(program) {
67
- this.program = program;
68
- this.#checker = program.getTypeChecker();
69
- const config = {
70
- discriminatorType: 'open-api',
71
- encodeRefs: false
72
- };
73
- const parser = (0, ts_json_schema_generator_1.createParser)(program, config, aug => aug.addNodeParser(new BigIntKeywordParser()));
74
- const formatter = (0, ts_json_schema_generator_1.createFormatter)(config, (fmt) => fmt.addTypeFormatter(new BigIntTypeFormatter()));
75
- this.#schemaGenerator = new ts_json_schema_generator_1.SchemaGenerator(program, parser, formatter, {});
76
- }
77
- generate(classes, title, version) {
78
- const paths = new Array();
79
- classes.forEach((cls, index) => {
80
- // if the class name is not specified, manufacture a name using the class index as the prefix
81
- // JS class identifiers cannot start with a digit but OpenApi security scheme names can
82
- const securitySchemeName = cls.name ? `${cls.name}Auth` : `${index}ClassAuth`;
83
- const securitySchemeDecorator = this.getDBOSDecorator(cls, 'OpenApiSecurityScheme');
84
- const securityScheme = this.parseSecurityScheme(securitySchemeDecorator?.args[0]);
85
- const defaultRoles = this.parseStringLiteralArray(this.getDBOSDecorator(cls, 'DefaultRequiredRole')?.args[0]) ?? [];
86
- if (securityScheme) {
87
- this.#securitySchemeMap.set(securitySchemeName, securityScheme);
88
- }
89
- for (const method of cls.methods) {
90
- const http = this.getHttpInfo(method);
91
- if (!http)
92
- continue;
93
- const path = this.generatePath(method, http, defaultRoles, securityScheme ? securitySchemeName : undefined);
94
- if (path)
95
- paths.push(path);
96
- }
97
- });
98
- const openApi = {
99
- openapi: "3.0.3", // https://spec.openapis.org/oas/v3.0.3
100
- info: { title, version },
101
- paths: Object.fromEntries(paths),
102
- components: {
103
- parameters: Object.fromEntries([workflowUuidParam]),
104
- schemas: Object.fromEntries(this.#schemaMap),
105
- securitySchemes: Object.fromEntries(this.#securitySchemeMap)
106
- }
107
- };
108
- return (0, tsDiagUtil_1.diagResult)(openApi, this.diags);
109
- }
110
- generatePath(method, { verb, path }, defaultRoles, securityScheme) {
111
- const sourcedParams = method.parameters
112
- // The first parameter of a handle method must be an DBOSContext, which is not exposed via the API
113
- .slice(1)
114
- .map(p => [p, this.getParamSource(p, verb)]);
115
- const parameters = this.generateParameters(sourcedParams);
116
- // add optional parameter for workflow UUID header
117
- parameters.push(workflowUuidRef);
118
- const requestBody = this.generateRequestBody(sourcedParams);
119
- const response = this.generateResponse(method);
120
- if (!response)
121
- return;
122
- // if there is a security scheme specified, create a security requirement for it
123
- // unless the method has no required roles
124
- const security = new Array();
125
- if (securityScheme) {
126
- const roles = this.parseStringLiteralArray(this.getDBOSDecorator(method, 'RequiredRole')?.args[0]) ?? defaultRoles;
127
- if (roles.length > 0) {
128
- security.push({ [securityScheme]: [] });
129
- }
130
- }
131
- const operation = {
132
- operationId: method.name,
133
- responses: Object.fromEntries([response]),
134
- parameters,
135
- requestBody,
136
- security: security.length > 0 ? security : undefined,
137
- };
138
- // validate all path parameters have matching parameters with URL ArgSource
139
- const pathParams = path.split('/')
140
- .filter(p => p.startsWith(':'))
141
- .map(p => p.substring(1));
142
- for (const pathParam of pathParams) {
143
- const param = sourcedParams.find(([parameter, _]) => parameter.name === pathParam);
144
- if (!param) {
145
- this.#diags.raise(`Missing path parameter ${pathParam} for ${method.name}`, method.node);
146
- return;
147
- }
148
- if (param[1] !== handlerTypes_1.ArgSources.URL) {
149
- this.#diags.raise(`Path parameter ${pathParam} must be a URL parameter: ${method.name}`, param[0].node);
150
- return;
151
- }
152
- }
153
- // OpenAPI indicates path parameters with curly braces, but DBOS uses colons
154
- const $path = path.split('/')
155
- .map(p => p.startsWith(':') ? `{${p.substring(1)}}` : p)
156
- .join('/');
157
- switch (verb) {
158
- case handlerTypes_2.APITypes.GET: return [$path, { get: operation }];
159
- case handlerTypes_2.APITypes.POST: return [$path, { post: operation }];
160
- }
161
- }
162
- getMethodReturnType(node) {
163
- // if the method has a declared return type, try to use that
164
- if (node.type) {
165
- if (!isNodeWithTypeArguments(node.type)) {
166
- this.#diags.warn(`Unexpected type node kind ${typescript_1.default.SyntaxKind[node.type.kind]}`, node.type);
167
- }
168
- else {
169
- // return type must be a Promise<T>, so take the first type argument
170
- const typeArg = node.type.typeArguments?.[0];
171
- if (typeArg)
172
- return this.#checker.getTypeFromTypeNode(typeArg);
173
- const printer = typescript_1.default.createPrinter();
174
- const text = printer.printNode(typescript_1.default.EmitHint.Unspecified, node.type, node.getSourceFile());
175
- this.#diags.warn(`Unexpected return type without at least one type argument ${text}`, node.type);
176
- }
177
- }
178
- // if the return type is inferred or the Promise type argument could not be determined,
179
- // infer the return type via the type checker
180
- const signature = this.#checker.getSignatureFromDeclaration(node);
181
- const returnType = signature?.getReturnType();
182
- if (!returnType || !isTypeReference(returnType))
183
- return undefined;
184
- // again, return type must be a Promise<T>, so take the first type argument
185
- return returnType.typeArguments?.[0];
186
- }
187
- generateResponse(method) {
188
- const returnType = this.getMethodReturnType(method.node);
189
- if (!returnType) {
190
- this.#diags.raise(`Could not determine return type of ${method.name}`, method.node);
191
- return;
192
- }
193
- if (returnType.flags & typescript_1.default.TypeFlags.VoidLike) {
194
- return ["204", { description: "No Content" }];
195
- }
196
- const typeNode = this.#checker.typeToTypeNode(returnType, undefined, undefined);
197
- if (!typeNode) {
198
- this.#diags.warn(`Could not determine return type node of ${method.name}`, method.node);
199
- }
200
- return ["200", {
201
- description: "Ok",
202
- content: {
203
- "application/json": {
204
- schema: this.generateSchema(typeNode)
205
- }
206
- }
207
- }];
208
- }
209
- generateParameters(sourcedParams) {
210
- if (sourcedParams.length === 0)
211
- return [];
212
- return sourcedParams
213
- // QUERY and URL parameters are specified in the Operation.parameters field
214
- .filter(([_, source]) => source === handlerTypes_1.ArgSources.QUERY || source === handlerTypes_1.ArgSources.URL)
215
- .map(([parameter, argSource]) => this.generateParameter(parameter, argSource))
216
- .filter(isValid);
217
- }
218
- generateParameter(parameter, argSource) {
219
- if (argSource === handlerTypes_1.ArgSources.BODY) {
220
- this.#diags.raise(`BODY parameters must be specified in the Operation.requestBody field: ${parameter.name}`, parameter.node);
221
- return;
222
- }
223
- if (argSource === handlerTypes_1.ArgSources.URL && !parameter.required) {
224
- this.#diags.raise(`URL parameters must be required: ${parameter.name}`, parameter.node);
225
- return;
226
- }
227
- const schema = this.generateSchema(parameter.node);
228
- const name = this.getParamName(parameter);
229
- const location = this.getLocation(parameter, argSource);
230
- if (!name || !location)
231
- return;
232
- return {
233
- name,
234
- in: location,
235
- required: parameter.required,
236
- schema
237
- };
238
- }
239
- getLocation(parameter, argSource) {
240
- switch (argSource) {
241
- case handlerTypes_1.ArgSources.QUERY: return 'query';
242
- case handlerTypes_1.ArgSources.URL: return 'path';
243
- default:
244
- this.#diags.raise(`Unsupported Parameter ArgSource: ${argSource}`, parameter.node);
245
- return;
246
- }
247
- }
248
- generateRequestBody(sourcedParams) {
249
- // BODY parameters are specified in the Operation.requestBody field
250
- const parameters = sourcedParams
251
- .filter(([_, source]) => source === handlerTypes_1.ArgSources.BODY)
252
- .map(([parameter, _]) => [this.getParamName(parameter), parameter]);
253
- if (parameters.length === 0)
254
- return undefined;
255
- const properties = parameters.map(([name, parameter]) => [name, this.generateSchema(parameter.node)]);
256
- const schema = {
257
- type: 'object',
258
- properties: Object.fromEntries(properties),
259
- required: parameters.filter(([_, parameter]) => parameter.required).map(([name, _]) => name),
260
- };
261
- return {
262
- required: true,
263
- content: {
264
- "application/json": { schema }
265
- }
266
- };
267
- }
268
- generateSchema(node) {
269
- if (!node)
270
- return { description: "Undefined Node" };
271
- const schema = this.#schemaGenerator.createSchemaFromNodes([node]);
272
- if (!schema.$ref)
273
- return { description: "No $ref" };
274
- const slashIndex = schema.$ref.lastIndexOf('/');
275
- if (slashIndex === -1)
276
- return { description: `Invalid $ref ${schema.$ref}` };
277
- const name = schema.$ref.substring(slashIndex + 1);
278
- const defs = new Map(Object.entries(schema.definitions ?? {}));
279
- if (defs.size === 0)
280
- return { description: "No definitions" };
281
- const def = defs.get(name);
282
- if (!def)
283
- return { description: `No definition ${name}` };
284
- if (typeof def === 'boolean')
285
- return { description: `Definition ${name} is a boolean` };
286
- if (defs.size > 1) {
287
- defs.delete(name);
288
- for (const [$name, $def] of defs) {
289
- if (typeof $def === 'boolean')
290
- continue;
291
- const $schema = this.mapSchema($def);
292
- if ($schema)
293
- this.#schemaMap.set($name, $schema);
294
- }
295
- }
296
- return this.mapSchema(def);
297
- }
298
- getDBOSDecorator(decorated, name) {
299
- const filtered = decorated.decorators.filter(d => d.module === '@dbos-inc/dbos-sdk' && d.name === name);
300
- if (filtered.length === 0)
301
- return undefined;
302
- if (filtered.length > 1) {
303
- this.#diags.raise(`Multiple ${JSON.stringify(name)} decorators found on ${decorated.name ?? "<unknown>"}`, decorated.node);
304
- }
305
- return filtered[0];
306
- }
307
- getHttpInfo(method) {
308
- const getApiDecorator = this.getDBOSDecorator(method, 'GetApi');
309
- const postApiDecorator = this.getDBOSDecorator(method, 'PostApi');
310
- if (getApiDecorator && postApiDecorator) {
311
- this.#diags.raise(`Method ${method.name} has both GetApi and PostApi decorators`);
312
- return;
313
- }
314
- if (!getApiDecorator && !postApiDecorator)
315
- return undefined;
316
- const verb = getApiDecorator ? handlerTypes_2.APITypes.GET : handlerTypes_2.APITypes.POST;
317
- const arg = getApiDecorator ? getApiDecorator.args[0] : postApiDecorator?.args[0];
318
- if (!arg) {
319
- this.#diags.raise(`Missing path argument for ${verb}Api decorator`, method.node);
320
- return;
321
- }
322
- if (!typescript_1.default.isStringLiteral(arg)) {
323
- this.#diags.raise(`Unexpected path argument type: ${typescript_1.default.SyntaxKind[arg.kind]}`, method.node);
324
- return;
325
- }
326
- return { verb, path: arg.text };
327
- }
328
- getParamSource(parameter, verb) {
329
- const argSource = this.getDBOSDecorator(parameter, 'ArgSource');
330
- if (!argSource)
331
- return getDefaultArgSource(verb);
332
- if (!typescript_1.default.isPropertyAccessExpression(argSource.args[0])) {
333
- this.#diags.raise(`Unexpected ArgSource argument type: ${typescript_1.default.SyntaxKind[argSource.args[0].kind]}`, parameter.node);
334
- return;
335
- }
336
- switch (argSource.args[0].name.text) {
337
- case "BODY": return handlerTypes_1.ArgSources.BODY;
338
- case "QUERY": return handlerTypes_1.ArgSources.QUERY;
339
- case "URL": return handlerTypes_1.ArgSources.URL;
340
- case "DEFAULT": return getDefaultArgSource(verb);
341
- default:
342
- this.#diags.raise(`Unexpected ArgSource argument: ${argSource.args[0].name.text}`, parameter.node);
343
- return;
344
- }
345
- function getDefaultArgSource(verb) {
346
- switch (verb) {
347
- case handlerTypes_2.APITypes.GET: return handlerTypes_1.ArgSources.QUERY;
348
- case handlerTypes_2.APITypes.POST: return handlerTypes_1.ArgSources.BODY;
349
- }
350
- }
351
- }
352
- getParamName(parameter) {
353
- const argName = this.getDBOSDecorator(parameter, 'ArgName');
354
- if (!argName)
355
- return parameter.name;
356
- const nameParam = argName.args[0];
357
- if (nameParam && typescript_1.default.isStringLiteral(nameParam))
358
- return nameParam.text;
359
- this.#diags.raise(`Unexpected ArgName argument type: ${typescript_1.default.SyntaxKind[nameParam.kind]}`, parameter.node);
360
- }
361
- mapSchema(schema) {
362
- if (Array.isArray(schema.type)) {
363
- this.#diags.raise(`OpenApi 3.0.x doesn't support type arrays: ${JSON.stringify(schema.type)}`);
364
- return;
365
- }
366
- if (schema.$ref) {
367
- const $ref = schema.$ref.replace("#/definitions/", "#/components/schemas/");
368
- return { $ref };
369
- }
370
- const [maximum, exclusiveMaximum] = getMaxes();
371
- const [minimum, exclusiveMinimum] = getMins();
372
- const base = {
373
- title: schema.title,
374
- multipleOf: schema.multipleOf,
375
- maximum,
376
- exclusiveMaximum,
377
- minimum,
378
- exclusiveMinimum,
379
- maxLength: schema.maxLength,
380
- minLength: schema.minLength,
381
- pattern: schema.pattern,
382
- maxItems: schema.maxItems,
383
- minItems: schema.minItems,
384
- uniqueItems: schema.uniqueItems,
385
- maxProperties: schema.maxProperties,
386
- minProperties: schema.minProperties,
387
- required: schema.required,
388
- enum: schema.enum,
389
- description: schema.description,
390
- format: schema.format,
391
- default: schema.default,
392
- // OpenApi 3.0.x doesn't support boolean schema types, so filter those out when mapping these fields
393
- allOf: schema.allOf?.filter(isSchema).map(s => this.mapSchema(s)).filter(isValid),
394
- oneOf: schema.oneOf?.filter(isSchema).map(s => this.mapSchema(s)).filter(isValid),
395
- anyOf: schema.anyOf?.filter(isSchema).map(s => this.mapSchema(s)).filter(isValid),
396
- not: schema.not
397
- ? isSchema(schema.not) ? this.mapSchema(schema.not) : undefined
398
- : undefined,
399
- properties: schema.properties
400
- ? Object.fromEntries(Object.entries(schema.properties)
401
- .filter((entry) => isSchema(entry[1]))
402
- .map(([name, prop]) => [name, this.mapSchema(prop)])
403
- .filter((entry) => isValid(entry[1])))
404
- : undefined,
405
- additionalProperties: typeof schema.additionalProperties === 'object'
406
- ? this.mapSchema(schema.additionalProperties)
407
- : schema.additionalProperties,
408
- };
409
- if (schema.type === 'array') {
410
- if (schema.items === undefined) {
411
- this.#diags.raise(`Array schema has no items`);
412
- return;
413
- }
414
- if (Array.isArray(schema.items)) {
415
- this.#diags.raise(`OpenApi 3.0.x doesn't support array items arrays: ${JSON.stringify(schema.items)}`);
416
- return;
417
- }
418
- if (typeof schema.items === 'boolean') {
419
- this.#diags.raise(`OpenApi 3.0.x doesn't support array items booleans: ${JSON.stringify(schema.items)}`);
420
- return;
421
- }
422
- return {
423
- type: schema.type,
424
- items: this.mapSchema(schema.items),
425
- ...base,
426
- };
427
- }
428
- return {
429
- // OpenApi 3.0.x doesn't support null type value, so map null type to undefined and add nullable: true property
430
- type: schema.type === 'null' ? undefined : schema.type,
431
- ...base,
432
- nullable: schema.type === 'null' ? true : undefined,
433
- };
434
- function isSchema(schema) {
435
- return typeof schema === "object";
436
- }
437
- // Convert JSON Schema Draft 7 (used by ts-json-schema-generator) max/min and exclusive max/min values to JSON Schema Draft 5 (used by OpenAPI).
438
- // In Draft 5, exclusive max/min values are booleans
439
- // In Draft 7, exclusive max/min values are numbers
440
- function getMaxes() {
441
- const { maximum: max, exclusiveMaximum: xMax } = schema;
442
- if (max) {
443
- if (xMax) {
444
- return (xMax < max) ? [xMax, true] : [max, false];
445
- }
446
- else {
447
- return [max, false];
448
- }
449
- }
450
- else {
451
- return xMax ? [xMax, true] : [undefined, undefined];
452
- }
453
- }
454
- function getMins() {
455
- const { minimum: min, exclusiveMinimum: xMin } = schema;
456
- if (min) {
457
- if (xMin) {
458
- return (xMin > min) ? [xMin, true] : [min, false];
459
- }
460
- else {
461
- return [min, false];
462
- }
463
- }
464
- else {
465
- return xMin ? [xMin, true] : [undefined, undefined];
466
- }
467
- }
468
- }
469
- parseStringLiteralArray(node) {
470
- if (!node)
471
- return undefined;
472
- if (!typescript_1.default.isArrayLiteralExpression(node)) {
473
- this.#diags.raise(`Expected Array Literal node, received: ${typescript_1.default.SyntaxKind[node.kind]}`, node);
474
- return;
475
- }
476
- const values = new Array();
477
- for (const exp of node.elements) {
478
- if (typescript_1.default.isStringLiteral(exp)) {
479
- values.push(exp.getText());
480
- }
481
- else {
482
- this.#diags.raise(`Expected String Literal node, received: ${typescript_1.default.SyntaxKind[exp.kind]}`, exp);
483
- }
484
- }
485
- return values;
486
- }
487
- parseSecurityScheme(arg) {
488
- if (!arg)
489
- return undefined;
490
- if (!typescript_1.default.isObjectLiteralExpression(arg)) {
491
- this.#diags.raise(`Expected Object Literal node, received: ${typescript_1.default.SyntaxKind[arg.kind]}`, arg);
492
- return undefined;
493
- }
494
- const map = new Map();
495
- for (const prop of arg.properties) {
496
- if (!typescript_1.default.isPropertyAssignment(prop)) {
497
- this.#diags.raise(`Expected Property Assignment node, received: ${typescript_1.default.SyntaxKind[prop.kind]}`, prop);
498
- continue;
499
- }
500
- if (!typescript_1.default.isStringLiteral(prop.initializer)) {
501
- this.#diags.raise(`Expected String Literal node, received: ${typescript_1.default.SyntaxKind[prop.initializer.kind]}`, prop.initializer);
502
- continue;
503
- }
504
- map.set(prop.name.getText(), prop.initializer.text);
505
- }
506
- const type = map.get("type");
507
- const description = map.get("description");
508
- if (!type) {
509
- this.#diags.raise(`missing type property`, arg);
510
- return;
511
- }
512
- if (type === 'http') {
513
- const scheme = map.get("scheme");
514
- if (!scheme) {
515
- this.#diags.raise(`missing scheme property`, arg);
516
- return;
517
- }
518
- const bearerFormat = map.get("bearerFormat");
519
- return { type, scheme, bearerFormat, description };
520
- }
521
- if (type === 'apiKey') {
522
- const name = map.get("name");
523
- if (!name) {
524
- this.#diags.raise(`missing name property`, arg);
525
- return;
526
- }
527
- const $in = map.get("id");
528
- if (!$in) {
529
- this.#diags.raise(`missing in property`, arg);
530
- return;
531
- }
532
- return { type, name, in: $in, description };
533
- }
534
- if (type === "openIdConnect") {
535
- const openIdConnectUrl = map.get("openIdConnectUrl");
536
- if (!openIdConnectUrl) {
537
- this.#diags.raise(`missing openIdConnectUrl property`, arg);
538
- return;
539
- }
540
- return { type, openIdConnectUrl, description };
541
- }
542
- if (type === 'oauth2') {
543
- this.#diags.raise(`OAuth2 Security Scheme not supported`, arg);
544
- }
545
- else {
546
- this.#diags.raise(`unrecognized Security Scheme type ${type}`, arg);
547
- }
548
- return;
549
- }
550
- }
551
- exports.OpenApiGenerator = OpenApiGenerator;
552
- async function generateOpenApi(entrypoint) {
553
- const program = typescript_1.default.createProgram([entrypoint], {});
554
- const parser = new TypeParser_1.TypeParser(program);
555
- const classes = parser.parse();
556
- (0, tsDiagUtil_1.logDiagnostics)(parser.diags);
557
- if (!classes || classes.length === 0)
558
- return undefined;
559
- const { name, version } = await (0, TypeParser_1.findPackageInfo)([entrypoint]);
560
- const generator = new OpenApiGenerator(program);
561
- const openapi = generator.generate(classes, name, version);
562
- (0, tsDiagUtil_1.logDiagnostics)(generator.diags);
563
- return openapi;
564
- }
565
- exports.generateOpenApi = generateOpenApi;
566
- //# sourceMappingURL=openApi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openApi.js","sourceRoot":"","sources":["../../../packages/dbos-openapi/openApi.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import ts from "typescript";
2
- export declare function makeTestTypescriptProgram(source: string): ts.Program;
3
- //# sourceMappingURL=makeProgram.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"makeProgram.d.ts","sourceRoot":"","sources":["../../../../packages/dbos-openapi/tests/makeProgram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAsC5B,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC,OAAO,CA0BpE"}