@controller-contract/server 0.2.3 → 0.2.6

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/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { ControllerContractProduct, ExitOutput, FailOutput, InputChannel, Method, NextOutput, NoInput, Output, ParamsFrom, PassOutput } from "@controller-contract/core";
2
2
  import { StandardSchemaV1 } from "@standard-schema/spec";
3
3
 
4
- //#region src/classes/ControllerContractSpec.d.ts
4
+ //#region src/interfaces/ControllerContractSpec.d.ts
5
5
  interface NullaryControllerContractSpec<TContext, TInject> {
6
6
  readonly type: 'nullary';
7
7
  readonly injectable: TInject;
@@ -54,6 +54,7 @@ declare const StandardOutputs: Readonly<{
54
54
  //#endregion
55
55
  //#region src/types/index.d.ts
56
56
  type IntegratorFn<TContext, TInject, TProduct> = (spec: ControllerContractSpec<TContext, TInject>) => TProduct;
57
+ type RouterAdapterFn<TProduct> = (routes: Record<string, TProduct>) => TProduct;
57
58
  type Prettify<T> = { [K in keyof T]: T[K] } & {};
58
59
  type OutputFn<TContext, TPath extends string, TOutput> = (context: Prettify<TContext & {
59
60
  params: ParamsFrom<TPath>;
@@ -103,11 +104,17 @@ declare class ControllerContractBuilder<TContext, TInject, TProduct> {
103
104
  endpoint<const TMethod extends Method, const TPath extends string>(method: TMethod, path: TPath): PostEndpointStep<TContext, TInject, TProduct, TMethod, TPath>;
104
105
  }
105
106
  //#endregion
106
- //#region src/classes/ControllerContractBuilderFactory.d.ts
107
- declare class ControllerContractBuilderFactory<TContext, TInject> {
108
- private readonly injectableDefaultValue;
109
- constructor(injectableDefaultValue: TInject);
110
- createBuilder<TProduct>(integrator: IntegratorFn<TContext, TInject, TProduct>): ControllerContractBuilder<TContext, TInject, TProduct>;
107
+ //#region src/classes/ControllerContractRouter.d.ts
108
+ declare class ControllerContractRouter<TProduct> {
109
+ private readonly routerAdapterFn;
110
+ constructor(routerAdapterFn: RouterAdapterFn<TProduct>);
111
+ getRouter(routes: Record<string, TProduct>): TProduct;
112
+ }
113
+ //#endregion
114
+ //#region src/classes/ControllerContractAdapterFactory.d.ts
115
+ declare class ControllerContractAdapterFactory<TContext, TInject, TProduct> {
116
+ createBuilder(injectableDefaultValue: TInject, integrator: IntegratorFn<TContext, TInject, TProduct>): ControllerContractBuilder<TContext, TInject, TProduct>;
117
+ createRouter(routerAdapterFn: RouterAdapterFn<TProduct>): ControllerContractRouter<TProduct>;
111
118
  }
112
119
  //#endregion
113
- export { ControllerContractBuilderFactory, StandardOutputs, outputs, rootOnly };
120
+ export { ControllerContractAdapterFactory, StandardOutputs, outputs, rootOnly };
package/dist/index.mjs CHANGED
@@ -84,14 +84,24 @@ var ControllerContractBuilder = class {
84
84
  }
85
85
  };
86
86
  //#endregion
87
- //#region src/classes/ControllerContractBuilderFactory.ts
88
- var ControllerContractBuilderFactory = class {
89
- injectableDefaultValue;
90
- constructor(injectableDefaultValue) {
91
- this.injectableDefaultValue = injectableDefaultValue;
87
+ //#region src/classes/ControllerContractRouter.ts
88
+ var ControllerContractRouter = class {
89
+ routerAdapterFn;
90
+ constructor(routerAdapterFn) {
91
+ this.routerAdapterFn = routerAdapterFn;
92
+ }
93
+ getRouter(routes) {
94
+ return this.routerAdapterFn(routes);
95
+ }
96
+ };
97
+ //#endregion
98
+ //#region src/classes/ControllerContractAdapterFactory.ts
99
+ var ControllerContractAdapterFactory = class {
100
+ createBuilder(injectableDefaultValue, integrator) {
101
+ return new ControllerContractBuilder(injectableDefaultValue, integrator);
92
102
  }
93
- createBuilder(integrator) {
94
- return new ControllerContractBuilder(this.injectableDefaultValue, integrator);
103
+ createRouter(routerAdapterFn) {
104
+ return new ControllerContractRouter(routerAdapterFn);
95
105
  }
96
106
  };
97
107
  //#endregion
@@ -145,4 +155,4 @@ const StandardOutputs = Object.freeze({
145
155
  BadGateway: outputs.fail(rootOnly("Bad Gateway"), 502)
146
156
  });
147
157
  //#endregion
148
- export { ControllerContractBuilderFactory, StandardOutputs, outputs, rootOnly };
158
+ export { ControllerContractAdapterFactory, StandardOutputs, outputs, rootOnly };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@controller-contract/server",
3
3
  "type": "module",
4
- "version": "0.2.3",
4
+ "version": "0.2.6",
5
5
  "author": "kennychulo",
6
6
  "license": "MIT",
7
7
  "files": [
@@ -23,7 +23,7 @@
23
23
  "typescript": "6.0.3"
24
24
  },
25
25
  "dependencies": {
26
- "@controller-contract/core": "0.2.7",
26
+ "@controller-contract/core": "0.2.12",
27
27
  "@standard-schema/spec": "1.1.0"
28
28
  },
29
29
  "scripts": {
@@ -0,0 +1,13 @@
1
+ import type { IntegratorFn, RouterAdapterFn } from '../types';
2
+ import { ControllerContractBuilder } from './ControllerContractBuilder';
3
+ import { ControllerContractRouter } from './ControllerContractRouter';
4
+
5
+ export class ControllerContractAdapterFactory<TContext, TInject, TProduct> {
6
+ createBuilder(injectableDefaultValue: TInject, integrator: IntegratorFn<TContext, TInject, TProduct>) {
7
+ return new ControllerContractBuilder<TContext, TInject, TProduct>(injectableDefaultValue, integrator);
8
+ }
9
+
10
+ createRouter(routerAdapterFn: RouterAdapterFn<TProduct>) {
11
+ return new ControllerContractRouter<TProduct>(routerAdapterFn);
12
+ }
13
+ }
@@ -0,0 +1,9 @@
1
+ import type { RouterAdapterFn } from '../types';
2
+
3
+ export class ControllerContractRouter<TProduct> {
4
+ constructor(private readonly routerAdapterFn: RouterAdapterFn<TProduct>) {}
5
+
6
+ getRouter(routes: Record<string, TProduct>): TProduct {
7
+ return this.routerAdapterFn(routes);
8
+ }
9
+ }
@@ -8,8 +8,8 @@ import type {
8
8
  ParamsFrom,
9
9
  } from '@controller-contract/core';
10
10
  import type { StandardSchemaV1 } from '@standard-schema/spec';
11
+ import type { NullaryControllerContractSpec } from '../interfaces/ControllerContractSpec';
11
12
  import type { IntegratorFn, OutputFn } from '../types';
12
- import type { NullaryControllerContractSpec } from './ControllerContractSpec';
13
13
  import { PostInputStep } from './PostInputStep';
14
14
 
15
15
  export class PostEndpointStep<TContext, TInject, TProduct, const TMethod extends Method, const TPath extends string> {
@@ -7,8 +7,8 @@ import type {
7
7
  ParamsFrom,
8
8
  } from '@controller-contract/core';
9
9
  import type { StandardSchemaV1 } from '@standard-schema/spec';
10
+ import type { SanitizedControllerContractSpec } from '../interfaces/ControllerContractSpec';
10
11
  import type { IntegratorFn, SanitizedOutputFn } from '../types';
11
- import type { SanitizedControllerContractSpec } from './ControllerContractSpec';
12
12
 
13
13
  export class PostInputStep<
14
14
  TContext,
@@ -50,8 +50,6 @@ export class PostInputStep<
50
50
  TOutputFromInput | TOutput,
51
51
  TProduct
52
52
  >
53
- >{
54
- ...() => product,
55
- };
53
+ >{ ...() => product };
56
54
  }
57
55
  }
package/src/index.ts CHANGED
@@ -1,2 +1,2 @@
1
- export * from './classes/ControllerContractBuilderFactory';
1
+ export * from './classes/ControllerContractAdapterFactory';
2
2
  export * from './utils';
@@ -1,9 +1,11 @@
1
1
  import type { ParamsFrom } from '@controller-contract/core';
2
- import type { ControllerContractSpec } from '../classes/ControllerContractSpec';
2
+ import type { ControllerContractSpec } from '../interfaces/ControllerContractSpec';
3
3
  import type { outputs } from '../utils';
4
4
 
5
5
  export type IntegratorFn<TContext, TInject, TProduct> = (spec: ControllerContractSpec<TContext, TInject>) => TProduct;
6
6
 
7
+ export type RouterAdapterFn<TProduct> = (routes: Record<string, TProduct>) => TProduct;
8
+
7
9
  export type Prettify<T> = {
8
10
  [K in keyof T]: T[K];
9
11
  } & {};
@@ -1,10 +0,0 @@
1
- import type { IntegratorFn } from '../types';
2
- import { ControllerContractBuilder } from './ControllerContractBuilder';
3
-
4
- export class ControllerContractBuilderFactory<TContext, TInject> {
5
- constructor(private readonly injectableDefaultValue: TInject) {}
6
-
7
- createBuilder<TProduct>(integrator: IntegratorFn<TContext, TInject, TProduct>) {
8
- return new ControllerContractBuilder<TContext, TInject, TProduct>(this.injectableDefaultValue, integrator);
9
- }
10
- }