nextjs-cms 0.5.68 → 0.5.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/api/index.d.ts +6 -34
  2. package/dist/api/index.d.ts.map +1 -1
  3. package/dist/api/index.js +2 -2
  4. package/dist/api/lib/serverActions.d.ts +6 -0
  5. package/dist/api/lib/serverActions.d.ts.map +1 -1
  6. package/dist/api/lib/serverActions.js +64 -9
  7. package/dist/api/root.d.ts +34 -89
  8. package/dist/api/root.d.ts.map +1 -1
  9. package/dist/api/root.js +15 -18
  10. package/dist/api/routers/admins.d.ts.map +1 -1
  11. package/dist/api/routers/admins.js +53 -3
  12. package/dist/api/routers/gallery.d.ts.map +1 -1
  13. package/dist/api/routers/gallery.js +1 -0
  14. package/dist/api/trpc/client.d.ts +4 -0
  15. package/dist/api/trpc/client.d.ts.map +1 -0
  16. package/dist/api/trpc/client.js +3 -0
  17. package/dist/api/trpc.d.ts +12 -0
  18. package/dist/api/trpc.d.ts.map +1 -1
  19. package/dist/api/trpc.js +24 -0
  20. package/dist/core/config/loader.d.ts +1 -1
  21. package/dist/core/config/loader.d.ts.map +1 -1
  22. package/dist/core/config/loader.js +1 -1
  23. package/dist/core/factories/SectionFactory.d.ts +1 -1
  24. package/dist/core/factories/SectionFactory.d.ts.map +1 -1
  25. package/dist/core/factories/SectionFactory.js +1 -1
  26. package/dist/core/factories/section-factory-with-esbuild.d.ts +0 -4
  27. package/dist/core/factories/section-factory-with-esbuild.d.ts.map +1 -1
  28. package/dist/core/factories/section-factory-with-esbuild.js +1 -5
  29. package/dist/core/factories/section-factory-with-jiti.d.ts +0 -4
  30. package/dist/core/factories/section-factory-with-jiti.d.ts.map +1 -1
  31. package/dist/core/factories/section-factory-with-jiti.js +1 -5
  32. package/dist/core/submit/ItemEditSubmit.d.ts.map +1 -1
  33. package/dist/plugins/blank.d.ts +6 -0
  34. package/dist/plugins/blank.d.ts.map +1 -0
  35. package/dist/plugins/blank.js +7 -0
  36. package/dist/plugins/index.d.ts +2 -1
  37. package/dist/plugins/index.d.ts.map +1 -1
  38. package/dist/plugins/index.js +1 -0
  39. package/dist/plugins/loader.d.ts +32 -6
  40. package/dist/plugins/loader.d.ts.map +1 -1
  41. package/dist/plugins/loader.js +34 -8
  42. package/package.json +9 -1
  43. package/dist/api/routers/googleAnalytics.d.ts +0 -29
  44. package/dist/api/routers/googleAnalytics.d.ts.map +0 -1
  45. package/dist/api/routers/googleAnalytics.js +0 -7
@@ -1,7 +1,7 @@
1
1
  import type { inferRouterInputs, inferRouterOutputs } from '@trpc/server';
2
2
  import type { AppRouter } from './root.js';
3
3
  import { appRouter, createCallerWithPlugins, getAppRouter } from './root.js';
4
- import { createTRPCContext, privateProcedure, publicProcedure, router } from './trpc.js';
4
+ import { createTRPCContext, privateProcedure, publicProcedure, router, pluginProcedure } from './trpc.js';
5
5
  /**
6
6
  * Create a server-side caller for the tRPC API
7
7
  * @example
@@ -781,42 +781,14 @@ declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
781
781
  };
782
782
  transformer: true;
783
783
  }, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
784
- list: import("@trpc/server").TRPCQueryProcedure<{
785
- input: void;
786
- output: {
787
- id: string;
788
- name: string;
789
- version: string | undefined;
790
- package: string;
791
- }[];
792
- meta: object;
793
- }>;
794
- routes: import("@trpc/server").TRPCQueryProcedure<{
795
- input: void;
796
- output: {
797
- pluginId: string;
798
- pluginName?: string;
784
+ checkRoute: import("@trpc/server").TRPCQueryProcedure<{
785
+ input: {
799
786
  path: string;
800
- title: string;
801
- icon?: string;
802
- component: string;
803
- }[];
787
+ };
788
+ output: import("../plugins/loader.js").LoadedPluginRoute | null;
804
789
  meta: object;
805
790
  }>;
806
791
  }>>;
807
- getHello1: import("@trpc/server").TRPCQueryProcedure<{
808
- input: void;
809
- output: {
810
- headers: Headers;
811
- db: import("drizzle-orm/mysql2").MySql2Database<typeof import("../db/schema.js")> & {
812
- $client: import("mysql2/promise").Pool;
813
- };
814
- session: {
815
- user: import("../index.js").User;
816
- };
817
- };
818
- meta: object;
819
- }>;
820
792
  }>>;
821
793
  /**
822
794
  * Inference helpers for input types
@@ -833,7 +805,7 @@ type RouterInputs = inferRouterInputs<AppRouter>;
833
805
  **/
834
806
  type RouterOutputs = inferRouterOutputs<AppRouter>;
835
807
  export { createTRPCContext, appRouter, createCaller, createCallerWithPlugins, getAppRouter };
836
- export { router, publicProcedure, privateProcedure };
808
+ export { router, publicProcedure, privateProcedure, pluginProcedure };
837
809
  export type { AppRouter, RouterInputs, RouterOutputs };
838
810
  export { axiosPrivate } from './axios/axiosInstance.js';
839
811
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC5E,OAAO,EAAuB,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAE7G;;;;;;GAMG;AACH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAiC,CAAA;AAEnD;;;;;IAKI;AACJ,KAAK,YAAY,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAA;AAEhD;;;;;IAKI;AACJ,KAAK,aAAa,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAA;AAElD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,YAAY,EAAE,uBAAuB,EAAE,YAAY,EAAE,CAAA;AAC5F,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAA;AACpD,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC5E,OAAO,EAEH,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,MAAM,EACN,eAAe,EAClB,MAAM,WAAW,CAAA;AAElB;;;;;;GAMG;AACH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAiC,CAAA;AAEnD;;;;;IAKI;AACJ,KAAK,YAAY,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAA;AAEhD;;;;;IAKI;AACJ,KAAK,aAAa,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAA;AAElD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,YAAY,EAAE,uBAAuB,EAAE,YAAY,EAAE,CAAA;AAC5F,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAA;AACrE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA"}
package/dist/api/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { appRouter, createCallerWithPlugins, getAppRouter } from './root.js';
2
- import { createCallerFactory, createTRPCContext, privateProcedure, publicProcedure, router } from './trpc.js';
2
+ import { createCallerFactory, createTRPCContext, privateProcedure, publicProcedure, router, pluginProcedure, } from './trpc.js';
3
3
  /**
4
4
  * Create a server-side caller for the tRPC API
5
5
  * @example
@@ -9,5 +9,5 @@ import { createCallerFactory, createTRPCContext, privateProcedure, publicProcedu
9
9
  */
10
10
  const createCaller = createCallerFactory(appRouter);
11
11
  export { createTRPCContext, appRouter, createCaller, createCallerWithPlugins, getAppRouter };
12
- export { router, publicProcedure, privateProcedure };
12
+ export { router, publicProcedure, privateProcedure, pluginProcedure };
13
13
  export { axiosPrivate } from './axios/axiosInstance.js';
@@ -1,4 +1,9 @@
1
1
  import type { Session } from '../../auth/index.js';
2
+ export declare const isAccessAllowed: ({ sectionName, role, userId, }: {
3
+ sectionName: string;
4
+ role?: "C" | "U" | "D";
5
+ userId: string;
6
+ }) => Promise<boolean>;
2
7
  export declare const getDocument: (session: Session, input: {
3
8
  name: string;
4
9
  sectionName: string;
@@ -22,6 +27,7 @@ export declare const getVideo: (input: {
22
27
  sectionName: string;
23
28
  fieldName: string;
24
29
  }) => Promise<never>;
30
+ export declare const getAdminPrivileges: (adminId: string) => Promise<Set<string>>;
25
31
  export declare const getAllPrivileges: () => Promise<{
26
32
  title: string;
27
33
  order: number;
@@ -1 +1 @@
1
- {"version":3,"file":"serverActions.d.ts","sourceRoot":"","sources":["../../../src/api/lib/serverActions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serverActions.d.ts","sourceRoot":"","sources":["../../../src/api/lib/serverActions.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,24 @@ import { fileTypeFromBuffer } from 'file-type';
15
15
  import { getCMSConfig } from '../../core/config/index.js';
16
16
  import { getPluginRoutes } from '../../plugins/loader.js';
17
17
  import through2 from 'through2';
18
+ export const isAccessAllowed = async ({ sectionName, role, userId, }) => {
19
+ /**
20
+ * Check admin privileges
21
+ */
22
+ const _res = await db
23
+ .select()
24
+ .from(AdminPrivilegesTable)
25
+ .where(and(eq(AdminPrivilegesTable.adminId, userId), eq(AdminPrivilegesTable.sectionName, sectionName)))
26
+ .limit(1);
27
+ const allowed = _res[0];
28
+ if (!allowed)
29
+ return false;
30
+ if (role) {
31
+ if (!allowed.operations.includes(role))
32
+ return false;
33
+ }
34
+ return true;
35
+ };
18
36
  export const getDocument = async (session, input) => {
19
37
  const { name, sectionName, fieldName } = input;
20
38
  // Sanitize the inputs
@@ -199,8 +217,15 @@ export async function streamPhoto(input) {
199
217
  export const getVideo = async (input) => {
200
218
  throw new Error('Please use the /api/video route');
201
219
  };
220
+ export const getAdminPrivileges = async (adminId) => {
221
+ const rows = await db
222
+ .select({ sectionName: AdminPrivilegesTable.sectionName })
223
+ .from(AdminPrivilegesTable)
224
+ .where(eq(AdminPrivilegesTable.adminId, adminId));
225
+ return new Set(rows.map((row) => row.sectionName));
226
+ };
202
227
  export const getAllPrivileges = async () => {
203
- const sections = await SectionFactory.getSections();
228
+ const [sections, pluginRoutes] = await Promise.all([SectionFactory.getSections(), getPluginRoutes()]);
204
229
  // First, let's assign the static privileges
205
230
  const privilegesList = [];
206
231
  // Now, let's add the rest of the privileges to the list
@@ -212,7 +237,23 @@ export const getAllPrivileges = async () => {
212
237
  sectionType: section.type,
213
238
  });
214
239
  });
215
- privilegesList.push({ title: 'Admins', order: 0, sectionName: 'admins', sectionType: 'static' }, { title: 'Emails', order: 1, sectionName: 'emails', sectionType: 'static' }, { title: 'Log', order: 2, sectionName: 'log', sectionType: 'static' });
240
+ const pluginPrivileges = new Map();
241
+ pluginRoutes.forEach((route) => {
242
+ if (pluginPrivileges.has(route.pluginName))
243
+ return;
244
+ pluginPrivileges.set(route.pluginName, {
245
+ title: route.pluginTitle,
246
+ });
247
+ });
248
+ Array.from(pluginPrivileges.entries()).forEach(([pluginName, meta], index) => {
249
+ privilegesList.push({
250
+ title: meta.title,
251
+ order: sections.length + index,
252
+ sectionName: pluginName,
253
+ sectionType: 'plugin',
254
+ });
255
+ });
256
+ privilegesList.push({ title: 'Admins', order: 0, sectionName: 'admins', sectionType: 'static' }, { title: 'Log', order: 2, sectionName: 'log', sectionType: 'static' });
216
257
  return privilegesList;
217
258
  };
218
259
  export const getAdminsList = async () => {
@@ -310,13 +351,14 @@ export const deleteSectionItem = async (session, sectionName, sectionItemId, rec
310
351
  name: sectionName,
311
352
  admin: {
312
353
  id: session.user.id,
354
+ requiredRole: 'D',
313
355
  },
314
356
  });
315
357
  const section = _s?.build();
316
358
  if (!section) {
317
359
  return {
318
360
  error: {
319
- message: 'Section not found or you do not have access to it',
361
+ message: 'Section not found or you do not have access to this operation',
320
362
  },
321
363
  };
322
364
  }
@@ -624,7 +666,7 @@ export const getCategorySectionChildren = async ({ session, id, sectionName, lev
624
666
  if (!section) {
625
667
  return {
626
668
  error: {
627
- message: 'Section not found or you do not have access to it',
669
+ message: 'Section not found or you do not have access to this operation',
628
670
  },
629
671
  };
630
672
  }
@@ -672,7 +714,7 @@ export const getCategorySection = async (session, sectionName) => {
672
714
  if (!section) {
673
715
  throw new TRPCError({
674
716
  code: 'NOT_FOUND',
675
- message: 'Section not found or you do not have access to it',
717
+ message: 'Section not found or you do not have access to this operation',
676
718
  });
677
719
  }
678
720
  const tableName = section.db.table;
@@ -730,7 +772,7 @@ export const getBrowsePage = async (session, sectionName, page = 1, q) => {
730
772
  if (!section) {
731
773
  return {
732
774
  error: {
733
- message: 'Section not found or you do not have access to it',
775
+ message: 'Section not found or you do not have access to this operation',
734
776
  },
735
777
  };
736
778
  }
@@ -797,6 +839,8 @@ export const getSidebar = async (session) => {
797
839
  admin: { id: session.user.id },
798
840
  });
799
841
  const pluginRoutes = await getPluginRoutes();
842
+ const privilegeSet = await getAdminPrivileges(session.user.id);
843
+ const allowedPluginRoutes = pluginRoutes.filter(({ pluginName }) => privilegeSet.has(pluginName));
800
844
  // Let's loop through the sections and add path, icon and title to each section item
801
845
  const simpleSectionItems = simple.map((section) => {
802
846
  return {
@@ -819,14 +863,25 @@ export const getSidebar = async (session) => {
819
863
  icon: section.icon,
820
864
  };
821
865
  });
822
- const pluginSections = pluginRoutes.map((route) => ({
866
+ const pluginSections = allowedPluginRoutes.map((route) => ({
823
867
  title: route.title,
824
868
  path: route.path,
825
- icon: route.icon ?? 'home',
869
+ icon: route.icon ?? '',
826
870
  }));
827
871
  const fixedSections = [
872
+ /**
873
+ * Add the default dashboard section
874
+ */
875
+ {
876
+ title: 'Dashboard',
877
+ path: '/dashboard',
878
+ icon: 'home',
879
+ },
880
+ /**
881
+ * Add the plugin sections
882
+ */
828
883
  ...pluginSections,
829
- ...fixed.map((section) => ({ title: section, path: `/${section}`, icon: 'home' })),
884
+ ...fixed.map((section) => ({ title: section, path: `/${section}`, icon: '' })),
830
885
  ];
831
886
  return {
832
887
  fixed_sections: fixedSections,
@@ -1,4 +1,5 @@
1
1
  import type { TRPCContext } from './trpc.js';
2
+ import { z } from 'zod';
2
3
  export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
3
4
  ctx: {
4
5
  headers: Headers;
@@ -10,7 +11,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
10
11
  meta: object;
11
12
  errorShape: {
12
13
  data: {
13
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
14
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
14
15
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
15
16
  httpStatus: number;
16
17
  path?: string;
@@ -32,7 +33,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
32
33
  meta: object;
33
34
  errorShape: {
34
35
  data: {
35
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
36
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
36
37
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
37
38
  httpStatus: number;
38
39
  path?: string;
@@ -84,7 +85,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
84
85
  meta: object;
85
86
  errorShape: {
86
87
  data: {
87
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
88
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
88
89
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
89
90
  httpStatus: number;
90
91
  path?: string;
@@ -186,7 +187,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
186
187
  meta: object;
187
188
  errorShape: {
188
189
  data: {
189
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
190
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
190
191
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
191
192
  httpStatus: number;
192
193
  path?: string;
@@ -368,7 +369,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
368
369
  meta: object;
369
370
  errorShape: {
370
371
  data: {
371
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
372
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
372
373
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
373
374
  httpStatus: number;
374
375
  path?: string;
@@ -441,7 +442,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
441
442
  meta: object;
442
443
  errorShape: {
443
444
  data: {
444
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
445
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
445
446
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
446
447
  httpStatus: number;
447
448
  path?: string;
@@ -541,7 +542,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
541
542
  meta: object;
542
543
  errorShape: {
543
544
  data: {
544
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
545
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
545
546
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
546
547
  httpStatus: number;
547
548
  path?: string;
@@ -585,7 +586,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
585
586
  meta: object;
586
587
  errorShape: {
587
588
  data: {
588
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
589
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
589
590
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
590
591
  httpStatus: number;
591
592
  path?: string;
@@ -617,7 +618,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
617
618
  meta: object;
618
619
  errorShape: {
619
620
  data: {
620
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
621
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
621
622
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
622
623
  httpStatus: number;
623
624
  path?: string;
@@ -666,7 +667,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
666
667
  meta: object;
667
668
  errorShape: {
668
669
  data: {
669
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
670
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
670
671
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
671
672
  httpStatus: number;
672
673
  path?: string;
@@ -719,7 +720,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
719
720
  meta: object;
720
721
  errorShape: {
721
722
  data: {
722
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
723
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
723
724
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
724
725
  httpStatus: number;
725
726
  path?: string;
@@ -760,7 +761,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
760
761
  meta: object;
761
762
  errorShape: {
762
763
  data: {
763
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
764
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
764
765
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
765
766
  httpStatus: number;
766
767
  path?: string;
@@ -771,42 +772,14 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
771
772
  };
772
773
  transformer: true;
773
774
  }, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
774
- list: import("@trpc/server").TRPCQueryProcedure<{
775
- input: void;
776
- output: {
777
- id: string;
778
- name: string;
779
- version: string | undefined;
780
- package: string;
781
- }[];
782
- meta: object;
783
- }>;
784
- routes: import("@trpc/server").TRPCQueryProcedure<{
785
- input: void;
786
- output: {
787
- pluginId: string;
788
- pluginName?: string;
775
+ checkRoute: import("@trpc/server").TRPCQueryProcedure<{
776
+ input: {
789
777
  path: string;
790
- title: string;
791
- icon?: string;
792
- component: string;
793
- }[];
778
+ };
779
+ output: import("../plugins/loader.js").LoadedPluginRoute | null;
794
780
  meta: object;
795
781
  }>;
796
782
  }>>;
797
- getHello1: import("@trpc/server").TRPCQueryProcedure<{
798
- input: void;
799
- output: {
800
- headers: Headers;
801
- db: import("drizzle-orm/mysql2").MySql2Database<typeof import("../db/schema.js")> & {
802
- $client: import("mysql2/promise").Pool;
803
- };
804
- session: {
805
- user: import("../index.js").User;
806
- };
807
- };
808
- meta: object;
809
- }>;
810
783
  }>>;
811
784
  export declare function getAppRouter(): Promise<import("@trpc/server").TRPCBuiltRouter<{
812
785
  ctx: {
@@ -819,7 +792,7 @@ export declare function getAppRouter(): Promise<import("@trpc/server").TRPCBuilt
819
792
  meta: object;
820
793
  errorShape: {
821
794
  data: {
822
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
795
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
823
796
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
824
797
  httpStatus: number;
825
798
  path?: string;
@@ -843,7 +816,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
843
816
  meta: object;
844
817
  errorShape: {
845
818
  data: {
846
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
819
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
847
820
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
848
821
  httpStatus: number;
849
822
  path?: string;
@@ -865,7 +838,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
865
838
  meta: object;
866
839
  errorShape: {
867
840
  data: {
868
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
841
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
869
842
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
870
843
  httpStatus: number;
871
844
  path?: string;
@@ -917,7 +890,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
917
890
  meta: object;
918
891
  errorShape: {
919
892
  data: {
920
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
893
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
921
894
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
922
895
  httpStatus: number;
923
896
  path?: string;
@@ -1019,7 +992,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
1019
992
  meta: object;
1020
993
  errorShape: {
1021
994
  data: {
1022
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
995
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
1023
996
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
1024
997
  httpStatus: number;
1025
998
  path?: string;
@@ -1201,7 +1174,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
1201
1174
  meta: object;
1202
1175
  errorShape: {
1203
1176
  data: {
1204
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
1177
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
1205
1178
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
1206
1179
  httpStatus: number;
1207
1180
  path?: string;
@@ -1274,7 +1247,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
1274
1247
  meta: object;
1275
1248
  errorShape: {
1276
1249
  data: {
1277
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
1250
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
1278
1251
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
1279
1252
  httpStatus: number;
1280
1253
  path?: string;
@@ -1374,7 +1347,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
1374
1347
  meta: object;
1375
1348
  errorShape: {
1376
1349
  data: {
1377
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
1350
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
1378
1351
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
1379
1352
  httpStatus: number;
1380
1353
  path?: string;
@@ -1418,7 +1391,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
1418
1391
  meta: object;
1419
1392
  errorShape: {
1420
1393
  data: {
1421
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
1394
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
1422
1395
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
1423
1396
  httpStatus: number;
1424
1397
  path?: string;
@@ -1450,7 +1423,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
1450
1423
  meta: object;
1451
1424
  errorShape: {
1452
1425
  data: {
1453
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
1426
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
1454
1427
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
1455
1428
  httpStatus: number;
1456
1429
  path?: string;
@@ -1499,7 +1472,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
1499
1472
  meta: object;
1500
1473
  errorShape: {
1501
1474
  data: {
1502
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
1475
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
1503
1476
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
1504
1477
  httpStatus: number;
1505
1478
  path?: string;
@@ -1552,7 +1525,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
1552
1525
  meta: object;
1553
1526
  errorShape: {
1554
1527
  data: {
1555
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
1528
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
1556
1529
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
1557
1530
  httpStatus: number;
1558
1531
  path?: string;
@@ -1593,7 +1566,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
1593
1566
  meta: object;
1594
1567
  errorShape: {
1595
1568
  data: {
1596
- zodError: import("zod").ZodFlattenedError<unknown, string> | null;
1569
+ zodError: z.core.$ZodFlattenedError<unknown, string> | null;
1597
1570
  code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
1598
1571
  httpStatus: number;
1599
1572
  path?: string;
@@ -1604,41 +1577,13 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
1604
1577
  };
1605
1578
  transformer: true;
1606
1579
  }, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
1607
- list: import("@trpc/server").TRPCQueryProcedure<{
1608
- input: void;
1609
- output: {
1610
- id: string;
1611
- name: string;
1612
- version: string | undefined;
1613
- package: string;
1614
- }[];
1615
- meta: object;
1616
- }>;
1617
- routes: import("@trpc/server").TRPCQueryProcedure<{
1618
- input: void;
1619
- output: {
1620
- pluginId: string;
1621
- pluginName?: string;
1580
+ checkRoute: import("@trpc/server").TRPCQueryProcedure<{
1581
+ input: {
1622
1582
  path: string;
1623
- title: string;
1624
- icon?: string;
1625
- component: string;
1626
- }[];
1583
+ };
1584
+ output: import("../plugins/loader.js").LoadedPluginRoute | null;
1627
1585
  meta: object;
1628
1586
  }>;
1629
1587
  }>>;
1630
- getHello1: import("@trpc/server").TRPCQueryProcedure<{
1631
- input: void;
1632
- output: {
1633
- headers: Headers;
1634
- db: import("drizzle-orm/mysql2").MySql2Database<typeof import("../db/schema.js")> & {
1635
- $client: import("mysql2/promise").Pool;
1636
- };
1637
- session: {
1638
- user: import("../index.js").User;
1639
- };
1640
- };
1641
- meta: object;
1642
- }>;
1643
1588
  }>>;
1644
1589
  //# sourceMappingURL=root.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../src/api/root.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AA4G5C,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAsB,CAAA;AAU5C,wBAAsB,YAAY;;;;;;;;;;;;;;;;;;;;;4GAEjC;AAED,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,WAAW,4LAG7D;AAGD,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAA;AAGxC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAiC,CAAA"}
1
+ {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../src/api/root.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAc5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA4FvB,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAsB,CAAA;AAU5C,wBAAsB,YAAY;;;;;;;;;;;;;;;;;;;;;4GAEjC;AAED,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,WAAW,4LAG7D;AAGD,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAA;AAGxC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAiC,CAAA"}
package/dist/api/root.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createCallerFactory, privateProcedure, publicProcedure, router } from './trpc.js';
1
+ import { createCallerFactory, privateProcedure, router } from './trpc.js';
2
2
  import { adminsRouter } from './routers/admins.js';
3
3
  import { hasItemsSectionRouter } from './routers/hasItemsSection.js';
4
4
  import { filesRouter } from './routers/files.js';
@@ -11,15 +11,8 @@ import { cmsSettings } from './routers/cmsSettings.js';
11
11
  import { galleryRouter } from './routers/gallery.js';
12
12
  import { getConfigImportVersion } from '../core/config/index.js';
13
13
  import { getPluginRoutes, loadPlugins } from '../plugins/loader.js';
14
- async function getActivePlugins() {
15
- const loadedPlugins = await loadPlugins();
16
- return loadedPlugins.map((item) => ({
17
- id: item.config.package,
18
- name: item.plugin.name ?? item.config.package,
19
- version: item.plugin.version,
20
- package: item.moduleName,
21
- }));
22
- }
14
+ import { z } from 'zod';
15
+ import { getAdminPrivileges } from './lib/serverActions.js';
23
16
  async function getPluginRouters() {
24
17
  const loadedPlugins = await loadPlugins();
25
18
  return loadedPlugins.reduce((acc, current) => {
@@ -30,12 +23,19 @@ async function getPluginRouters() {
30
23
  }, {});
31
24
  }
32
25
  const pluginsRouter = router({
33
- list: publicProcedure.query(async () => {
34
- return getActivePlugins();
35
- }),
36
- routes: publicProcedure.query(async () => {
26
+ checkRoute: privateProcedure
27
+ .input(z.object({
28
+ path: z.string(),
29
+ }))
30
+ .query(async ({ ctx, input }) => {
37
31
  const routes = await getPluginRoutes();
38
- return routes.map(({ prefetch, ...rest }) => rest);
32
+ const privilegeSet = await getAdminPrivileges(ctx.session.user.id);
33
+ const filteredRoutes = routes.filter(({ pluginName }) => privilegeSet.has(pluginName));
34
+ const plugin = filteredRoutes.find(({ path }) => path === input.path);
35
+ if (!plugin) {
36
+ return null;
37
+ }
38
+ return plugin;
39
39
  }),
40
40
  });
41
41
  const coreRouters = {
@@ -50,9 +50,6 @@ const coreRouters = {
50
50
  accountSettings: accountSettings,
51
51
  cmsSettings: cmsSettings,
52
52
  plugins: pluginsRouter,
53
- getHello1: privateProcedure.query(async ({ ctx }) => {
54
- return ctx;
55
- }),
56
53
  };
57
54
  // Lazy router creation - cache the result
58
55
  let _appRouter = null;
@@ -1 +1 @@
1
- {"version":3,"file":"admins.d.ts","sourceRoot":"","sources":["../../../src/api/routers/admins.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAaxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+OvB,CAAA"}
1
+ {"version":3,"file":"admins.d.ts","sourceRoot":"","sources":["../../../src/api/routers/admins.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAaxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiSvB,CAAA"}