@duplojs/http 0.4.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/builders/preflight/builder.cjs +1 -0
- package/dist/core/builders/preflight/builder.d.ts +5 -1
- package/dist/core/builders/preflight/builder.mjs +1 -0
- package/dist/core/builders/preflight/process.cjs +2 -1
- package/dist/core/builders/preflight/process.d.ts +4 -2
- package/dist/core/builders/preflight/process.mjs +2 -1
- package/dist/core/builders/preflight/route.cjs +4 -0
- package/dist/core/builders/preflight/route.d.ts +9 -3
- package/dist/core/builders/preflight/route.mjs +4 -0
- package/dist/core/builders/process/builder.cjs +1 -0
- package/dist/core/builders/process/builder.d.ts +4 -1
- package/dist/core/builders/process/builder.mjs +1 -0
- package/dist/core/builders/process/checker.cjs +2 -1
- package/dist/core/builders/process/checker.d.ts +4 -2
- package/dist/core/builders/process/checker.mjs +2 -1
- package/dist/core/builders/process/cut.cjs +2 -1
- package/dist/core/builders/process/cut.d.ts +3 -1
- package/dist/core/builders/process/cut.mjs +2 -1
- package/dist/core/builders/process/extract.cjs +2 -1
- package/dist/core/builders/process/extract.d.ts +3 -1
- package/dist/core/builders/process/extract.mjs +2 -1
- package/dist/core/builders/process/index.cjs +1 -1
- package/dist/core/builders/process/index.d.ts +1 -1
- package/dist/core/builders/process/index.mjs +1 -1
- package/dist/core/builders/process/presetChecker.cjs +2 -1
- package/dist/core/builders/process/presetChecker.d.ts +3 -1
- package/dist/core/builders/process/presetChecker.mjs +2 -1
- package/dist/core/builders/process/process.cjs +2 -1
- package/dist/core/builders/process/process.d.ts +4 -2
- package/dist/core/builders/process/process.mjs +2 -1
- package/dist/core/builders/route/builder.cjs +1 -0
- package/dist/core/builders/route/builder.d.ts +4 -1
- package/dist/core/builders/route/builder.mjs +1 -0
- package/dist/core/builders/route/checker.cjs +2 -1
- package/dist/core/builders/route/checker.d.ts +4 -2
- package/dist/core/builders/route/checker.mjs +2 -1
- package/dist/core/builders/route/cut.cjs +2 -1
- package/dist/core/builders/route/cut.d.ts +3 -1
- package/dist/core/builders/route/cut.mjs +2 -1
- package/dist/core/builders/route/extract.cjs +2 -1
- package/dist/core/builders/route/extract.d.ts +3 -1
- package/dist/core/builders/route/extract.mjs +2 -1
- package/dist/core/builders/route/handler.cjs +9 -2
- package/dist/core/builders/route/handler.d.ts +3 -1
- package/dist/core/builders/route/handler.mjs +9 -2
- package/dist/core/builders/route/presetChecker.cjs +2 -1
- package/dist/core/builders/route/presetChecker.d.ts +3 -1
- package/dist/core/builders/route/presetChecker.mjs +2 -1
- package/dist/core/builders/route/process.cjs +2 -1
- package/dist/core/builders/route/process.d.ts +4 -2
- package/dist/core/builders/route/process.mjs +2 -1
- package/dist/core/functionsBuilders/route/build.d.ts +1 -1
- package/dist/core/functionsBuilders/route/hook.cjs +1 -0
- package/dist/core/functionsBuilders/route/hook.d.ts +4 -3
- package/dist/core/functionsBuilders/route/hook.mjs +1 -0
- package/dist/core/functionsBuilders/steps/build.d.ts +1 -1
- package/dist/core/hub/defaultNotfoundHandler.cjs +1 -0
- package/dist/core/hub/defaultNotfoundHandler.d.ts +1 -0
- package/dist/core/hub/defaultNotfoundHandler.mjs +1 -0
- package/dist/core/hub/hooks.cjs +4 -0
- package/dist/core/hub/hooks.d.ts +3 -0
- package/dist/core/hub/hooks.mjs +4 -1
- package/dist/core/hub/index.cjs +2 -0
- package/dist/core/hub/index.mjs +2 -1
- package/dist/core/implementHttpServer.cjs +36 -0
- package/dist/core/implementHttpServer.d.ts +13 -0
- package/dist/core/implementHttpServer.mjs +34 -0
- package/dist/core/index.cjs +11 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.mjs +6 -1
- package/dist/core/metadata/base.cjs +20 -0
- package/dist/core/metadata/base.d.ts +14 -0
- package/dist/core/metadata/base.mjs +17 -0
- package/dist/core/metadata/ignoreByRouteStore.cjs +7 -0
- package/dist/core/metadata/ignoreByRouteStore.d.ts +1 -0
- package/dist/core/metadata/ignoreByRouteStore.mjs +5 -0
- package/dist/core/metadata/index.cjs +10 -0
- package/dist/core/metadata/index.d.ts +2 -0
- package/dist/core/metadata/index.mjs +2 -0
- package/dist/core/narrowingInput.cjs +14 -0
- package/dist/core/narrowingInput.d.ts +10 -0
- package/dist/core/narrowingInput.mjs +12 -0
- package/dist/core/process/index.d.ts +3 -1
- package/dist/core/route/hooks.cjs +0 -1
- package/dist/core/route/hooks.d.ts +0 -1
- package/dist/core/route/hooks.mjs +0 -1
- package/dist/core/route/index.d.ts +2 -0
- package/dist/core/router/index.cjs +1 -0
- package/dist/core/router/index.mjs +1 -0
- package/dist/core/router/types/buildedRouter.d.ts +2 -1
- package/dist/core/steps/checker.d.ts +2 -0
- package/dist/core/steps/cut.d.ts +2 -0
- package/dist/core/steps/extract.d.ts +2 -0
- package/dist/core/steps/handler.d.ts +2 -0
- package/dist/core/steps/presetChecker.d.ts +2 -0
- package/dist/core/steps/process.d.ts +2 -0
- package/dist/interfaces/node/createHttpServer.cjs +36 -46
- package/dist/interfaces/node/createHttpServer.d.ts +1 -5
- package/dist/interfaces/node/createHttpServer.mjs +36 -46
- package/dist/interfaces/node/hooks.cjs +12 -9
- package/dist/interfaces/node/hooks.d.ts +1 -1
- package/dist/interfaces/node/hooks.mjs +12 -9
- package/dist/plugins/codeGenerator/{stepsToDataParser.cjs → aggregateStepContract.cjs} +8 -5
- package/dist/plugins/codeGenerator/{stepsToDataParser.d.ts → aggregateStepContract.d.ts} +1 -1
- package/dist/plugins/codeGenerator/{stepsToDataParser.mjs → aggregateStepContract.mjs} +9 -6
- package/dist/plugins/codeGenerator/index.cjs +4 -2
- package/dist/plugins/codeGenerator/index.d.ts +2 -1
- package/dist/plugins/codeGenerator/index.mjs +2 -1
- package/dist/plugins/codeGenerator/metadata.cjs +8 -0
- package/dist/plugins/codeGenerator/metadata.d.ts +1 -0
- package/dist/plugins/codeGenerator/metadata.mjs +6 -0
- package/dist/plugins/codeGenerator/plugin.cjs +3 -0
- package/dist/plugins/codeGenerator/plugin.mjs +4 -1
- package/dist/plugins/codeGenerator/routeToDataParser.cjs +7 -2
- package/dist/plugins/codeGenerator/routeToDataParser.mjs +8 -3
- package/dist/plugins/openApiGenerator/aggregateStepContract.cjs +6 -3
- package/dist/plugins/openApiGenerator/aggregateStepContract.mjs +7 -4
- package/dist/plugins/openApiGenerator/index.cjs +2 -0
- package/dist/plugins/openApiGenerator/index.d.ts +1 -0
- package/dist/plugins/openApiGenerator/index.mjs +1 -0
- package/dist/plugins/openApiGenerator/makeOpenApiRoute.cjs +3 -1
- package/dist/plugins/openApiGenerator/makeOpenApiRoute.d.ts +2 -0
- package/dist/plugins/openApiGenerator/makeOpenApiRoute.mjs +3 -1
- package/dist/plugins/openApiGenerator/metadata.cjs +8 -0
- package/dist/plugins/openApiGenerator/metadata.d.ts +1 -0
- package/dist/plugins/openApiGenerator/metadata.mjs +6 -0
- package/dist/plugins/openApiGenerator/plugin.cjs +17 -9
- package/dist/plugins/openApiGenerator/plugin.d.ts +2 -2
- package/dist/plugins/openApiGenerator/plugin.mjs +18 -10
- package/dist/plugins/openApiGenerator/routeToOpenApi.cjs +5 -0
- package/dist/plugins/openApiGenerator/routeToOpenApi.mjs +6 -1
- package/package.json +1 -1
- /package/dist/core/builders/process/{export.cjs → exports.cjs} +0 -0
- /package/dist/core/builders/process/{export.d.ts → exports.d.ts} +0 -0
- /package/dist/core/builders/process/{export.mjs → exports.mjs} +0 -0
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
require('../../core/steps/index.cjs');
|
|
4
4
|
var utils = require('@duplojs/utils');
|
|
5
|
+
var metadata = require('./metadata.cjs');
|
|
6
|
+
var identifier = require('../../core/steps/identifier.cjs');
|
|
5
7
|
var process = require('../../core/steps/process.cjs');
|
|
6
8
|
var extract = require('../../core/steps/extract.cjs');
|
|
7
9
|
var presetChecker = require('../../core/steps/presetChecker.cjs');
|
|
@@ -9,12 +11,13 @@ var checker = require('../../core/steps/checker.cjs');
|
|
|
9
11
|
var cut = require('../../core/steps/cut.cjs');
|
|
10
12
|
var handler = require('../../core/steps/handler.cjs');
|
|
11
13
|
|
|
12
|
-
function
|
|
13
|
-
const
|
|
14
|
+
function aggregateStepContract(steps, params) {
|
|
15
|
+
const filteredStep = utils.A.filter(steps, (step) => utils.A.find(step.definition.metadata, metadata.IgnoreByCodeGeneratorMetadata.is) === undefined);
|
|
16
|
+
const processContracts = utils.pipe(filteredStep, utils.A.filter(identifier.stepIdentifier(process.processStepKind)), utils.A.filter((step) => utils.A.find(step.definition.process.definition.metadata, metadata.IgnoreByCodeGeneratorMetadata.is) === undefined), utils.A.map((element) => aggregateStepContract(element.definition.process.definition.steps, params)), utils.O.to({
|
|
14
17
|
entrypointContract: utils.A.map((result) => result.entrypointContract),
|
|
15
18
|
endpointContract: utils.A.flatMap((result) => result.endpointContract),
|
|
16
19
|
}));
|
|
17
|
-
const entrypointContract = utils.pipe(
|
|
20
|
+
const entrypointContract = utils.pipe(filteredStep, utils.A.filter(extract.extractStepKind.has), utils.A.map((extractStep) => extractStep.definition.shape), utils.A.concat(processContracts.entrypointContract), utils.A.reduce(utils.A.reduceFrom({
|
|
18
21
|
body: {},
|
|
19
22
|
headers: {},
|
|
20
23
|
params: {},
|
|
@@ -43,7 +46,7 @@ function stepsToDataParser(steps, params) {
|
|
|
43
46
|
}
|
|
44
47
|
return utils.O.entry(key, currentExtractDataParser);
|
|
45
48
|
}), utils.O.fromEntries, (object) => nextWithObject(lastValue, object))));
|
|
46
|
-
const endpointContract = utils.pipe(
|
|
49
|
+
const endpointContract = utils.pipe(filteredStep, utils.A.flatMap((step) => utils.P.match(step)
|
|
47
50
|
.when(process.processStepKind.has, () => [])
|
|
48
51
|
.when(extract.extractStepKind.has, ({ definition }) => definition.responseContract ?? params.defaultExtractContract)
|
|
49
52
|
.when(presetChecker.presetCheckerStepKind.has, ({ definition }) => definition.presetChecker.definition.responseContract)
|
|
@@ -63,4 +66,4 @@ function stepsToDataParser(steps, params) {
|
|
|
63
66
|
};
|
|
64
67
|
}
|
|
65
68
|
|
|
66
|
-
exports.
|
|
69
|
+
exports.aggregateStepContract = aggregateStepContract;
|
|
@@ -10,5 +10,5 @@ export interface StepsToDataParserResult {
|
|
|
10
10
|
entrypointContract: EntrypointReduceResult;
|
|
11
11
|
endpointContract: DP.DataParser[];
|
|
12
12
|
}
|
|
13
|
-
export declare function
|
|
13
|
+
export declare function aggregateStepContract(steps: readonly Steps[], params: StepsToDataParserParams): StepsToDataParserResult;
|
|
14
14
|
export {};
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import '../../core/steps/index.mjs';
|
|
2
|
-
import {
|
|
2
|
+
import { A, pipe, O, DP, P, hasSomeKinds } from '@duplojs/utils';
|
|
3
|
+
import { IgnoreByCodeGeneratorMetadata } from './metadata.mjs';
|
|
4
|
+
import { stepIdentifier } from '../../core/steps/identifier.mjs';
|
|
3
5
|
import { processStepKind } from '../../core/steps/process.mjs';
|
|
4
6
|
import { extractStepKind } from '../../core/steps/extract.mjs';
|
|
5
7
|
import { presetCheckerStepKind } from '../../core/steps/presetChecker.mjs';
|
|
@@ -7,12 +9,13 @@ import { checkerStepKind } from '../../core/steps/checker.mjs';
|
|
|
7
9
|
import { cutStepKind } from '../../core/steps/cut.mjs';
|
|
8
10
|
import { handlerStepKind } from '../../core/steps/handler.mjs';
|
|
9
11
|
|
|
10
|
-
function
|
|
11
|
-
const
|
|
12
|
+
function aggregateStepContract(steps, params) {
|
|
13
|
+
const filteredStep = A.filter(steps, (step) => A.find(step.definition.metadata, IgnoreByCodeGeneratorMetadata.is) === undefined);
|
|
14
|
+
const processContracts = pipe(filteredStep, A.filter(stepIdentifier(processStepKind)), A.filter((step) => A.find(step.definition.process.definition.metadata, IgnoreByCodeGeneratorMetadata.is) === undefined), A.map((element) => aggregateStepContract(element.definition.process.definition.steps, params)), O.to({
|
|
12
15
|
entrypointContract: A.map((result) => result.entrypointContract),
|
|
13
16
|
endpointContract: A.flatMap((result) => result.endpointContract),
|
|
14
17
|
}));
|
|
15
|
-
const entrypointContract = pipe(
|
|
18
|
+
const entrypointContract = pipe(filteredStep, A.filter(extractStepKind.has), A.map((extractStep) => extractStep.definition.shape), A.concat(processContracts.entrypointContract), A.reduce(A.reduceFrom({
|
|
16
19
|
body: {},
|
|
17
20
|
headers: {},
|
|
18
21
|
params: {},
|
|
@@ -41,7 +44,7 @@ function stepsToDataParser(steps, params) {
|
|
|
41
44
|
}
|
|
42
45
|
return O.entry(key, currentExtractDataParser);
|
|
43
46
|
}), O.fromEntries, (object) => nextWithObject(lastValue, object))));
|
|
44
|
-
const endpointContract = pipe(
|
|
47
|
+
const endpointContract = pipe(filteredStep, A.flatMap((step) => P.match(step)
|
|
45
48
|
.when(processStepKind.has, () => [])
|
|
46
49
|
.when(extractStepKind.has, ({ definition }) => definition.responseContract ?? params.defaultExtractContract)
|
|
47
50
|
.when(presetCheckerStepKind.has, ({ definition }) => definition.presetChecker.definition.responseContract)
|
|
@@ -61,4 +64,4 @@ function stepsToDataParser(steps, params) {
|
|
|
61
64
|
};
|
|
62
65
|
}
|
|
63
66
|
|
|
64
|
-
export {
|
|
67
|
+
export { aggregateStepContract };
|
|
@@ -4,10 +4,12 @@ require('@duplojs/data-parser-tools/toTypescript');
|
|
|
4
4
|
require('./types/index.cjs');
|
|
5
5
|
var plugin = require('./plugin.cjs');
|
|
6
6
|
var routeToDataParser = require('./routeToDataParser.cjs');
|
|
7
|
-
var
|
|
7
|
+
var aggregateStepContract = require('./aggregateStepContract.cjs');
|
|
8
|
+
var metadata = require('./metadata.cjs');
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
exports.codeGeneratorPlugin = plugin.codeGeneratorPlugin;
|
|
12
13
|
exports.routeToDataParser = routeToDataParser.routeToDataParser;
|
|
13
|
-
exports.
|
|
14
|
+
exports.aggregateStepContract = aggregateStepContract.aggregateStepContract;
|
|
15
|
+
exports.IgnoreByCodeGeneratorMetadata = metadata.IgnoreByCodeGeneratorMetadata;
|
|
@@ -2,4 +2,5 @@ import '@duplojs/data-parser-tools/toTypescript';
|
|
|
2
2
|
import './types/index.mjs';
|
|
3
3
|
export { codeGeneratorPlugin } from './plugin.mjs';
|
|
4
4
|
export { routeToDataParser } from './routeToDataParser.mjs';
|
|
5
|
-
export {
|
|
5
|
+
export { aggregateStepContract } from './aggregateStepContract.mjs';
|
|
6
|
+
export { IgnoreByCodeGeneratorMetadata } from './metadata.mjs';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
require('../../core/metadata/index.cjs');
|
|
4
|
+
var base = require('../../core/metadata/base.cjs');
|
|
5
|
+
|
|
6
|
+
const IgnoreByCodeGeneratorMetadata = base.createMetadata("ignore-by-code-generator");
|
|
7
|
+
|
|
8
|
+
exports.IgnoreByCodeGeneratorMetadata = IgnoreByCodeGeneratorMetadata;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const IgnoreByCodeGeneratorMetadata: import("../../core/metadata").MetadataHandler<"ignore-by-code-generator", unknown>;
|
|
@@ -30,6 +30,9 @@ function codeGeneratorPlugin(pluginParams) {
|
|
|
30
30
|
hooksHubLifeCycle: [
|
|
31
31
|
{
|
|
32
32
|
beforeStartServer: async (hub) => {
|
|
33
|
+
if (!utils.equal(hub.config.environment, ["DEV", "BUILD"])) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
33
36
|
const routes = hub.aggregatesRoutes();
|
|
34
37
|
const dataParserRoutes = utils.A.flatMap(routes, (route) => routeToDataParser.routeToDataParser(route, {
|
|
35
38
|
defaultExtractContract: hub.defaultExtractContract,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as DataParserToTypescript from '@duplojs/data-parser-tools/toTypescript';
|
|
2
|
-
import { A, DP } from '@duplojs/utils';
|
|
2
|
+
import { equal, A, DP } from '@duplojs/utils';
|
|
3
3
|
import { routeToDataParser } from './routeToDataParser.mjs';
|
|
4
4
|
import { writeFile } from 'node:fs/promises';
|
|
5
5
|
|
|
@@ -9,6 +9,9 @@ function codeGeneratorPlugin(pluginParams) {
|
|
|
9
9
|
hooksHubLifeCycle: [
|
|
10
10
|
{
|
|
11
11
|
beforeStartServer: async (hub) => {
|
|
12
|
+
if (!equal(hub.config.environment, ["DEV", "BUILD"])) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
12
15
|
const routes = hub.aggregatesRoutes();
|
|
13
16
|
const dataParserRoutes = A.flatMap(routes, (route) => routeToDataParser(route, {
|
|
14
17
|
defaultExtractContract: hub.defaultExtractContract,
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var aggregateStepContract = require('./aggregateStepContract.cjs');
|
|
4
4
|
var utils = require('@duplojs/utils');
|
|
5
|
+
var metadata = require('./metadata.cjs');
|
|
5
6
|
|
|
6
7
|
function routeToDataParser(route, params) {
|
|
8
|
+
const isIgnore = utils.A.find(route.definition.metadata, metadata.IgnoreByCodeGeneratorMetadata.is);
|
|
9
|
+
if (isIgnore) {
|
|
10
|
+
return [];
|
|
11
|
+
}
|
|
7
12
|
return utils.pipe([
|
|
8
13
|
...route.definition.preflightSteps,
|
|
9
14
|
...route.definition.steps,
|
|
10
|
-
], (steps) =>
|
|
15
|
+
], (steps) => aggregateStepContract.aggregateStepContract(steps, {
|
|
11
16
|
defaultExtractContract: params.defaultExtractContract,
|
|
12
17
|
}), utils.O.transformProperty("entrypointContract", utils.innerPipe(utils.O.entries, utils.A.select(({ element: [key, value], select, skip }) => {
|
|
13
18
|
if (utils.DP.dataParserKind.has(value)) {
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { pipe, O, innerPipe,
|
|
1
|
+
import { aggregateStepContract } from './aggregateStepContract.mjs';
|
|
2
|
+
import { A, pipe, O, innerPipe, DP } from '@duplojs/utils';
|
|
3
|
+
import { IgnoreByCodeGeneratorMetadata } from './metadata.mjs';
|
|
3
4
|
|
|
4
5
|
function routeToDataParser(route, params) {
|
|
6
|
+
const isIgnore = A.find(route.definition.metadata, IgnoreByCodeGeneratorMetadata.is);
|
|
7
|
+
if (isIgnore) {
|
|
8
|
+
return [];
|
|
9
|
+
}
|
|
5
10
|
return pipe([
|
|
6
11
|
...route.definition.preflightSteps,
|
|
7
12
|
...route.definition.steps,
|
|
8
|
-
], (steps) =>
|
|
13
|
+
], (steps) => aggregateStepContract(steps, {
|
|
9
14
|
defaultExtractContract: params.defaultExtractContract,
|
|
10
15
|
}), O.transformProperty("entrypointContract", innerPipe(O.entries, A.select(({ element: [key, value], select, skip }) => {
|
|
11
16
|
if (DP.dataParserKind.has(value)) {
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
require('../../core/steps/index.cjs');
|
|
4
4
|
var utils = require('@duplojs/utils');
|
|
5
|
+
var metadata = require('./metadata.cjs');
|
|
6
|
+
var identifier = require('../../core/steps/identifier.cjs');
|
|
5
7
|
var process = require('../../core/steps/process.cjs');
|
|
6
8
|
var extract = require('../../core/steps/extract.cjs');
|
|
7
9
|
var presetChecker = require('../../core/steps/presetChecker.cjs');
|
|
@@ -10,11 +12,12 @@ var cut = require('../../core/steps/cut.cjs');
|
|
|
10
12
|
var handler = require('../../core/steps/handler.cjs');
|
|
11
13
|
|
|
12
14
|
function aggregateStepContract(steps, params) {
|
|
13
|
-
const
|
|
15
|
+
const filteredStep = utils.A.filter(steps, (step) => utils.A.find(step.definition.metadata, metadata.IgnoreByOpenApiGeneratorMetadata.is) === undefined);
|
|
16
|
+
const processContracts = utils.pipe(filteredStep, utils.A.filter(identifier.stepIdentifier(process.processStepKind)), utils.A.filter((step) => utils.A.find(step.definition.process.definition.metadata, metadata.IgnoreByOpenApiGeneratorMetadata.is) === undefined), utils.A.map((element) => aggregateStepContract(element.definition.process.definition.steps, params)), utils.O.to({
|
|
14
17
|
entrypointContract: utils.A.map((result) => result.entrypointContract),
|
|
15
18
|
endpointContract: utils.A.flatMap((result) => result.endpointContract),
|
|
16
19
|
}));
|
|
17
|
-
const entrypointContract = utils.pipe(
|
|
20
|
+
const entrypointContract = utils.pipe(filteredStep, utils.A.filter(extract.extractStepKind.has), utils.A.map((extractStep) => extractStep.definition.shape), utils.A.concat(processContracts.entrypointContract), utils.A.reduce(utils.A.reduceFrom({
|
|
18
21
|
body: {},
|
|
19
22
|
headers: {},
|
|
20
23
|
params: {},
|
|
@@ -43,7 +46,7 @@ function aggregateStepContract(steps, params) {
|
|
|
43
46
|
}
|
|
44
47
|
return utils.O.entry(key, currentExtractDataParser);
|
|
45
48
|
}), utils.O.fromEntries, (object) => nextWithObject(lastValue, object))));
|
|
46
|
-
const endpointContract = utils.pipe(
|
|
49
|
+
const endpointContract = utils.pipe(filteredStep, utils.A.flatMap((step) => utils.P.match(step)
|
|
47
50
|
.when(process.processStepKind.has, () => [])
|
|
48
51
|
.when(extract.extractStepKind.has, ({ definition }) => definition.responseContract ?? params.defaultExtractContract)
|
|
49
52
|
.when(presetChecker.presetCheckerStepKind.has, ({ definition }) => definition.presetChecker.definition.responseContract)
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import '../../core/steps/index.mjs';
|
|
2
|
-
import {
|
|
2
|
+
import { A, pipe, O, DP, P, hasSomeKinds } from '@duplojs/utils';
|
|
3
|
+
import { IgnoreByOpenApiGeneratorMetadata } from './metadata.mjs';
|
|
4
|
+
import { stepIdentifier } from '../../core/steps/identifier.mjs';
|
|
3
5
|
import { processStepKind } from '../../core/steps/process.mjs';
|
|
4
6
|
import { extractStepKind } from '../../core/steps/extract.mjs';
|
|
5
7
|
import { presetCheckerStepKind } from '../../core/steps/presetChecker.mjs';
|
|
@@ -8,11 +10,12 @@ import { cutStepKind } from '../../core/steps/cut.mjs';
|
|
|
8
10
|
import { handlerStepKind } from '../../core/steps/handler.mjs';
|
|
9
11
|
|
|
10
12
|
function aggregateStepContract(steps, params) {
|
|
11
|
-
const
|
|
13
|
+
const filteredStep = A.filter(steps, (step) => A.find(step.definition.metadata, IgnoreByOpenApiGeneratorMetadata.is) === undefined);
|
|
14
|
+
const processContracts = pipe(filteredStep, A.filter(stepIdentifier(processStepKind)), A.filter((step) => A.find(step.definition.process.definition.metadata, IgnoreByOpenApiGeneratorMetadata.is) === undefined), A.map((element) => aggregateStepContract(element.definition.process.definition.steps, params)), O.to({
|
|
12
15
|
entrypointContract: A.map((result) => result.entrypointContract),
|
|
13
16
|
endpointContract: A.flatMap((result) => result.endpointContract),
|
|
14
17
|
}));
|
|
15
|
-
const entrypointContract = pipe(
|
|
18
|
+
const entrypointContract = pipe(filteredStep, A.filter(extractStepKind.has), A.map((extractStep) => extractStep.definition.shape), A.concat(processContracts.entrypointContract), A.reduce(A.reduceFrom({
|
|
16
19
|
body: {},
|
|
17
20
|
headers: {},
|
|
18
21
|
params: {},
|
|
@@ -41,7 +44,7 @@ function aggregateStepContract(steps, params) {
|
|
|
41
44
|
}
|
|
42
45
|
return O.entry(key, currentExtractDataParser);
|
|
43
46
|
}), O.fromEntries, (object) => nextWithObject(lastValue, object))));
|
|
44
|
-
const endpointContract = pipe(
|
|
47
|
+
const endpointContract = pipe(filteredStep, A.flatMap((step) => P.match(step)
|
|
45
48
|
.when(processStepKind.has, () => [])
|
|
46
49
|
.when(extractStepKind.has, ({ definition }) => definition.responseContract ?? params.defaultExtractContract)
|
|
47
50
|
.when(presetCheckerStepKind.has, ({ definition }) => definition.presetChecker.definition.responseContract)
|
|
@@ -7,6 +7,7 @@ var routeToOpenApi = require('./routeToOpenApi.cjs');
|
|
|
7
7
|
var aggregateStepContract = require('./aggregateStepContract.cjs');
|
|
8
8
|
var makeOpenApiRoute = require('./makeOpenApiRoute.cjs');
|
|
9
9
|
var makeOpenApiPage = require('./makeOpenApiPage.cjs');
|
|
10
|
+
var metadata = require('./metadata.cjs');
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
|
|
@@ -15,3 +16,4 @@ exports.routeToOpenApi = routeToOpenApi.routeToOpenApi;
|
|
|
15
16
|
exports.aggregateStepContract = aggregateStepContract.aggregateStepContract;
|
|
16
17
|
exports.makeOpenApiRoute = makeOpenApiRoute.makeOpenApiRoute;
|
|
17
18
|
exports.makeOpenApiPage = makeOpenApiPage.makeOpenApiPage;
|
|
19
|
+
exports.IgnoreByOpenApiGeneratorMetadata = metadata.IgnoreByOpenApiGeneratorMetadata;
|
|
@@ -5,3 +5,4 @@ export { routeToOpenApi } from './routeToOpenApi.mjs';
|
|
|
5
5
|
export { aggregateStepContract } from './aggregateStepContract.mjs';
|
|
6
6
|
export { makeOpenApiRoute } from './makeOpenApiRoute.mjs';
|
|
7
7
|
export { makeOpenApiPage } from './makeOpenApiPage.mjs';
|
|
8
|
+
export { IgnoreByOpenApiGeneratorMetadata } from './metadata.mjs';
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
require('../../core/builders/index.cjs');
|
|
4
|
+
require('../../core/metadata/index.cjs');
|
|
4
5
|
require('../../core/response/index.cjs');
|
|
5
6
|
var utils = require('@duplojs/utils');
|
|
6
7
|
var builder = require('../../core/builders/route/builder.cjs');
|
|
8
|
+
var ignoreByRouteStore = require('../../core/metadata/ignoreByRouteStore.cjs');
|
|
7
9
|
var contract = require('../../core/response/contract.cjs');
|
|
8
10
|
|
|
9
11
|
function makeOpenApiRoute(routePath, openApiPage) {
|
|
10
|
-
return builder.useRouteBuilder("GET", routePath)
|
|
12
|
+
return builder.useRouteBuilder("GET", routePath, { metadata: [ignoreByRouteStore.IgnoreByRouteStoreMetadata()] })
|
|
11
13
|
.handler(contract.ResponseContract.ok("swaggerUi", utils.DP.string()), (__, { response }) => response("swaggerUi", openApiPage)
|
|
12
14
|
.setHeader("content-type", "text/html"));
|
|
13
15
|
}
|
|
@@ -3,6 +3,7 @@ import type { RoutePath } from "../../core/route";
|
|
|
3
3
|
import { DP } from "@duplojs/utils";
|
|
4
4
|
export declare function makeOpenApiRoute(routePath: RoutePath, openApiPage: string): import("../../core/route").Route<{
|
|
5
5
|
readonly method: "GET";
|
|
6
|
+
readonly metadata: readonly [import("../../core/metadata").Metadata<"ignore-by-route-store", unknown>];
|
|
6
7
|
readonly hooks: readonly [];
|
|
7
8
|
readonly preflightSteps: readonly [];
|
|
8
9
|
readonly paths: readonly [`/${string}`];
|
|
@@ -14,5 +15,6 @@ export declare function makeOpenApiRoute(routePath: RoutePath, openApiPage: stri
|
|
|
14
15
|
readonly checkers: readonly [];
|
|
15
16
|
}>>>;
|
|
16
17
|
theFunction(floor: {}, param: import("../../core/steps").HandlerStepFunctionParams<import("../../core/request").Request, import("../../core/response").PredictedResponse<"200", "swaggerUi", string>>): import("@duplojs/utils").MaybePromise<import("../../core/response").PredictedResponse<"200", "swaggerUi", string>>;
|
|
18
|
+
readonly metadata: readonly [];
|
|
17
19
|
}>];
|
|
18
20
|
}>;
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import '../../core/builders/index.mjs';
|
|
2
|
+
import '../../core/metadata/index.mjs';
|
|
2
3
|
import '../../core/response/index.mjs';
|
|
3
4
|
import { DP } from '@duplojs/utils';
|
|
4
5
|
import { useRouteBuilder } from '../../core/builders/route/builder.mjs';
|
|
6
|
+
import { IgnoreByRouteStoreMetadata } from '../../core/metadata/ignoreByRouteStore.mjs';
|
|
5
7
|
import { ResponseContract } from '../../core/response/contract.mjs';
|
|
6
8
|
|
|
7
9
|
function makeOpenApiRoute(routePath, openApiPage) {
|
|
8
|
-
return useRouteBuilder("GET", routePath)
|
|
10
|
+
return useRouteBuilder("GET", routePath, { metadata: [IgnoreByRouteStoreMetadata()] })
|
|
9
11
|
.handler(ResponseContract.ok("swaggerUi", DP.string()), (__, { response }) => response("swaggerUi", openApiPage)
|
|
10
12
|
.setHeader("content-type", "text/html"));
|
|
11
13
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
require('../../core/metadata/index.cjs');
|
|
4
|
+
var base = require('../../core/metadata/base.cjs');
|
|
5
|
+
|
|
6
|
+
const IgnoreByOpenApiGeneratorMetadata = base.createMetadata("ignore-by-open-api-generator");
|
|
7
|
+
|
|
8
|
+
exports.IgnoreByOpenApiGeneratorMetadata = IgnoreByOpenApiGeneratorMetadata;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const IgnoreByOpenApiGeneratorMetadata: import("../../core/metadata").MetadataHandler<"ignore-by-open-api-generator", unknown>;
|
|
@@ -12,6 +12,11 @@ function openApiGeneratorPlugin(pluginParams) {
|
|
|
12
12
|
hooksHubLifeCycle: [
|
|
13
13
|
{
|
|
14
14
|
beforeServerBuildRoutes: async (hub) => {
|
|
15
|
+
if (!utils.equal(hub.config.environment, ["DEV", "BUILD"])
|
|
16
|
+
|| (!pluginParams.routePath
|
|
17
|
+
&& !pluginParams.outputFile)) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
15
20
|
const contextToJsonSchemaFactory = new Map();
|
|
16
21
|
const resultSchemaContext = new Map();
|
|
17
22
|
const routes = hub.aggregatesRoutes();
|
|
@@ -71,16 +76,19 @@ function openApiGeneratorPlugin(pluginParams) {
|
|
|
71
76
|
: undefined,
|
|
72
77
|
};
|
|
73
78
|
const openApiDocumentString = JSON.stringify(openApiDocument, null, 2);
|
|
74
|
-
if (pluginParams.
|
|
75
|
-
await promises.writeFile(pluginParams.
|
|
79
|
+
if (pluginParams.outputFile) {
|
|
80
|
+
await promises.writeFile(pluginParams.outputFile, openApiDocumentString);
|
|
81
|
+
}
|
|
82
|
+
if (pluginParams.routePath) {
|
|
83
|
+
const openApiPage = makeOpenApiPage.makeOpenApiPage({
|
|
84
|
+
openApiDocument: openApiDocumentString,
|
|
85
|
+
pageTitle: pluginParams.title ?? "Swagger API",
|
|
86
|
+
swaggerUiVersion: pluginParams.swaggerUiVersion ?? "5.31.0",
|
|
87
|
+
});
|
|
88
|
+
const openApiRoute = makeOpenApiRoute.makeOpenApiRoute(pluginParams.routePath, openApiPage);
|
|
89
|
+
return hub.register(openApiRoute);
|
|
76
90
|
}
|
|
77
|
-
|
|
78
|
-
openApiDocument: openApiDocumentString,
|
|
79
|
-
pageTitle: pluginParams.title ?? "Swagger API",
|
|
80
|
-
swaggerUiVersion: pluginParams.swaggerUiVersion ?? "5.31.0",
|
|
81
|
-
});
|
|
82
|
-
const openApiRoute = makeOpenApiRoute.makeOpenApiRoute(pluginParams.routePath, openApiPage);
|
|
83
|
-
return hub.register(openApiRoute);
|
|
91
|
+
return;
|
|
84
92
|
},
|
|
85
93
|
},
|
|
86
94
|
],
|
|
@@ -14,8 +14,8 @@ interface OpenApiSecurityOptionBasic {
|
|
|
14
14
|
type: "basic";
|
|
15
15
|
}
|
|
16
16
|
export interface OpenApiGeneratorPluginParams {
|
|
17
|
-
routePath
|
|
18
|
-
|
|
17
|
+
routePath?: RoutePath;
|
|
18
|
+
outputFile?: string;
|
|
19
19
|
/**
|
|
20
20
|
* @default "Swagger API"
|
|
21
21
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { routeToOpenApi } from './routeToOpenApi.mjs';
|
|
2
|
-
import { pipe, A, O, G, P, justReturn } from '@duplojs/utils';
|
|
2
|
+
import { equal, pipe, A, O, G, P, justReturn } from '@duplojs/utils';
|
|
3
3
|
import { makeOpenApiPage } from './makeOpenApiPage.mjs';
|
|
4
4
|
import { makeOpenApiRoute } from './makeOpenApiRoute.mjs';
|
|
5
5
|
import { writeFile } from 'fs/promises';
|
|
@@ -10,6 +10,11 @@ function openApiGeneratorPlugin(pluginParams) {
|
|
|
10
10
|
hooksHubLifeCycle: [
|
|
11
11
|
{
|
|
12
12
|
beforeServerBuildRoutes: async (hub) => {
|
|
13
|
+
if (!equal(hub.config.environment, ["DEV", "BUILD"])
|
|
14
|
+
|| (!pluginParams.routePath
|
|
15
|
+
&& !pluginParams.outputFile)) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
13
18
|
const contextToJsonSchemaFactory = new Map();
|
|
14
19
|
const resultSchemaContext = new Map();
|
|
15
20
|
const routes = hub.aggregatesRoutes();
|
|
@@ -69,16 +74,19 @@ function openApiGeneratorPlugin(pluginParams) {
|
|
|
69
74
|
: undefined,
|
|
70
75
|
};
|
|
71
76
|
const openApiDocumentString = JSON.stringify(openApiDocument, null, 2);
|
|
72
|
-
if (pluginParams.
|
|
73
|
-
await writeFile(pluginParams.
|
|
77
|
+
if (pluginParams.outputFile) {
|
|
78
|
+
await writeFile(pluginParams.outputFile, openApiDocumentString);
|
|
79
|
+
}
|
|
80
|
+
if (pluginParams.routePath) {
|
|
81
|
+
const openApiPage = makeOpenApiPage({
|
|
82
|
+
openApiDocument: openApiDocumentString,
|
|
83
|
+
pageTitle: pluginParams.title ?? "Swagger API",
|
|
84
|
+
swaggerUiVersion: pluginParams.swaggerUiVersion ?? "5.31.0",
|
|
85
|
+
});
|
|
86
|
+
const openApiRoute = makeOpenApiRoute(pluginParams.routePath, openApiPage);
|
|
87
|
+
return hub.register(openApiRoute);
|
|
74
88
|
}
|
|
75
|
-
|
|
76
|
-
openApiDocument: openApiDocumentString,
|
|
77
|
-
pageTitle: pluginParams.title ?? "Swagger API",
|
|
78
|
-
swaggerUiVersion: pluginParams.swaggerUiVersion ?? "5.31.0",
|
|
79
|
-
});
|
|
80
|
-
const openApiRoute = makeOpenApiRoute(pluginParams.routePath, openApiPage);
|
|
81
|
-
return hub.register(openApiRoute);
|
|
89
|
+
return;
|
|
82
90
|
},
|
|
83
91
|
},
|
|
84
92
|
],
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var aggregateStepContract = require('./aggregateStepContract.cjs');
|
|
4
4
|
var utils = require('@duplojs/utils');
|
|
5
5
|
var toJsonSchema = require('@duplojs/data-parser-tools/toJsonSchema');
|
|
6
|
+
var metadata = require('./metadata.cjs');
|
|
6
7
|
|
|
7
8
|
function factoryJsonSchema(params) {
|
|
8
9
|
const identifier = params.schema.definition.identifier
|
|
@@ -33,6 +34,10 @@ const methodMapper = {
|
|
|
33
34
|
OPTIONS: "options",
|
|
34
35
|
};
|
|
35
36
|
function routeToOpenApi(route, params) {
|
|
37
|
+
const isIgnore = utils.A.find(route.definition.metadata, metadata.IgnoreByOpenApiGeneratorMetadata.is);
|
|
38
|
+
if (isIgnore) {
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
36
41
|
const aggregateStepResult = aggregateStepContract.aggregateStepContract([
|
|
37
42
|
...route.definition.preflightSteps,
|
|
38
43
|
...route.definition.steps,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { aggregateStepContract } from './aggregateStepContract.mjs';
|
|
2
|
-
import { O,
|
|
2
|
+
import { O, A, pipe, DP, when, justReturn, whenNot, P, isType, S } from '@duplojs/utils';
|
|
3
3
|
import { render, defaultTransformers } from '@duplojs/data-parser-tools/toJsonSchema';
|
|
4
|
+
import { IgnoreByOpenApiGeneratorMetadata } from './metadata.mjs';
|
|
4
5
|
|
|
5
6
|
function factoryJsonSchema(params) {
|
|
6
7
|
const identifier = params.schema.definition.identifier
|
|
@@ -31,6 +32,10 @@ const methodMapper = {
|
|
|
31
32
|
OPTIONS: "options",
|
|
32
33
|
};
|
|
33
34
|
function routeToOpenApi(route, params) {
|
|
35
|
+
const isIgnore = A.find(route.definition.metadata, IgnoreByOpenApiGeneratorMetadata.is);
|
|
36
|
+
if (isIgnore) {
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
34
39
|
const aggregateStepResult = aggregateStepContract([
|
|
35
40
|
...route.definition.preflightSteps,
|
|
36
41
|
...route.definition.steps,
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|