@orion-js/components 4.2.6 → 4.2.8
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.cjs +19 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +21 -6
- package/dist/index.d.ts +21 -6
- package/dist/index.js +19 -2
- package/dist/index.js.map +1 -1
- package/package.json +20 -8
package/dist/index.cjs
CHANGED
|
@@ -36,6 +36,7 @@ var import_graphql = require("@orion-js/graphql");
|
|
|
36
36
|
var import_http = require("@orion-js/http");
|
|
37
37
|
var import_dogs = require("@orion-js/dogs");
|
|
38
38
|
var import_helpers = require("@orion-js/helpers");
|
|
39
|
+
var import_trpc = require("@orion-js/trpc");
|
|
39
40
|
function mergeComponentControllers(component2) {
|
|
40
41
|
const echoes = {};
|
|
41
42
|
if (component2.controllers.echoes) {
|
|
@@ -104,13 +105,24 @@ function mergeComponentControllers(component2) {
|
|
|
104
105
|
}
|
|
105
106
|
});
|
|
106
107
|
}
|
|
108
|
+
const trpc = {};
|
|
109
|
+
if (component2.controllers.trpc) {
|
|
110
|
+
component2.controllers.trpc.forEach((Controller) => {
|
|
111
|
+
const serviceProcedures = (0, import_trpc.getTProcedures)(Controller);
|
|
112
|
+
for (const procedureName in serviceProcedures) {
|
|
113
|
+
const procedure = serviceProcedures[procedureName];
|
|
114
|
+
trpc[procedureName] = procedure;
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
107
118
|
return {
|
|
108
119
|
echoes,
|
|
109
120
|
resolvers,
|
|
110
121
|
modelResolvers,
|
|
111
122
|
subscriptions,
|
|
112
123
|
routes,
|
|
113
|
-
jobs
|
|
124
|
+
jobs,
|
|
125
|
+
trpc
|
|
114
126
|
};
|
|
115
127
|
}
|
|
116
128
|
function mergeComponents(components) {
|
|
@@ -120,7 +132,8 @@ function mergeComponents(components) {
|
|
|
120
132
|
modelResolvers: {},
|
|
121
133
|
subscriptions: {},
|
|
122
134
|
routes: {},
|
|
123
|
-
jobs: {}
|
|
135
|
+
jobs: {},
|
|
136
|
+
trpc: {}
|
|
124
137
|
};
|
|
125
138
|
components.forEach((component2) => {
|
|
126
139
|
const componentControllers = mergeComponentControllers(component2);
|
|
@@ -148,6 +161,10 @@ function mergeComponents(components) {
|
|
|
148
161
|
...mergedControllers.jobs,
|
|
149
162
|
...componentControllers.jobs
|
|
150
163
|
};
|
|
164
|
+
mergedControllers.trpc = {
|
|
165
|
+
...mergedControllers.trpc,
|
|
166
|
+
...componentControllers.trpc
|
|
167
|
+
};
|
|
151
168
|
});
|
|
152
169
|
return mergedControllers;
|
|
153
170
|
}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/components/index.ts","../src/mergeComponents/index.ts"],"sourcesContent":["export * from './components'\nexport * from './mergeComponents'\n","export type EchoesController = {new (...args: any[]): any}\nexport type ResolversController = {new (...args: any[]): any}\nexport type SubscriptionsController = {new (...args: any[]): any}\nexport type JobsController = {new (...args: any[]): any}\nexport type RoutesController = {new (...args: any[]): any}\nexport type ModelResolversController = {new (...args: any[]): any}\n\nexport interface ComponentControllers {\n echoes?: EchoesController[]\n routes?: RoutesController[]\n jobs?: JobsController[]\n resolvers?: ResolversController[]\n subscriptions?: SubscriptionsController[]\n modelResolvers?: ModelResolversController[]\n}\n\nexport interface Component {\n controllers: ComponentControllers\n}\n\nexport function component(controllers: ComponentControllers): Component {\n return {controllers}\n}\n","import {Component} from '../components'\nimport {EchoesMap, getServiceEchoes} from '@orion-js/echoes'\nimport {\n getServiceModelResolvers,\n getServiceResolvers,\n getServiceSubscriptions,\n OrionSubscriptionsMap,\n ModelsResolversMap,\n} from '@orion-js/graphql'\nimport {getServiceRoutes, RoutesMap} from '@orion-js/http'\nimport {getServiceJobs, JobsDefinition} from '@orion-js/dogs'\nimport {GlobalResolversMap} from '@orion-js/models'\nimport {generateId} from '@orion-js/helpers'\n\nexport interface MergedComponentControllers {\n echoes: EchoesMap\n resolvers: GlobalResolversMap\n modelResolvers: ModelsResolversMap\n subscriptions: OrionSubscriptionsMap\n routes: RoutesMap\n jobs: JobsDefinition\n}\n\nexport function mergeComponentControllers(component: Component): MergedComponentControllers {\n const echoes: EchoesMap = {}\n\n if (component.controllers.echoes) {\n component.controllers.echoes.forEach(Controller => {\n const serviceEchoes = getServiceEchoes(Controller)\n for (const echoName in serviceEchoes) {\n const echo = serviceEchoes[echoName]\n echoes[echoName] = echo\n }\n })\n }\n\n const resolvers: GlobalResolversMap = {}\n\n if (component.controllers.resolvers) {\n component.controllers.resolvers.forEach(Controller => {\n const serviceResolvers = getServiceResolvers(Controller)\n for (const resolverName in serviceResolvers) {\n const resolver = serviceResolvers[resolverName]\n resolvers[resolverName] = resolver\n }\n })\n }\n\n const modelResolvers: ModelsResolversMap = {}\n\n if (component.controllers.modelResolvers) {\n component.controllers.modelResolvers.forEach(Controller => {\n const serviceModelResolvers = getServiceModelResolvers(Controller)\n for (const modelName in serviceModelResolvers) {\n const resolversForModel = serviceModelResolvers[modelName]\n modelResolvers[modelName] = modelResolvers[modelName] || {}\n for (const resolverName in resolversForModel) {\n modelResolvers[modelName][resolverName] = resolversForModel[resolverName]\n }\n }\n })\n }\n\n const subscriptions: OrionSubscriptionsMap = {}\n\n if (component.controllers.subscriptions) {\n component.controllers.subscriptions.forEach(Controller => {\n const serviceResolvers = getServiceSubscriptions(Controller)\n for (const subsrcriptionName in serviceResolvers) {\n const subsrcription = serviceResolvers[subsrcriptionName]\n subscriptions[subsrcriptionName] = subsrcription\n }\n })\n }\n\n const routes: RoutesMap = {}\n\n if (component.controllers.routes) {\n component.controllers.routes.forEach(Controller => {\n const serviceRoutes = getServiceRoutes(Controller)\n for (const routeName in serviceRoutes) {\n const resolver = serviceRoutes[routeName]\n if (routes[routeName]) {\n routes[routeName + generateId()] = resolver\n } else {\n routes[routeName] = resolver\n }\n }\n })\n }\n\n const jobs: JobsDefinition = {}\n\n if (component.controllers.jobs) {\n component.controllers.jobs.forEach(Controller => {\n const serviceJobs = getServiceJobs(Controller)\n for (const jobName in serviceJobs) {\n const resolver = serviceJobs[jobName]\n jobs[jobName] = resolver\n }\n })\n }\n\n return {\n echoes,\n resolvers,\n modelResolvers,\n subscriptions,\n routes,\n jobs,\n }\n}\n\nexport function mergeComponents(components: Component[]): MergedComponentControllers {\n const mergedControllers: MergedComponentControllers = {\n echoes: {},\n resolvers: {},\n modelResolvers: {},\n subscriptions: {},\n routes: {},\n jobs: {},\n }\n\n components.forEach(component => {\n const componentControllers = mergeComponentControllers(component)\n mergedControllers.echoes = {\n ...mergedControllers.echoes,\n ...componentControllers.echoes,\n }\n mergedControllers.resolvers = {\n ...mergedControllers.resolvers,\n ...componentControllers.resolvers,\n }\n mergedControllers.modelResolvers = {\n ...mergedControllers.modelResolvers,\n ...componentControllers.modelResolvers,\n }\n mergedControllers.subscriptions = {\n ...mergedControllers.subscriptions,\n ...componentControllers.subscriptions,\n }\n mergedControllers.routes = {\n ...mergedControllers.routes,\n ...componentControllers.routes,\n }\n mergedControllers.jobs = {\n ...mergedControllers.jobs,\n ...componentControllers.jobs,\n }\n })\n\n return mergedControllers\n}\n"],"mappings":"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","names":["component"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/components/index.ts","../src/mergeComponents/index.ts"],"sourcesContent":["export * from './components'\nexport * from './mergeComponents'\n","export type EchoesController = {new (...args: any[]): any}\nexport type ResolversController = {new (...args: any[]): any}\nexport type SubscriptionsController = {new (...args: any[]): any}\nexport type JobsController = {new (...args: any[]): any}\nexport type RoutesController = {new (...args: any[]): any}\nexport type ModelResolversController = {new (...args: any[]): any}\nexport type TrpcController = {new (...args: any[]): any}\n\nexport interface ComponentControllers<TTrpc extends TrpcController[] = TrpcController[]> {\n echoes?: EchoesController[]\n routes?: RoutesController[]\n jobs?: JobsController[]\n resolvers?: ResolversController[]\n subscriptions?: SubscriptionsController[]\n modelResolvers?: ModelResolversController[]\n trpc?: TTrpc\n}\n\nexport interface Component<TTrpc extends TrpcController[] = TrpcController[]> {\n controllers: ComponentControllers<TTrpc>\n}\n\nexport function component<TTrpc extends TrpcController[] = TrpcController[]>(\n controllers: ComponentControllers<TTrpc>,\n): Component<TTrpc> {\n return {controllers}\n}\n","import {Component, TrpcController} from '../components'\nimport {EchoesMap, getServiceEchoes} from '@orion-js/echoes'\nimport {\n getServiceModelResolvers,\n getServiceResolvers,\n getServiceSubscriptions,\n OrionSubscriptionsMap,\n ModelsResolversMap,\n} from '@orion-js/graphql'\nimport {getServiceRoutes, RoutesMap} from '@orion-js/http'\nimport {getServiceJobs, JobsDefinition} from '@orion-js/dogs'\nimport {GlobalResolversMap} from '@orion-js/models'\nimport {generateId} from '@orion-js/helpers'\nimport {getTProcedures} from '@orion-js/trpc'\nimport type {ExtractProcedures} from '@orion-js/trpc'\nimport type {TRPCRouterRecord} from '@trpc/server'\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void\n ? I\n : never\n\ntype ExtractTrpcFromClasses<T extends TrpcController[]> = UnionToIntersection<\n T[number] extends infer C ? (C extends TrpcController ? ExtractProcedures<InstanceType<C>> : never) : never\n>\n\ntype ExtractTrpcFromComponent<C> = C extends Component<infer Classes>\n ? ExtractTrpcFromClasses<Classes>\n : TRPCRouterRecord\n\ntype MergeTrpcResult<T extends Component<any>[]> = UnionToIntersection<\n {[K in keyof T]: ExtractTrpcFromComponent<T[K]>}[number]\n>\n\nexport type MergeTrpcFromComponents<T extends Component<any>[]> =\n MergeTrpcResult<T> extends TRPCRouterRecord ? MergeTrpcResult<T> : TRPCRouterRecord\n\nexport interface MergedComponentControllers<TTrpc extends TRPCRouterRecord = TRPCRouterRecord> {\n echoes: EchoesMap\n resolvers: GlobalResolversMap\n modelResolvers: ModelsResolversMap\n subscriptions: OrionSubscriptionsMap\n routes: RoutesMap\n jobs: JobsDefinition\n trpc: TTrpc\n}\n\nexport function mergeComponentControllers(component: Component): MergedComponentControllers {\n const echoes: EchoesMap = {}\n\n if (component.controllers.echoes) {\n component.controllers.echoes.forEach(Controller => {\n const serviceEchoes = getServiceEchoes(Controller)\n for (const echoName in serviceEchoes) {\n const echo = serviceEchoes[echoName]\n echoes[echoName] = echo\n }\n })\n }\n\n const resolvers: GlobalResolversMap = {}\n\n if (component.controllers.resolvers) {\n component.controllers.resolvers.forEach(Controller => {\n const serviceResolvers = getServiceResolvers(Controller)\n for (const resolverName in serviceResolvers) {\n const resolver = serviceResolvers[resolverName]\n resolvers[resolverName] = resolver\n }\n })\n }\n\n const modelResolvers: ModelsResolversMap = {}\n\n if (component.controllers.modelResolvers) {\n component.controllers.modelResolvers.forEach(Controller => {\n const serviceModelResolvers = getServiceModelResolvers(Controller)\n for (const modelName in serviceModelResolvers) {\n const resolversForModel = serviceModelResolvers[modelName]\n modelResolvers[modelName] = modelResolvers[modelName] || {}\n for (const resolverName in resolversForModel) {\n modelResolvers[modelName][resolverName] = resolversForModel[resolverName]\n }\n }\n })\n }\n\n const subscriptions: OrionSubscriptionsMap = {}\n\n if (component.controllers.subscriptions) {\n component.controllers.subscriptions.forEach(Controller => {\n const serviceResolvers = getServiceSubscriptions(Controller)\n for (const subsrcriptionName in serviceResolvers) {\n const subsrcription = serviceResolvers[subsrcriptionName]\n subscriptions[subsrcriptionName] = subsrcription\n }\n })\n }\n\n const routes: RoutesMap = {}\n\n if (component.controllers.routes) {\n component.controllers.routes.forEach(Controller => {\n const serviceRoutes = getServiceRoutes(Controller)\n for (const routeName in serviceRoutes) {\n const resolver = serviceRoutes[routeName]\n if (routes[routeName]) {\n routes[routeName + generateId()] = resolver\n } else {\n routes[routeName] = resolver\n }\n }\n })\n }\n\n const jobs: JobsDefinition = {}\n\n if (component.controllers.jobs) {\n component.controllers.jobs.forEach(Controller => {\n const serviceJobs = getServiceJobs(Controller)\n for (const jobName in serviceJobs) {\n const resolver = serviceJobs[jobName]\n jobs[jobName] = resolver\n }\n })\n }\n\n const trpc: TRPCRouterRecord = {}\n\n if (component.controllers.trpc) {\n component.controllers.trpc.forEach(Controller => {\n const serviceProcedures = getTProcedures(Controller)\n for (const procedureName in serviceProcedures) {\n const procedure = serviceProcedures[procedureName]\n trpc[procedureName] = procedure\n }\n })\n }\n\n return {\n echoes,\n resolvers,\n modelResolvers,\n subscriptions,\n routes,\n jobs,\n trpc,\n }\n}\n\nexport function mergeComponents<T extends Component<any>[]>(\n components: [...T],\n): MergedComponentControllers<MergeTrpcFromComponents<T>>\nexport function mergeComponents(components: Component[]): MergedComponentControllers\nexport function mergeComponents(components: Component[]): MergedComponentControllers {\n const mergedControllers: MergedComponentControllers = {\n echoes: {},\n resolvers: {},\n modelResolvers: {},\n subscriptions: {},\n routes: {},\n jobs: {},\n trpc: {},\n }\n\n components.forEach(component => {\n const componentControllers = mergeComponentControllers(component)\n mergedControllers.echoes = {\n ...mergedControllers.echoes,\n ...componentControllers.echoes,\n }\n mergedControllers.resolvers = {\n ...mergedControllers.resolvers,\n ...componentControllers.resolvers,\n }\n mergedControllers.modelResolvers = {\n ...mergedControllers.modelResolvers,\n ...componentControllers.modelResolvers,\n }\n mergedControllers.subscriptions = {\n ...mergedControllers.subscriptions,\n ...componentControllers.subscriptions,\n }\n mergedControllers.routes = {\n ...mergedControllers.routes,\n ...componentControllers.routes,\n }\n mergedControllers.jobs = {\n ...mergedControllers.jobs,\n ...componentControllers.jobs,\n }\n mergedControllers.trpc = {\n ...mergedControllers.trpc,\n ...componentControllers.trpc,\n }\n })\n\n return mergedControllers\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACsBO,SAAS,UACd,aACkB;AAClB,SAAO,EAAC,YAAW;AACrB;;;ACzBA,oBAA0C;AAC1C,qBAMO;AACP,kBAA0C;AAC1C,kBAA6C;AAE7C,qBAAyB;AACzB,kBAA6B;AAiCtB,SAAS,0BAA0BA,YAAkD;AAC1F,QAAM,SAAoB,CAAC;AAE3B,MAAIA,WAAU,YAAY,QAAQ;AAChC,IAAAA,WAAU,YAAY,OAAO,QAAQ,gBAAc;AACjD,YAAM,oBAAgB,gCAAiB,UAAU;AACjD,iBAAW,YAAY,eAAe;AACpC,cAAM,OAAO,cAAc,QAAQ;AACnC,eAAO,QAAQ,IAAI;AAAA,MACrB;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,YAAgC,CAAC;AAEvC,MAAIA,WAAU,YAAY,WAAW;AACnC,IAAAA,WAAU,YAAY,UAAU,QAAQ,gBAAc;AACpD,YAAM,uBAAmB,oCAAoB,UAAU;AACvD,iBAAW,gBAAgB,kBAAkB;AAC3C,cAAM,WAAW,iBAAiB,YAAY;AAC9C,kBAAU,YAAY,IAAI;AAAA,MAC5B;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,iBAAqC,CAAC;AAE5C,MAAIA,WAAU,YAAY,gBAAgB;AACxC,IAAAA,WAAU,YAAY,eAAe,QAAQ,gBAAc;AACzD,YAAM,4BAAwB,yCAAyB,UAAU;AACjE,iBAAW,aAAa,uBAAuB;AAC7C,cAAM,oBAAoB,sBAAsB,SAAS;AACzD,uBAAe,SAAS,IAAI,eAAe,SAAS,KAAK,CAAC;AAC1D,mBAAW,gBAAgB,mBAAmB;AAC5C,yBAAe,SAAS,EAAE,YAAY,IAAI,kBAAkB,YAAY;AAAA,QAC1E;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,gBAAuC,CAAC;AAE9C,MAAIA,WAAU,YAAY,eAAe;AACvC,IAAAA,WAAU,YAAY,cAAc,QAAQ,gBAAc;AACxD,YAAM,uBAAmB,wCAAwB,UAAU;AAC3D,iBAAW,qBAAqB,kBAAkB;AAChD,cAAM,gBAAgB,iBAAiB,iBAAiB;AACxD,sBAAc,iBAAiB,IAAI;AAAA,MACrC;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,SAAoB,CAAC;AAE3B,MAAIA,WAAU,YAAY,QAAQ;AAChC,IAAAA,WAAU,YAAY,OAAO,QAAQ,gBAAc;AACjD,YAAM,oBAAgB,8BAAiB,UAAU;AACjD,iBAAW,aAAa,eAAe;AACrC,cAAM,WAAW,cAAc,SAAS;AACxC,YAAI,OAAO,SAAS,GAAG;AACrB,iBAAO,gBAAY,2BAAW,CAAC,IAAI;AAAA,QACrC,OAAO;AACL,iBAAO,SAAS,IAAI;AAAA,QACtB;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,OAAuB,CAAC;AAE9B,MAAIA,WAAU,YAAY,MAAM;AAC9B,IAAAA,WAAU,YAAY,KAAK,QAAQ,gBAAc;AAC/C,YAAM,kBAAc,4BAAe,UAAU;AAC7C,iBAAW,WAAW,aAAa;AACjC,cAAM,WAAW,YAAY,OAAO;AACpC,aAAK,OAAO,IAAI;AAAA,MAClB;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,OAAyB,CAAC;AAEhC,MAAIA,WAAU,YAAY,MAAM;AAC9B,IAAAA,WAAU,YAAY,KAAK,QAAQ,gBAAc;AAC/C,YAAM,wBAAoB,4BAAe,UAAU;AACnD,iBAAW,iBAAiB,mBAAmB;AAC7C,cAAM,YAAY,kBAAkB,aAAa;AACjD,aAAK,aAAa,IAAI;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAMO,SAAS,gBAAgB,YAAqD;AACnF,QAAM,oBAAgD;AAAA,IACpD,QAAQ,CAAC;AAAA,IACT,WAAW,CAAC;AAAA,IACZ,gBAAgB,CAAC;AAAA,IACjB,eAAe,CAAC;AAAA,IAChB,QAAQ,CAAC;AAAA,IACT,MAAM,CAAC;AAAA,IACP,MAAM,CAAC;AAAA,EACT;AAEA,aAAW,QAAQ,CAAAA,eAAa;AAC9B,UAAM,uBAAuB,0BAA0BA,UAAS;AAChE,sBAAkB,SAAS;AAAA,MACzB,GAAG,kBAAkB;AAAA,MACrB,GAAG,qBAAqB;AAAA,IAC1B;AACA,sBAAkB,YAAY;AAAA,MAC5B,GAAG,kBAAkB;AAAA,MACrB,GAAG,qBAAqB;AAAA,IAC1B;AACA,sBAAkB,iBAAiB;AAAA,MACjC,GAAG,kBAAkB;AAAA,MACrB,GAAG,qBAAqB;AAAA,IAC1B;AACA,sBAAkB,gBAAgB;AAAA,MAChC,GAAG,kBAAkB;AAAA,MACrB,GAAG,qBAAqB;AAAA,IAC1B;AACA,sBAAkB,SAAS;AAAA,MACzB,GAAG,kBAAkB;AAAA,MACrB,GAAG,qBAAqB;AAAA,IAC1B;AACA,sBAAkB,OAAO;AAAA,MACvB,GAAG,kBAAkB;AAAA,MACrB,GAAG,qBAAqB;AAAA,IAC1B;AACA,sBAAkB,OAAO;AAAA,MACvB,GAAG,kBAAkB;AAAA,MACrB,GAAG,qBAAqB;AAAA,IAC1B;AAAA,EACF,CAAC;AAED,SAAO;AACT;","names":["component"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -3,6 +3,8 @@ import { ModelsResolversMap, OrionSubscriptionsMap } from '@orion-js/graphql';
|
|
|
3
3
|
import { RoutesMap } from '@orion-js/http';
|
|
4
4
|
import { JobsDefinition } from '@orion-js/dogs';
|
|
5
5
|
import { GlobalResolversMap } from '@orion-js/models';
|
|
6
|
+
import { ExtractProcedures } from '@orion-js/trpc';
|
|
7
|
+
import { TRPCRouterRecord } from '@trpc/server';
|
|
6
8
|
|
|
7
9
|
type EchoesController = {
|
|
8
10
|
new (...args: any[]): any;
|
|
@@ -22,28 +24,41 @@ type RoutesController = {
|
|
|
22
24
|
type ModelResolversController = {
|
|
23
25
|
new (...args: any[]): any;
|
|
24
26
|
};
|
|
25
|
-
|
|
27
|
+
type TrpcController = {
|
|
28
|
+
new (...args: any[]): any;
|
|
29
|
+
};
|
|
30
|
+
interface ComponentControllers<TTrpc extends TrpcController[] = TrpcController[]> {
|
|
26
31
|
echoes?: EchoesController[];
|
|
27
32
|
routes?: RoutesController[];
|
|
28
33
|
jobs?: JobsController[];
|
|
29
34
|
resolvers?: ResolversController[];
|
|
30
35
|
subscriptions?: SubscriptionsController[];
|
|
31
36
|
modelResolvers?: ModelResolversController[];
|
|
37
|
+
trpc?: TTrpc;
|
|
32
38
|
}
|
|
33
|
-
interface Component {
|
|
34
|
-
controllers: ComponentControllers
|
|
39
|
+
interface Component<TTrpc extends TrpcController[] = TrpcController[]> {
|
|
40
|
+
controllers: ComponentControllers<TTrpc>;
|
|
35
41
|
}
|
|
36
|
-
declare function component(controllers: ComponentControllers): Component
|
|
42
|
+
declare function component<TTrpc extends TrpcController[] = TrpcController[]>(controllers: ComponentControllers<TTrpc>): Component<TTrpc>;
|
|
37
43
|
|
|
38
|
-
|
|
44
|
+
type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
45
|
+
type ExtractTrpcFromClasses<T extends TrpcController[]> = UnionToIntersection<T[number] extends infer C ? (C extends TrpcController ? ExtractProcedures<InstanceType<C>> : never) : never>;
|
|
46
|
+
type ExtractTrpcFromComponent<C> = C extends Component<infer Classes> ? ExtractTrpcFromClasses<Classes> : TRPCRouterRecord;
|
|
47
|
+
type MergeTrpcResult<T extends Component<any>[]> = UnionToIntersection<{
|
|
48
|
+
[K in keyof T]: ExtractTrpcFromComponent<T[K]>;
|
|
49
|
+
}[number]>;
|
|
50
|
+
type MergeTrpcFromComponents<T extends Component<any>[]> = MergeTrpcResult<T> extends TRPCRouterRecord ? MergeTrpcResult<T> : TRPCRouterRecord;
|
|
51
|
+
interface MergedComponentControllers<TTrpc extends TRPCRouterRecord = TRPCRouterRecord> {
|
|
39
52
|
echoes: EchoesMap;
|
|
40
53
|
resolvers: GlobalResolversMap;
|
|
41
54
|
modelResolvers: ModelsResolversMap;
|
|
42
55
|
subscriptions: OrionSubscriptionsMap;
|
|
43
56
|
routes: RoutesMap;
|
|
44
57
|
jobs: JobsDefinition;
|
|
58
|
+
trpc: TTrpc;
|
|
45
59
|
}
|
|
46
60
|
declare function mergeComponentControllers(component: Component): MergedComponentControllers;
|
|
61
|
+
declare function mergeComponents<T extends Component<any>[]>(components: [...T]): MergedComponentControllers<MergeTrpcFromComponents<T>>;
|
|
47
62
|
declare function mergeComponents(components: Component[]): MergedComponentControllers;
|
|
48
63
|
|
|
49
|
-
export { type Component, type ComponentControllers, type EchoesController, type JobsController, type MergedComponentControllers, type ModelResolversController, type ResolversController, type RoutesController, type SubscriptionsController, component, mergeComponentControllers, mergeComponents };
|
|
64
|
+
export { type Component, type ComponentControllers, type EchoesController, type JobsController, type MergeTrpcFromComponents, type MergedComponentControllers, type ModelResolversController, type ResolversController, type RoutesController, type SubscriptionsController, type TrpcController, component, mergeComponentControllers, mergeComponents };
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ import { ModelsResolversMap, OrionSubscriptionsMap } from '@orion-js/graphql';
|
|
|
3
3
|
import { RoutesMap } from '@orion-js/http';
|
|
4
4
|
import { JobsDefinition } from '@orion-js/dogs';
|
|
5
5
|
import { GlobalResolversMap } from '@orion-js/models';
|
|
6
|
+
import { ExtractProcedures } from '@orion-js/trpc';
|
|
7
|
+
import { TRPCRouterRecord } from '@trpc/server';
|
|
6
8
|
|
|
7
9
|
type EchoesController = {
|
|
8
10
|
new (...args: any[]): any;
|
|
@@ -22,28 +24,41 @@ type RoutesController = {
|
|
|
22
24
|
type ModelResolversController = {
|
|
23
25
|
new (...args: any[]): any;
|
|
24
26
|
};
|
|
25
|
-
|
|
27
|
+
type TrpcController = {
|
|
28
|
+
new (...args: any[]): any;
|
|
29
|
+
};
|
|
30
|
+
interface ComponentControllers<TTrpc extends TrpcController[] = TrpcController[]> {
|
|
26
31
|
echoes?: EchoesController[];
|
|
27
32
|
routes?: RoutesController[];
|
|
28
33
|
jobs?: JobsController[];
|
|
29
34
|
resolvers?: ResolversController[];
|
|
30
35
|
subscriptions?: SubscriptionsController[];
|
|
31
36
|
modelResolvers?: ModelResolversController[];
|
|
37
|
+
trpc?: TTrpc;
|
|
32
38
|
}
|
|
33
|
-
interface Component {
|
|
34
|
-
controllers: ComponentControllers
|
|
39
|
+
interface Component<TTrpc extends TrpcController[] = TrpcController[]> {
|
|
40
|
+
controllers: ComponentControllers<TTrpc>;
|
|
35
41
|
}
|
|
36
|
-
declare function component(controllers: ComponentControllers): Component
|
|
42
|
+
declare function component<TTrpc extends TrpcController[] = TrpcController[]>(controllers: ComponentControllers<TTrpc>): Component<TTrpc>;
|
|
37
43
|
|
|
38
|
-
|
|
44
|
+
type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
45
|
+
type ExtractTrpcFromClasses<T extends TrpcController[]> = UnionToIntersection<T[number] extends infer C ? (C extends TrpcController ? ExtractProcedures<InstanceType<C>> : never) : never>;
|
|
46
|
+
type ExtractTrpcFromComponent<C> = C extends Component<infer Classes> ? ExtractTrpcFromClasses<Classes> : TRPCRouterRecord;
|
|
47
|
+
type MergeTrpcResult<T extends Component<any>[]> = UnionToIntersection<{
|
|
48
|
+
[K in keyof T]: ExtractTrpcFromComponent<T[K]>;
|
|
49
|
+
}[number]>;
|
|
50
|
+
type MergeTrpcFromComponents<T extends Component<any>[]> = MergeTrpcResult<T> extends TRPCRouterRecord ? MergeTrpcResult<T> : TRPCRouterRecord;
|
|
51
|
+
interface MergedComponentControllers<TTrpc extends TRPCRouterRecord = TRPCRouterRecord> {
|
|
39
52
|
echoes: EchoesMap;
|
|
40
53
|
resolvers: GlobalResolversMap;
|
|
41
54
|
modelResolvers: ModelsResolversMap;
|
|
42
55
|
subscriptions: OrionSubscriptionsMap;
|
|
43
56
|
routes: RoutesMap;
|
|
44
57
|
jobs: JobsDefinition;
|
|
58
|
+
trpc: TTrpc;
|
|
45
59
|
}
|
|
46
60
|
declare function mergeComponentControllers(component: Component): MergedComponentControllers;
|
|
61
|
+
declare function mergeComponents<T extends Component<any>[]>(components: [...T]): MergedComponentControllers<MergeTrpcFromComponents<T>>;
|
|
47
62
|
declare function mergeComponents(components: Component[]): MergedComponentControllers;
|
|
48
63
|
|
|
49
|
-
export { type Component, type ComponentControllers, type EchoesController, type JobsController, type MergedComponentControllers, type ModelResolversController, type ResolversController, type RoutesController, type SubscriptionsController, component, mergeComponentControllers, mergeComponents };
|
|
64
|
+
export { type Component, type ComponentControllers, type EchoesController, type JobsController, type MergeTrpcFromComponents, type MergedComponentControllers, type ModelResolversController, type ResolversController, type RoutesController, type SubscriptionsController, type TrpcController, component, mergeComponentControllers, mergeComponents };
|
package/dist/index.js
CHANGED
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
import { getServiceRoutes } from "@orion-js/http";
|
|
14
14
|
import { getServiceJobs } from "@orion-js/dogs";
|
|
15
15
|
import { generateId } from "@orion-js/helpers";
|
|
16
|
+
import { getTProcedures } from "@orion-js/trpc";
|
|
16
17
|
function mergeComponentControllers(component2) {
|
|
17
18
|
const echoes = {};
|
|
18
19
|
if (component2.controllers.echoes) {
|
|
@@ -81,13 +82,24 @@ function mergeComponentControllers(component2) {
|
|
|
81
82
|
}
|
|
82
83
|
});
|
|
83
84
|
}
|
|
85
|
+
const trpc = {};
|
|
86
|
+
if (component2.controllers.trpc) {
|
|
87
|
+
component2.controllers.trpc.forEach((Controller) => {
|
|
88
|
+
const serviceProcedures = getTProcedures(Controller);
|
|
89
|
+
for (const procedureName in serviceProcedures) {
|
|
90
|
+
const procedure = serviceProcedures[procedureName];
|
|
91
|
+
trpc[procedureName] = procedure;
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
84
95
|
return {
|
|
85
96
|
echoes,
|
|
86
97
|
resolvers,
|
|
87
98
|
modelResolvers,
|
|
88
99
|
subscriptions,
|
|
89
100
|
routes,
|
|
90
|
-
jobs
|
|
101
|
+
jobs,
|
|
102
|
+
trpc
|
|
91
103
|
};
|
|
92
104
|
}
|
|
93
105
|
function mergeComponents(components) {
|
|
@@ -97,7 +109,8 @@ function mergeComponents(components) {
|
|
|
97
109
|
modelResolvers: {},
|
|
98
110
|
subscriptions: {},
|
|
99
111
|
routes: {},
|
|
100
|
-
jobs: {}
|
|
112
|
+
jobs: {},
|
|
113
|
+
trpc: {}
|
|
101
114
|
};
|
|
102
115
|
components.forEach((component2) => {
|
|
103
116
|
const componentControllers = mergeComponentControllers(component2);
|
|
@@ -125,6 +138,10 @@ function mergeComponents(components) {
|
|
|
125
138
|
...mergedControllers.jobs,
|
|
126
139
|
...componentControllers.jobs
|
|
127
140
|
};
|
|
141
|
+
mergedControllers.trpc = {
|
|
142
|
+
...mergedControllers.trpc,
|
|
143
|
+
...componentControllers.trpc
|
|
144
|
+
};
|
|
128
145
|
});
|
|
129
146
|
return mergedControllers;
|
|
130
147
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/index.ts","../src/mergeComponents/index.ts"],"sourcesContent":["export type EchoesController = {new (...args: any[]): any}\nexport type ResolversController = {new (...args: any[]): any}\nexport type SubscriptionsController = {new (...args: any[]): any}\nexport type JobsController = {new (...args: any[]): any}\nexport type RoutesController = {new (...args: any[]): any}\nexport type ModelResolversController = {new (...args: any[]): any}\n\nexport interface ComponentControllers {\n echoes?: EchoesController[]\n routes?: RoutesController[]\n jobs?: JobsController[]\n resolvers?: ResolversController[]\n subscriptions?: SubscriptionsController[]\n modelResolvers?: ModelResolversController[]\n}\n\nexport interface Component {\n controllers: ComponentControllers\n}\n\nexport function component(controllers: ComponentControllers): Component {\n return {controllers}\n}\n","import {Component} from '../components'\nimport {EchoesMap, getServiceEchoes} from '@orion-js/echoes'\nimport {\n getServiceModelResolvers,\n getServiceResolvers,\n getServiceSubscriptions,\n OrionSubscriptionsMap,\n ModelsResolversMap,\n} from '@orion-js/graphql'\nimport {getServiceRoutes, RoutesMap} from '@orion-js/http'\nimport {getServiceJobs, JobsDefinition} from '@orion-js/dogs'\nimport {GlobalResolversMap} from '@orion-js/models'\nimport {generateId} from '@orion-js/helpers'\n\nexport interface MergedComponentControllers {\n echoes: EchoesMap\n resolvers: GlobalResolversMap\n modelResolvers: ModelsResolversMap\n subscriptions: OrionSubscriptionsMap\n routes: RoutesMap\n jobs: JobsDefinition\n}\n\nexport function mergeComponentControllers(component: Component): MergedComponentControllers {\n const echoes: EchoesMap = {}\n\n if (component.controllers.echoes) {\n component.controllers.echoes.forEach(Controller => {\n const serviceEchoes = getServiceEchoes(Controller)\n for (const echoName in serviceEchoes) {\n const echo = serviceEchoes[echoName]\n echoes[echoName] = echo\n }\n })\n }\n\n const resolvers: GlobalResolversMap = {}\n\n if (component.controllers.resolvers) {\n component.controllers.resolvers.forEach(Controller => {\n const serviceResolvers = getServiceResolvers(Controller)\n for (const resolverName in serviceResolvers) {\n const resolver = serviceResolvers[resolverName]\n resolvers[resolverName] = resolver\n }\n })\n }\n\n const modelResolvers: ModelsResolversMap = {}\n\n if (component.controllers.modelResolvers) {\n component.controllers.modelResolvers.forEach(Controller => {\n const serviceModelResolvers = getServiceModelResolvers(Controller)\n for (const modelName in serviceModelResolvers) {\n const resolversForModel = serviceModelResolvers[modelName]\n modelResolvers[modelName] = modelResolvers[modelName] || {}\n for (const resolverName in resolversForModel) {\n modelResolvers[modelName][resolverName] = resolversForModel[resolverName]\n }\n }\n })\n }\n\n const subscriptions: OrionSubscriptionsMap = {}\n\n if (component.controllers.subscriptions) {\n component.controllers.subscriptions.forEach(Controller => {\n const serviceResolvers = getServiceSubscriptions(Controller)\n for (const subsrcriptionName in serviceResolvers) {\n const subsrcription = serviceResolvers[subsrcriptionName]\n subscriptions[subsrcriptionName] = subsrcription\n }\n })\n }\n\n const routes: RoutesMap = {}\n\n if (component.controllers.routes) {\n component.controllers.routes.forEach(Controller => {\n const serviceRoutes = getServiceRoutes(Controller)\n for (const routeName in serviceRoutes) {\n const resolver = serviceRoutes[routeName]\n if (routes[routeName]) {\n routes[routeName + generateId()] = resolver\n } else {\n routes[routeName] = resolver\n }\n }\n })\n }\n\n const jobs: JobsDefinition = {}\n\n if (component.controllers.jobs) {\n component.controllers.jobs.forEach(Controller => {\n const serviceJobs = getServiceJobs(Controller)\n for (const jobName in serviceJobs) {\n const resolver = serviceJobs[jobName]\n jobs[jobName] = resolver\n }\n })\n }\n\n return {\n echoes,\n resolvers,\n modelResolvers,\n subscriptions,\n routes,\n jobs,\n }\n}\n\nexport function mergeComponents(components: Component[]): MergedComponentControllers {\n const mergedControllers: MergedComponentControllers = {\n echoes: {},\n resolvers: {},\n modelResolvers: {},\n subscriptions: {},\n routes: {},\n jobs: {},\n }\n\n components.forEach(component => {\n const componentControllers = mergeComponentControllers(component)\n mergedControllers.echoes = {\n ...mergedControllers.echoes,\n ...componentControllers.echoes,\n }\n mergedControllers.resolvers = {\n ...mergedControllers.resolvers,\n ...componentControllers.resolvers,\n }\n mergedControllers.modelResolvers = {\n ...mergedControllers.modelResolvers,\n ...componentControllers.modelResolvers,\n }\n mergedControllers.subscriptions = {\n ...mergedControllers.subscriptions,\n ...componentControllers.subscriptions,\n }\n mergedControllers.routes = {\n ...mergedControllers.routes,\n ...componentControllers.routes,\n }\n mergedControllers.jobs = {\n ...mergedControllers.jobs,\n ...componentControllers.jobs,\n }\n })\n\n return mergedControllers\n}\n"],"mappings":";AAoBO,SAAS,UAAU,aAA8C;AACtE,SAAO,EAAC,YAAW;AACrB;;;ACrBA,SAAmB,wBAAuB;AAC1C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAQ,wBAAkC;AAC1C,SAAQ,sBAAqC;AAE7C,SAAQ,kBAAiB;AAWlB,SAAS,0BAA0BA,YAAkD;AAC1F,QAAM,SAAoB,CAAC;AAE3B,MAAIA,WAAU,YAAY,QAAQ;AAChC,IAAAA,WAAU,YAAY,OAAO,QAAQ,gBAAc;AACjD,YAAM,gBAAgB,iBAAiB,UAAU;AACjD,iBAAW,YAAY,eAAe;AACpC,cAAM,OAAO,cAAc,QAAQ;AACnC,eAAO,QAAQ,IAAI;AAAA,MACrB;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,YAAgC,CAAC;AAEvC,MAAIA,WAAU,YAAY,WAAW;AACnC,IAAAA,WAAU,YAAY,UAAU,QAAQ,gBAAc;AACpD,YAAM,mBAAmB,oBAAoB,UAAU;AACvD,iBAAW,gBAAgB,kBAAkB;AAC3C,cAAM,WAAW,iBAAiB,YAAY;AAC9C,kBAAU,YAAY,IAAI;AAAA,MAC5B;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,iBAAqC,CAAC;AAE5C,MAAIA,WAAU,YAAY,gBAAgB;AACxC,IAAAA,WAAU,YAAY,eAAe,QAAQ,gBAAc;AACzD,YAAM,wBAAwB,yBAAyB,UAAU;AACjE,iBAAW,aAAa,uBAAuB;AAC7C,cAAM,oBAAoB,sBAAsB,SAAS;AACzD,uBAAe,SAAS,IAAI,eAAe,SAAS,KAAK,CAAC;AAC1D,mBAAW,gBAAgB,mBAAmB;AAC5C,yBAAe,SAAS,EAAE,YAAY,IAAI,kBAAkB,YAAY;AAAA,QAC1E;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,gBAAuC,CAAC;AAE9C,MAAIA,WAAU,YAAY,eAAe;AACvC,IAAAA,WAAU,YAAY,cAAc,QAAQ,gBAAc;AACxD,YAAM,mBAAmB,wBAAwB,UAAU;AAC3D,iBAAW,qBAAqB,kBAAkB;AAChD,cAAM,gBAAgB,iBAAiB,iBAAiB;AACxD,sBAAc,iBAAiB,IAAI;AAAA,MACrC;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,SAAoB,CAAC;AAE3B,MAAIA,WAAU,YAAY,QAAQ;AAChC,IAAAA,WAAU,YAAY,OAAO,QAAQ,gBAAc;AACjD,YAAM,gBAAgB,iBAAiB,UAAU;AACjD,iBAAW,aAAa,eAAe;AACrC,cAAM,WAAW,cAAc,SAAS;AACxC,YAAI,OAAO,SAAS,GAAG;AACrB,iBAAO,YAAY,WAAW,CAAC,IAAI;AAAA,QACrC,OAAO;AACL,iBAAO,SAAS,IAAI;AAAA,QACtB;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,OAAuB,CAAC;AAE9B,MAAIA,WAAU,YAAY,MAAM;AAC9B,IAAAA,WAAU,YAAY,KAAK,QAAQ,gBAAc;AAC/C,YAAM,cAAc,eAAe,UAAU;AAC7C,iBAAW,WAAW,aAAa;AACjC,cAAM,WAAW,YAAY,OAAO;AACpC,aAAK,OAAO,IAAI;AAAA,MAClB;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,gBAAgB,YAAqD;AACnF,QAAM,oBAAgD;AAAA,IACpD,QAAQ,CAAC;AAAA,IACT,WAAW,CAAC;AAAA,IACZ,gBAAgB,CAAC;AAAA,IACjB,eAAe,CAAC;AAAA,IAChB,QAAQ,CAAC;AAAA,IACT,MAAM,CAAC;AAAA,EACT;AAEA,aAAW,QAAQ,CAAAA,eAAa;AAC9B,UAAM,uBAAuB,0BAA0BA,UAAS;AAChE,sBAAkB,SAAS;AAAA,MACzB,GAAG,kBAAkB;AAAA,MACrB,GAAG,qBAAqB;AAAA,IAC1B;AACA,sBAAkB,YAAY;AAAA,MAC5B,GAAG,kBAAkB;AAAA,MACrB,GAAG,qBAAqB;AAAA,IAC1B;AACA,sBAAkB,iBAAiB;AAAA,MACjC,GAAG,kBAAkB;AAAA,MACrB,GAAG,qBAAqB;AAAA,IAC1B;AACA,sBAAkB,gBAAgB;AAAA,MAChC,GAAG,kBAAkB;AAAA,MACrB,GAAG,qBAAqB;AAAA,IAC1B;AACA,sBAAkB,SAAS;AAAA,MACzB,GAAG,kBAAkB;AAAA,MACrB,GAAG,qBAAqB;AAAA,IAC1B;AACA,sBAAkB,OAAO;AAAA,MACvB,GAAG,kBAAkB;AAAA,MACrB,GAAG,qBAAqB;AAAA,IAC1B;AAAA,EACF,CAAC;AAED,SAAO;AACT;","names":["component"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/index.ts","../src/mergeComponents/index.ts"],"sourcesContent":["export type EchoesController = {new (...args: any[]): any}\nexport type ResolversController = {new (...args: any[]): any}\nexport type SubscriptionsController = {new (...args: any[]): any}\nexport type JobsController = {new (...args: any[]): any}\nexport type RoutesController = {new (...args: any[]): any}\nexport type ModelResolversController = {new (...args: any[]): any}\nexport type TrpcController = {new (...args: any[]): any}\n\nexport interface ComponentControllers<TTrpc extends TrpcController[] = TrpcController[]> {\n echoes?: EchoesController[]\n routes?: RoutesController[]\n jobs?: JobsController[]\n resolvers?: ResolversController[]\n subscriptions?: SubscriptionsController[]\n modelResolvers?: ModelResolversController[]\n trpc?: TTrpc\n}\n\nexport interface Component<TTrpc extends TrpcController[] = TrpcController[]> {\n controllers: ComponentControllers<TTrpc>\n}\n\nexport function component<TTrpc extends TrpcController[] = TrpcController[]>(\n controllers: ComponentControllers<TTrpc>,\n): Component<TTrpc> {\n return {controllers}\n}\n","import {Component, TrpcController} from '../components'\nimport {EchoesMap, getServiceEchoes} from '@orion-js/echoes'\nimport {\n getServiceModelResolvers,\n getServiceResolvers,\n getServiceSubscriptions,\n OrionSubscriptionsMap,\n ModelsResolversMap,\n} from '@orion-js/graphql'\nimport {getServiceRoutes, RoutesMap} from '@orion-js/http'\nimport {getServiceJobs, JobsDefinition} from '@orion-js/dogs'\nimport {GlobalResolversMap} from '@orion-js/models'\nimport {generateId} from '@orion-js/helpers'\nimport {getTProcedures} from '@orion-js/trpc'\nimport type {ExtractProcedures} from '@orion-js/trpc'\nimport type {TRPCRouterRecord} from '@trpc/server'\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void\n ? I\n : never\n\ntype ExtractTrpcFromClasses<T extends TrpcController[]> = UnionToIntersection<\n T[number] extends infer C ? (C extends TrpcController ? ExtractProcedures<InstanceType<C>> : never) : never\n>\n\ntype ExtractTrpcFromComponent<C> = C extends Component<infer Classes>\n ? ExtractTrpcFromClasses<Classes>\n : TRPCRouterRecord\n\ntype MergeTrpcResult<T extends Component<any>[]> = UnionToIntersection<\n {[K in keyof T]: ExtractTrpcFromComponent<T[K]>}[number]\n>\n\nexport type MergeTrpcFromComponents<T extends Component<any>[]> =\n MergeTrpcResult<T> extends TRPCRouterRecord ? MergeTrpcResult<T> : TRPCRouterRecord\n\nexport interface MergedComponentControllers<TTrpc extends TRPCRouterRecord = TRPCRouterRecord> {\n echoes: EchoesMap\n resolvers: GlobalResolversMap\n modelResolvers: ModelsResolversMap\n subscriptions: OrionSubscriptionsMap\n routes: RoutesMap\n jobs: JobsDefinition\n trpc: TTrpc\n}\n\nexport function mergeComponentControllers(component: Component): MergedComponentControllers {\n const echoes: EchoesMap = {}\n\n if (component.controllers.echoes) {\n component.controllers.echoes.forEach(Controller => {\n const serviceEchoes = getServiceEchoes(Controller)\n for (const echoName in serviceEchoes) {\n const echo = serviceEchoes[echoName]\n echoes[echoName] = echo\n }\n })\n }\n\n const resolvers: GlobalResolversMap = {}\n\n if (component.controllers.resolvers) {\n component.controllers.resolvers.forEach(Controller => {\n const serviceResolvers = getServiceResolvers(Controller)\n for (const resolverName in serviceResolvers) {\n const resolver = serviceResolvers[resolverName]\n resolvers[resolverName] = resolver\n }\n })\n }\n\n const modelResolvers: ModelsResolversMap = {}\n\n if (component.controllers.modelResolvers) {\n component.controllers.modelResolvers.forEach(Controller => {\n const serviceModelResolvers = getServiceModelResolvers(Controller)\n for (const modelName in serviceModelResolvers) {\n const resolversForModel = serviceModelResolvers[modelName]\n modelResolvers[modelName] = modelResolvers[modelName] || {}\n for (const resolverName in resolversForModel) {\n modelResolvers[modelName][resolverName] = resolversForModel[resolverName]\n }\n }\n })\n }\n\n const subscriptions: OrionSubscriptionsMap = {}\n\n if (component.controllers.subscriptions) {\n component.controllers.subscriptions.forEach(Controller => {\n const serviceResolvers = getServiceSubscriptions(Controller)\n for (const subsrcriptionName in serviceResolvers) {\n const subsrcription = serviceResolvers[subsrcriptionName]\n subscriptions[subsrcriptionName] = subsrcription\n }\n })\n }\n\n const routes: RoutesMap = {}\n\n if (component.controllers.routes) {\n component.controllers.routes.forEach(Controller => {\n const serviceRoutes = getServiceRoutes(Controller)\n for (const routeName in serviceRoutes) {\n const resolver = serviceRoutes[routeName]\n if (routes[routeName]) {\n routes[routeName + generateId()] = resolver\n } else {\n routes[routeName] = resolver\n }\n }\n })\n }\n\n const jobs: JobsDefinition = {}\n\n if (component.controllers.jobs) {\n component.controllers.jobs.forEach(Controller => {\n const serviceJobs = getServiceJobs(Controller)\n for (const jobName in serviceJobs) {\n const resolver = serviceJobs[jobName]\n jobs[jobName] = resolver\n }\n })\n }\n\n const trpc: TRPCRouterRecord = {}\n\n if (component.controllers.trpc) {\n component.controllers.trpc.forEach(Controller => {\n const serviceProcedures = getTProcedures(Controller)\n for (const procedureName in serviceProcedures) {\n const procedure = serviceProcedures[procedureName]\n trpc[procedureName] = procedure\n }\n })\n }\n\n return {\n echoes,\n resolvers,\n modelResolvers,\n subscriptions,\n routes,\n jobs,\n trpc,\n }\n}\n\nexport function mergeComponents<T extends Component<any>[]>(\n components: [...T],\n): MergedComponentControllers<MergeTrpcFromComponents<T>>\nexport function mergeComponents(components: Component[]): MergedComponentControllers\nexport function mergeComponents(components: Component[]): MergedComponentControllers {\n const mergedControllers: MergedComponentControllers = {\n echoes: {},\n resolvers: {},\n modelResolvers: {},\n subscriptions: {},\n routes: {},\n jobs: {},\n trpc: {},\n }\n\n components.forEach(component => {\n const componentControllers = mergeComponentControllers(component)\n mergedControllers.echoes = {\n ...mergedControllers.echoes,\n ...componentControllers.echoes,\n }\n mergedControllers.resolvers = {\n ...mergedControllers.resolvers,\n ...componentControllers.resolvers,\n }\n mergedControllers.modelResolvers = {\n ...mergedControllers.modelResolvers,\n ...componentControllers.modelResolvers,\n }\n mergedControllers.subscriptions = {\n ...mergedControllers.subscriptions,\n ...componentControllers.subscriptions,\n }\n mergedControllers.routes = {\n ...mergedControllers.routes,\n ...componentControllers.routes,\n }\n mergedControllers.jobs = {\n ...mergedControllers.jobs,\n ...componentControllers.jobs,\n }\n mergedControllers.trpc = {\n ...mergedControllers.trpc,\n ...componentControllers.trpc,\n }\n })\n\n return mergedControllers\n}\n"],"mappings":"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","names":["component"]}
|
package/package.json
CHANGED
|
@@ -1,32 +1,44 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orion-js/components",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.8",
|
|
4
4
|
"main": "./dist/index.cjs",
|
|
5
5
|
"author": "nicolaslopezj",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"peerDependencies": {
|
|
8
|
+
"@trpc/server": "^11.0.0",
|
|
8
9
|
"@orion-js/dogs": "4.2.6",
|
|
9
10
|
"@orion-js/echoes": "4.2.0",
|
|
10
|
-
"@orion-js/http": "4.2.0",
|
|
11
11
|
"@orion-js/graphql": "4.2.0",
|
|
12
12
|
"@orion-js/helpers": "4.2.0",
|
|
13
|
-
"@orion-js/models": "4.2.0",
|
|
14
13
|
"@orion-js/logger": "4.2.0",
|
|
14
|
+
"@orion-js/models": "4.2.0",
|
|
15
15
|
"@orion-js/mongodb": "4.2.6",
|
|
16
|
-
"@orion-js/
|
|
16
|
+
"@orion-js/trpc": "4.0.2",
|
|
17
|
+
"@orion-js/services": "4.2.0",
|
|
18
|
+
"@orion-js/http": "4.2.0"
|
|
19
|
+
},
|
|
20
|
+
"peerDependenciesMeta": {
|
|
21
|
+
"@orion-js/trpc": {
|
|
22
|
+
"optional": true
|
|
23
|
+
},
|
|
24
|
+
"@trpc/server": {
|
|
25
|
+
"optional": true
|
|
26
|
+
}
|
|
17
27
|
},
|
|
18
28
|
"devDependencies": {
|
|
29
|
+
"@trpc/server": "^11.0.0",
|
|
19
30
|
"typescript": "^5.4.5",
|
|
20
31
|
"@types/node": "^18.0.0",
|
|
21
32
|
"tsup": "^8.0.1",
|
|
22
33
|
"vitest": "^3.0.8",
|
|
23
|
-
"@orion-js/dogs": "4.2.6",
|
|
24
34
|
"@orion-js/echoes": "4.2.0",
|
|
35
|
+
"@orion-js/dogs": "4.2.6",
|
|
25
36
|
"@orion-js/helpers": "4.2.0",
|
|
26
|
-
"@orion-js/graphql": "4.2.0",
|
|
27
|
-
"@orion-js/http": "4.2.0",
|
|
28
37
|
"@orion-js/services": "4.2.0",
|
|
29
|
-
"@orion-js/models": "4.2.0"
|
|
38
|
+
"@orion-js/models": "4.2.0",
|
|
39
|
+
"@orion-js/graphql": "4.2.0",
|
|
40
|
+
"@orion-js/trpc": "4.0.2",
|
|
41
|
+
"@orion-js/http": "4.2.0"
|
|
30
42
|
},
|
|
31
43
|
"publishConfig": {
|
|
32
44
|
"access": "public"
|