@postxl/generators 1.18.0 → 1.19.0

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 (90) hide show
  1. package/dist/backend-actions/actions.generator.d.ts +1 -0
  2. package/dist/backend-actions/actions.generator.js +6 -0
  3. package/dist/backend-actions/actions.generator.js.map +1 -1
  4. package/dist/backend-actions/generators/actions-module.generator.js +3 -2
  5. package/dist/backend-actions/generators/actions-module.generator.js.map +1 -1
  6. package/dist/backend-actions/generators/authorization-policy-service.generator.d.ts +2 -0
  7. package/dist/backend-actions/generators/authorization-policy-service.generator.js +214 -0
  8. package/dist/backend-actions/generators/authorization-policy-service.generator.js.map +1 -0
  9. package/dist/backend-actions/generators/authorization-service.generator.d.ts +1 -1
  10. package/dist/backend-actions/generators/authorization-service.generator.js +20 -8
  11. package/dist/backend-actions/generators/authorization-service.generator.js.map +1 -1
  12. package/dist/backend-actions/generators/dispatcher-service.generator.js +3 -2
  13. package/dist/backend-actions/generators/dispatcher-service.generator.js.map +1 -1
  14. package/dist/backend-ai/generators/ai-route.generator.js +3 -3
  15. package/dist/backend-authentication/authentication.generator.js +23 -1
  16. package/dist/backend-authentication/authentication.generator.js.map +1 -1
  17. package/dist/backend-authentication/generators/auth-guard.generator.js +5 -8
  18. package/dist/backend-authentication/generators/auth-guard.generator.js.map +1 -1
  19. package/dist/backend-authentication/generators/authentication-module.generator.js +1 -1
  20. package/dist/backend-authentication/generators/authentication-service.generator.js +11 -8
  21. package/dist/backend-authentication/generators/authentication-service.generator.js.map +1 -1
  22. package/dist/backend-authentication/generators/authentication-types.generator.js +4 -3
  23. package/dist/backend-authentication/generators/authentication-types.generator.js.map +1 -1
  24. package/dist/backend-authentication/template/src/authentication.config.ts +9 -0
  25. package/dist/backend-authentication/template/src/authentication.mock.service.ts +77 -13
  26. package/dist/backend-authentication/template/src/utils.ts +45 -0
  27. package/dist/backend-core/backend.generator.js +16 -0
  28. package/dist/backend-core/backend.generator.js.map +1 -1
  29. package/dist/backend-core/generators/api-config.generator.js +5 -0
  30. package/dist/backend-core/generators/api-config.generator.js.map +1 -1
  31. package/dist/backend-core/types.d.ts +4 -0
  32. package/dist/backend-excel-io/generators/excel-io-service.generator.js +27 -11
  33. package/dist/backend-excel-io/generators/excel-io-service.generator.js.map +1 -1
  34. package/dist/backend-excel-io/template/excel-io.controller.ts +3 -3
  35. package/dist/backend-rest-api/generators/model-controller.generator.js +9 -5
  36. package/dist/backend-rest-api/generators/model-controller.generator.js.map +1 -1
  37. package/dist/backend-rest-api/template/restApi/src/restApi.utils.ts +9 -0
  38. package/dist/backend-router-trpc/generators/audit-log-route.generator.js +2 -2
  39. package/dist/backend-router-trpc/generators/excel-io-route.generator.js +1 -1
  40. package/dist/backend-router-trpc/generators/middleware.generator.js +8 -5
  41. package/dist/backend-router-trpc/generators/middleware.generator.js.map +1 -1
  42. package/dist/backend-router-trpc/generators/model-routes.generator.js +27 -7
  43. package/dist/backend-router-trpc/generators/model-routes.generator.js.map +1 -1
  44. package/dist/backend-router-trpc/generators/trpc-plugin.generator.js +9 -6
  45. package/dist/backend-router-trpc/generators/trpc-plugin.generator.js.map +1 -1
  46. package/dist/backend-router-trpc/generators/trpc-shared.generator.js +4 -24
  47. package/dist/backend-router-trpc/generators/trpc-shared.generator.js.map +1 -1
  48. package/dist/backend-router-trpc/router-trpc.generator.d.ts +4 -0
  49. package/dist/backend-router-trpc/router-trpc.generator.js +1 -0
  50. package/dist/backend-router-trpc/router-trpc.generator.js.map +1 -1
  51. package/dist/backend-router-trpc/template/viewer.router.ts +1 -6
  52. package/dist/backend-update/update-actions.decoders.d.ts +4 -4
  53. package/dist/backend-upload/template/src/upload.controller.ts +1 -1
  54. package/dist/backend-upload/template/src/upload.service.ts +11 -5
  55. package/dist/backend-view/model-view-service.generator.js +105 -52
  56. package/dist/backend-view/model-view-service.generator.js.map +1 -1
  57. package/dist/backend-view/view.generator.d.ts +2 -1
  58. package/dist/backend-view/view.generator.js +8 -1
  59. package/dist/backend-view/view.generator.js.map +1 -1
  60. package/dist/base/base.generator.js +2 -0
  61. package/dist/base/base.generator.js.map +1 -1
  62. package/dist/e2e/template/e2e/specs/example.spec.ts-snapshots/Navigate-to-homepage-and-take-snapshot-1-chromium-linux.png +0 -0
  63. package/dist/frontend-admin/admin.generator.js +2 -0
  64. package/dist/frontend-admin/admin.generator.js.map +1 -1
  65. package/dist/frontend-admin/generators/authorization-utils.generator.d.ts +1 -0
  66. package/dist/frontend-admin/generators/authorization-utils.generator.js +20 -0
  67. package/dist/frontend-admin/generators/authorization-utils.generator.js.map +1 -0
  68. package/dist/frontend-admin/generators/comment-sidebar.generator.js +9 -1
  69. package/dist/frontend-admin/generators/comment-sidebar.generator.js.map +1 -1
  70. package/dist/frontend-admin/generators/model-admin-page.generator.js +347 -184
  71. package/dist/frontend-admin/generators/model-admin-page.generator.js.map +1 -1
  72. package/dist/frontend-core/frontend.generator.d.ts +6 -0
  73. package/dist/frontend-core/frontend.generator.js +10 -3
  74. package/dist/frontend-core/frontend.generator.js.map +1 -1
  75. package/dist/frontend-core/template/README.md +2 -0
  76. package/dist/frontend-core/template/src/context-providers/auth-context-provider.tsx +1 -2
  77. package/dist/frontend-core/template/src/pages/dashboard/dashboard.page.tsx +10 -1
  78. package/dist/frontend-core/template/src/pages/login/login.page.tsx +1 -1
  79. package/dist/frontend-core/template/vite.config.ts +5 -0
  80. package/dist/frontend-core/types/component.d.ts +1 -1
  81. package/dist/frontend-core/types/contextprovider.d.ts +1 -1
  82. package/dist/frontend-core/types/hook.d.ts +1 -1
  83. package/dist/frontend-trpc-client/generators/model-hook.generator.js +104 -39
  84. package/dist/frontend-trpc-client/generators/model-hook.generator.js.map +1 -1
  85. package/dist/frontend-trpc-client/trpc-client.generator.js +28 -14
  86. package/dist/frontend-trpc-client/trpc-client.generator.js.map +1 -1
  87. package/dist/types/types.generator.d.ts +7 -0
  88. package/dist/types/types.generator.js +80 -0
  89. package/dist/types/types.generator.js.map +1 -1
  90. package/package.json +3 -3
@@ -5,6 +5,7 @@ function generateAuthenticationTypes(context) {
5
5
  return /* ts */ `
6
6
  import { z } from 'zod'
7
7
  import { Result } from '@postxl/utils'
8
+ import { USER_ROLES } from '@types'
8
9
  import { Viewer } from '@authentication/auth.guard'
9
10
 
10
11
  /**
@@ -42,12 +43,12 @@ export const z${context.authentication.types.userInfo.name} = z.object({
42
43
  */
43
44
  export type ${context.authentication.types.userInfo.name} = z.infer<typeof z${context.authentication.types.userInfo.name}>
44
45
 
45
- export const z${context.authentication.types.userRoles.name} = z.array(z.enum(['admin', 'user', 'unauthorized']))
46
+ export const zUserRole = z.enum(USER_ROLES)
46
47
 
47
- export type ${context.authentication.types.userRoles.name} = z.infer<typeof z${context.authentication.types.userRoles.name}>
48
+ export const z${context.authentication.types.userRoles.name} = z.array(zUserRole)
48
49
 
49
50
  export type ViewerResult = Result<
50
- Omit<Viewer, 'userInfo'>,
51
+ Viewer,
51
52
  | {
52
53
  type: 'redirect'
53
54
  redirectUrl: string
@@ -1 +1 @@
1
- {"version":3,"file":"authentication-types.generator.js","sourceRoot":"","sources":["../../../src/backend-authentication/generators/authentication-types.generator.ts"],"names":[],"mappings":";;AAEA,kEA2DC;AA3DD,SAAgB,2BAA2B,CAAC,OAAsB;IAChE,OAAO,QAAQ,CAAC;;;;;;KAMb,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI;;;gBAG/B,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2BrD,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI;;cAEjC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI;;gBAExG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI;;cAE7C,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,sBAAsB,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI;;;;;;;;;;;;;;;CAezH,CAAA;AACD,CAAC"}
1
+ {"version":3,"file":"authentication-types.generator.js","sourceRoot":"","sources":["../../../src/backend-authentication/generators/authentication-types.generator.ts"],"names":[],"mappings":";;AAEA,kEA4DC;AA5DD,SAAgB,2BAA2B,CAAC,OAAsB;IAChE,OAAO,QAAQ,CAAC;;;;;;;KAOb,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI;;;gBAG/B,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2BrD,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI;;cAEjC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI;;;;gBAIxG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI;;;;;;;;;;;;;;;CAe1D,CAAA;AACD,CAAC"}
@@ -1,9 +1,18 @@
1
1
  export type AuthenticationConfig = AuthenticationConfig_Disabled | AuthenticationConfig_EnabledKeycloak
2
2
  export type AuthenticationConfig_Disabled = {
3
3
  enableAuthentication: false
4
+ mockIdentity: {
5
+ sub: string
6
+ name: string
7
+ email: string
8
+ roles: string[]
9
+ groups: string[]
10
+ }
11
+ allowTestOverrides: boolean
4
12
  }
5
13
  export type AuthenticationConfig_EnabledKeycloak = {
6
14
  enableAuthentication: true
15
+ roleClaimPath: string
7
16
  /**
8
17
  * The URL of the backend server.
9
18
  */
@@ -1,7 +1,14 @@
1
1
  // We import Fastify cookie here to ensure that the cookie plugin and its types are registered.
2
2
  import '@fastify/cookie'
3
3
 
4
- import type { UserInfo, UserRoles } from './authentication.types'
4
+ import type { FastifyRequest } from 'fastify'
5
+
6
+ import type { UserRoles } from '@types'
7
+
8
+ import type { AuthenticationConfig_Disabled } from './authentication.config'
9
+ import { zUserRoles } from './authentication.types'
10
+ import type { UserInfo } from './authentication.types'
11
+ import { parseStringList } from './utils'
5
12
 
6
13
  type MockAuthenticationResult = {
7
14
  /**
@@ -49,6 +56,54 @@ const mockResult: MockAuthenticationResult = {
49
56
 
50
57
  export class MockAuthenticationService {
51
58
  public readonly cookieDomain = 'localhost'
59
+ private readonly mockResult: MockAuthenticationResult
60
+
61
+ constructor(private readonly config: AuthenticationConfig_Disabled) {
62
+ const parsedConfigRoles = zUserRoles.safeParse(config.mockIdentity.roles)
63
+
64
+ this.mockResult = {
65
+ ...mockResult,
66
+ userInfo: {
67
+ ...mockResult.userInfo,
68
+ sub: config.mockIdentity.sub,
69
+ name: config.mockIdentity.name,
70
+ preferred_username: config.mockIdentity.email,
71
+ given_name: config.mockIdentity.name.split(' ').at(0) ?? config.mockIdentity.name,
72
+ family_name: config.mockIdentity.name.split(' ').slice(1).join(' ') || config.mockIdentity.name,
73
+ email: config.mockIdentity.email,
74
+ groups: config.mockIdentity.groups,
75
+ },
76
+ userRoles: parsedConfigRoles.success ? parsedConfigRoles.data : mockResult.userRoles,
77
+ }
78
+ }
79
+
80
+ private parseHeaderRoles(raw: unknown): UserRoles {
81
+ const parsed = zUserRoles.safeParse(parseStringList(raw, this.mockResult.userRoles))
82
+ return parsed.success ? parsed.data : this.mockResult.userRoles
83
+ }
84
+
85
+ private getTestOverrideRoles(req: FastifyRequest | undefined): UserRoles | null {
86
+ // Test override headers are only honored when:
87
+ // - authentication is disabled (`AUTH=false`) and
88
+ // - explicit test overrides are enabled (`AUTH_TEST_OVERRIDES=true`) and
89
+ // - runtime is test (`NODE_ENV=test`)
90
+ if (!this.config.allowTestOverrides || process.env.NODE_ENV !== 'test' || !req) {
91
+ return null
92
+ }
93
+ const rawRoles = req.headers['x-pxl-test-roles']
94
+ return this.parseHeaderRoles(rawRoles)
95
+ }
96
+
97
+ private getTestOverrideSub(req: FastifyRequest | undefined): string | undefined {
98
+ if (!this.config.allowTestOverrides || process.env.NODE_ENV !== 'test' || !req) {
99
+ return undefined
100
+ }
101
+ const rawSub = req.headers['x-pxl-test-sub']
102
+ if (typeof rawSub !== 'string' || rawSub.trim().length === 0) {
103
+ return undefined
104
+ }
105
+ return rawSub.trim()
106
+ }
52
107
 
53
108
  public refreshAccessToken(): Promise<
54
109
  | {
@@ -62,7 +117,7 @@ export class MockAuthenticationService {
62
117
  error: unknown
63
118
  }
64
119
  > {
65
- return Promise.resolve({ ok: true, accessToken: mockResult.accessToken, state: null }) // NOSONAR - We want to adhere to the interface
120
+ return Promise.resolve({ ok: true, accessToken: this.mockResult.accessToken, state: null }) // NOSONAR - We want to adhere to the interface
66
121
  }
67
122
  public getAccessTokenFromURL(): Promise<
68
123
  | {
@@ -75,36 +130,45 @@ export class MockAuthenticationService {
75
130
  error: unknown
76
131
  }
77
132
  > {
78
- return Promise.resolve({ ok: true, accessToken: mockResult.accessToken, state: null }) // NOSONAR - We want to adhere to the interface
133
+ return Promise.resolve({ ok: true, accessToken: this.mockResult.accessToken, state: null }) // NOSONAR - We want to adhere to the interface
79
134
  }
80
135
  public getAuthenticationUrl(): Promise<string> {
81
- return Promise.resolve(mockResult.authRedirectUrl) // NOSONAR - We want to adhere to the interface
136
+ return Promise.resolve(this.mockResult.authRedirectUrl) // NOSONAR - We want to adhere to the interface
82
137
  }
83
138
 
84
- public async getUserInfoFromRequest(): Promise<{ ok: true; userInfo: UserInfo } | { ok: false }> {
85
- const info = await this.getUserInfo()
139
+ public async getUserInfoFromRequest(req?: FastifyRequest): Promise<{ ok: true; userInfo: UserInfo } | { ok: false }> {
140
+ const info = await this.getUserInfo(req)
86
141
 
87
142
  return info
88
143
  }
89
144
 
90
- public getUserInfo(): Promise<{ ok: true; userInfo: UserInfo } | { ok: false }> {
145
+ public getUserInfo(req?: FastifyRequest): Promise<{ ok: true; userInfo: UserInfo } | { ok: false }> {
146
+ const overrideSub = this.getTestOverrideSub(req)
91
147
  // NOSONAR - We want to keep all validations async to adhere to the same interface
92
148
  return Promise.resolve({
93
149
  ok: true,
94
- userInfo: mockResult.userInfo,
150
+ userInfo: {
151
+ ...this.mockResult.userInfo,
152
+ sub: overrideSub ?? this.mockResult.userInfo.sub,
153
+ },
95
154
  })
96
155
  }
97
156
 
98
- public async getUserRolesFromRequest(): Promise<{ ok: true; userRoles: UserRoles } | { ok: false }> {
99
- const roles = await this.getUserRoles()
157
+ public async getUserRolesFromRequest(
158
+ req?: FastifyRequest,
159
+ ): Promise<{ ok: true; userRoles: UserRoles } | { ok: false }> {
160
+ const roles = await this.getUserRoles(req)
100
161
 
101
162
  return roles
102
163
  }
103
164
 
104
- public getUserRoles(): Promise<{ ok: true; userRoles: UserRoles } | { ok: false }> {
105
- return Promise.resolve({ ok: true, userRoles: mockResult.userRoles }) // NOSONAR - We want to adhere to the interface
165
+ public getUserRoles(req?: FastifyRequest): Promise<{ ok: true; userRoles: UserRoles } | { ok: false }> {
166
+ return Promise.resolve({
167
+ ok: true,
168
+ userRoles: this.getTestOverrideRoles(req) ?? this.mockResult.userRoles,
169
+ }) // NOSONAR - We want to adhere to the interface
106
170
  }
107
171
  public getLogoutUrl(): Promise<string> {
108
- return Promise.resolve(mockResult.logoutRedirectUrl) // NOSONAR - We want to adhere to the interface
172
+ return Promise.resolve(this.mockResult.logoutRedirectUrl) // NOSONAR - We want to adhere to the interface
109
173
  }
110
174
  }
@@ -11,3 +11,48 @@ export function unknownToErrorMessage(error: unknown, message: string): string {
11
11
  export const normalizeUrl = (url: string): string => {
12
12
  return url.endsWith('/') ? url : `${url}/`
13
13
  }
14
+
15
+ /**
16
+ * Parses role/group lists from JSON-array or CSV strings.
17
+ */
18
+ export function parseStringList(raw: unknown, fallback: string[] = []): string[] {
19
+ if (typeof raw !== 'string' || raw.trim().length === 0) {
20
+ return fallback
21
+ }
22
+
23
+ try {
24
+ const parsed = JSON.parse(raw)
25
+ if (Array.isArray(parsed)) {
26
+ return parsed
27
+ .filter((entry): entry is string => typeof entry === 'string')
28
+ .map((entry) => entry.trim())
29
+ .filter(Boolean)
30
+ }
31
+ } catch {
32
+ // ignore and use csv fallback
33
+ }
34
+
35
+ return raw
36
+ .split(',')
37
+ .map((entry) => entry.trim())
38
+ .filter(Boolean)
39
+ }
40
+
41
+ /**
42
+ * Resolves a nested value by dot-path (e.g. "realm_access.roles").
43
+ */
44
+ export function getByPath(input: unknown, path: string): unknown {
45
+ if (!path) {
46
+ return undefined
47
+ }
48
+
49
+ let current: unknown = input
50
+ for (const segment of path.split('.').filter(Boolean)) {
51
+ if (typeof current !== 'object' || current === null || !(segment in current)) {
52
+ return undefined
53
+ }
54
+ current = (current as Record<string, unknown>)[segment]
55
+ }
56
+
57
+ return current
58
+ }
@@ -80,6 +80,22 @@ const baseScripts = [
80
80
  name: 'dev',
81
81
  command: 'dotenvx run -f ./apps/api/.env --env STATEFUL=false --env AUTH=false -- nest start --debug --watch',
82
82
  },
83
+ {
84
+ name: 'dev:viewer',
85
+ command: 'dotenvx run -f ./apps/api/.env --env STATEFUL=false --env AUTH=false --env AUTH_MOCK_ROLES=viewer -- nest start --debug --watch',
86
+ },
87
+ {
88
+ name: 'dev:editor',
89
+ command: 'dotenvx run -f ./apps/api/.env --env STATEFUL=false --env AUTH=false --env AUTH_MOCK_ROLES=editor -- nest start --debug --watch',
90
+ },
91
+ {
92
+ name: 'dev:admin',
93
+ command: 'dotenvx run -f ./apps/api/.env --env STATEFUL=false --env AUTH=false --env AUTH_MOCK_ROLES=admin -- nest start --debug --watch',
94
+ },
95
+ {
96
+ name: 'dev:superadmin',
97
+ command: 'dotenvx run -f ./apps/api/.env --env STATEFUL=false --env AUTH=false --env AUTH_MOCK_ROLES=superadmin -- nest start --debug --watch',
98
+ },
83
99
  {
84
100
  name: 'dev:auth',
85
101
  command: 'dotenvx run -f ./apps/api/.env --env STATEFUL=false --env AUTH=true -- nest start --debug --watch',
@@ -1 +1 @@
1
- {"version":3,"file":"backend.generator.js","sourceRoot":"","sources":["../../src/backend-core/backend.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend.generator.js","sourceRoot":"","sources":["../../src/backend-core/backend.generator.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateApiConfig = generateApiConfig;
4
4
  function generateApiConfig({ backend: { modules } }) {
5
+ const envConfigImports = Array.from(new Set(modules
6
+ .flatMap((module) => module.envConfig?.imports ?? [])
7
+ .map((statement) => statement.trim())
8
+ .filter(Boolean)));
5
9
  return /*ts*/ `
6
10
  import z from 'zod'
11
+ ${envConfigImports.join('\n')}
7
12
 
8
13
  const zEnvBoolean = z.union([
9
14
  //
@@ -1 +1 @@
1
- {"version":3,"file":"api-config.generator.js","sourceRoot":"","sources":["../../../src/backend-core/generators/api-config.generator.ts"],"names":[],"mappings":";;AAEA,8CAgEC;AAhED,SAAgB,iBAAiB,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAe;IACrE,OAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA8BV,OAAO;SACN,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,SAAU,CAAC,OAAO,CAAC,EAAE,CAAC;SAC1D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;SACvB,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;MAeZ,OAAO;SACN,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,SAAU,CAAC,WAAW,CAAC,EAAE,CAAC;SAC9D,IAAI,CAAC,KAAK,CAAC;;;;;;EAMhB,OAAO;SACN,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,SAAU,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC,qDAAqD;SAC9G,IAAI,CAAC,IAAI,CAAC;CACZ,CAAA;AACD,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;AACnC,CAAC"}
1
+ {"version":3,"file":"api-config.generator.js","sourceRoot":"","sources":["../../../src/backend-core/generators/api-config.generator.ts"],"names":[],"mappings":";;AAEA,8CA0EC;AA1ED,SAAgB,iBAAiB,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAe;IACrE,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CACjC,IAAI,GAAG,CACL,OAAO;SACJ,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,IAAI,EAAE,CAAC;SACpD,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;SACpC,MAAM,CAAC,OAAO,CAAC,CACnB,CACF,CAAA;IAED,OAAO,MAAM,CAAC;;EAEd,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6BvB,OAAO;SACN,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,SAAU,CAAC,OAAO,CAAC,EAAE,CAAC;SAC1D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;SACvB,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;MAeZ,OAAO;SACN,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,SAAU,CAAC,WAAW,CAAC,EAAE,CAAC;SAC9D,IAAI,CAAC,KAAK,CAAC;;;;;;EAMhB,OAAO;SACN,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,SAAU,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC,qDAAqD;SAC9G,IAAI,CAAC,IAAI,CAAC;CACZ,CAAA;AACD,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;AACnC,CAAC"}
@@ -100,6 +100,10 @@ export type NestJSModule = {
100
100
  vfs?: Generator.VirtualFileSystem;
101
101
  };
102
102
  export type EnvConfig = {
103
+ /**
104
+ * Optional import statements required by decoder/transformer code.
105
+ */
106
+ imports?: Generator.Typescript[];
103
107
  /**
104
108
  * Example:
105
109
  * AWS_ACCESS_KEY: z.string(),
@@ -11,14 +11,14 @@ function generateExcelIoService(context) {
11
11
  .join('\n');
12
12
  const modelNames = models.map((model) => `'${model._conjugated.camelCase}'`).join(',\n ');
13
13
  const allModelsDataModel = models
14
- .map((model) => ` ${model._conjugated.camelCasePlural}: await this.viewService.${model.view.service.variableName}.getList(user),`)
14
+ .map((model) => ` ${model._conjugated.camelCasePlural}: await this.viewService.${model.view.service.variableName}.getList(authorization),`)
15
15
  .join('\n');
16
16
  const modelCases = models
17
17
  .map((model) => `
18
18
  case '${model._conjugated.camelCase}': {
19
19
  const filters = ${model.types.filter.decoder.name}.parse(rawFilters ?? {})
20
20
  const sort = ${model.types.sort.decoder.name}.optional().parse(rawSort)
21
- const items = await this.viewService.${model.view.service.variableName}.getFiltered({ filters, sort, user })
21
+ const items = await this.viewService.${model.view.service.variableName}.getFiltered({ filters, sort, authorization })
22
22
  return this.renderExcel({
23
23
  dataModel: { ${model._conjugated.camelCasePlural}: items },
24
24
  filename: \`${'${timeStamp()}'} ${model._conjugated.kebabCasePlural}.xlsx\`,
@@ -37,7 +37,7 @@ import { ImportService } from '@import/import.service'
37
37
  import type { Delta } from '@import/detect-delta/models.detect-delta'
38
38
  import { extractErrors } from '@import/detect-delta/models.detect-delta'
39
39
  import { forwardRef, Inject, Injectable, Logger } from '@nestjs/common'
40
- import type { User } from '@types'
40
+ import type { AuthorizationContext } from '@types'
41
41
  import {
42
42
  ${filterSortImports}
43
43
  } from '@types'
@@ -144,7 +144,7 @@ export class ExcelIoService {
144
144
  return modelNameDecoder.parse(model)
145
145
  }
146
146
 
147
- public async exportAllModelsToExcel(user: User) {
147
+ public async exportAllModelsToExcel(authorization: AuthorizationContext) {
148
148
  this.logger.log('Exporting all models to Excel')
149
149
 
150
150
  const dataModel: DataModel = {
@@ -158,12 +158,12 @@ ${allModelsDataModel}
158
158
  model,
159
159
  rawFilters,
160
160
  rawSort,
161
- user,
161
+ authorization,
162
162
  }: {
163
163
  model: ExportModelName
164
164
  rawFilters?: unknown
165
165
  rawSort?: unknown
166
- user: User
166
+ authorization: AuthorizationContext
167
167
  }) {
168
168
  this.logger.log(\`Exporting model ${'${model}'} to Excel\`)
169
169
 
@@ -173,7 +173,15 @@ ${allModelsDataModel}
173
173
  }
174
174
  }
175
175
 
176
- public async importExcel({ data, filename, user }: { data: Buffer; filename: string; user: User }) {
176
+ public async importExcel({
177
+ data,
178
+ filename,
179
+ authorization,
180
+ }: {
181
+ data: Buffer
182
+ filename: string
183
+ authorization: AuthorizationContext
184
+ }) {
177
185
  this.logger.log('Importing uploaded Excel file through import action')
178
186
 
179
187
  const action: Action_Import = {
@@ -185,7 +193,11 @@ ${allModelsDataModel}
185
193
  },
186
194
  }
187
195
 
188
- return this.dispatcherService.dispatch({ action, user })
196
+ return this.dispatcherService.dispatch({
197
+ action,
198
+ user: authorization.user,
199
+ userRoles: authorization.userRoles,
200
+ })
189
201
  }
190
202
 
191
203
  public async previewImportExcel({
@@ -236,8 +248,8 @@ ${allModelsDataModel}
236
248
  ignoreErrors,
237
249
  confirmDeletes,
238
250
  selectedDeltaIndicesByModel,
239
- user,
240
- }: ImportExecuteRequest & { user: User }): Promise<ImportExecutionSummary> {
251
+ authorization,
252
+ }: ImportExecuteRequest & { authorization: AuthorizationContext }): Promise<ImportExecutionSummary> {
241
253
  this.logger.log(\`Executing import from preview session: \${previewSessionId}\`)
242
254
  const stored = this.getStoredPreview(previewSessionId)
243
255
  const selectedDelta = filterDeltaBySelectedIndices(stored.delta, selectedDeltaIndicesByModel)
@@ -266,7 +278,11 @@ ${allModelsDataModel}
266
278
  },
267
279
  }
268
280
 
269
- const result = await this.dispatcherService.dispatch({ action, user })
281
+ const result = await this.dispatcherService.dispatch({
282
+ action,
283
+ user: authorization.user,
284
+ userRoles: authorization.userRoles,
285
+ })
270
286
 
271
287
  this.previewStore.delete(previewSessionId)
272
288
 
@@ -1 +1 @@
1
- {"version":3,"file":"excel-io-service.generator.js","sourceRoot":"","sources":["../../../src/backend-excel-io/generators/excel-io-service.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"excel-io-service.generator.js","sourceRoot":"","sources":["../../../src/backend-excel-io/generators/excel-io-service.generator.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,7 @@ export class ExcelIoController {
26
26
  @Get('export/all')
27
27
  async exportAll(@ViewerParam() viewer: Viewer, @Res({ passthrough: true }) res: FastifyReply): Promise<void> {
28
28
  try {
29
- const { filename, file } = await this.excelIoService.exportAllModelsToExcel(viewer.user)
29
+ const { filename, file } = await this.excelIoService.exportAllModelsToExcel(viewer)
30
30
  const disposition = createContentDisposition(filename)
31
31
 
32
32
  res.type('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
@@ -56,7 +56,7 @@ export class ExcelIoController {
56
56
  model: parsedModel,
57
57
  rawFilters,
58
58
  rawSort,
59
- user: viewer.user,
59
+ authorization: viewer,
60
60
  })
61
61
  const disposition = createContentDisposition(filename)
62
62
 
@@ -86,7 +86,7 @@ export class ExcelIoController {
86
86
  const result = await this.excelIoService.importExcel({
87
87
  data: uploadData.buffer,
88
88
  filename: uploadData.filename,
89
- user: viewer.user,
89
+ authorization: viewer,
90
90
  })
91
91
 
92
92
  res.status(200).send({ success: true, result })
@@ -122,7 +122,7 @@ import z from 'zod'
122
122
 
123
123
  import { createFieldsDecoder, selectFields } from '@utils/fieldSelection'
124
124
  import { paginatedResultDecoder, paginationDecoderFromQuery } from '@utils/pagination'
125
- import { createWorkbookBuffer, jsonQueryParam } from './restApi.utils'
125
+ import { createRootAuthorization, createWorkbookBuffer, jsonQueryParam } from './restApi.utils'
126
126
 
127
127
  // REST API decoder safe for JSON Schema / OpenAPI generation
128
128
  // Reuses ${model.decoder.decoder.zodDecoder.name} but overrides fields with transforms or non-JSON-representable types${duComment}
@@ -192,9 +192,10 @@ export class ${model.restApi.controller.name} {
192
192
  @Param() params: Get${PascalCase}ParamsDto,
193
193
  @Query() query: Get${PascalCase}QueryDto,
194
194
  ): Promise<Get${PascalCase}Response> {
195
+ const authorization = createRootAuthorization(this.viewService.users.data.rootUser)
195
196
  const data = await this.viewService.${model.view.service.variableName}.get({
196
197
  id: ${model.types.id.toBranded.name}(params.id),
197
- user: this.viewService.users.data.rootUser,
198
+ authorization,
198
199
  })
199
200
  return {
200
201
  data: data ? to${PascalCase}RestApi(data, query.fields) : null,
@@ -219,8 +220,9 @@ export class ${model.restApi.controller.name} {
219
220
  @ZodResponse({ type: Get${PascalCasePlural}ResponseDto })
220
221
  @Get('')
221
222
  async get${PascalCasePlural}(@Query() query: Get${PascalCasePlural}Dto): Promise<Get${PascalCasePlural}Response> {
223
+ const authorization = createRootAuthorization(this.viewService.users.data.rootUser)
222
224
  const result = await this.viewService.${model.view.service.variableName}.getFilteredPaginated({
223
- user: this.viewService.users.data.rootUser,
225
+ authorization,
224
226
  filters: query.filters ?? {},
225
227
  sort: query.sort,
226
228
  cursor: query.cursor,
@@ -252,8 +254,9 @@ export class ${model.restApi.controller.name} {
252
254
  @Query() query: Get${PascalCasePlural}DownloadDto,
253
255
  @Res() res: FastifyReply,
254
256
  ): Promise<void> {
257
+ const authorization = createRootAuthorization(this.viewService.users.data.rootUser)
255
258
  const result = await this.viewService.${model.view.service.variableName}.getFilteredPaginated({
256
- user: this.viewService.users.data.rootUser,
259
+ authorization,
257
260
  filters: query.filters ?? {},
258
261
  sort: query.sort,
259
262
  cursor: query.cursor,
@@ -291,8 +294,9 @@ export class ${model.restApi.controller.name} {
291
294
  @Query() query: Get${PascalCasePlural}DownloadDto,
292
295
  @Res() res: FastifyReply,
293
296
  ): Promise<void> {
297
+ const authorization = createRootAuthorization(this.viewService.users.data.rootUser)
294
298
  const result = await this.viewService.${model.view.service.variableName}.getFilteredPaginated({
295
- user: this.viewService.users.data.rootUser,
299
+ authorization,
296
300
  filters: query.filters ?? {},
297
301
  sort: query.sort,
298
302
  cursor: query.cursor,
@@ -1 +1 @@
1
- {"version":3,"file":"model-controller.generator.js","sourceRoot":"","sources":["../../../src/backend-rest-api/generators/model-controller.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-controller.generator.js","sourceRoot":"","sources":["../../../src/backend-rest-api/generators/model-controller.generator.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import * as Excel from 'exceljs'
2
+ import type { AuthorizationContext, User } from '@types'
3
+ import { USER_ROLES } from '@types'
2
4
  import z from 'zod'
3
5
 
4
6
  /**
@@ -203,6 +205,13 @@ export async function createWorkbookBuffer({
203
205
  return Buffer.from(buffer)
204
206
  }
205
207
 
208
+ export function createRootAuthorization(rootUser: User): AuthorizationContext {
209
+ return {
210
+ user: rootUser,
211
+ userRoles: [...USER_ROLES],
212
+ }
213
+ }
214
+
206
215
  /**
207
216
  * Creates a Zod schema for a query parameter that accepts a JSON string
208
217
  * and parses it into the specified schema type.
@@ -550,10 +550,10 @@ export const auditLogs = router({
550
550
  })
551
551
 
552
552
  // Get actions map for scope/type info
553
- const actionsMap = await ctx.view.actions.getAll(ctx.user)
553
+ const actionsMap = await ctx.view.actions.getAll(ctx.viewer)
554
554
 
555
555
  // Get users map for user names
556
- const usersMap = await ctx.view.users.getAll(ctx.user)
556
+ const usersMap = await ctx.view.users.getAll(ctx.viewer)
557
557
 
558
558
  // Process entries
559
559
  let entries: AuditLogEntry[] = []
@@ -26,7 +26,7 @@ export const excelIo = router({
26
26
  ignoreErrors: input.ignoreErrors,
27
27
  confirmDeletes: input.confirmDeletes,
28
28
  selectedDeltaIndicesByModel: input.selectedDeltaIndicesByModel,
29
- user: ctx.user,
29
+ authorization: ctx.viewer,
30
30
  }),
31
31
  ),
32
32
  })
@@ -39,8 +39,11 @@ function generateMiddleware(context) {
39
39
  const imports = Generator.ImportGenerator.from(context.trpcRouter._middleware._filePath)
40
40
  .add(context.actions.summary.action)
41
41
  .add(context.actions.summary.resultOfActionHelper)
42
- .add(context.types.user)
43
42
  .add({ name: context.trpcRouter._shared.context.name, location: context.trpcRouter._shared._filePath })
43
+ .addType({
44
+ name: context.trpcRouter._shared.authenticatedViewer.name,
45
+ location: context.trpcRouter._shared._filePath,
46
+ })
44
47
  .add({ name: context.trpcRouter._shared.middleware.name, location: context.trpcRouter._shared._filePath });
45
48
  return /* ts */ `
46
49
  import { TRPCError } from '@trpc/server'
@@ -50,10 +53,10 @@ function generateMiddleware(context) {
50
53
  /**
51
54
  * The shared context available to all routes after authentication.
52
55
  *
53
- * Contains the user and a dispatch function that already has the user set.
56
+ * Contains the authenticated viewer and a dispatch function that already has the user set.
54
57
  */
55
58
  export type ${context.trpcRouter._middleware.auth.context.name} = ${context.trpcRouter._shared.context.name} & {
56
- user: ${context.types.user.name}
59
+ viewer: ${context.trpcRouter._shared.authenticatedViewer.name}
57
60
  dispatch: <A extends ${context.actions.summary.action.name}>(action: A) => Promise<${context.actions.summary.resultOfActionHelper.name}<A>>
58
61
  }
59
62
 
@@ -71,8 +74,8 @@ export const ${context.trpcRouter._middleware.auth.name} = ${context.trpcRouter.
71
74
 
72
75
  const context: ${context.trpcRouter._middleware.auth.context.name} = {
73
76
  ...ctx,
74
- user: viewer.user,
75
- dispatch: <A extends ${context.actions.summary.action.name}>(action: A) => ctx.dispatcher.dispatch({ action, user: viewer.user }),
77
+ viewer,
78
+ dispatch: <A extends ${context.actions.summary.action.name}>(action: A) => ctx.dispatcher.dispatch({ action, user: viewer.user, userRoles: viewer.userRoles }),
76
79
  }
77
80
 
78
81
  return opts.next({ ctx: context })
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.generator.js","sourceRoot":"","sources":["../../../src/backend-router-trpc/generators/middleware.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,gDA8DC;AAjED,6DAA8C;AAG9C,SAAgB,kBAAkB,CAAC,OAAsB;IACvD,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC;SACrF,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;SACnC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC;SACjD,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;SACvB,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;SACtG,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IAE5G,OAAO,QAAQ,CAAC;;IAEd,OAAO,CAAC,QAAQ,EAAE;;;;;;;;cAQR,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;UACjG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI;yBACR,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,2BAA2B,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI;;;;;;;;eAQzH,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;;;;;;;mBAOpF,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;;;2BAGxC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI;;;;;;4BAMlC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;;;;;;;;;;;;;;;;;GAiBnE,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"middleware.generator.js","sourceRoot":"","sources":["../../../src/backend-router-trpc/generators/middleware.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,gDAiEC;AApED,6DAA8C;AAG9C,SAAgB,kBAAkB,CAAC,OAAsB;IACvD,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC;SACrF,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;SACnC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC;SACjD,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;SACtG,OAAO,CAAC;QACP,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI;QACzD,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS;KAC/C,CAAC;SACD,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IAE5G,OAAO,QAAQ,CAAC;;IAEd,OAAO,CAAC,QAAQ,EAAE;;;;;;;;cAQR,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;YAC/F,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI;yBACtC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,2BAA2B,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI;;;;;;;;eAQzH,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;;;;;;;mBAOpF,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;;;2BAGxC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI;;;;;;4BAMlC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;;;;;;;;;;;;;;;;;GAiBnE,CAAA;AACH,CAAC"}