@skmtc/core 0.0.296 → 0.0.297

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 (85) hide show
  1. package/esm/context/CoreContext.d.ts +27 -54
  2. package/esm/context/CoreContext.d.ts.map +1 -1
  3. package/esm/context/CoreContext.js +103 -137
  4. package/esm/context/GenerateContext.d.ts +6 -4
  5. package/esm/context/GenerateContext.d.ts.map +1 -1
  6. package/esm/context/GenerateContext.js +84 -6
  7. package/esm/context/ParseContext.d.ts +11 -11
  8. package/esm/context/ParseContext.d.ts.map +1 -1
  9. package/esm/context/ParseContext.js +51 -5
  10. package/esm/context/RenderContext.d.ts +7 -19
  11. package/esm/context/RenderContext.d.ts.map +1 -1
  12. package/esm/context/RenderContext.js +55 -85
  13. package/esm/context/ResultsHandler.d.ts.map +1 -1
  14. package/esm/context/ResultsHandler.js +2 -6
  15. package/esm/context/StackTrail.d.ts +10 -0
  16. package/esm/context/StackTrail.d.ts.map +1 -0
  17. package/esm/context/StackTrail.js +68 -0
  18. package/esm/context/types.d.ts +13 -1
  19. package/esm/context/types.d.ts.map +1 -1
  20. package/esm/generate/generate.d.ts +6 -3
  21. package/esm/generate/generate.d.ts.map +1 -1
  22. package/esm/generate/generate.js +18 -45
  23. package/esm/mod.d.ts +0 -1
  24. package/esm/mod.d.ts.map +1 -1
  25. package/esm/mod.js +0 -1
  26. package/esm/oas/operation/Operation.d.ts +1 -1
  27. package/esm/oas/operation/Operation.d.ts.map +1 -1
  28. package/esm/oas/operation/Operation.js +1 -1
  29. package/esm/server/createServer.d.ts.map +1 -1
  30. package/esm/server/createServer.js +12 -13
  31. package/esm/types/Manifest.d.ts +11 -43
  32. package/esm/types/Manifest.d.ts.map +1 -1
  33. package/esm/types/Manifest.js +1 -5
  34. package/package.json +1 -1
  35. package/script/context/CoreContext.d.ts +27 -54
  36. package/script/context/CoreContext.d.ts.map +1 -1
  37. package/script/context/CoreContext.js +103 -137
  38. package/script/context/GenerateContext.d.ts +6 -4
  39. package/script/context/GenerateContext.d.ts.map +1 -1
  40. package/script/context/GenerateContext.js +106 -5
  41. package/script/context/ParseContext.d.ts +11 -11
  42. package/script/context/ParseContext.d.ts.map +1 -1
  43. package/script/context/ParseContext.js +76 -6
  44. package/script/context/RenderContext.d.ts +7 -19
  45. package/script/context/RenderContext.d.ts.map +1 -1
  46. package/script/context/RenderContext.js +55 -85
  47. package/script/context/ResultsHandler.d.ts.map +1 -1
  48. package/script/context/ResultsHandler.js +2 -6
  49. package/script/context/StackTrail.d.ts +10 -0
  50. package/script/context/StackTrail.d.ts.map +1 -0
  51. package/script/context/StackTrail.js +72 -0
  52. package/script/context/types.d.ts +13 -1
  53. package/script/context/types.d.ts.map +1 -1
  54. package/script/generate/generate.d.ts +6 -3
  55. package/script/generate/generate.d.ts.map +1 -1
  56. package/script/generate/generate.js +19 -47
  57. package/script/mod.d.ts +0 -1
  58. package/script/mod.d.ts.map +1 -1
  59. package/script/mod.js +0 -1
  60. package/script/oas/operation/Operation.d.ts +1 -1
  61. package/script/oas/operation/Operation.d.ts.map +1 -1
  62. package/script/oas/operation/Operation.js +1 -1
  63. package/script/server/createServer.d.ts.map +1 -1
  64. package/script/server/createServer.js +11 -12
  65. package/script/types/Manifest.d.ts +11 -43
  66. package/script/types/Manifest.d.ts.map +1 -1
  67. package/script/types/Manifest.js +1 -5
  68. package/esm/generate/generateModels.d.ts +0 -3
  69. package/esm/generate/generateModels.d.ts.map +0 -1
  70. package/esm/generate/generateModels.js +0 -44
  71. package/esm/generate/generateOperations.d.ts +0 -3
  72. package/esm/generate/generateOperations.d.ts.map +0 -1
  73. package/esm/generate/generateOperations.js +0 -53
  74. package/esm/parse/parse.d.ts +0 -4
  75. package/esm/parse/parse.d.ts.map +0 -1
  76. package/esm/parse/parse.js +0 -16
  77. package/script/generate/generateModels.d.ts +0 -3
  78. package/script/generate/generateModels.d.ts.map +0 -1
  79. package/script/generate/generateModels.js +0 -71
  80. package/script/generate/generateOperations.d.ts +0 -3
  81. package/script/generate/generateOperations.d.ts.map +0 -1
  82. package/script/generate/generateOperations.js +0 -80
  83. package/script/parse/parse.d.ts +0 -4
  84. package/script/parse/parse.d.ts.map +0 -1
  85. package/script/parse/parse.js +0 -20
@@ -33,7 +33,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
33
33
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
34
34
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
35
35
  };
36
- var _CoreContext_phase, _CoreContext_results;
36
+ var _CoreContext_instances, _CoreContext_phase, _CoreContext_results, _CoreContext_stackTrail, _CoreContext_setupLogger, _CoreContext_getStackTrail, _CoreContext_setupParsePhase, _CoreContext_setupGeneratePhase, _CoreContext_setupRenderPhase;
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
38
  exports.CoreContext = void 0;
39
39
  exports.skmtcFormatter = skmtcFormatter;
@@ -41,17 +41,14 @@ exports.resultFormatter = resultFormatter;
41
41
  const GenerateContext_js_1 = require("./GenerateContext.js");
42
42
  const ts_pattern_1 = require("ts-pattern");
43
43
  const RenderContext_js_1 = require("./RenderContext.js");
44
+ const ParseContext_js_1 = require("./ParseContext.js");
44
45
  const log = __importStar(require("../deps/jsr.io/@std/log/0.224.6/mod.js"));
45
46
  const ResultsHandler_js_1 = require("./ResultsHandler.js");
47
+ const StackTrail_js_1 = require("./StackTrail.js");
46
48
  class CoreContext {
47
- constructor({ phase, traceId, spanId }) {
48
- Object.defineProperty(this, "traceId", {
49
- enumerable: true,
50
- configurable: true,
51
- writable: true,
52
- value: void 0
53
- });
54
- Object.defineProperty(this, "spanId", {
49
+ constructor({ schema, spanId }) {
50
+ _CoreContext_instances.add(this);
51
+ Object.defineProperty(this, "logger", {
55
52
  enumerable: true,
56
53
  configurable: true,
57
54
  writable: true,
@@ -59,111 +56,63 @@ class CoreContext {
59
56
  });
60
57
  _CoreContext_phase.set(this, void 0);
61
58
  _CoreContext_results.set(this, void 0);
62
- __classPrivateFieldSet(this, _CoreContext_results, {
63
- parse: 'success',
64
- generate: {},
65
- render: 'success'
66
- }, "f");
67
- __classPrivateFieldSet(this, _CoreContext_phase, phase, "f");
68
- this.traceId = traceId;
69
- this.spanId = spanId;
70
- log.setup({
71
- handlers: {
72
- [`${spanId}-logs`]: new log.ConsoleHandler('DEBUG', {
73
- formatter: logRecord => skmtcFormatter({ logRecord, context: this }),
74
- useColors: false
75
- }),
76
- [`${spanId}-results`]: new ResultsHandler_js_1.ResultsHandler('WARN', {
77
- formatter: logRecord => resultFormatter({ logRecord, context: this }),
78
- context: this
79
- })
80
- },
81
- loggers: {
82
- [spanId]: {
83
- level: 'DEBUG',
84
- handlers: [`${spanId}-logs`, `${spanId}-results`]
85
- }
86
- }
87
- });
59
+ _CoreContext_stackTrail.set(this, void 0);
60
+ __classPrivateFieldSet(this, _CoreContext_stackTrail, new StackTrail_js_1.StackTrail([spanId]), "f");
61
+ __classPrivateFieldSet(this, _CoreContext_results, {}, "f");
62
+ this.logger = __classPrivateFieldGet(this, _CoreContext_instances, "m", _CoreContext_setupLogger).call(this, spanId);
63
+ __classPrivateFieldSet(this, _CoreContext_phase, __classPrivateFieldGet(this, _CoreContext_instances, "m", _CoreContext_setupParsePhase).call(this, schema), "f");
88
64
  }
89
- get logger() {
90
- return log.getLogger(this.spanId);
65
+ parse() {
66
+ if (__classPrivateFieldGet(this, _CoreContext_phase, "f").type !== 'parse') {
67
+ throw new Error(`Expected 'parse' phase, got '${__classPrivateFieldGet(this, _CoreContext_phase, "f").type}'`);
68
+ }
69
+ return __classPrivateFieldGet(this, _CoreContext_phase, "f").context.parse(this);
91
70
  }
92
- setupGeneratePhase({ schemaModel, settings, generatorsMap }) {
93
- const generateContext = new GenerateContext_js_1.GenerateContext({
71
+ transform({ settings, generatorsMap, prettier }) {
72
+ if (__classPrivateFieldGet(this, _CoreContext_phase, "f").type !== 'parse') {
73
+ throw new Error(`Expected 'parse' phase, got '${__classPrivateFieldGet(this, _CoreContext_phase, "f").type}'`);
74
+ }
75
+ const schemaModel = __classPrivateFieldGet(this, _CoreContext_phase, "f").context.parse(this);
76
+ __classPrivateFieldSet(this, _CoreContext_phase, __classPrivateFieldGet(this, _CoreContext_instances, "m", _CoreContext_setupGeneratePhase).call(this, {
94
77
  schemaModel,
95
78
  settings,
96
79
  generatorsMap
97
- });
98
- __classPrivateFieldSet(this, _CoreContext_phase, { type: 'generate', context: generateContext }, "f");
80
+ }), "f");
81
+ __classPrivateFieldGet(this, _CoreContext_phase, "f").context.generate(this);
82
+ __classPrivateFieldSet(this, _CoreContext_phase, __classPrivateFieldGet(this, _CoreContext_instances, "m", _CoreContext_setupRenderPhase).call(this, {
83
+ renderDependencies: this.renderDependencies,
84
+ packageDependencies: this.packageDependencies,
85
+ pinnableGenerators: Object.values(this.generatorsMap)
86
+ .map(({ id, pinnable }) => (pinnable ? id : null))
87
+ .filter(generatorId => generatorId !== null),
88
+ prettier,
89
+ settings
90
+ }), "f");
91
+ const renderOutput = __classPrivateFieldGet(this, _CoreContext_phase, "f").context.render({});
92
+ return {
93
+ ...renderOutput,
94
+ results: __classPrivateFieldGet(this, _CoreContext_results, "f")
95
+ };
99
96
  }
100
- captureResult(args) {
101
- (0, ts_pattern_1.match)(args)
102
- .with({ phase: 'parse' }, ({ result }) => {
103
- if (applyResult({ current: __classPrivateFieldGet(this, _CoreContext_results, "f").parse, incoming: result })) {
104
- __classPrivateFieldGet(this, _CoreContext_results, "f").parse = result;
105
- }
106
- })
107
- .with({ phase: 'generate' }, ({ generatorKey, result }) => {
108
- if (applyResult({
109
- current: __classPrivateFieldGet(this, _CoreContext_results, "f").generate[generatorKey],
110
- incoming: result
111
- })) {
112
- __classPrivateFieldGet(this, _CoreContext_results, "f").generate[generatorKey] = result;
113
- }
114
- })
115
- .with({ phase: 'render' }, ({ result }) => {
116
- if (applyResult({ current: __classPrivateFieldGet(this, _CoreContext_results, "f").render, incoming: result })) {
117
- __classPrivateFieldGet(this, _CoreContext_results, "f").render = result;
118
- }
119
- })
120
- .exhaustive();
97
+ captureResult({ stackTrail, result }) {
98
+ if (applyResult({ current: __classPrivateFieldGet(this, _CoreContext_results, "f")[stackTrail], incoming: result })) {
99
+ __classPrivateFieldGet(this, _CoreContext_results, "f")[stackTrail] = result;
100
+ }
121
101
  }
122
- setupRenderPhase({ prettier, packageDependencies, settings, renderDependencies, pinnableGenerators }) {
123
- const renderContext = new RenderContext_js_1.RenderContext({
124
- traceId: this.traceId,
125
- spanId: this.spanId,
126
- results: __classPrivateFieldGet(this, _CoreContext_results, "f"),
127
- files: this.files,
128
- renderDependencies,
129
- packageDependencies,
130
- prettier,
131
- settings,
132
- pinnableGenerators
133
- });
134
- __classPrivateFieldSet(this, _CoreContext_phase, { type: 'render', context: renderContext }, "f");
102
+ captureCurrentResult(result) {
103
+ const stackTrail = __classPrivateFieldGet(this, _CoreContext_stackTrail, "f").toString();
104
+ if (applyResult({ current: __classPrivateFieldGet(this, _CoreContext_results, "f")[stackTrail], incoming: result })) {
105
+ __classPrivateFieldGet(this, _CoreContext_results, "f")[stackTrail] = result;
106
+ }
135
107
  }
136
108
  get phaseType() {
137
109
  return __classPrivateFieldGet(this, _CoreContext_phase, "f").type;
138
110
  }
139
- // @TODO This feels like it belongs in GenerateContext
140
- setCurrentLocation(location) {
141
- (0, ts_pattern_1.match)(__classPrivateFieldGet(this, _CoreContext_phase, "f"))
142
- .with({ type: 'generate' }, ({ context }) => {
143
- context.setCurrentLocation(location);
144
- })
145
- .with({ type: 'parse' }, () => {
146
- throw new Error(`Cannot set current location during parse phase`);
147
- })
148
- .with({ type: 'render' }, () => {
149
- throw new Error(`Cannot set current location during render phase`);
150
- })
151
- .exhaustive();
111
+ appendStackTrailChunk(chunk) {
112
+ __classPrivateFieldGet(this, _CoreContext_stackTrail, "f").append(chunk);
152
113
  }
153
- getLogFields() {
154
- const logFields = {
155
- phase: __classPrivateFieldGet(this, _CoreContext_phase, "f").type,
156
- traceId: this.traceId,
157
- spanId: this.spanId
158
- };
159
- return (0, ts_pattern_1.match)(__classPrivateFieldGet(this, _CoreContext_phase, "f"))
160
- .with({ type: 'generate' }, ({ context }) => ({
161
- ...logFields,
162
- ...context.getLogFields()
163
- }))
164
- .with({ type: 'parse' }, () => logFields)
165
- .with({ type: 'render' }, () => logFields)
166
- .exhaustive();
114
+ removeStackTrailChunk(chunk) {
115
+ __classPrivateFieldGet(this, _CoreContext_stackTrail, "f").remove(chunk);
167
116
  }
168
117
  register({ destinationPath, ...args }) {
169
118
  return (0, ts_pattern_1.match)(__classPrivateFieldGet(this, _CoreContext_phase, "f"))
@@ -239,17 +188,6 @@ class CoreContext {
239
188
  .with({ type: 'render' }, ({ context }) => context.pick(args))
240
189
  .exhaustive();
241
190
  }
242
- render(options) {
243
- return (0, ts_pattern_1.match)(__classPrivateFieldGet(this, _CoreContext_phase, "f"))
244
- .with({ type: 'generate' }, () => {
245
- throw new Error(`Cannot render during generate phase`);
246
- })
247
- .with({ type: 'parse' }, () => {
248
- throw new Error(`Cannot render during parse phase`);
249
- })
250
- .with({ type: 'render' }, ({ context }) => context.render(options))
251
- .exhaustive();
252
- }
253
191
  addFile(normalisedPath) {
254
192
  return (0, ts_pattern_1.match)(__classPrivateFieldGet(this, _CoreContext_phase, "f"))
255
193
  .with({ type: 'generate' }, ({ context }) => {
@@ -302,9 +240,6 @@ class CoreContext {
302
240
  })
303
241
  .exhaustive();
304
242
  }
305
- get results() {
306
- return __classPrivateFieldGet(this, _CoreContext_results, "f");
307
- }
308
243
  get files() {
309
244
  return (0, ts_pattern_1.match)(__classPrivateFieldGet(this, _CoreContext_phase, "f"))
310
245
  .with({ type: 'generate' }, ({ context }) => context.files)
@@ -354,17 +289,6 @@ class CoreContext {
354
289
  })
355
290
  .exhaustive();
356
291
  }
357
- get parsedDocument() {
358
- return (0, ts_pattern_1.match)(__classPrivateFieldGet(this, _CoreContext_phase, "f"))
359
- .with({ type: 'parse' }, ({ context }) => context.parsedDocument)
360
- .with({ type: 'generate' }, () => {
361
- throw new Error(`Cannot access parsed document during generate phase`);
362
- })
363
- .with({ type: 'render' }, () => {
364
- throw new Error(`Cannot access parsed document during render phase`);
365
- })
366
- .exhaustive();
367
- }
368
292
  get settings() {
369
293
  return (0, ts_pattern_1.match)(__classPrivateFieldGet(this, _CoreContext_phase, "f"))
370
294
  .with({ type: 'generate' }, ({ context }) => context.settings)
@@ -378,15 +302,62 @@ class CoreContext {
378
302
  }
379
303
  }
380
304
  exports.CoreContext = CoreContext;
381
- _CoreContext_phase = new WeakMap(), _CoreContext_results = new WeakMap();
305
+ _CoreContext_phase = new WeakMap(), _CoreContext_results = new WeakMap(), _CoreContext_stackTrail = new WeakMap(), _CoreContext_instances = new WeakSet(), _CoreContext_setupLogger = function _CoreContext_setupLogger(spanId) {
306
+ log.setup({
307
+ handlers: {
308
+ [`${spanId}-logs`]: new log.ConsoleHandler('DEBUG', {
309
+ formatter: logRecord => skmtcFormatter({ logRecord, stackTrail: __classPrivateFieldGet(this, _CoreContext_instances, "m", _CoreContext_getStackTrail).call(this) }),
310
+ useColors: false
311
+ }),
312
+ [`${spanId}-results`]: new ResultsHandler_js_1.ResultsHandler('WARN', {
313
+ formatter: logRecord => resultFormatter({ logRecord, stackTrail: __classPrivateFieldGet(this, _CoreContext_instances, "m", _CoreContext_getStackTrail).call(this) }),
314
+ context: this
315
+ })
316
+ },
317
+ loggers: {
318
+ [spanId]: {
319
+ level: 'DEBUG',
320
+ handlers: [`${spanId}-logs`, `${spanId}-results`]
321
+ }
322
+ }
323
+ });
324
+ return log.getLogger(spanId);
325
+ }, _CoreContext_getStackTrail = function _CoreContext_getStackTrail() {
326
+ const substack = (0, ts_pattern_1.match)(__classPrivateFieldGet(this, _CoreContext_phase, "f"))
327
+ .with({ type: 'parse' }, ({ context }) => context.stackTrail)
328
+ .with({ type: 'generate' }, ({ context }) => context.stackTrail)
329
+ .with({ type: 'render' }, ({ context }) => context.stackTrail)
330
+ .exhaustive();
331
+ return __classPrivateFieldGet(this, _CoreContext_stackTrail, "f").append(substack);
332
+ }, _CoreContext_setupParsePhase = function _CoreContext_setupParsePhase(schema) {
333
+ const parseContext = new ParseContext_js_1.ParseContext(schema);
334
+ return { type: 'parse', context: parseContext };
335
+ }, _CoreContext_setupGeneratePhase = function _CoreContext_setupGeneratePhase({ schemaModel, settings, generatorsMap }) {
336
+ const generateContext = new GenerateContext_js_1.GenerateContext({
337
+ schemaModel,
338
+ settings,
339
+ generatorsMap
340
+ });
341
+ return { type: 'generate', context: generateContext };
342
+ }, _CoreContext_setupRenderPhase = function _CoreContext_setupRenderPhase({ prettier, packageDependencies, settings, renderDependencies, pinnableGenerators }) {
343
+ const renderContext = new RenderContext_js_1.RenderContext({
344
+ files: this.files,
345
+ renderDependencies,
346
+ packageDependencies,
347
+ prettier,
348
+ settings,
349
+ pinnableGenerators
350
+ });
351
+ return { type: 'render', context: renderContext };
352
+ };
382
353
  const applyResult = ({ current, incoming }) => {
383
354
  return (current === undefined ||
384
355
  (current === 'success' && incoming !== 'success') ||
385
356
  (current === 'warning' && incoming === 'error'));
386
357
  };
387
- function skmtcFormatter({ logRecord, context }) {
358
+ function skmtcFormatter({ logRecord, stackTrail }) {
388
359
  return JSON.stringify({
389
- ...context.getLogFields(),
360
+ stackTrail,
390
361
  level: logRecord.levelName,
391
362
  datetime: logRecord.datetime.getTime(),
392
363
  message: logRecord.msg,
@@ -401,11 +372,6 @@ function flattenArgs(args) {
401
372
  return args;
402
373
  }
403
374
  }
404
- function resultFormatter({ logRecord, context }) {
405
- const { phase, generatorKey } = context.getLogFields();
406
- return JSON.stringify({
407
- level: logRecord.levelName,
408
- phase,
409
- generatorKey
410
- });
375
+ function resultFormatter({ logRecord, stackTrail }) {
376
+ return JSON.stringify({ level: logRecord.levelName, stackTrail });
411
377
  }
@@ -8,12 +8,12 @@ import type { BaseSettings, ClientSettings } from '../types/Settings.js';
8
8
  import type { Method } from '../types/Method.js';
9
9
  import type { OperationInsertable, OperationGenerator } from '../dsl/OperationInsertable.js';
10
10
  import type { OasOperation } from '../oas/operation/Operation.js';
11
- import type { ModelGeneratorKey, OperationGeneratorKey } from '../types/GeneratorKeys.js';
12
11
  import type { CoreContext } from './CoreContext.js';
13
12
  import type { ModelInsertable, ModelGenerator } from '../dsl/ModelInsertable.js';
14
13
  import type { GenerationType, GeneratedDefintion, GeneratedValue } from '../types/GeneratedValue.js';
15
14
  import type { ContentSettings } from '../dsl/ContentSettings.js';
16
15
  import type { RefName } from '../types/RefName.js';
16
+ import { StackTrail } from './StackTrail.js';
17
17
  type ConstructorArgs = {
18
18
  schemaModel: OasDocument;
19
19
  settings: ClientSettings | undefined;
@@ -59,16 +59,18 @@ export type InsertReturn<V extends GeneratedValue, T extends GenerationType> = {
59
59
  definition: GeneratedDefintion<V, T>;
60
60
  };
61
61
  export declare class GenerateContext {
62
+ #private;
62
63
  files: Map<string, FileContents>;
63
64
  renderDependencies: RenderDependencies;
64
65
  packageDependencies: Map<string, string>;
65
66
  schemaModel: OasDocument;
66
67
  settings: ClientSettings | undefined;
67
68
  generatorsMap: Record<string, OperationGenerator | ModelGenerator>;
68
- currentLocation: OperationGeneratorKey | ModelGeneratorKey | undefined;
69
+ stackTrail: StackTrail;
69
70
  constructor({ schemaModel, generatorsMap, settings }: ConstructorArgs);
70
- setCurrentLocation(location: OperationGeneratorKey | ModelGeneratorKey): void;
71
- getLogFields(): Record<string, string>;
71
+ generate(coreContext: CoreContext): void;
72
+ appendStackTrailChunk(chunk: string | string[] | StackTrail): void;
73
+ removeStackTrailChunk(chunk: string | string[] | StackTrail): void;
72
74
  getFile(filePath: string, { throwIfNotFound }?: GetFileOptions): FileContents;
73
75
  register({ imports, packageDependencies, definitions, destinationPath }: RegisterArgs): void;
74
76
  insert<V extends GeneratedValue, T extends GenerationType>({ coreContext, generation, destinationPath, ...rest }: InsertArgs<V, T> & {
@@ -1 +1 @@
1
- {"version":3,"file":"GenerateContext.d.ts","sourceRoot":"","sources":["../../src/context/GenerateContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GenerateContext.d.ts","sourceRoot":"","sources":["../../src/context/GenerateContext.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,33 @@
1
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
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
26
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
27
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
28
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
29
+ };
30
+ var _GenerateContext_instances, _GenerateContext_runOperationGenerator, _GenerateContext_runModelGenerator, _GenerateContext_generateModel, _GenerateContext_generateOperation;
2
31
  Object.defineProperty(exports, "__esModule", { value: true });
3
32
  exports.GenerateContext = void 0;
4
33
  const mod_js_1 = require("../deps/jsr.io/@std/path/1.0.0/mod.js");
@@ -6,8 +35,11 @@ const Import_js_1 = require("../dsl/Import.js");
6
35
  const GeneratorKeys_js_1 = require("../types/GeneratorKeys.js");
7
36
  const OperationDriver_js_1 = require("../dsl/OperationDriver.js");
8
37
  const ModelDriver_js_1 = require("../dsl/ModelDriver.js");
38
+ const StackTrail_js_1 = require("./StackTrail.js");
39
+ const Sentry = __importStar(require("@sentry/deno"));
9
40
  class GenerateContext {
10
41
  constructor({ schemaModel, generatorsMap, settings }) {
42
+ _GenerateContext_instances.add(this);
11
43
  Object.defineProperty(this, "files", {
12
44
  enumerable: true,
13
45
  configurable: true,
@@ -44,12 +76,13 @@ class GenerateContext {
44
76
  writable: true,
45
77
  value: void 0
46
78
  });
47
- Object.defineProperty(this, "currentLocation", {
79
+ Object.defineProperty(this, "stackTrail", {
48
80
  enumerable: true,
49
81
  configurable: true,
50
82
  writable: true,
51
83
  value: void 0
52
84
  });
85
+ this.stackTrail = new StackTrail_js_1.StackTrail();
53
86
  this.generatorsMap = generatorsMap;
54
87
  this.files = new Map();
55
88
  this.renderDependencies = new Map();
@@ -57,11 +90,29 @@ class GenerateContext {
57
90
  this.schemaModel = schemaModel;
58
91
  this.settings = settings;
59
92
  }
60
- setCurrentLocation(location) {
61
- this.currentLocation = location;
93
+ generate(coreContext) {
94
+ Sentry.startSpan({ name: 'Generate operations' }, () => Object.values(coreContext.generatorsMap)
95
+ .filter(generator => generator.type === 'operation')
96
+ .forEach(generator => {
97
+ this.appendStackTrailChunk(generator.id);
98
+ __classPrivateFieldGet(this, _GenerateContext_instances, "m", _GenerateContext_runOperationGenerator).call(this, { context: coreContext, generator });
99
+ this.removeStackTrailChunk(generator.id);
100
+ }));
101
+ Sentry.startSpan({ name: 'Generate models' }, () => {
102
+ Object.values(coreContext.generatorsMap)
103
+ .filter(generator => generator.type === 'model')
104
+ .forEach(generator => {
105
+ this.appendStackTrailChunk(generator.id);
106
+ __classPrivateFieldGet(this, _GenerateContext_instances, "m", _GenerateContext_runModelGenerator).call(this, { context: coreContext, generator });
107
+ this.removeStackTrailChunk(generator.id);
108
+ });
109
+ });
62
110
  }
63
- getLogFields() {
64
- return this.currentLocation ? (0, GeneratorKeys_js_1.fromGeneratorKey)(this.currentLocation) : {};
111
+ appendStackTrailChunk(chunk) {
112
+ this.stackTrail.append(chunk);
113
+ }
114
+ removeStackTrailChunk(chunk) {
115
+ this.stackTrail.remove(chunk);
65
116
  }
66
117
  getFile(filePath, { throwIfNotFound = false } = {}) {
67
118
  const normalisedPath = (0, mod_js_1.normalize)(filePath);
@@ -187,3 +238,53 @@ class GenerateContext {
187
238
  }
188
239
  }
189
240
  exports.GenerateContext = GenerateContext;
241
+ _GenerateContext_instances = new WeakSet(), _GenerateContext_runOperationGenerator = function _GenerateContext_runOperationGenerator({ context, generator }) {
242
+ const generatorInstance = new generator(context);
243
+ context.schemaModel.operations.forEach(operation => {
244
+ // TODO If we make OasOperation generic, for example by
245
+ // adding a `method` type, we could make isSupported
246
+ // a type guard which could help us narrow down the
247
+ // exact operation type that a generator receives.
248
+ // This would allow us to remove some type checks
249
+ // in the generator implementations
250
+ // https://linear.app/skmtc/issue/SKM-32/generic-models-operations
251
+ const { path, method } = operation;
252
+ if (generator.isSupported(operation)) {
253
+ this.appendStackTrailChunk([path, method]);
254
+ __classPrivateFieldGet(this, _GenerateContext_instances, "m", _GenerateContext_generateOperation).call(this, { context, operation, generatorInstance });
255
+ this.removeStackTrailChunk([path, method]);
256
+ }
257
+ });
258
+ }, _GenerateContext_runModelGenerator = function _GenerateContext_runModelGenerator({ context, generator }) {
259
+ const generatorInstance = new generator(context);
260
+ const refNames = Object.keys(context.schemaModel.components?.schemas ?? {});
261
+ refNames.forEach(rn => {
262
+ this.appendStackTrailChunk(rn);
263
+ __classPrivateFieldGet(this, _GenerateContext_instances, "m", _GenerateContext_generateModel).call(this, {
264
+ context,
265
+ refName: rn,
266
+ generatorInstance
267
+ });
268
+ this.removeStackTrailChunk(rn);
269
+ });
270
+ }, _GenerateContext_generateModel = function _GenerateContext_generateModel({ context, refName, generatorInstance }) {
271
+ try {
272
+ generatorInstance.transformModel(refName);
273
+ context.captureCurrentResult('success');
274
+ }
275
+ catch (error) {
276
+ context.logger.error(error);
277
+ context.captureCurrentResult('error');
278
+ Sentry.captureException(error);
279
+ }
280
+ }, _GenerateContext_generateOperation = function _GenerateContext_generateOperation({ context, operation, generatorInstance }) {
281
+ try {
282
+ generatorInstance.transformOperation(operation);
283
+ context.captureCurrentResult('success');
284
+ }
285
+ catch (error) {
286
+ context.logger.error(error);
287
+ context.captureCurrentResult('error');
288
+ Sentry.captureException(error);
289
+ }
290
+ };
@@ -1,15 +1,15 @@
1
1
  import type { OpenAPIV3 } from 'openapi-types';
2
- import type { Trail } from './Trail.js';
3
- type ParseContextArgs = {
4
- parsedDocument: OpenAPIV3.Document;
5
- };
2
+ import { StackTrail } from './StackTrail.js';
3
+ import type { CoreContext } from './CoreContext.js';
4
+ import type { OasDocument } from '../oas/document/Document.js';
6
5
  export declare class ParseContext {
7
- parsedDocument: OpenAPIV3.Document;
8
- refDiffs: Promise<{
9
- trail: Trail;
10
- key: string;
11
- }>[];
12
- constructor({ parsedDocument }: ParseContextArgs);
6
+ #private;
7
+ schema: string;
8
+ stackTrail: StackTrail;
9
+ constructor(schema: string);
10
+ parse(context: CoreContext): OasDocument;
11
+ appendStackTrailChunk(frame: string | string[] | StackTrail): void;
12
+ removeStackTrailChunk(frame: string | string[] | StackTrail): void;
13
13
  }
14
- export {};
14
+ export declare const parseSchema: (schema: string) => OpenAPIV3.Document<{}>;
15
15
  //# sourceMappingURL=ParseContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ParseContext.d.ts","sourceRoot":"","sources":["../../src/context/ParseContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC,KAAK,gBAAgB,GAAG;IACtB,cAAc,EAAE,SAAS,CAAC,QAAQ,CAAA;CACnC,CAAA;AAED,qBAAa,YAAY;IACvB,cAAc,EAAE,SAAS,CAAC,QAAQ,CAAA;IAClC,QAAQ,EAAE,OAAO,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAA;gBAEtC,EAAE,cAAc,EAAE,EAAE,gBAAgB;CAIjD"}
1
+ {"version":3,"file":"ParseContext.d.ts","sourceRoot":"","sources":["../../src/context/ParseContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAK5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAE9D,qBAAa,YAAY;;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,UAAU,CAAA;gBAEV,MAAM,EAAE,MAAM;IAK1B,KAAK,CAAC,OAAO,EAAE,WAAW;IAkC1B,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,UAAU;IAI3D,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,UAAU;CAG5D;AAED,eAAO,MAAM,WAAW,WAAY,MAAM,2BAMzC,CAAA"}
@@ -1,22 +1,92 @@
1
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
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
26
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
27
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
28
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
29
+ };
30
+ var _ParseContext_instances, _ParseContext_parseSchema, _ParseContext_parseDocument;
2
31
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ParseContext = void 0;
32
+ exports.parseSchema = exports.ParseContext = void 0;
33
+ const StackTrail_js_1 = require("./StackTrail.js");
34
+ const Sentry = __importStar(require("@sentry/deno"));
35
+ const mod_js_1 = require("../deps/jsr.io/@std/yaml/0.215.0/mod.js");
36
+ const toDocumentV3_js_1 = require("../oas/document/toDocumentV3.js");
37
+ const Trail_js_1 = require("./Trail.js");
4
38
  class ParseContext {
5
- constructor({ parsedDocument }) {
6
- Object.defineProperty(this, "parsedDocument", {
39
+ constructor(schema) {
40
+ _ParseContext_instances.add(this);
41
+ Object.defineProperty(this, "schema", {
7
42
  enumerable: true,
8
43
  configurable: true,
9
44
  writable: true,
10
45
  value: void 0
11
46
  });
12
- Object.defineProperty(this, "refDiffs", {
47
+ Object.defineProperty(this, "stackTrail", {
13
48
  enumerable: true,
14
49
  configurable: true,
15
50
  writable: true,
16
51
  value: void 0
17
52
  });
18
- this.parsedDocument = parsedDocument;
19
- this.refDiffs = [];
53
+ this.schema = schema;
54
+ this.stackTrail = new StackTrail_js_1.StackTrail();
55
+ }
56
+ parse(context) {
57
+ const parsedDocument = __classPrivateFieldGet(this, _ParseContext_instances, "m", _ParseContext_parseSchema).call(this);
58
+ return __classPrivateFieldGet(this, _ParseContext_instances, "m", _ParseContext_parseDocument).call(this, context, parsedDocument);
59
+ }
60
+ appendStackTrailChunk(frame) {
61
+ this.stackTrail.append(frame);
62
+ }
63
+ removeStackTrailChunk(frame) {
64
+ this.stackTrail.remove(frame);
20
65
  }
21
66
  }
22
67
  exports.ParseContext = ParseContext;
68
+ _ParseContext_instances = new WeakSet(), _ParseContext_parseSchema = function _ParseContext_parseSchema() {
69
+ const parsedDocument = Sentry.startSpan({ name: 'Parse schema to document' }, () => (0, exports.parseSchema)(this.schema));
70
+ return parsedDocument;
71
+ }, _ParseContext_parseDocument = function _ParseContext_parseDocument(context, parsedDocument) {
72
+ const trail = new Trail_js_1.Trail({
73
+ document: parsedDocument
74
+ });
75
+ if (!parsedDocument.openapi.startsWith('3.0.')) {
76
+ throw new Error('Only OpenAPI v3 is supported');
77
+ }
78
+ return (0, toDocumentV3_js_1.toDocumentV3)({
79
+ document: parsedDocument,
80
+ trail,
81
+ context
82
+ });
83
+ };
84
+ const parseSchema = (schema) => {
85
+ if (schema.trimStart().startsWith('{')) {
86
+ return JSON.parse(schema);
87
+ }
88
+ else {
89
+ return (0, mod_js_1.parse)(schema);
90
+ }
91
+ };
92
+ exports.parseSchema = parseSchema;