@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.
Files changed (135) hide show
  1. package/dist/core/builders/preflight/builder.cjs +1 -0
  2. package/dist/core/builders/preflight/builder.d.ts +5 -1
  3. package/dist/core/builders/preflight/builder.mjs +1 -0
  4. package/dist/core/builders/preflight/process.cjs +2 -1
  5. package/dist/core/builders/preflight/process.d.ts +4 -2
  6. package/dist/core/builders/preflight/process.mjs +2 -1
  7. package/dist/core/builders/preflight/route.cjs +4 -0
  8. package/dist/core/builders/preflight/route.d.ts +9 -3
  9. package/dist/core/builders/preflight/route.mjs +4 -0
  10. package/dist/core/builders/process/builder.cjs +1 -0
  11. package/dist/core/builders/process/builder.d.ts +4 -1
  12. package/dist/core/builders/process/builder.mjs +1 -0
  13. package/dist/core/builders/process/checker.cjs +2 -1
  14. package/dist/core/builders/process/checker.d.ts +4 -2
  15. package/dist/core/builders/process/checker.mjs +2 -1
  16. package/dist/core/builders/process/cut.cjs +2 -1
  17. package/dist/core/builders/process/cut.d.ts +3 -1
  18. package/dist/core/builders/process/cut.mjs +2 -1
  19. package/dist/core/builders/process/extract.cjs +2 -1
  20. package/dist/core/builders/process/extract.d.ts +3 -1
  21. package/dist/core/builders/process/extract.mjs +2 -1
  22. package/dist/core/builders/process/index.cjs +1 -1
  23. package/dist/core/builders/process/index.d.ts +1 -1
  24. package/dist/core/builders/process/index.mjs +1 -1
  25. package/dist/core/builders/process/presetChecker.cjs +2 -1
  26. package/dist/core/builders/process/presetChecker.d.ts +3 -1
  27. package/dist/core/builders/process/presetChecker.mjs +2 -1
  28. package/dist/core/builders/process/process.cjs +2 -1
  29. package/dist/core/builders/process/process.d.ts +4 -2
  30. package/dist/core/builders/process/process.mjs +2 -1
  31. package/dist/core/builders/route/builder.cjs +1 -0
  32. package/dist/core/builders/route/builder.d.ts +4 -1
  33. package/dist/core/builders/route/builder.mjs +1 -0
  34. package/dist/core/builders/route/checker.cjs +2 -1
  35. package/dist/core/builders/route/checker.d.ts +4 -2
  36. package/dist/core/builders/route/checker.mjs +2 -1
  37. package/dist/core/builders/route/cut.cjs +2 -1
  38. package/dist/core/builders/route/cut.d.ts +3 -1
  39. package/dist/core/builders/route/cut.mjs +2 -1
  40. package/dist/core/builders/route/extract.cjs +2 -1
  41. package/dist/core/builders/route/extract.d.ts +3 -1
  42. package/dist/core/builders/route/extract.mjs +2 -1
  43. package/dist/core/builders/route/handler.cjs +9 -2
  44. package/dist/core/builders/route/handler.d.ts +3 -1
  45. package/dist/core/builders/route/handler.mjs +9 -2
  46. package/dist/core/builders/route/presetChecker.cjs +2 -1
  47. package/dist/core/builders/route/presetChecker.d.ts +3 -1
  48. package/dist/core/builders/route/presetChecker.mjs +2 -1
  49. package/dist/core/builders/route/process.cjs +2 -1
  50. package/dist/core/builders/route/process.d.ts +4 -2
  51. package/dist/core/builders/route/process.mjs +2 -1
  52. package/dist/core/functionsBuilders/route/build.d.ts +1 -1
  53. package/dist/core/functionsBuilders/route/hook.cjs +1 -0
  54. package/dist/core/functionsBuilders/route/hook.d.ts +4 -3
  55. package/dist/core/functionsBuilders/route/hook.mjs +1 -0
  56. package/dist/core/functionsBuilders/steps/build.d.ts +1 -1
  57. package/dist/core/hub/defaultNotfoundHandler.cjs +1 -0
  58. package/dist/core/hub/defaultNotfoundHandler.d.ts +1 -0
  59. package/dist/core/hub/defaultNotfoundHandler.mjs +1 -0
  60. package/dist/core/hub/hooks.cjs +4 -0
  61. package/dist/core/hub/hooks.d.ts +3 -0
  62. package/dist/core/hub/hooks.mjs +4 -1
  63. package/dist/core/hub/index.cjs +2 -0
  64. package/dist/core/hub/index.mjs +2 -1
  65. package/dist/core/implementHttpServer.cjs +36 -0
  66. package/dist/core/implementHttpServer.d.ts +13 -0
  67. package/dist/core/implementHttpServer.mjs +34 -0
  68. package/dist/core/index.cjs +11 -0
  69. package/dist/core/index.d.ts +3 -0
  70. package/dist/core/index.mjs +6 -1
  71. package/dist/core/metadata/base.cjs +20 -0
  72. package/dist/core/metadata/base.d.ts +14 -0
  73. package/dist/core/metadata/base.mjs +17 -0
  74. package/dist/core/metadata/ignoreByRouteStore.cjs +7 -0
  75. package/dist/core/metadata/ignoreByRouteStore.d.ts +1 -0
  76. package/dist/core/metadata/ignoreByRouteStore.mjs +5 -0
  77. package/dist/core/metadata/index.cjs +10 -0
  78. package/dist/core/metadata/index.d.ts +2 -0
  79. package/dist/core/metadata/index.mjs +2 -0
  80. package/dist/core/narrowingInput.cjs +14 -0
  81. package/dist/core/narrowingInput.d.ts +10 -0
  82. package/dist/core/narrowingInput.mjs +12 -0
  83. package/dist/core/process/index.d.ts +3 -1
  84. package/dist/core/route/hooks.cjs +0 -1
  85. package/dist/core/route/hooks.d.ts +0 -1
  86. package/dist/core/route/hooks.mjs +0 -1
  87. package/dist/core/route/index.d.ts +2 -0
  88. package/dist/core/router/index.cjs +1 -0
  89. package/dist/core/router/index.mjs +1 -0
  90. package/dist/core/router/types/buildedRouter.d.ts +2 -1
  91. package/dist/core/steps/checker.d.ts +2 -0
  92. package/dist/core/steps/cut.d.ts +2 -0
  93. package/dist/core/steps/extract.d.ts +2 -0
  94. package/dist/core/steps/handler.d.ts +2 -0
  95. package/dist/core/steps/presetChecker.d.ts +2 -0
  96. package/dist/core/steps/process.d.ts +2 -0
  97. package/dist/interfaces/node/createHttpServer.cjs +36 -46
  98. package/dist/interfaces/node/createHttpServer.d.ts +1 -5
  99. package/dist/interfaces/node/createHttpServer.mjs +36 -46
  100. package/dist/interfaces/node/hooks.cjs +12 -9
  101. package/dist/interfaces/node/hooks.d.ts +1 -1
  102. package/dist/interfaces/node/hooks.mjs +12 -9
  103. package/dist/plugins/codeGenerator/{stepsToDataParser.cjs → aggregateStepContract.cjs} +8 -5
  104. package/dist/plugins/codeGenerator/{stepsToDataParser.d.ts → aggregateStepContract.d.ts} +1 -1
  105. package/dist/plugins/codeGenerator/{stepsToDataParser.mjs → aggregateStepContract.mjs} +9 -6
  106. package/dist/plugins/codeGenerator/index.cjs +4 -2
  107. package/dist/plugins/codeGenerator/index.d.ts +2 -1
  108. package/dist/plugins/codeGenerator/index.mjs +2 -1
  109. package/dist/plugins/codeGenerator/metadata.cjs +8 -0
  110. package/dist/plugins/codeGenerator/metadata.d.ts +1 -0
  111. package/dist/plugins/codeGenerator/metadata.mjs +6 -0
  112. package/dist/plugins/codeGenerator/plugin.cjs +3 -0
  113. package/dist/plugins/codeGenerator/plugin.mjs +4 -1
  114. package/dist/plugins/codeGenerator/routeToDataParser.cjs +7 -2
  115. package/dist/plugins/codeGenerator/routeToDataParser.mjs +8 -3
  116. package/dist/plugins/openApiGenerator/aggregateStepContract.cjs +6 -3
  117. package/dist/plugins/openApiGenerator/aggregateStepContract.mjs +7 -4
  118. package/dist/plugins/openApiGenerator/index.cjs +2 -0
  119. package/dist/plugins/openApiGenerator/index.d.ts +1 -0
  120. package/dist/plugins/openApiGenerator/index.mjs +1 -0
  121. package/dist/plugins/openApiGenerator/makeOpenApiRoute.cjs +3 -1
  122. package/dist/plugins/openApiGenerator/makeOpenApiRoute.d.ts +2 -0
  123. package/dist/plugins/openApiGenerator/makeOpenApiRoute.mjs +3 -1
  124. package/dist/plugins/openApiGenerator/metadata.cjs +8 -0
  125. package/dist/plugins/openApiGenerator/metadata.d.ts +1 -0
  126. package/dist/plugins/openApiGenerator/metadata.mjs +6 -0
  127. package/dist/plugins/openApiGenerator/plugin.cjs +17 -9
  128. package/dist/plugins/openApiGenerator/plugin.d.ts +2 -2
  129. package/dist/plugins/openApiGenerator/plugin.mjs +18 -10
  130. package/dist/plugins/openApiGenerator/routeToOpenApi.cjs +5 -0
  131. package/dist/plugins/openApiGenerator/routeToOpenApi.mjs +6 -1
  132. package/package.json +1 -1
  133. /package/dist/core/builders/process/{export.cjs → exports.cjs} +0 -0
  134. /package/dist/core/builders/process/{export.d.ts → exports.d.ts} +0 -0
  135. /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 stepsToDataParser(steps, params) {
13
- const processContracts = utils.pipe(steps, utils.A.filter(process.processStepKind.has), utils.A.map((element) => stepsToDataParser(element.definition.process.definition.steps, params)), utils.O.to({
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(steps, utils.A.filter(extract.extractStepKind.has), utils.A.map((extractStep) => extractStep.definition.shape), utils.A.concat(processContracts.entrypointContract), utils.A.reduce(utils.A.reduceFrom({
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(steps, utils.A.flatMap((step) => utils.P.match(step)
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.stepsToDataParser = stepsToDataParser;
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 stepsToDataParser(steps: readonly Steps[], params: StepsToDataParserParams): StepsToDataParserResult;
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 { pipe, A, O, DP, P, hasSomeKinds } from '@duplojs/utils';
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 stepsToDataParser(steps, params) {
11
- const processContracts = pipe(steps, A.filter(processStepKind.has), A.map((element) => stepsToDataParser(element.definition.process.definition.steps, params)), O.to({
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(steps, A.filter(extractStepKind.has), A.map((extractStep) => extractStep.definition.shape), A.concat(processContracts.entrypointContract), A.reduce(A.reduceFrom({
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(steps, A.flatMap((step) => P.match(step)
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 { stepsToDataParser };
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 stepsToDataParser = require('./stepsToDataParser.cjs');
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.stepsToDataParser = stepsToDataParser.stepsToDataParser;
14
+ exports.aggregateStepContract = aggregateStepContract.aggregateStepContract;
15
+ exports.IgnoreByCodeGeneratorMetadata = metadata.IgnoreByCodeGeneratorMetadata;
@@ -2,4 +2,5 @@ import "@duplojs/data-parser-tools/toTypescript";
2
2
  export * from "./types";
3
3
  export * from "./plugin";
4
4
  export * from "./routeToDataParser";
5
- export * from "./stepsToDataParser";
5
+ export * from "./aggregateStepContract";
6
+ export * from "./metadata";
@@ -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 { stepsToDataParser } from './stepsToDataParser.mjs';
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>;
@@ -0,0 +1,6 @@
1
+ import '../../core/metadata/index.mjs';
2
+ import { createMetadata } from '../../core/metadata/base.mjs';
3
+
4
+ const IgnoreByCodeGeneratorMetadata = createMetadata("ignore-by-code-generator");
5
+
6
+ export { IgnoreByCodeGeneratorMetadata };
@@ -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 stepsToDataParser = require('./stepsToDataParser.cjs');
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) => stepsToDataParser.stepsToDataParser(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 { stepsToDataParser } from './stepsToDataParser.mjs';
2
- import { pipe, O, innerPipe, A, DP } from '@duplojs/utils';
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) => stepsToDataParser(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 processContracts = utils.pipe(steps, utils.A.filter(process.processStepKind.has), utils.A.map((element) => aggregateStepContract(element.definition.process.definition.steps, params)), utils.O.to({
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(steps, utils.A.filter(extract.extractStepKind.has), utils.A.map((extractStep) => extractStep.definition.shape), utils.A.concat(processContracts.entrypointContract), utils.A.reduce(utils.A.reduceFrom({
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(steps, utils.A.flatMap((step) => utils.P.match(step)
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 { pipe, A, O, DP, P, hasSomeKinds } from '@duplojs/utils';
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 processContracts = pipe(steps, A.filter(processStepKind.has), A.map((element) => aggregateStepContract(element.definition.process.definition.steps, params)), O.to({
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(steps, A.filter(extractStepKind.has), A.map((extractStep) => extractStep.definition.shape), A.concat(processContracts.entrypointContract), A.reduce(A.reduceFrom({
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(steps, A.flatMap((step) => P.match(step)
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 * from "./routeToOpenApi";
5
5
  export * from "./aggregateStepContract";
6
6
  export * from "./makeOpenApiRoute";
7
7
  export * from "./makeOpenApiPage";
8
+ export * from "./metadata";
@@ -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>;
@@ -0,0 +1,6 @@
1
+ import '../../core/metadata/index.mjs';
2
+ import { createMetadata } from '../../core/metadata/base.mjs';
3
+
4
+ const IgnoreByOpenApiGeneratorMetadata = createMetadata("ignore-by-open-api-generator");
5
+
6
+ export { IgnoreByOpenApiGeneratorMetadata };
@@ -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.outputFilePath) {
75
- await promises.writeFile(pluginParams.outputFilePath, openApiDocumentString);
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
- const openApiPage = makeOpenApiPage.makeOpenApiPage({
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: RoutePath;
18
- outputFilePath?: string;
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.outputFilePath) {
73
- await writeFile(pluginParams.outputFilePath, openApiDocumentString);
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
- const openApiPage = makeOpenApiPage({
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, pipe, A, DP, when, justReturn, whenNot, P, isType, S } from '@duplojs/utils';
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duplojs/http",
3
- "version": "0.4.0",
3
+ "version": "0.5.1",
4
4
  "author": "mathcovax",
5
5
  "license": "MIT",
6
6
  "type": "module",