@orion-js/components 4.2.7 → 4.2.9
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.map +1 -1
- package/dist/index.d.cts +17 -8
- package/dist/index.d.ts +17 -8
- package/dist/index.js.map +1 -1
- package/package.json +15 -15
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}\nexport type TrpcController = {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 trpc?: TrpcController[]\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'\nimport {getTProcedures} from '@orion-js/trpc'\nimport type {TRPCRouterRecord} from '@trpc/server'\n\nexport interface MergedComponentControllers {\n echoes: EchoesMap\n resolvers: GlobalResolversMap\n modelResolvers: ModelsResolversMap\n subscriptions: OrionSubscriptionsMap\n routes: RoutesMap\n jobs: JobsDefinition\n trpc: TRPCRouterRecord\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(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,UAAU,aAA8C;AACtE,SAAO,EAAC,YAAW;AACrB;;;ACvBA,oBAA0C;AAC1C,qBAMO;AACP,kBAA0C;AAC1C,kBAA6C;AAE7C,qBAAyB;AACzB,kBAA6B;AAatB,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;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,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"]}
|
|
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":"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","names":["component"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -3,6 +3,7 @@ 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';
|
|
6
7
|
import { TRPCRouterRecord } from '@trpc/server';
|
|
7
8
|
|
|
8
9
|
type EchoesController = {
|
|
@@ -26,30 +27,38 @@ type ModelResolversController = {
|
|
|
26
27
|
type TrpcController = {
|
|
27
28
|
new (...args: any[]): any;
|
|
28
29
|
};
|
|
29
|
-
interface ComponentControllers {
|
|
30
|
+
interface ComponentControllers<TTrpc extends TrpcController[] = TrpcController[]> {
|
|
30
31
|
echoes?: EchoesController[];
|
|
31
32
|
routes?: RoutesController[];
|
|
32
33
|
jobs?: JobsController[];
|
|
33
34
|
resolvers?: ResolversController[];
|
|
34
35
|
subscriptions?: SubscriptionsController[];
|
|
35
36
|
modelResolvers?: ModelResolversController[];
|
|
36
|
-
trpc?:
|
|
37
|
+
trpc?: TTrpc;
|
|
37
38
|
}
|
|
38
|
-
interface Component {
|
|
39
|
-
controllers: ComponentControllers
|
|
39
|
+
interface Component<TTrpc extends TrpcController[] = TrpcController[]> {
|
|
40
|
+
controllers: ComponentControllers<TTrpc>;
|
|
40
41
|
}
|
|
41
|
-
declare function component(controllers: ComponentControllers): Component
|
|
42
|
+
declare function component<TTrpc extends TrpcController[] = TrpcController[]>(controllers: ComponentControllers<TTrpc>): Component<TTrpc>;
|
|
42
43
|
|
|
43
|
-
|
|
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> {
|
|
44
52
|
echoes: EchoesMap;
|
|
45
53
|
resolvers: GlobalResolversMap;
|
|
46
54
|
modelResolvers: ModelsResolversMap;
|
|
47
55
|
subscriptions: OrionSubscriptionsMap;
|
|
48
56
|
routes: RoutesMap;
|
|
49
57
|
jobs: JobsDefinition;
|
|
50
|
-
trpc:
|
|
58
|
+
trpc: TTrpc;
|
|
51
59
|
}
|
|
52
60
|
declare function mergeComponentControllers(component: Component): MergedComponentControllers;
|
|
61
|
+
declare function mergeComponents<T extends Component<any>[]>(components: [...T]): MergedComponentControllers<MergeTrpcFromComponents<T>>;
|
|
53
62
|
declare function mergeComponents(components: Component[]): MergedComponentControllers;
|
|
54
63
|
|
|
55
|
-
export { type Component, type ComponentControllers, type EchoesController, type JobsController, type MergedComponentControllers, type ModelResolversController, type ResolversController, type RoutesController, type SubscriptionsController, type TrpcController, 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,7 @@ 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';
|
|
6
7
|
import { TRPCRouterRecord } from '@trpc/server';
|
|
7
8
|
|
|
8
9
|
type EchoesController = {
|
|
@@ -26,30 +27,38 @@ type ModelResolversController = {
|
|
|
26
27
|
type TrpcController = {
|
|
27
28
|
new (...args: any[]): any;
|
|
28
29
|
};
|
|
29
|
-
interface ComponentControllers {
|
|
30
|
+
interface ComponentControllers<TTrpc extends TrpcController[] = TrpcController[]> {
|
|
30
31
|
echoes?: EchoesController[];
|
|
31
32
|
routes?: RoutesController[];
|
|
32
33
|
jobs?: JobsController[];
|
|
33
34
|
resolvers?: ResolversController[];
|
|
34
35
|
subscriptions?: SubscriptionsController[];
|
|
35
36
|
modelResolvers?: ModelResolversController[];
|
|
36
|
-
trpc?:
|
|
37
|
+
trpc?: TTrpc;
|
|
37
38
|
}
|
|
38
|
-
interface Component {
|
|
39
|
-
controllers: ComponentControllers
|
|
39
|
+
interface Component<TTrpc extends TrpcController[] = TrpcController[]> {
|
|
40
|
+
controllers: ComponentControllers<TTrpc>;
|
|
40
41
|
}
|
|
41
|
-
declare function component(controllers: ComponentControllers): Component
|
|
42
|
+
declare function component<TTrpc extends TrpcController[] = TrpcController[]>(controllers: ComponentControllers<TTrpc>): Component<TTrpc>;
|
|
42
43
|
|
|
43
|
-
|
|
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> {
|
|
44
52
|
echoes: EchoesMap;
|
|
45
53
|
resolvers: GlobalResolversMap;
|
|
46
54
|
modelResolvers: ModelsResolversMap;
|
|
47
55
|
subscriptions: OrionSubscriptionsMap;
|
|
48
56
|
routes: RoutesMap;
|
|
49
57
|
jobs: JobsDefinition;
|
|
50
|
-
trpc:
|
|
58
|
+
trpc: TTrpc;
|
|
51
59
|
}
|
|
52
60
|
declare function mergeComponentControllers(component: Component): MergedComponentControllers;
|
|
61
|
+
declare function mergeComponents<T extends Component<any>[]>(components: [...T]): MergedComponentControllers<MergeTrpcFromComponents<T>>;
|
|
53
62
|
declare function mergeComponents(components: Component[]): MergedComponentControllers;
|
|
54
63
|
|
|
55
|
-
export { type Component, type ComponentControllers, type EchoesController, type JobsController, type MergedComponentControllers, type ModelResolversController, type ResolversController, type RoutesController, type SubscriptionsController, type TrpcController, 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.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}\nexport type TrpcController = {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 trpc?: TrpcController[]\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'\nimport {getTProcedures} from '@orion-js/trpc'\nimport type {TRPCRouterRecord} from '@trpc/server'\n\nexport interface MergedComponentControllers {\n echoes: EchoesMap\n resolvers: GlobalResolversMap\n modelResolvers: ModelsResolversMap\n subscriptions: OrionSubscriptionsMap\n routes: RoutesMap\n jobs: JobsDefinition\n trpc: TRPCRouterRecord\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(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"]}
|
|
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,21 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orion-js/components",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.9",
|
|
4
4
|
"main": "./dist/index.cjs",
|
|
5
5
|
"author": "nicolaslopezj",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"peerDependencies": {
|
|
8
8
|
"@trpc/server": "^11.0.0",
|
|
9
|
-
"@orion-js/
|
|
9
|
+
"@orion-js/dogs": "4.2.7",
|
|
10
|
+
"@orion-js/echoes": "4.2.1",
|
|
11
|
+
"@orion-js/http": "4.2.1",
|
|
12
|
+
"@orion-js/graphql": "4.2.1",
|
|
10
13
|
"@orion-js/helpers": "4.2.0",
|
|
11
|
-
"@orion-js/models": "4.2.
|
|
12
|
-
"@orion-js/graphql": "4.2.0",
|
|
14
|
+
"@orion-js/models": "4.2.1",
|
|
13
15
|
"@orion-js/logger": "4.2.0",
|
|
14
|
-
"@orion-js/
|
|
15
|
-
"@orion-js/dogs": "4.2.6",
|
|
16
|
-
"@orion-js/trpc": "4.0.1",
|
|
16
|
+
"@orion-js/mongodb": "4.2.7",
|
|
17
17
|
"@orion-js/services": "4.2.0",
|
|
18
|
-
"@orion-js/
|
|
18
|
+
"@orion-js/trpc": "4.0.3"
|
|
19
19
|
},
|
|
20
20
|
"peerDependenciesMeta": {
|
|
21
21
|
"@orion-js/trpc": {
|
|
@@ -31,14 +31,14 @@
|
|
|
31
31
|
"@types/node": "^18.0.0",
|
|
32
32
|
"tsup": "^8.0.1",
|
|
33
33
|
"vitest": "^3.0.8",
|
|
34
|
-
"@orion-js/echoes": "4.2.
|
|
35
|
-
"@orion-js/
|
|
36
|
-
"@orion-js/
|
|
37
|
-
"@orion-js/models": "4.2.
|
|
38
|
-
"@orion-js/services": "4.2.0",
|
|
39
|
-
"@orion-js/trpc": "4.0.1",
|
|
34
|
+
"@orion-js/echoes": "4.2.1",
|
|
35
|
+
"@orion-js/graphql": "4.2.1",
|
|
36
|
+
"@orion-js/dogs": "4.2.7",
|
|
37
|
+
"@orion-js/models": "4.2.1",
|
|
40
38
|
"@orion-js/helpers": "4.2.0",
|
|
41
|
-
"@orion-js/
|
|
39
|
+
"@orion-js/http": "4.2.1",
|
|
40
|
+
"@orion-js/services": "4.2.0",
|
|
41
|
+
"@orion-js/trpc": "4.0.3"
|
|
42
42
|
},
|
|
43
43
|
"publishConfig": {
|
|
44
44
|
"access": "public"
|