@bshsolutions/sdk 0.0.40-beta → 0.0.40-beta.3

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.js CHANGED
@@ -1,7 +1,7 @@
1
- import { fetchClientFn, BshClient } from './chunk-MARE3SV2.js';
2
- import { EntityService, AuthService, UserService, TenantService, SettingsService, ImageService, MailingService, BshUtilsService, CachingService, ApiKeyService } from './chunk-C6W32LLO.js';
3
- import './chunk-25M57UTR.js';
4
- import { CoreEntities } from './chunk-ZOCNJXUZ.js';
1
+ import { fetchClientFn, BshClient } from './chunk-Q2AC5OLH.js';
2
+ import { EntityService, AuthService, AuthSessionService, UserService, TenantService, SettingsService, ImageService, MailingService, BshUtilsService, CachingService, ApiKeyService } from './chunk-M7M65WTP.js';
3
+ import './chunk-ARI3OLHJ.js';
4
+ import { CoreEntities } from './chunk-BAUGZHUO.js';
5
5
 
6
6
  // src/services/plugins/index.ts
7
7
  var PluginService = class {
@@ -83,6 +83,7 @@ var BshEngine = class {
83
83
  this.refreshTokenFn = params.refreshTokenFn || this.refreshTokenFn;
84
84
  this.onTokenRefreshed = params.onTokenRefreshed;
85
85
  this.tenantFn = params.tenantFn || this.tenantFn;
86
+ this.clientName = params.clientName;
86
87
  this.postInterceptors = params.postInterceptors || [];
87
88
  this.preInterceptors = params.preInterceptors || [];
88
89
  this.errorInterceptors = params.errorInterceptors || [];
@@ -108,6 +109,10 @@ var BshEngine = class {
108
109
  this.tenantFn = tenantFn;
109
110
  return this;
110
111
  }
112
+ withClientName(clientName) {
113
+ this.clientName = clientName;
114
+ return this;
115
+ }
111
116
  // Interceptors
112
117
  postInterceptor(interceptor) {
113
118
  this.postInterceptors.push(interceptor);
@@ -134,6 +139,9 @@ var BshEngine = class {
134
139
  getOnTokenRefreshed() {
135
140
  return this.onTokenRefreshed;
136
141
  }
142
+ getClientName() {
143
+ return this.clientName;
144
+ }
137
145
  // Client
138
146
  get client() {
139
147
  return new BshClient(
@@ -173,6 +181,9 @@ var BshEngine = class {
173
181
  get auth() {
174
182
  return new AuthService(this.client);
175
183
  }
184
+ get authSessions() {
185
+ return new AuthSessionService(this.client);
186
+ }
176
187
  get users() {
177
188
  return new UserService(this.client);
178
189
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/services/plugins/index.ts","../src/services/status/index.ts","../src/bshengine.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { BshClient } from \"@src/client/bsh-client\";\nimport { BshResponse, PluginInstalledResponse } from \"@types\";\nimport { BshCallbackParams, BshCallbackParamsWithPayload } from \"@src/services\";\nimport { CoreEntities } from \"@src/types/core\";\n\nexport class PluginService {\n private readonly baseEndpoint = '/api/plugins';\n\n public constructor(private readonly client: BshClient) {\n }\n\n public async installZip(\n params: BshCallbackParamsWithPayload<{ file: File }, PluginInstalledResponse>\n ): Promise<BshResponse<PluginInstalledResponse> | undefined> {\n const formData = new FormData();\n formData.set('file', params.payload.file);\n\n return this.client.post<PluginInstalledResponse>({\n path: `${this.baseEndpoint}/install/zip`,\n options: {\n responseType: 'json',\n requestFormat: 'form',\n body: formData,\n },\n bshOptions: params,\n api: 'plugins.installZip',\n entity: CoreEntities.BshPlugins,\n });\n }\n\n public async installCore(\n params: BshCallbackParams<PluginInstalledResponse>\n ): Promise<BshResponse<PluginInstalledResponse> | undefined> {\n return this.client.post<PluginInstalledResponse>({\n path: `${this.baseEndpoint}/install/core`,\n options: {\n responseType: 'json'\n },\n bshOptions: params,\n api: 'plugins.installZip',\n entity: CoreEntities.BshPlugins,\n });\n }\n}\n","import { BshClient } from \"@src/client/bsh-client\";\nimport { BshResponse } from \"@types\";\nimport { BshCallbackParams } from \"@src/services\";\nimport { EngineStatus, HealthCheckData } from \"@src/types\";\n\nexport class StatusService {\n private readonly baseEndpoint = '/api/status';\n\n public constructor(private readonly client: BshClient) {\n }\n\n public async load(params?: BshCallbackParams<unknown, EngineStatus>): Promise<BshResponse<EngineStatus> | undefined> {\n return this.client.get<EngineStatus>({\n path: this.baseEndpoint,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: { onSuccess: params?.onSuccess, onError: params?.onError },\n api: 'status.load',\n });\n }\n\n public async health(params?: BshCallbackParams<unknown, HealthCheckData>): Promise<BshResponse<HealthCheckData> | undefined> {\n return this.client.get<HealthCheckData>({\n path: `${this.baseEndpoint}/health`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: { onSuccess: params?.onSuccess, onError: params?.onError },\n api: 'status.health',\n });\n }\n}\n","import { BshAuthFn, BshClient, BshClientFn, BshErrorInterceptor, BshOnTokenRefreshedFn, BshPostInterceptor, BshPreInterceptor, BshRefreshTokenFn, BshTenantFn, fetchClientFn } from \"@client\";\nimport { ApiKeyService, AuthService, BshUtilsService, CachingService, EntityService, ImageService, MailingService, SettingsService, TenantService, UserService } from \"@src/services\";\nimport { BshEntities, BshPolicy, BshRole, BshEmailTemplate, BshEventLogs, BshSchemas, BshTypes, BshUser, SentEmail, BshTrigger, BshTriggerInstance, BshFiles, BshConfigurations, BshPlugin, BshTenant } from \"@types\";\nimport { PluginService } from \"./services/plugins\";\nimport { StatusService } from \"./services/status\";\n\nexport class BshEngine {\n private host?: string;\n private clientFn: BshClientFn = fetchClientFn;\n private authFn?: BshAuthFn;\n private refreshTokenFn?: BshRefreshTokenFn;\n private onTokenRefreshed?: BshOnTokenRefreshedFn;\n private tenantFn?: BshTenantFn;\n \n private postInterceptors: BshPostInterceptor<unknown>[] = [];\n private preInterceptors: BshPreInterceptor<unknown>[] = [];\n private errorInterceptors: BshErrorInterceptor<unknown>[] = [];\n\n constructor(params: {\n host?: string;\n apiKey?: string;\n jwtToken?: string;\n refreshToken?: string;\n clientFn?: BshClientFn;\n authFn?: BshAuthFn;\n tenantFn?: BshTenantFn;\n refreshTokenFn?: BshRefreshTokenFn;\n onTokenRefreshed?: BshOnTokenRefreshedFn;\n postInterceptors?: BshPostInterceptor<unknown>[];\n preInterceptors?: BshPreInterceptor<unknown>[];\n errorInterceptors?: BshErrorInterceptor<unknown>[];\n } = {}) {\n this.host = params.host;\n if (params.apiKey && !params.authFn) this.authFn = async () => ({ type: 'APIKEY', token: params.apiKey! });\n if (params.jwtToken && !params.authFn) this.authFn = async () => ({ type: 'JWT', token: params.jwtToken! });\n if (params.refreshToken) this.refreshTokenFn = async () => params.refreshToken!;\n this.clientFn = params.clientFn || this.clientFn || fetchClientFn;\n this.authFn = params.authFn || this.authFn;\n this.refreshTokenFn = params.refreshTokenFn || this.refreshTokenFn;\n this.onTokenRefreshed = params.onTokenRefreshed;\n this.tenantFn = params.tenantFn || this.tenantFn;\n this.postInterceptors = params.postInterceptors || [];\n this.preInterceptors = params.preInterceptors || [];\n this.errorInterceptors = params.errorInterceptors || [];\n }\n\n // Configuration\n public withClient(clientFn: BshClientFn) {\n this.clientFn = clientFn;\n return this;\n }\n\n public withAuth(authFn: BshAuthFn) {\n this.authFn = authFn;\n return this;\n }\n\n public withRefreshToken(refreshTokenFn: BshRefreshTokenFn) {\n this.refreshTokenFn = refreshTokenFn;\n return this;\n }\n\n public withOnTokenRefreshed(handler: BshOnTokenRefreshedFn) {\n this.onTokenRefreshed = handler;\n return this;\n }\n\n public withTenant(tenantFn: BshTenantFn) {\n this.tenantFn = tenantFn;\n return this;\n }\n\n // Interceptors\n public postInterceptor(interceptor: BshPostInterceptor<unknown>) {\n this.postInterceptors.push(interceptor);\n return this;\n }\n\n public preInterceptor(interceptor: BshPreInterceptor<unknown>) {\n this.preInterceptors.push(interceptor);\n return this;\n }\n\n public errorInterceptor(interceptor: BshErrorInterceptor<unknown>) {\n this.errorInterceptors.push(interceptor);\n return this;\n }\n\n // getters\n public getPostInterceptors() {\n return this.postInterceptors;\n }\n\n public getPreInterceptors() {\n return this.preInterceptors;\n }\n\n public getErrorInterceptors() {\n return this.errorInterceptors;\n }\n\n public getOnTokenRefreshed() {\n return this.onTokenRefreshed;\n }\n\n // Client\n private get client(): BshClient {\n return new BshClient(\n this.host, \n this.clientFn, \n this.authFn, \n this.refreshTokenFn, \n this.tenantFn, \n this\n );\n }\n\n // Services\n public get entities() {\n return new EntityService(this.client);\n }\n\n public entity<T>(entity: string) {\n return new EntityService<T>(this.client, entity);\n }\n\n public get core() {\n return {\n BshEntities: this.entity<BshEntities>('BshEntities'),\n BshSchemas: this.entity<BshSchemas>('BshSchemas'),\n BshTypes: this.entity<BshTypes>('BshTypes'),\n BshUsers: this.entity<BshUser>('BshUsers'),\n BshPolicies: this.entity<BshPolicy>('BshPolicies'),\n BshRoles: this.entity<BshRole>('BshRoles'),\n BshFiles: this.entity<BshFiles>('BshFiles'),\n BshConfigurations: this.entity<BshConfigurations>('BshConfigurations'),\n BshEmails: this.entity<SentEmail>('BshEmails'),\n BshEmailTemplates: this.entity<BshEmailTemplate>('BshEmailTemplates'),\n BshEventLogs: this.entity<BshEventLogs>('BshEventLogs'),\n BshTriggers: this.entity<BshTrigger>('BshTriggers'),\n BshTriggerInstances: this.entity<BshTriggerInstance>('BshTriggerInstances'),\n BshPlugins: this.entity<BshPlugin>('BshPlugins'),\n }\n }\n\n public get auth() {\n return new AuthService(this.client);\n }\n\n public get users() {\n return new UserService(this.client);\n }\n\n public get tenants() {\n return new TenantService(this.client);\n }\n\n public get settings() {\n return new SettingsService(this.client);\n }\n\n public get image() {\n return new ImageService(this.client);\n }\n\n public get mailing() {\n return new MailingService(this.client);\n }\n\n public get utils() {\n return new BshUtilsService(this.client);\n }\n\n public get caching() {\n return new CachingService(this.client);\n }\n\n public get apiKey() {\n return new ApiKeyService(this.client);\n }\n\n public get plugins() {\n return new PluginService(this.client);\n }\n\n public get status() {\n return new StatusService(this.client);\n }\n}\n","export { type BshClientFn, type BshAuthFn } from './client'\nexport { type BshResponse } from './types'\nexport { BshEngine } from './bshengine';\nexport const version = '0.0.1' as const;\n"]}
1
+ {"version":3,"sources":["../src/services/plugins/index.ts","../src/services/status/index.ts","../src/bshengine.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { BshClient } from \"@src/client/bsh-client\";\nimport { BshResponse, PluginInstalledResponse } from \"@types\";\nimport { BshCallbackParams, BshCallbackParamsWithPayload } from \"@src/services\";\nimport { CoreEntities } from \"@src/types/core\";\n\nexport class PluginService {\n private readonly baseEndpoint = '/api/plugins';\n\n public constructor(private readonly client: BshClient) {\n }\n\n public async installZip(\n params: BshCallbackParamsWithPayload<{ file: File }, PluginInstalledResponse>\n ): Promise<BshResponse<PluginInstalledResponse> | undefined> {\n const formData = new FormData();\n formData.set('file', params.payload.file);\n\n return this.client.post<PluginInstalledResponse>({\n path: `${this.baseEndpoint}/install/zip`,\n options: {\n responseType: 'json',\n requestFormat: 'form',\n body: formData,\n },\n bshOptions: params,\n api: 'plugins.installZip',\n entity: CoreEntities.BshPlugins,\n });\n }\n\n public async installCore(\n params: BshCallbackParams<PluginInstalledResponse>\n ): Promise<BshResponse<PluginInstalledResponse> | undefined> {\n return this.client.post<PluginInstalledResponse>({\n path: `${this.baseEndpoint}/install/core`,\n options: {\n responseType: 'json'\n },\n bshOptions: params,\n api: 'plugins.installZip',\n entity: CoreEntities.BshPlugins,\n });\n }\n}\n","import { BshClient } from \"@src/client/bsh-client\";\nimport { BshResponse } from \"@types\";\nimport { BshCallbackParams } from \"@src/services\";\nimport { EngineStatus, HealthCheckData } from \"@src/types\";\n\nexport class StatusService {\n private readonly baseEndpoint = '/api/status';\n\n public constructor(private readonly client: BshClient) {\n }\n\n public async load(params?: BshCallbackParams<unknown, EngineStatus>): Promise<BshResponse<EngineStatus> | undefined> {\n return this.client.get<EngineStatus>({\n path: this.baseEndpoint,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: { onSuccess: params?.onSuccess, onError: params?.onError },\n api: 'status.load',\n });\n }\n\n public async health(params?: BshCallbackParams<unknown, HealthCheckData>): Promise<BshResponse<HealthCheckData> | undefined> {\n return this.client.get<HealthCheckData>({\n path: `${this.baseEndpoint}/health`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: { onSuccess: params?.onSuccess, onError: params?.onError },\n api: 'status.health',\n });\n }\n}\n","import { BshAuthFn, BshClient, BshClientFn, BshErrorInterceptor, BshOnTokenRefreshedFn, BshPostInterceptor, BshPreInterceptor, BshRefreshTokenFn, BshTenantFn, fetchClientFn } from \"@client\";\nimport { ApiKeyService, AuthService, AuthSessionService, BshUtilsService, CachingService, EntityService, ImageService, MailingService, SettingsService, TenantService, UserService } from \"@src/services\";\nimport { BshEntities, BshPolicy, BshRole, BshEmailTemplate, BshEventLogs, BshSchemas, BshTypes, BshUser, SentEmail, BshTrigger, BshTriggerInstance, BshFiles, BshConfigurations, BshPlugin, BshTenant } from \"@types\";\nimport { PluginService } from \"./services/plugins\";\nimport { StatusService } from \"./services/status\";\n\nexport class BshEngine {\n private host?: string;\n private clientFn: BshClientFn = fetchClientFn;\n private authFn?: BshAuthFn;\n private refreshTokenFn?: BshRefreshTokenFn;\n private onTokenRefreshed?: BshOnTokenRefreshedFn;\n private tenantFn?: BshTenantFn;\n private clientName?: string;\n \n private postInterceptors: BshPostInterceptor<unknown>[] = [];\n private preInterceptors: BshPreInterceptor<unknown>[] = [];\n private errorInterceptors: BshErrorInterceptor<unknown>[] = [];\n\n constructor(params: {\n host?: string;\n apiKey?: string;\n jwtToken?: string;\n refreshToken?: string;\n clientFn?: BshClientFn;\n authFn?: BshAuthFn;\n tenantFn?: BshTenantFn;\n refreshTokenFn?: BshRefreshTokenFn;\n onTokenRefreshed?: BshOnTokenRefreshedFn;\n clientName?: string;\n postInterceptors?: BshPostInterceptor<unknown>[];\n preInterceptors?: BshPreInterceptor<unknown>[];\n errorInterceptors?: BshErrorInterceptor<unknown>[];\n } = {}) {\n this.host = params.host;\n if (params.apiKey && !params.authFn) this.authFn = async () => ({ type: 'APIKEY', token: params.apiKey! });\n if (params.jwtToken && !params.authFn) this.authFn = async () => ({ type: 'JWT', token: params.jwtToken! });\n if (params.refreshToken) this.refreshTokenFn = async () => params.refreshToken!;\n this.clientFn = params.clientFn || this.clientFn || fetchClientFn;\n this.authFn = params.authFn || this.authFn;\n this.refreshTokenFn = params.refreshTokenFn || this.refreshTokenFn;\n this.onTokenRefreshed = params.onTokenRefreshed;\n this.tenantFn = params.tenantFn || this.tenantFn;\n this.clientName = params.clientName;\n this.postInterceptors = params.postInterceptors || [];\n this.preInterceptors = params.preInterceptors || [];\n this.errorInterceptors = params.errorInterceptors || [];\n }\n\n // Configuration\n public withClient(clientFn: BshClientFn) {\n this.clientFn = clientFn;\n return this;\n }\n\n public withAuth(authFn: BshAuthFn) {\n this.authFn = authFn;\n return this;\n }\n\n public withRefreshToken(refreshTokenFn: BshRefreshTokenFn) {\n this.refreshTokenFn = refreshTokenFn;\n return this;\n }\n\n public withOnTokenRefreshed(handler: BshOnTokenRefreshedFn) {\n this.onTokenRefreshed = handler;\n return this;\n }\n\n public withTenant(tenantFn: BshTenantFn) {\n this.tenantFn = tenantFn;\n return this;\n }\n\n public withClientName(clientName: string) {\n this.clientName = clientName;\n return this;\n }\n\n // Interceptors\n public postInterceptor(interceptor: BshPostInterceptor<unknown>) {\n this.postInterceptors.push(interceptor);\n return this;\n }\n\n public preInterceptor(interceptor: BshPreInterceptor<unknown>) {\n this.preInterceptors.push(interceptor);\n return this;\n }\n\n public errorInterceptor(interceptor: BshErrorInterceptor<unknown>) {\n this.errorInterceptors.push(interceptor);\n return this;\n }\n\n // getters\n public getPostInterceptors() {\n return this.postInterceptors;\n }\n\n public getPreInterceptors() {\n return this.preInterceptors;\n }\n\n public getErrorInterceptors() {\n return this.errorInterceptors;\n }\n\n public getOnTokenRefreshed() {\n return this.onTokenRefreshed;\n }\n\n public getClientName() {\n return this.clientName;\n }\n\n // Client\n private get client(): BshClient {\n return new BshClient(\n this.host, \n this.clientFn, \n this.authFn, \n this.refreshTokenFn, \n this.tenantFn, \n this\n );\n }\n\n // Services\n public get entities() {\n return new EntityService(this.client);\n }\n\n public entity<T>(entity: string) {\n return new EntityService<T>(this.client, entity);\n }\n\n public get core() {\n return {\n BshEntities: this.entity<BshEntities>('BshEntities'),\n BshSchemas: this.entity<BshSchemas>('BshSchemas'),\n BshTypes: this.entity<BshTypes>('BshTypes'),\n BshUsers: this.entity<BshUser>('BshUsers'),\n BshPolicies: this.entity<BshPolicy>('BshPolicies'),\n BshRoles: this.entity<BshRole>('BshRoles'),\n BshFiles: this.entity<BshFiles>('BshFiles'),\n BshConfigurations: this.entity<BshConfigurations>('BshConfigurations'),\n BshEmails: this.entity<SentEmail>('BshEmails'),\n BshEmailTemplates: this.entity<BshEmailTemplate>('BshEmailTemplates'),\n BshEventLogs: this.entity<BshEventLogs>('BshEventLogs'),\n BshTriggers: this.entity<BshTrigger>('BshTriggers'),\n BshTriggerInstances: this.entity<BshTriggerInstance>('BshTriggerInstances'),\n BshPlugins: this.entity<BshPlugin>('BshPlugins'),\n }\n }\n\n public get auth() {\n return new AuthService(this.client);\n }\n\n public get authSessions() {\n return new AuthSessionService(this.client);\n }\n\n public get users() {\n return new UserService(this.client);\n }\n\n public get tenants() {\n return new TenantService(this.client);\n }\n\n public get settings() {\n return new SettingsService(this.client);\n }\n\n public get image() {\n return new ImageService(this.client);\n }\n\n public get mailing() {\n return new MailingService(this.client);\n }\n\n public get utils() {\n return new BshUtilsService(this.client);\n }\n\n public get caching() {\n return new CachingService(this.client);\n }\n\n public get apiKey() {\n return new ApiKeyService(this.client);\n }\n\n public get plugins() {\n return new PluginService(this.client);\n }\n\n public get status() {\n return new StatusService(this.client);\n }\n}\n","export { type BshClientFn, type BshAuthFn } from './client'\nexport { type BshResponse } from './types'\nexport { BshEngine } from './bshengine';\nexport const version = '0.0.1' as const;\n"]}
@@ -1,2 +1,2 @@
1
1
  import '../types/index.js';
2
- export { l as AdminUserService, m as ApiKeyService, n as AuthService, o as BshCallbackParams, p as BshCallbackParamsWithPayload, q as BshSearchCallbackParams, r as BshUtilsService, C as CacheRemoveResponse, s as CachingService, E as EntityFnParams, t as EntityFnParamsWithPayload, u as EntitySearchFnParams, v as EntityService, I as ImageService, M as MailingService, S as SettingsService, T as TenantService, U as UserService } from '../types-C-hBC4WJ.js';
2
+ export { l as AdminUserService, m as ApiKeyService, n as AuthService, o as AuthSessionService, p as BshCallbackParams, q as BshCallbackParamsWithPayload, r as BshSearchCallbackParams, s as BshUtilsService, C as CacheRemoveResponse, t as CachingService, E as EntityFnParams, u as EntityFnParamsWithPayload, v as EntitySearchFnParams, w as EntityService, I as ImageService, M as MailingService, S as SettingsService, T as TenantService, U as UserService } from '../types-CV51lZ8w.js';
@@ -1,4 +1,4 @@
1
- export { AdminUserService, ApiKeyService, AuthService, BshUtilsService, CachingService, EntityService, ImageService, MailingService, SettingsService, TenantService, UserService } from '../chunk-C6W32LLO.js';
2
- import '../chunk-ZOCNJXUZ.js';
1
+ export { AdminUserService, ApiKeyService, AuthService, AuthSessionService, BshUtilsService, CachingService, EntityService, ImageService, MailingService, SettingsService, TenantService, UserService } from '../chunk-M7M65WTP.js';
2
+ import '../chunk-BAUGZHUO.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -19,6 +19,8 @@ declare const CoreEntities: {
19
19
  readonly BshApiKeys: "BshApiKeys";
20
20
  readonly BshFiles: "BshFiles";
21
21
  readonly BshTenants: "BshTenants";
22
+ readonly TenantAudits: "TenantAudits";
23
+ readonly BshAuthSessions: "BshAuthSessions";
22
24
  readonly BshConfigurations: "BshConfigurations";
23
25
  readonly BshEmails: "BshEmails";
24
26
  readonly BshEmailTemplates: "BshEmailTemplates";
@@ -31,6 +33,7 @@ declare const CoreEntities: {
31
33
  type CoreEntities = keyof typeof CoreEntities;
32
34
  declare const PluginBasedEntities: string[];
33
35
 
36
+ type BshErrorCode = 'JWT__SESSION_EXPIRED' | 'JWT__EXPIRED' | 'JWT__UNSUPPORTED' | 'JWT__MALFORMED' | 'JWT__INVALID_SIGNATURE' | 'JWT__INVALID' | 'JWT__INVALID_TYP' | 'API__NOT_FOUND';
34
37
  type BshResponse<T> = {
35
38
  data: T[];
36
39
  timestamp: number;
@@ -47,6 +50,7 @@ type BshResponse<T> = {
47
50
  };
48
51
  accessToken?: string;
49
52
  refreshToken?: string;
53
+ bshError?: BshErrorCode;
50
54
  };
51
55
  pagination?: {
52
56
  current: number;
@@ -63,6 +67,8 @@ type BshResponse<T> = {
63
67
  }[];
64
68
  };
65
69
  declare const isOk: (response: BshResponse<unknown> | undefined) => boolean;
70
+ /** True when the engine rejected the request because the auth session is over (user must log in again). */
71
+ declare const isExpired: (error: BshError | BshResponse<unknown> | undefined) => boolean;
66
72
  declare class BshError extends Error {
67
73
  status: number;
68
74
  endpoint: string;
@@ -565,7 +571,7 @@ interface DatabaseDetails {
565
571
  error?: string;
566
572
  }
567
573
  interface SecretsDetails {
568
- 'jwt.secret': string;
574
+ 'auth.config.secret': string;
569
575
  mailing: string;
570
576
  cloudinary: string;
571
577
  secrets?: string;
@@ -649,5 +655,39 @@ type AuthTokens = {
649
655
  access: string;
650
656
  refresh: string;
651
657
  };
658
+ type BshAuthSessionStatus = 'Active' | 'Expired' | 'Revoked' | 'LoggedOut';
659
+ declare const BshSessionMetaData: {
660
+ readonly browsers: readonly ["Edge", "Opera", "Samsung Internet", "Firefox", "Chrome", "Safari", "Postman", "curl", "axios", "node-fetch", "Java", "Python"];
661
+ readonly os: readonly ["Windows", "iOS", "Android", "ChromeOS", "macOS", "Linux"];
662
+ readonly devices: readonly ["Desktop", "Mobile", "Tablet", "Other"];
663
+ };
664
+ type BshBrowser = typeof BshSessionMetaData.browsers[number];
665
+ type BshOS = typeof BshSessionMetaData.os[number];
666
+ type BshDevice = typeof BshSessionMetaData.devices[number];
667
+ type BshAuthSessionMetadata = {
668
+ /** Readable summary, e.g. "Chrome 131 on macOS". */
669
+ label?: string;
670
+ browser?: BshBrowser;
671
+ /** Major version for browsers, full version for HTTP clients. */
672
+ browserVersion?: string;
673
+ os?: BshOS;
674
+ device?: BshDevice;
675
+ /** Value of the X-Bsh-Client header sent at login. */
676
+ client?: string;
677
+ userAgent?: string;
678
+ };
679
+ type BshAuthSession = Omit<BshObject, 'persistenceId'> & {
680
+ sid: string;
681
+ sub?: string;
682
+ iat: BshDate;
683
+ exp: BshDate;
684
+ status: BshAuthSessionStatus;
685
+ metadata?: BshAuthSessionMetadata;
686
+ current: boolean;
687
+ };
688
+ type BshRevokeSessionResult = {
689
+ sid: string;
690
+ message: string;
691
+ };
652
692
 
653
- export { type AdminDetails, type AdminServiceStatus, type Aggregate, type AggregateFunction, AggregateFunctions, type AllServiceStatuses, type AuthTokens, type BshApiKeys, type BshApiKeysForm, type BshApiKeysScopes, type BshConfigurations, type BshDate, type BshEmailTemplate, type BshEmailTemplatePure, type BshEntities, type BshEntitiesPure, BshEntityPermissions, BshEntityTypes, BshError, type BshEventLogs, type BshFiles, BshInsertDuplicates, type BshObject, type BshObjectPure, BshPKStrategies, BshPKTypes, type BshPlugin, type BshPluginHistory, type BshPluginPure, type BshPolicy, type BshPolicyPure, type BshResponse, type BshRole, type BshRolePure, type BshSchemaProperty, type BshSchemas, type BshSchemasPure, type BshSearch, type BshSettings, type BshTenant, type BshTenantPure, type BshTrigger, type BshTriggerAction, type BshTriggerEvent, type BshTriggerEventPure, type BshTriggerFunction, type BshTriggerInstance, type BshTriggerPure, type BshTriggerSanitizer, type BshTypes, type BshTypesPure, BshUpdateStrategies, type BshUser, type BshUserInit, type BshUserPure, type CacheInfo, type CachesDetails, type CachesServiceStatus, type CloudinaryConfig, type ComparisonOperator, ComparisonOperators, type ConfigurationDetails, type ConfigurationServiceStatus, CoreEntities, type CorePluginDetails, type CorePluginServiceStatus, type DatabaseDetails, type DatabaseServiceStatus, type EmailConfiguration, type EmailProvider, type EmailSenderTriggerInput, type EngineStatus, type EngineStatusType, type Filter, type GmailConfig, type GroupBy, type HealthCheckData, type LogicalOperator, LogicalOperators, type LoginParams, type MailDevConfig, type MailingPayload, type MailingServiceStatus, type Pagination, PluginBasedEntities, type PluginInstalledResponse, PolicyActions, PrincipalType, type ProviderDetails, type SecretSource, type SecretsDetails, type SecretsServiceStatus, type SentEmail, type ServiceStatus, type ServiceStatusType, type Sort, type StorageConfiguration, type StorageProvider, type StorageServiceStatus, type UploadOptions, type UploadResponse, defaultSettings, formatFileSize, isOk };
693
+ export { type AdminDetails, type AdminServiceStatus, type Aggregate, type AggregateFunction, AggregateFunctions, type AllServiceStatuses, type AuthTokens, type BshApiKeys, type BshApiKeysForm, type BshApiKeysScopes, type BshAuthSession, type BshAuthSessionMetadata, type BshAuthSessionStatus, type BshBrowser, type BshConfigurations, type BshDate, type BshDevice, type BshEmailTemplate, type BshEmailTemplatePure, type BshEntities, type BshEntitiesPure, BshEntityPermissions, BshEntityTypes, BshError, type BshErrorCode, type BshEventLogs, type BshFiles, BshInsertDuplicates, type BshOS, type BshObject, type BshObjectPure, BshPKStrategies, BshPKTypes, type BshPlugin, type BshPluginHistory, type BshPluginPure, type BshPolicy, type BshPolicyPure, type BshResponse, type BshRevokeSessionResult, type BshRole, type BshRolePure, type BshSchemaProperty, type BshSchemas, type BshSchemasPure, type BshSearch, BshSessionMetaData, type BshSettings, type BshTenant, type BshTenantPure, type BshTrigger, type BshTriggerAction, type BshTriggerEvent, type BshTriggerEventPure, type BshTriggerFunction, type BshTriggerInstance, type BshTriggerPure, type BshTriggerSanitizer, type BshTypes, type BshTypesPure, BshUpdateStrategies, type BshUser, type BshUserInit, type BshUserPure, type CacheInfo, type CachesDetails, type CachesServiceStatus, type CloudinaryConfig, type ComparisonOperator, ComparisonOperators, type ConfigurationDetails, type ConfigurationServiceStatus, CoreEntities, type CorePluginDetails, type CorePluginServiceStatus, type DatabaseDetails, type DatabaseServiceStatus, type EmailConfiguration, type EmailProvider, type EmailSenderTriggerInput, type EngineStatus, type EngineStatusType, type Filter, type GmailConfig, type GroupBy, type HealthCheckData, type LogicalOperator, LogicalOperators, type LoginParams, type MailDevConfig, type MailingPayload, type MailingServiceStatus, type Pagination, PluginBasedEntities, type PluginInstalledResponse, PolicyActions, PrincipalType, type ProviderDetails, type SecretSource, type SecretsDetails, type SecretsServiceStatus, type SentEmail, type ServiceStatus, type ServiceStatusType, type Sort, type StorageConfiguration, type StorageProvider, type StorageServiceStatus, type UploadOptions, type UploadResponse, defaultSettings, formatFileSize, isExpired, isOk };
@@ -1,4 +1,4 @@
1
- export { AggregateFunctions, BshEntityPermissions, BshEntityTypes, BshError, BshInsertDuplicates, BshPKStrategies, BshPKTypes, BshUpdateStrategies, ComparisonOperators, LogicalOperators, PolicyActions, PrincipalType, defaultSettings, formatFileSize, isOk } from '../chunk-25M57UTR.js';
2
- export { CoreEntities, PluginBasedEntities } from '../chunk-ZOCNJXUZ.js';
1
+ export { AggregateFunctions, BshEntityPermissions, BshEntityTypes, BshError, BshInsertDuplicates, BshPKStrategies, BshPKTypes, BshSessionMetaData, BshUpdateStrategies, ComparisonOperators, LogicalOperators, PolicyActions, PrincipalType, defaultSettings, formatFileSize, isExpired, isOk } from '../chunk-ARI3OLHJ.js';
2
+ export { CoreEntities, PluginBasedEntities } from '../chunk-BAUGZHUO.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- import { PluginInstalledResponse, BshResponse, EngineStatus, HealthCheckData, BshEntities, BshSchemas, BshTypes, BshUser, BshPolicy, BshRole, BshFiles, BshConfigurations, SentEmail, BshEmailTemplate, BshEventLogs, BshTrigger, BshTriggerInstance, BshPlugin, BshSearch, LoginParams, AuthTokens, BshUserInit, BshTenant, BshTenantPure, BshSettings, UploadOptions, UploadResponse, MailingPayload, BshTriggerFunction, BshTriggerAction, SecretSource, CacheInfo, BshApiKeysForm, BshApiKeys, BshError } from './types/index.js';
1
+ import { PluginInstalledResponse, BshResponse, EngineStatus, HealthCheckData, BshEntities, BshSchemas, BshTypes, BshUser, BshPolicy, BshRole, BshFiles, BshConfigurations, SentEmail, BshEmailTemplate, BshEventLogs, BshTrigger, BshTriggerInstance, BshPlugin, BshSearch, LoginParams, AuthTokens, BshUserInit, BshTenant, BshTenantPure, BshSettings, UploadOptions, UploadResponse, MailingPayload, BshTriggerFunction, BshTriggerAction, SecretSource, CacheInfo, BshApiKeysForm, BshApiKeys, BshAuthSession, BshRevokeSessionResult, BshError } from './types/index.js';
2
2
 
3
3
  declare class PluginService {
4
4
  private readonly client;
@@ -25,6 +25,7 @@ declare class BshEngine {
25
25
  private refreshTokenFn?;
26
26
  private onTokenRefreshed?;
27
27
  private tenantFn?;
28
+ private clientName?;
28
29
  private postInterceptors;
29
30
  private preInterceptors;
30
31
  private errorInterceptors;
@@ -38,6 +39,7 @@ declare class BshEngine {
38
39
  tenantFn?: BshTenantFn;
39
40
  refreshTokenFn?: BshRefreshTokenFn;
40
41
  onTokenRefreshed?: BshOnTokenRefreshedFn;
42
+ clientName?: string;
41
43
  postInterceptors?: BshPostInterceptor<unknown>[];
42
44
  preInterceptors?: BshPreInterceptor<unknown>[];
43
45
  errorInterceptors?: BshErrorInterceptor<unknown>[];
@@ -47,6 +49,7 @@ declare class BshEngine {
47
49
  withRefreshToken(refreshTokenFn: BshRefreshTokenFn): this;
48
50
  withOnTokenRefreshed(handler: BshOnTokenRefreshedFn): this;
49
51
  withTenant(tenantFn: BshTenantFn): this;
52
+ withClientName(clientName: string): this;
50
53
  postInterceptor(interceptor: BshPostInterceptor<unknown>): this;
51
54
  preInterceptor(interceptor: BshPreInterceptor<unknown>): this;
52
55
  errorInterceptor(interceptor: BshErrorInterceptor<unknown>): this;
@@ -54,6 +57,7 @@ declare class BshEngine {
54
57
  getPreInterceptors(): BshPreInterceptor<unknown>[];
55
58
  getErrorInterceptors(): BshErrorInterceptor<unknown>[];
56
59
  getOnTokenRefreshed(): BshOnTokenRefreshedFn | undefined;
60
+ getClientName(): string | undefined;
57
61
  private get client();
58
62
  get entities(): EntityService<unknown>;
59
63
  entity<T>(entity: string): EntityService<T>;
@@ -74,6 +78,7 @@ declare class BshEngine {
74
78
  BshPlugins: EntityService<BshPlugin>;
75
79
  };
76
80
  get auth(): AuthService;
81
+ get authSessions(): AuthSessionService;
77
82
  get users(): UserService;
78
83
  get tenants(): TenantService;
79
84
  get settings(): SettingsService;
@@ -100,6 +105,7 @@ declare class BshClient {
100
105
  private getCsrfHeaders;
101
106
  private getAuthHeaders;
102
107
  private getTenantHeaders;
108
+ private getClientHeaders;
103
109
  private injectHeaders;
104
110
  private applyPreInterceptors;
105
111
  get<T = unknown>(params: BshClientFnParams<T>): Promise<BshResponse<T> | undefined>;
@@ -168,9 +174,7 @@ declare class AuthService {
168
174
  login(params: BshCallbackParamsWithPayload<LoginParams, AuthTokens>): Promise<BshResponse<AuthTokens> | undefined>;
169
175
  logout(params: BshCallbackParams<unknown>): Promise<BshResponse<unknown> | undefined>;
170
176
  register(params: BshCallbackParamsWithPayload<BshUserInit, BshUser>): Promise<BshResponse<BshUser> | undefined>;
171
- refreshToken(params: BshCallbackParamsWithPayload<{
172
- refresh: string;
173
- }, AuthTokens>): Promise<BshResponse<AuthTokens> | undefined>;
177
+ refreshToken(params?: BshCallbackParams<unknown, AuthTokens>): Promise<BshResponse<AuthTokens> | undefined>;
174
178
  forgetPassword(params: BshCallbackParamsWithPayload<{
175
179
  email: string;
176
180
  }, unknown>): Promise<BshResponse<unknown> | undefined>;
@@ -412,6 +416,45 @@ declare class ApiKeyService {
412
416
  }> | undefined>;
413
417
  }
414
418
 
419
+ /**
420
+ * Auth sessions of the logged-in user (`/api/auth/sessions`).
421
+ * Requires user authentication (JWT or cookie session), API keys are rejected.
422
+ * Regular users only see their own sessions.
423
+ */
424
+ declare class AuthSessionService {
425
+ private readonly client;
426
+ private readonly baseEndpoint;
427
+ constructor(client: BshClient);
428
+ current(params: BshCallbackParams<unknown, BshAuthSession>): Promise<BshResponse<BshAuthSession> | undefined>;
429
+ details(params: BshCallbackParams<unknown, BshAuthSession> & {
430
+ sid: string;
431
+ }): Promise<BshResponse<BshAuthSession> | undefined>;
432
+ /** Revokes another session. The current session cannot be revoked, use `auth.logout` instead. */
433
+ revoke(params: BshCallbackParams<unknown, BshRevokeSessionResult> & {
434
+ sid: string;
435
+ }): Promise<BshResponse<BshRevokeSessionResult> | undefined>;
436
+ search(params: BshSearchCallbackParams<BshAuthSession, BshAuthSession>): Promise<BshResponse<BshAuthSession> | undefined>;
437
+ /** e.g. `queryParams: { sort: 'iat:desc', filter: 'status:eq:Active' }` */
438
+ list(params: BshCallbackParams<unknown, BshAuthSession> & {
439
+ queryParams?: {
440
+ page?: string;
441
+ size?: string;
442
+ sort?: string;
443
+ filter?: string;
444
+ };
445
+ }): Promise<BshResponse<BshAuthSession> | undefined>;
446
+ count(params: BshCallbackParams<unknown, {
447
+ count: number;
448
+ }>): Promise<BshResponse<{
449
+ count: number;
450
+ }> | undefined>;
451
+ countFiltered(params: BshSearchCallbackParams<BshAuthSession, {
452
+ count: number;
453
+ }>): Promise<BshResponse<{
454
+ count: number;
455
+ }> | undefined>;
456
+ }
457
+
415
458
  type BshCallbackParams<T = unknown, R = T> = {
416
459
  onSuccess?: (response: BshResponse<R>) => void;
417
460
  onDownload?: (blob: Blob) => void;
@@ -461,4 +504,4 @@ type BshPostInterceptor<T = any> = (response: BshResponse<T>, params?: BshClient
461
504
  type BshPreInterceptor<T = any, R = T> = (params: BshClientFnParams<T, R>) => Promise<BshClientFnParams<T, R>>;
462
505
  type BshErrorInterceptor<T = any> = (error: BshError, response?: BshResponse<T>, params?: BshClientFnParams<T>) => Promise<BshError | undefined>;
463
506
 
464
- export { type AuthToken as A, type BshAuthFn as B, type CacheRemoveResponse as C, type EntityFnParams as E, ImageService as I, MailingService as M, SettingsService as S, TenantService as T, UserService as U, type BshClientFn as a, BshEngine as b, BshClient as c, type BshClientFnParams as d, type BshErrorInterceptor as e, type BshOnTokenRefreshedFn as f, type BshPostInterceptor as g, type BshPreInterceptor as h, type BshRefreshTokenFn as i, type BshTenantFn as j, defaultClientFn as k, AdminUserService as l, ApiKeyService as m, AuthService as n, type BshCallbackParams as o, type BshCallbackParamsWithPayload as p, type BshSearchCallbackParams as q, BshUtilsService as r, CachingService as s, type EntityFnParamsWithPayload as t, type EntitySearchFnParams as u, EntityService as v };
507
+ export { type AuthToken as A, type BshAuthFn as B, type CacheRemoveResponse as C, type EntityFnParams as E, ImageService as I, MailingService as M, SettingsService as S, TenantService as T, UserService as U, type BshClientFn as a, BshEngine as b, BshClient as c, type BshClientFnParams as d, type BshErrorInterceptor as e, type BshOnTokenRefreshedFn as f, type BshPostInterceptor as g, type BshPreInterceptor as h, type BshRefreshTokenFn as i, type BshTenantFn as j, defaultClientFn as k, AdminUserService as l, ApiKeyService as m, AuthService as n, AuthSessionService as o, type BshCallbackParams as p, type BshCallbackParamsWithPayload as q, type BshSearchCallbackParams as r, BshUtilsService as s, CachingService as t, type EntityFnParamsWithPayload as u, type EntitySearchFnParams as v, EntityService as w };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bshsolutions/sdk",
3
- "version": "0.0.40-beta",
3
+ "version": "0.0.40-beta.3",
4
4
  "description": "TypeScript SDK for integrating with BSH Engine <https://docs.bousalih.com>",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/types/response/index.ts","../src/types/search/index.ts","../src/types/entities/index.ts","../src/types/security/index.ts","../src/types/config/index.ts","../src/types/storage/index.ts"],"names":[],"mappings":";AA2BO,IAAM,IAAA,GAAO,CAAC,QAAA,KAA+C,QAAA,IAAY,MAAA,GAAY,QAAQ,QAAA,EAAU,IAAA,IAAQ,GAAA,IAAO,QAAA,EAAU,IAAA,GAAO;AAEvI,IAAM,QAAA,GAAN,cAAuB,KAAA,CAAM;AAAA,EAChC,WAAA,CACW,MAAA,EACA,QAAA,EACA,QAAA,EACT;AACE,IAAA,IAAI,QAAA,WAAmB,QAAA,GAAW,QAAA;AAClC,IAAA,KAAA,CAAM,IAAA,CAAK,SAAA,CAAU,QAAA,EAAU,IAAA,EAAM,CAAC,CAAC,CAAA;AALhC,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AACA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAIP,IAAA,IAAA,CAAK,IAAA,GAAO,UAAA;AAAA,EAChB;AACJ;;;AC1BO,IAAM,gBAAA,GAAmB,CAAC,KAAA,EAAO,IAAA,EAAM,KAAK;AAG5C,IAAM,sBAAsB,CAAC,IAAA,EAAM,MAAM,IAAA,EAAM,KAAA,EAAO,MAAM,KAAA,EAAO,MAAA,EAAQ,OAAA,EAAS,UAAA,EAAY,aAAa,QAAA,EAAU,SAAA,EAAW,MAAM,KAAA,EAAO,SAAA,EAAW,UAAU,SAAS;AAgB7K,IAAM,qBAAqB,CAAC,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,OAAO,KAAK;;;ACF/D,IAAM,cAAA,GAAiB,CAAC,OAAA,EAAS,MAAA,EAAQ,UAAU;AACnD,IAAM,mBAAA,GAAsB,CAAC,SAAA,EAAW,QAAQ;AAChD,IAAM,mBAAA,GAAsB,CAAC,QAAA,EAAU,OAAO;AAC9C,IAAM,eAAA,GAAkB,CAAC,eAAA,EAAiB,MAAA,EAAQ,OAAO;AACzD,IAAM,UAAA,GAAa,CAAC,QAAA,EAAU,QAAQ;AACtC,IAAM,oBAAA,GAAuB,CAAC,MAAA,EAAQ,OAAA,EAAS,UAAU,QAAQ;;;ACuBjE,IAAM,aAAA,GAAgB;AAAA,EAAC,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO;AAAA;AAAqB;AACnE,IAAM,gBAAgB,CAAC,GAAA,EAAK,QAAQ,OAAA,EAAS,QAAA,EAAU,UAAU,QAAQ;;;ACtCzE,IAAM,eAAA,GAA+B;AAAA,EACxC,IAAA,EAAM,WAAA;AAAA,EACN,GAAA,EAAK;AAAA,IACD,QAAA,EAAU;AAAA,MACN,OAAA,EAAS;AAAA,KACb;AAAA,IACA,IAAA,EAAM;AAAA,MACF,cAAA,EAAgB;AAAA;AACpB;AAER;;;ACgBO,IAAM,cAAA,GAAiB,CAAC,IAAA,KAA2B;AACtD,EAAA,IAAI,CAAC,IAAA,EAAM,KAAA,EAAO,OAAO,SAAA;AACzB,EAAA,MAAM,KAAA,GAAQ,CAAC,OAAA,EAAS,IAAA,EAAM,MAAM,IAAI,CAAA;AACxC,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,KAAK,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,IAAI,CAAC,CAAA;AAC1D,EAAA,OAAO,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,KAAA,GAAQ,KAAK,GAAA,CAAI,IAAA,EAAM,CAAC,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA,GAAM,GAAA,GAAM,MAAM,CAAC,CAAA;AACjF","file":"chunk-25M57UTR.js","sourcesContent":["export type BshResponse<T> = {\n data: T[]\n timestamp: number\n code: number\n status: string\n message?: string\n error?: string\n meta?: {\n type?: string,\n sql?: string,\n error?: string,\n tips?: {[key: string]: string},\n accessToken?: string,\n refreshToken?: string,\n }\n pagination?: {\n current: number,\n total: number,\n pages: number,\n first: boolean,\n last: boolean\n }\n endpoint?: string,\n api?: string,\n validations?: {field: string, error: string}[]\n}\n\nexport const isOk = (response: BshResponse<unknown> | undefined) => response == undefined ? false : response?.code >= 200 && response?.code < 300\n\nexport class BshError extends Error {\n constructor(\n public status: number,\n public endpoint: string,\n public response?: BshResponse<unknown>\n ) {\n if (response) response.endpoint = endpoint\n super(JSON.stringify(response, null, 2));\n this.name = 'BshError';\n }\n}\n","type CaseInsensitive<T extends string> = T | Uppercase<T>;\n\nexport type BshSearch<T = unknown> = {\n entity?: string\n alias?: string\n fields?: keyof T | string[]\n filters?: Filter<T>[]\n groupBy?: GroupBy<T>\n sort?: Sort<T>[]\n pagination?: Pagination\n from?: BshSearch<unknown>\n}\n\nexport const LogicalOperators = [\"and\", \"or\", \"not\"] as const;\nexport type LogicalOperator = CaseInsensitive<typeof LogicalOperators[number]>;\n\nexport const ComparisonOperators = [\"eq\", \"ne\", \"gt\", \"gte\", \"lt\", \"lte\", \"like\", \"ilike\", \"contains\", \"icontains\", \"starts\", \"istarts\", \"in\", \"nin\", \"between\", \"isnull\", \"notnull\"] as const;\nexport type ComparisonOperator = CaseInsensitive<typeof ComparisonOperators[number]>;\n\nexport type Filter<T = unknown> = {\n operator?: ComparisonOperator | LogicalOperator;\n field?: string | keyof T;\n value?: unknown;\n type?: string;\n filters?: Filter<T>[];\n};\n\nexport type GroupBy<T = unknown> = {\n fields?: string[] | keyof T[]\n aggregate?: Aggregate<T>[]\n}\n\nexport const AggregateFunctions = [\"COUNT\", \"SUM\", \"AVG\", \"MIN\", \"MAX\"] as const;\nexport type AggregateFunction = CaseInsensitive<typeof AggregateFunctions[number]>;\n\nexport type Aggregate<T = unknown> = {\n function?: AggregateFunction\n field?: string | keyof T\n alias?: string\n}\n\nexport type Sort<T> = {\n field?: string | keyof T\n direction?: -1 | 1 | 0\n}\n\nexport type Pagination = {\n page?: number\n size?: number\n}\n","import { BshObject, BshObjectPure } from '@types';\n\nexport type BshEntities = {\n name: string\n dbTable: string\n dbSchema: string\n type: 'Table' | 'View' | 'Function'\n dbSource: string\n updateStrategy: 'Replace' | 'Upsert'\n insertDuplicate: 'Upsert' | 'Error'\n bshSchema?: string\n bshPlugin?: string\n auditable?: boolean\n isPluginBased?: boolean\n isMultiTenant?: boolean\n pks: {\n key: string\n strategy: 'AutoIncrement' | 'UUID' | 'Fixed'\n type: 'string' | 'number'\n }[]\n permissions?: {\n write?: boolean\n read?: boolean\n delete?: boolean\n update?: boolean\n }\n} & BshObject;\n\nexport type BshEntitiesPure = BshObjectPure<BshEntities>;\nexport type BshEntityPermissions = 'read' | 'write' | 'update' | 'delete';\nexport const BshEntityTypes = ['Table', 'View', 'Function'] as const;\nexport const BshUpdateStrategies = ['Replace', 'Upsert'] as const;\nexport const BshInsertDuplicates = ['Upsert', 'Error'] as const;\nexport const BshPKStrategies = ['AutoIncrement', 'UUID', 'Fixed'] as const;\nexport const BshPKTypes = ['string', 'number'] as const;\nexport const BshEntityPermissions = ['read', 'write', 'update', 'delete'] as const;\n\nexport type BshSchemas = {\n name: string\n label: string\n description: string\n bshPlugin: string\n properties: {\n type: string\n name: string\n label: string\n\n meta?: {\n description?: string\n\n required?: boolean\n unique?: boolean\n default?: string\n\n length?: number\n maxLength?: number\n minLength?: number\n\n pattern?: string\n }\n }[]\n} & BshObject;\n\nexport type BshSchemasPure = BshObjectPure<BshSchemas>;\nexport type BshSchemaProperty = BshSchemas['properties'][number];\n\nexport type BshTypes = {\n name: string\n label: string\n bshPlugin?: string\n baseType?: string\n schema?: string\n meta?: {\n description?: string\n pattern?: string\n maxLength?: number\n minLength?: number\n max?: number\n min?: number\n }\n} & BshObject;\n\nexport type BshTypesPure = BshObjectPure<BshTypes>;\n\n","import {BshDate, BshObject, BshObjectPure} from '@types';\n\nexport type BshUser = {\n userId: string\n tenantId: string\n email: string\n password?: string\n roles: string[]\n status: 'ACTIVATED' | 'REQUIRED_ACTIVATION' | 'DISABLED' | 'REQUIRED_RESET_PASSWORD'\n profile?: {\n firstName?: string\n lastName?: string\n phone?: string\n picture?: string\n tags?: string[]\n [k: string]: unknown\n }\n} & BshObject;\n\nexport type BshUserInit = {\n email: string\n tenantId?: string\n password?: string\n roles?: string[]\n profile: BshUser['profile']\n}\n\nexport type BshUserPure = BshObjectPure<BshUser>;\n\nexport type BshRole = {\n name: string\n public?: boolean\n admin?: boolean\n description?: string\n bshPlugin?: string;\n} & BshObject;\n\nexport type BshRolePure = BshObjectPure<BshRole>;\n\nexport type BshPolicy = {\n name: string\n description?: string\n principals: {\n type: Uppercase<'user' | 'group' | 'role' | 'apiKey' | 'any'>\n value: string[]\n }[]\n permissions: {\n entity: string[]\n actions: ('READ' | 'WRITE' | 'DELETE' | 'UPDATE' | 'SEARCH' | '*')[]\n allow: boolean\n }[]\n enabled: boolean\n priority?: number\n apiKeyId?: number\n bshPlugin?: string;\n} & BshObject;\n\nexport type BshPolicyPure = BshObjectPure<BshPolicy>;\nexport const PrincipalType = ['user', 'role', 'any', 'apiKey', /*'group'*/] as const;\nexport const PolicyActions = ['*', 'READ', 'WRITE', 'DELETE', 'UPDATE', 'SEARCH'] as const;\n\nexport type BshApiKeysScopes = {\n read: boolean\n write: boolean\n delete: boolean\n update: boolean\n}\n\nexport type BshApiKeysForm = {\n name: string\n description?: string\n duration: number\n type: 'PERSONAL' | 'MACHINE'\n scopes: string[] // Format: [\"EntityName:ACTION\", ...]\n}\n\nexport type BshApiKeys = BshApiKeysForm & {\n id: number\n apiKey: string\n startedAt: BshDate\n expiresAt?: BshDate\n status: 'ACTIVE' | 'REVOKED'\n userId?: string\n} & BshObject;\n\nexport type BshTenant = {\n tenantId: string;\n name: string;\n status: 'Active' | 'Inactive' | 'Blocked';\n description?: string;\n domain?: string;\n email?: string;\n adminId?: string;\n settings?: Record<string, unknown>;\n} & BshObject;\n\nexport type BshTenantPure = BshObjectPure<BshTenant>;\n","import {BshObject} from \"@types\";\n\nexport type BshConfigurations<T extends Record<string, unknown> = Record<string, unknown>> = {\n name: string;\n description: string;\n bshPlugin?: string;\n config?: T;\n} & BshObject\n\nexport type BshSettings = {\n name: string;\n api: {\n response?: {\n showSql?: boolean;\n };\n auth?: {\n enableRegister?: boolean;\n };\n };\n}\n\nexport const defaultSettings: BshSettings = {\n name: 'BshEngine',\n api: {\n response: {\n showSql: true\n },\n auth: {\n enableRegister: false\n }\n }\n}\n\n","import { BshObject, BshConfigurations } from '@types';\n\nexport type StorageProvider = 'cloudinary';\n\nexport type CloudinaryConfig = {\n url: string;\n folder?: string;\n}\n\nexport type StorageConfiguration = BshConfigurations & {\n enabled?: StorageProvider;\n cloudinary: CloudinaryConfig\n}\n\nexport type BshFiles = {\n storageId: string;\n id: string;\n filename: string;\n mediaType: string;\n uri: string;\n secureUri: string;\n bytes: number;\n format: string;\n folder: string;\n width: number;\n height: number;\n tags: string[];\n context: { [key: string]: unknown };\n fileId: string;\n} & BshObject\n\nexport type UploadOptions = {\n tags: string[]\n context: { [key: string]: unknown }\n [key: string]: unknown;\n}\n\nexport type UploadResponse = {\n fileId: string\n publicId: string\n assetId: string\n uri: string\n secureUri: string\n tags: string[]\n context: { [key: string]: unknown }\n}\n\nexport const formatFileSize = (file: BshFiles): string => {\n if (!file?.bytes) return 'Unknown';\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(file.bytes) / Math.log(1024));\n return Math.round(file.bytes / Math.pow(1024, i) * 100) / 100 + ' ' + sizes[i];\n};\n\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/services/entities/index.ts","../src/services/auth/index.ts","../src/services/user/index.ts","../src/services/tenant/index.ts","../src/services/settings/index.ts","../src/services/image/index.ts","../src/services/mailing/index.ts","../src/services/utils/index.ts","../src/services/caching/index.ts","../src/services/api-key/index.ts"],"names":[],"mappings":";;;AAQO,IAAM,gBAAN,MAAiC;AAAA,EAG7B,WAAA,CAA6B,QAAoC,MAAA,EAAiB;AAArD,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAoC,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAFxE,IAAA,IAAA,CAAiB,YAAA,GAAe,eAAA;AAAA,EAGhC;AAAA;AAAA,EAGA,MAAa,SAAiB,MAAA,EAAmF;AAC7G,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAQ;AAAA,MACvB,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA,EAAI,MAAA,CAAO,MAAA,IAAU,IAAA,CAAK,MAAM,CAAA,CAAA,EAAI,MAAA,CAAO,EAAE,CAAA,CAAA;AAAA,MACvE,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,CAAA,SAAA,EAAY,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,SAAA,CAAA;AAAA,MAC7C,MAAA,EAAQ,MAAA,CAAO,MAAA,IAAU,IAAA,CAAK;AAAA,KACjC,CAAA;AAAA,EACL;AAAA;AAAA,EAGA,MAAa,OACT,MAAA,EACmC;AACnC,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAY;AAAA,MAC3B,IAAA,EAAM,GAAG,IAAA,CAAK,YAAY,IAAI,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,CAAA;AAAA,MAC1D,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,CAAA,SAAA,EAAY,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,OAAA,CAAA;AAAA,MAC7C,MAAA,EAAQ,MAAA,CAAO,MAAA,IAAU,IAAA,CAAK;AAAA,KACjC,CAAA;AAAA,EACL;AAAA;AAAA,EAGA,MAAa,WACT,MAAA,EACmC;AACnC,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAY;AAAA,MAC3B,IAAA,EAAM,GAAG,IAAA,CAAK,YAAY,IAAI,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,MAAA,CAAA;AAAA,MAC1D,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,CAAA,SAAA,EAAY,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,WAAA,CAAA;AAAA,MAC7C,MAAA,EAAQ,MAAA,CAAO,MAAA,IAAU,IAAA,CAAK;AAAA,KACjC,CAAA;AAAA,EACL;AAAA;AAAA,EAGA,MAAa,OACT,MAAA,EACmC;AACnC,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAW;AAAA,MAC1B,IAAA,EAAM,GAAG,IAAA,CAAK,YAAY,IAAI,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,CAAA;AAAA,MAC1D,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,CAAA,SAAA,EAAY,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,OAAA,CAAA;AAAA,MAC7C,MAAA,EAAQ,MAAA,CAAO,MAAA,IAAU,IAAA,CAAK;AAAA,KACjC,CAAA;AAAA,EACL;AAAA;AAAA,EAGA,MAAa,WACT,MAAA,EACmC;AACnC,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAW;AAAA,MAC1B,IAAA,EAAM,GAAG,IAAA,CAAK,YAAY,IAAI,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,MAAA,CAAA;AAAA,MAC1D,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,CAAA,SAAA,EAAY,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,WAAA,CAAA;AAAA,MAC7C,MAAA,EAAQ,MAAA,CAAO,MAAA,IAAU,IAAA,CAAK;AAAA,KACjC,CAAA;AAAA,EACL;AAAA;AAAA,EAGA,MAAa,OACT,MAAA,EACmC;AACnC,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAY;AAAA,MAC3B,IAAA,EAAM,GAAG,IAAA,CAAK,YAAY,IAAI,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,OAAA,CAAA;AAAA,MAC1D,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,CAAA,SAAA,EAAY,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,OAAA,CAAA;AAAA,MAC7C,MAAA,EAAQ,MAAA,CAAO,MAAA,IAAU,IAAA,CAAK;AAAA,KACjC,CAAA;AAAA,EACL;AAAA;AAAA,EAGA,MAAa,OACT,MAAA,EACsD;AACtD,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAA+B;AAAA,MAC9C,IAAA,EAAM,GAAG,IAAA,CAAK,YAAY,IAAI,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,OAAA,CAAA;AAAA,MAC1D,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,CAAA,SAAA,EAAY,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,OAAA,CAAA;AAAA,MAC7C,MAAA,EAAQ,MAAA,CAAO,MAAA,IAAU,IAAA,CAAK;AAAA,KACjC,CAAA;AAAA,EACL;AAAA;AAAA,EAGA,MAAa,WACT,MAAA,EACsD;AACtD,IAAA,OAAO,IAAA,CAAK,OAAO,MAAA,CAA6B;AAAA,MAC5C,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA,EAAI,MAAA,CAAO,MAAA,IAAU,IAAA,CAAK,MAAM,CAAA,CAAA,EAAI,MAAA,CAAO,EAAE,CAAA,CAAA;AAAA,MACvE,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,CAAA,SAAA,EAAY,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,WAAA,CAAA;AAAA,MAC7C,MAAA,EAAQ,MAAA,CAAO,MAAA,IAAU,IAAA,CAAK;AAAA,KACjC,CAAA;AAAA,EACL;AAAA;AAAA,EAGA,MAAa,QACT,MAAA,EACgE;AAChE,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAoC;AAAA,MACnD,IAAA,EAAM,GAAG,IAAA,CAAK,YAAY,IAAI,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,QAAA,CAAA;AAAA,MAC1D,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,CAAA,SAAA,EAAY,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,QAAA,CAAA;AAAA,MAC7C,MAAA,EAAQ,MAAA,CAAO,MAAA,IAAU,IAAA,CAAK;AAAA,KACjC,CAAA;AAAA,EACL;AAAA;AAAA,EAGA,MAAa,MACT,MAAA,EACmD;AACnD,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAuB;AAAA,MACtC,IAAA,EAAM,GAAG,IAAA,CAAK,YAAY,IAAI,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,MAAA,CAAA;AAAA,MAC1D,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,CAAA,SAAA,EAAY,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,MAAA,CAAA;AAAA,MAC7C,MAAA,EAAQ,MAAA,CAAO,MAAA,IAAU,IAAA,CAAK;AAAA,KACjC,CAAA;AAAA,EACL;AAAA;AAAA,EAGA,MAAa,cACT,MAAA,EACmC;AACnC,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAY;AAAA,MAC3B,IAAA,EAAM,GAAG,IAAA,CAAK,YAAY,IAAI,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,MAAA,CAAA;AAAA,MAC1D,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,CAAA,SAAA,EAAY,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,cAAA,CAAA;AAAA,MAC7C,MAAA,EAAQ,MAAA,CAAO,MAAA,IAAU,IAAA,CAAK;AAAA,KACjC,CAAA;AAAA,EACL;AAAA;AAAA,EAGA,MAAa,OACT,MAAA,EAIa;AACb,IAAA,MAAM,cAAc,CAAA,EAAG,MAAA,CAAO,MAAA,IAAU,IAAA,CAAK,MAAM,CAAA,QAAA,EAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,aAAY,CAAE,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAC,CAAA,CAAA;AACpG,IAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,QAAA,IAAY,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,MAAA,CAAO,MAAA,IAAU,OAAA,GAAU,MAAA,GAAS,MAAA,CAAO,MAAM,CAAA,CAAA;AAE7G,IAAA,MAAM,IAAA,CAAK,OAAO,QAAA,CAAa;AAAA,MAC3B,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA,EAAI,MAAA,CAAO,MAAA,IAAU,IAAA,CAAK,MAAM,CAAA,eAAA,EAAkB,MAAA,CAAO,MAAM,aAAa,cAAc,CAAA,CAAA;AAAA,MACpH,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,YAAY,EAAE,UAAA,EAAY,OAAO,UAAA,EAAY,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,MACrE,GAAA,EAAK,CAAA,SAAA,EAAY,MAAA,CAAO,MAAA,IAAU,KAAK,MAAM,CAAA,OAAA,CAAA;AAAA,MAC7C,MAAA,EAAQ,MAAA,CAAO,MAAA,IAAU,IAAA,CAAK;AAAA,KACjC,CAAA;AAAA,EACL;AACJ;;;ACvPO,IAAM,cAAN,MAAkB;AAAA,EAGd,YAA6B,MAAA,EAAmB;AAAnB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAFpC,IAAA,IAAA,CAAiB,YAAA,GAAe,WAAA;AAAA,EAGhC;AAAA,EAEA,MAAa,MAAM,MAAA,EAA6G;AAC5H,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAiB;AAAA,MAChC,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,MAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,OAAO,MAAA,EAA+E;AAC/F,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAc;AAAA,MAC7B,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,OAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,SAAS,MAAA,EAAuG;AACzH,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAc;AAAA,MAC7B,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,SAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,eAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,aAAa,MAAA,EAAqH;AAC3I,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAiB;AAAA,MAChC,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,QAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,eACT,MAAA,EAA6G;AAC7G,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAc;AAAA,MAC7B,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,gBAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,cAAc,MAAA,EAAgJ;AACvK,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAc;AAAA,MAC7B,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,eAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,gBAAgB,MAAA,EAA2H;AACpJ,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAc;AAAA,MAC7B,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,iBAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,sBAAsB,MAAA,EAA6G;AAC5I,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAc;AAAA,MAC7B,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,wBAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,4BAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AACJ;;;ACrIO,IAAM,mBAAN,MAAuB;AAAA,EAGnB,YAA6B,MAAA,EAAmB;AAAnB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAFpC,IAAA,IAAA,CAAiB,YAAA,GAAe,kBAAA;AAAA,EAGhC;AAAA,EAEA,MAAa,cAA2B,MAAA,EAAyG;AAC7I,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAO;AAAA,MACtB,MAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,iBAAA,EAAoB,OAAO,KAAK,CAAA,CAAA;AAAA,MAC1D,OAAA,EAAS,EAAE,YAAA,EAAc,MAAA,EAAO;AAAA,MAChC,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,2BAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,gBAA6B,MAAA,EAAyG;AAC/I,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAO;AAAA,MACtB,MAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,kBAAA,EAAqB,OAAO,KAAK,CAAA,CAAA;AAAA,MAC3D,OAAA,EAAS,EAAE,YAAA,EAAc,MAAA,EAAO;AAAA,MAChC,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,6BAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,qBAAkC,MAAA,EAAyG;AACpJ,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAO;AAAA,MACtB,MAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,yBAAA,EAA4B,OAAO,KAAK,CAAA,CAAA;AAAA,MAClE,OAAA,EAAS,EAAE,YAAA,EAAc,MAAA,EAAO;AAAA,MAChC,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,kCAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AACJ;AAEO,IAAM,cAAN,MAAkB;AAAA,EAGd,YAA6B,MAAA,EAAmB;AAAnB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAFpC,IAAA,IAAA,CAAiB,YAAA,GAAe,YAAA;AAAA,EAGhC;AAAA,EAEA,MAAa,GAAG,MAAA,EAAwF;AACpG,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAa;AAAA,MAC5B,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,GAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,UAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,KAAkB,MAAA,EAA4H;AACvJ,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAQ;AAAA,MACvB,IAAA,EAAM,GAAG,IAAA,CAAK,YAAY,0BAA0B,MAAA,CAAO,gBAAA,KAAqB,IAAA,GAAO,MAAA,GAAS,OAAO,CAAA,CAAA;AAAA,MACvG,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,YAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,OAAO,MAAA,EAAuJ;AACvK,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAA0B;AAAA,MACzC,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,OAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,cAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,cAA2B,MAAA,EAA2G;AAC/I,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAO;AAAA,MACtB,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,QAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,qBAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,cAA2B,MAAA,EAAoF;AACxH,IAAA,MAAM,QAAA,GAAW,IAAI,QAAA,EAAS;AAC9B,IAAA,QAAA,CAAS,GAAA,CAAI,SAAA,EAAW,MAAA,CAAO,OAAO,CAAA;AAEtC,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAQ;AAAA,MACvB,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,QAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,IAAA,EAAM;AAAA,OACV;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,qBAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,eAAe,MAAA,EAAoK;AAC5L,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAyB;AAAA,MACxC,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,SAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,sBAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA;AAAA,EAGA,IAAW,KAAA,GAAQ;AACf,IAAA,OAAO,IAAI,gBAAA,CAAiB,IAAA,CAAK,MAAM,CAAA;AAAA,EAC3C;AAAA;AAAA,EAGA,MAAa,QAAqB,MAAA,EAA6F;AAC3H,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAO;AAAA,MACtB,MAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA,EAAI,OAAO,EAAE,CAAA,CAAA;AAAA,MACvC,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,eAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,OAAiC,MAAA,EAA4E;AACtH,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAW;AAAA,MAC1B,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,OAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,cAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,KAAK,MAAA,EAO4B;AAC1C,IAAA,MAAM,eAAA,GAAkB,IAAI,eAAA,EAAgB;AAC5C,IAAA,IAAI,MAAA,CAAO,aAAa,IAAA,EAAM,eAAA,CAAgB,OAAO,MAAA,EAAQ,MAAA,CAAO,YAAY,IAAI,CAAA;AACpF,IAAA,IAAI,MAAA,CAAO,aAAa,IAAA,EAAM,eAAA,CAAgB,OAAO,MAAA,EAAQ,MAAA,CAAO,YAAY,IAAI,CAAA;AACpF,IAAA,IAAI,MAAA,CAAO,aAAa,IAAA,EAAM,eAAA,CAAgB,OAAO,MAAA,EAAQ,MAAA,CAAO,YAAY,IAAI,CAAA;AACpF,IAAA,IAAI,MAAA,CAAO,aAAa,MAAA,EAAQ,eAAA,CAAgB,OAAO,QAAA,EAAU,MAAA,CAAO,YAAY,MAAM,CAAA;AAE1F,IAAA,MAAM,WAAA,GAAc,gBAAgB,QAAA,EAAS;AAC7C,IAAA,MAAM,QAAA,GAAW,WAAA,GAAc,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,GAAK,EAAA;AAEnD,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAa;AAAA,MAC5B,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,GAAG,QAAQ,CAAA,CAAA;AAAA,MACrC,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,YAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,OAAoB,MAAA,EAAgG;AAC7H,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAO;AAAA,MACtB,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,cAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,WAAwB,MAAA,EAA6F;AAC9H,IAAA,OAAO,IAAA,CAAK,OAAO,MAAA,CAAU;AAAA,MACzB,MAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA,EAAI,OAAO,EAAE,CAAA,CAAA;AAAA,MACvC,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,kBAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,MACT,MAAA,EACmD;AACnD,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAuB;AAAA,MACtC,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,MAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,aAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,cAAc,MAAA,EAAkH;AACzI,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAwB;AAAA,MACvC,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,MAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,qBAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AACJ;;;AC3QO,IAAM,gBAAN,MAAoB;AAAA,EAGhB,YAA6B,MAAA,EAAmB;AAAnB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAFpC,IAAA,IAAA,CAAiB,YAAA,GAAe,cAAA;AAAA,EAGhC;AAAA,EAEA,MAAa,OAAyC,MAAA,EAAiF;AACnI,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAQ;AAAA,MACvB,MAAM,IAAA,CAAK,YAAA;AAAA,MACX,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,gBAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,YAA2B,MAAA,EAAsI;AAC1K,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAO;AAAA,MACtB,IAAA,EAAM,GAAG,IAAA,CAAK,YAAY,IAAI,MAAA,CAAO,EAAE,CAAA,OAAA,EAAU,MAAA,CAAO,OAAO,CAAA,CAAA;AAAA,MAC/D,OAAA,EAAS;AAAA,QACL,YAAA,EAAc;AAAA,OAClB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,qBAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,SAAwB,MAAA,EAAoG;AACrI,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAQ;AAAA,MACvB,MAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA,EAAI,OAAO,EAAE,CAAA,SAAA,CAAA;AAAA,MACvC,OAAA,EAAS;AAAA,QACL,YAAA,EAAc;AAAA,OAClB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,kBAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,WAA0B,MAAA,EAAoG;AACvI,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAQ;AAAA,MACvB,MAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA,EAAI,OAAO,EAAE,CAAA,WAAA,CAAA;AAAA,MACvC,OAAA,EAAS;AAAA,QACL,YAAA,EAAc;AAAA,OAClB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,oBAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,MAAqB,MAAA,EAAoG;AAClI,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAQ;AAAA,MACvB,MAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA,EAAI,OAAO,EAAE,CAAA,MAAA,CAAA;AAAA,MACvC,OAAA,EAAS;AAAA,QACL,YAAA,EAAc;AAAA,OAClB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,eAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,QAAuB,MAAA,EAAoG;AACpI,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAO;AAAA,MACtB,MAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA,EAAI,OAAO,EAAE,CAAA,CAAA;AAAA,MACvC,OAAA,EAAS;AAAA,QACL,YAAA,EAAc;AAAA,OAClB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,iBAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,OAAsB,MAAA,EAAoF;AACnH,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAQ;AAAA,MACvB,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,OAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,gBAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,KAAoB,MAAA,EAA+I;AAC5K,IAAA,MAAM,cAAsC,EAAC;AAC7C,IAAA,IAAI,OAAO,IAAA,KAAS,MAAA,cAAuB,IAAA,GAAO,MAAA,CAAO,KAAK,QAAA,EAAS;AACvE,IAAA,IAAI,OAAO,IAAA,KAAS,MAAA,cAAuB,IAAA,GAAO,MAAA,CAAO,KAAK,QAAA,EAAS;AACvE,IAAA,IAAI,MAAA,CAAO,IAAA,KAAS,MAAA,EAAW,WAAA,CAAY,OAAO,MAAA,CAAO,IAAA;AACzD,IAAA,IAAI,MAAA,CAAO,MAAA,KAAW,MAAA,EAAW,WAAA,CAAY,SAAS,MAAA,CAAO,MAAA;AAE7D,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAO;AAAA,MACtB,MAAM,IAAA,CAAK,YAAA;AAAA,MACX,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd;AAAA,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,cAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,OAAsB,MAAA,EAA0F;AACzH,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAO;AAAA,MACtB,MAAM,IAAA,CAAK,YAAA;AAAA,MACX,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,gBAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,OAAgB,MAAA,EAAoG;AAC7H,IAAA,OAAO,IAAA,CAAK,OAAO,MAAA,CAAU;AAAA,MACzB,MAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA,EAAI,OAAO,EAAE,CAAA,CAAA;AAAA,MACvC,OAAA,EAAS;AAAA,QACL,YAAA,EAAc;AAAA,OAClB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,gBAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,MAA6B,MAAA,EAA4E;AAClH,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAO;AAAA,MACtB,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,MAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc;AAAA,OAClB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,eAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,cAAqC,MAAA,EAAoF;AAClI,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAQ;AAAA,MACvB,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,MAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,uBAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AACJ;;;AChLO,IAAM,kBAAN,MAAsB;AAAA,EAGlB,YAA6B,MAAA,EAAmB;AAAnB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAFpC,IAAA,IAAA,CAAiB,YAAA,GAAe,eAAA;AAAA,EAGhC;AAAA,EAEA,MAAa,KAAK,MAAA,EAAgG;AAC9G,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAiB;AAAA,MAChC,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,eAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,OAAO,MAAA,EAA+G;AAC/H,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAiB;AAAA,MAChC,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,EAAE,GAAG,MAAA,CAAO,OAAA,EAAS,MAAM,WAAA,EAAY;AAAA,QAC7C,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,iBAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AACJ;;;ACnCO,IAAM,eAAN,MAAmB;AAAA,EAGf,YAA6B,MAAA,EAAmB;AAAnB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAFpC,IAAA,IAAA,CAAiB,YAAA,GAAe,aAAA;AAAA,EAGhC;AAAA,EAEA,MAAa,OAAO,MAAA,EAKkD;AAClE,IAAA,MAAM,QAAA,GAAW,IAAI,QAAA,EAAS;AAC9B,IAAA,QAAA,CAAS,GAAA,CAAI,MAAA,EAAQ,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AACxC,IAAA,IAAI,MAAA,CAAO,QAAQ,MAAA,EAAQ,QAAA,CAAS,IAAI,QAAA,EAAU,MAAA,CAAO,QAAQ,MAAM,CAAA;AACvE,IAAA,IAAI,MAAA,CAAO,QAAQ,QAAA,EAAU,QAAA,CAAS,IAAI,UAAA,EAAY,MAAA,CAAO,QAAQ,QAAQ,CAAA;AAC7E,IAAA,IAAI,MAAA,CAAO,OAAA,CAAQ,OAAA,EAAS,QAAA,CAAS,GAAA,CAAI,SAAA,EAAW,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAC,CAAA;AAE1F,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAqB;AAAA,MACpC,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,OAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,IAAA,EAAM;AAAA,OACV;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,cAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AACJ;;;AC9BO,IAAM,iBAAN,MAAqB;AAAA,EAGjB,YAA6B,MAAA,EAAmB;AAAnB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAFpC,IAAA,IAAA,CAAiB,YAAA,GAAe,cAAA;AAAA,EAGhC;AAAA,EAEA,MAAa,KAAK,MAAA,EAAwH;AACtI,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAqB;AAAA,MACpC,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,KAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK,cAAA;AAAA,MACL,QAAQ,YAAA,CAAa;AAAA,KACxB,CAAA;AAAA,EACL;AACJ;;;ACtBO,IAAM,kBAAN,MAAsB;AAAA,EAGlB,YAA6B,MAAA,EAAmB;AAAnB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAFpC,IAAA,IAAA,CAAiB,YAAA,GAAe,YAAA;AAAA,EAGhC;AAAA,EAEA,MAAa,iBAAiB,MAAA,EAA+G;AACzI,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAwB;AAAA,MACvC,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,mBAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,YAAY,EAAE,SAAA,EAAW,QAAQ,SAAA,EAAW,OAAA,EAAS,QAAQ,OAAA,EAAQ;AAAA,MACrE,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,eAAe,MAAA,EAA2G;AACnI,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAsB;AAAA,MACrC,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,iBAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,YAAY,EAAE,SAAA,EAAW,QAAQ,SAAA,EAAW,OAAA,EAAS,QAAQ,OAAA,EAAQ;AAAA,MACrE,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,QAAQ,MAAA,EAAuH;AACxI,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAkB;AAAA,MACjC,MAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,SAAA,EAAY,MAAA,EAAQ,UAAU,KAAK,CAAA,CAAA;AAAA,MAC7D,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,YAAY,EAAE,SAAA,EAAW,QAAQ,SAAA,EAAW,OAAA,EAAS,QAAQ,OAAA,EAAQ;AAAA,MACrE,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,QAAQ,MAAA,EAA6G;AAC9H,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAuB;AAAA,MACtC,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,QAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,YAAY,EAAE,SAAA,EAAW,QAAQ,SAAA,EAAW,OAAA,EAAS,QAAQ,OAAA,EAAQ;AAAA,MACrE,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AACJ;;;AClDO,IAAM,iBAAN,MAAqB;AAAA,EAGjB,YAA6B,MAAA,EAAmB;AAAnB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAFpC,IAAA,IAAA,CAAiB,YAAA,GAAe,cAAA;AAAA,EAGhC;AAAA,EAEA,MAAa,SAAS,MAAA,EAA6G;AAC/H,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAe;AAAA,MAC9B,MAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA,EAAI,OAAO,EAAE,CAAA,CAAA;AAAA,MACvC,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,OAAO,MAAA,EAAyG;AACzH,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAgB;AAAA,MAC/B,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,OAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,MAAM,MAAA,EAAsF;AACrG,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAY;AAAA,MAC3B,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,MAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,UAAU,MAAA,EAAiI;AACpJ,IAAA,OAAO,IAAA,CAAK,OAAO,MAAA,CAA4B;AAAA,MAC3C,MAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA,EAAI,OAAO,EAAE,CAAA,CAAA;AAAA,MACvC,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,SAAS,MAAA,EAAgH;AAClI,IAAA,OAAO,IAAA,CAAK,OAAO,MAAA,CAA4B;AAAA,MAC3C,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,IAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AACJ;;;ACxEO,IAAM,gBAAN,MAAoB;AAAA,EAGhB,YAA6B,MAAA,EAAmB;AAAnB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAFpC,IAAA,IAAA,CAAiB,YAAA,GAAe,eAAA;AAAA,EAGhC;AAAA,EAEA,MAAa,OAAO,MAAA,EAAgH;AAChI,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAiB;AAAA,MAChC,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,QAAQ,YAAA,CAAa,UAAA;AAAA,MACrB,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,QAAQ,MAAA,EAA+G;AAChI,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAgB;AAAA,MAC/B,MAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA,EAAI,OAAO,EAAE,CAAA,CAAA;AAAA,MACvC,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,QAAQ,YAAA,CAAa,UAAA;AAAA,MACrB,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,OAAO,MAAA,EAA+G;AAC/H,IAAA,OAAO,IAAA,CAAK,OAAO,MAAA,CAAmB;AAAA,MAClC,MAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA,EAAI,OAAO,EAAE,CAAA,OAAA,CAAA;AAAA,MACvC,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,QAAQ,YAAA,CAAa,UAAA;AAAA,MACrB,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,OAAO,MAAA,EAA+G;AAC/H,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAiB;AAAA,MAChC,MAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA,EAAI,OAAO,EAAE,CAAA,OAAA,CAAA;AAAA,MACvC,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,QAAQ,YAAA,CAAa,UAAA;AAAA,MACrB,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA;AAAA,EAGA,MAAa,QAAQ,MAAA,EAA+G;AAChI,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAgB;AAAA,MAC/B,MAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA,EAAI,OAAO,EAAE,CAAA,CAAA;AAAA,MACvC,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,QAAQ,YAAA,CAAa,UAAA;AAAA,MACrB,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,OAAO,MAAA,EAAuG;AACvH,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAiB;AAAA,MAChC,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,OAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,QAAQ,YAAA,CAAa,UAAA;AAAA,MACrB,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,KAAK,MAAA,EAO+B;AAC7C,IAAA,MAAM,eAAA,GAAkB,IAAI,eAAA,EAAgB;AAC5C,IAAA,IAAI,MAAA,CAAO,aAAa,IAAA,EAAM,eAAA,CAAgB,OAAO,MAAA,EAAQ,MAAA,CAAO,YAAY,IAAI,CAAA;AACpF,IAAA,IAAI,MAAA,CAAO,aAAa,IAAA,EAAM,eAAA,CAAgB,OAAO,MAAA,EAAQ,MAAA,CAAO,YAAY,IAAI,CAAA;AACpF,IAAA,IAAI,MAAA,CAAO,aAAa,IAAA,EAAM,eAAA,CAAgB,OAAO,MAAA,EAAQ,MAAA,CAAO,YAAY,IAAI,CAAA;AACpF,IAAA,IAAI,MAAA,CAAO,aAAa,MAAA,EAAQ,eAAA,CAAgB,OAAO,QAAA,EAAU,MAAA,CAAO,YAAY,MAAM,CAAA;AAE1F,IAAA,MAAM,WAAA,GAAc,gBAAgB,QAAA,EAAS;AAC7C,IAAA,MAAM,QAAA,GAAW,WAAA,GAAc,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,GAAK,EAAA;AAEnD,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAgB;AAAA,MAC/B,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,GAAG,QAAQ,CAAA,CAAA;AAAA,MACrC,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,QAAQ,YAAA,CAAa,UAAA;AAAA,MACrB,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,WAAW,MAAA,EAA+G;AACnI,IAAA,OAAO,IAAA,CAAK,OAAO,MAAA,CAAmB;AAAA,MAClC,MAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,CAAA,EAAI,OAAO,EAAE,CAAA,CAAA;AAAA,MACvC,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,QAAQ,YAAA,CAAa,UAAA;AAAA,MACrB,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,MACT,MAAA,EACiD;AACjD,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAqB;AAAA,MACpC,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,MAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe;AAAA,OACnB;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,QAAQ,YAAA,CAAa,UAAA;AAAA,MACrB,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAa,cAAc,MAAA,EAAiH;AACxI,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAsB;AAAA,MACrC,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,YAAY,CAAA,MAAA,CAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACL,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,MAAA;AAAA,QACf,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACL,cAAA,EAAgB;AAAA;AACpB,OACJ;AAAA,MACA,UAAA,EAAY,MAAA;AAAA,MACZ,QAAQ,YAAA,CAAa,UAAA;AAAA,MACrB,GAAA,EAAK;AAAA,KACR,CAAA;AAAA,EACL;AACJ","file":"chunk-C6W32LLO.js","sourcesContent":["import { BshClient } from \"@src/client/bsh-client\";\nimport { BshResponse, BshSearch } from \"@types\";\nimport { BshCallbackParams, BshCallbackParamsWithPayload } from \"@src/services\";\n\nexport type EntityFnParams<T = unknown, R = T> = BshCallbackParams<T, R> & { entity?: string }\nexport type EntityFnParamsWithPayload<T = unknown, R = T> = BshCallbackParamsWithPayload<T, R> & { entity?: string }\nexport type EntitySearchFnParams<T, R = T> = EntityFnParamsWithPayload<BshSearch<T>, R>\n\nexport class EntityService<T = unknown> {\n private readonly baseEndpoint = '/api/entities';\n\n public constructor(private readonly client: BshClient, private readonly entity?: string) {\n }\n\n // Get a single entity by ID\n public async findById<TT = T>(params: EntityFnParams<TT> & { id: string }): Promise<BshResponse<TT> | undefined> {\n return this.client.get<TT>({\n path: `${this.baseEndpoint}/${params.entity || this.entity}/${params.id}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: `entities.${params.entity || this.entity}.findById`,\n entity: params.entity || this.entity,\n });\n }\n\n // Create a new entity\n public async create<TT = T, R = TT>(\n params: EntityFnParamsWithPayload<TT, R>\n ): Promise<BshResponse<R> | undefined> {\n return this.client.post<TT, R>({\n path: `${this.baseEndpoint}/${params.entity || this.entity}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: `entities.${params.entity || this.entity}.create`,\n entity: params.entity || this.entity,\n });\n }\n\n // Create multiple entities in batch\n public async createMany<TT = T, R = TT>(\n params: EntityFnParamsWithPayload<TT[], R>\n ): Promise<BshResponse<R> | undefined> {\n return this.client.post<TT, R>({\n path: `${this.baseEndpoint}/${params.entity || this.entity}/batch`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: `entities.${params.entity || this.entity}.createMany`,\n entity: params.entity || this.entity,\n });\n }\n\n // Update an existing entity\n public async update<TT = T, R = TT>(\n params: EntityFnParamsWithPayload<TT, R>\n ): Promise<BshResponse<R> | undefined> {\n return this.client.put<TT, R>({\n path: `${this.baseEndpoint}/${params.entity || this.entity}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: `entities.${params.entity || this.entity}.update`,\n entity: params.entity || this.entity,\n });\n }\n\n // Update multiple entities in batch\n public async updateMany<TT = T, R = TT>(\n params: EntityFnParamsWithPayload<TT[], R>\n ): Promise<BshResponse<R> | undefined> {\n return this.client.put<TT, R>({\n path: `${this.baseEndpoint}/${params.entity || this.entity}/batch`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: `entities.${params.entity || this.entity}.updateMany`,\n entity: params.entity || this.entity,\n });\n }\n\n // Search for entities\n public async search<TT extends T = T, R = TT>(\n params: EntitySearchFnParams<TT, R>\n ): Promise<BshResponse<R> | undefined> {\n return this.client.post<TT, R>({\n path: `${this.baseEndpoint}/${params.entity || this.entity}/search`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: `entities.${params.entity || this.entity}.search`,\n entity: params.entity || this.entity,\n });\n }\n\n // Delete entities by search criteria\n public async delete<TT = T>(\n params: EntitySearchFnParams<TT, { effected: number }>\n ): Promise<BshResponse<{ effected: number }> | undefined> {\n return this.client.post<TT, { effected: number }>({\n path: `${this.baseEndpoint}/${params.entity || this.entity}/delete`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: `entities.${params.entity || this.entity}.delete`,\n entity: params.entity || this.entity,\n });\n }\n\n // Delete a single entity by ID\n public async deleteById<TT = T>(\n params: EntityFnParams<TT, { effected: number }> & { id: string }\n ): Promise<BshResponse<{ effected: number }> | undefined> {\n return this.client.delete<{ effected: number }>({\n path: `${this.baseEndpoint}/${params.entity || this.entity}/${params.id}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: `entities.${params.entity || this.entity}.deleteById`,\n entity: params.entity || this.entity,\n });\n }\n\n // Get entity columns\n public async columns(\n params: EntityFnParams<unknown, { name: string; type: string }>\n ): Promise<BshResponse<{ name: string; type: string }> | undefined> {\n return this.client.get<{ name: string; type: string }>({\n path: `${this.baseEndpoint}/${params.entity || this.entity}/columns`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: `entities.${params.entity || this.entity}.columns`,\n entity: params.entity || this.entity,\n });\n }\n\n // Count entities\n public async count(\n params: EntityFnParams<unknown, { count: number }>\n ): Promise<BshResponse<{ count: number }> | undefined> {\n return this.client.get<{ count: number }>({\n path: `${this.baseEndpoint}/${params.entity || this.entity}/count`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: `entities.${params.entity || this.entity}.count`,\n entity: params.entity || this.entity,\n });\n }\n\n // Count entities with search criteria\n public async countFiltered<TT extends T = T, R = TT>(\n params: EntitySearchFnParams<TT, R>\n ): Promise<BshResponse<R> | undefined> {\n return this.client.post<TT, R>({\n path: `${this.baseEndpoint}/${params.entity || this.entity}/count`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: `entities.${params.entity || this.entity}.countBySearch`,\n entity: params.entity || this.entity,\n });\n }\n\n // Export entities\n public async export<TT = T>(\n params: EntityFnParamsWithPayload<BshSearch<TT>, Blob> & {\n format: 'csv' | 'json' | 'excel',\n filename?: string,\n }\n ): Promise<void> {\n const defaultName = `${params.entity || this.entity}_export_${new Date().toISOString().split('T')[0]}`;\n const exportFilename = params.filename || `${defaultName}.${params.format == 'excel' ? 'xlsx' : params.format}`;\n\n await this.client.download<TT>({\n path: `${this.baseEndpoint}/${params.entity || this.entity}/export?format=${params.format}&filename=${exportFilename}`,\n options: {\n responseType: 'blob',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: { onDownload: params.onDownload, onError: params.onError },\n api: `entities.${params.entity || this.entity}.export`,\n entity: params.entity || this.entity,\n });\n }\n}\n","\nimport { BshClient } from \"@src/client/bsh-client\";\nimport { BshResponse, BshUser, BshUserInit, LoginParams, AuthTokens } from \"@types\";\nimport { BshCallbackParams, BshCallbackParamsWithPayload } from \"@src/services\";\nimport { CoreEntities } from \"@src/types/core\";\n\nexport class AuthService {\n private readonly baseEndpoint = '/api/auth';\n\n public constructor(private readonly client: BshClient) {\n }\n\n public async login(params: BshCallbackParamsWithPayload<LoginParams, AuthTokens>): Promise<BshResponse<AuthTokens> | undefined> {\n return this.client.post<AuthTokens>({\n path: `${this.baseEndpoint}/login`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'auth.login',\n });\n }\n\n public async logout(params: BshCallbackParams<unknown>): Promise<BshResponse<unknown> | undefined> {\n return this.client.post<unknown>({\n path: `${this.baseEndpoint}/logout`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n api: 'auth.logout',\n });\n }\n\n public async register(params: BshCallbackParamsWithPayload<BshUserInit, BshUser>): Promise<BshResponse<BshUser> | undefined> {\n return this.client.post<BshUser>({\n path: `${this.baseEndpoint}/register`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'auth.register',\n entity: CoreEntities.BshUsers,\n });\n }\n\n public async refreshToken(params: BshCallbackParamsWithPayload<{ refresh: string }, AuthTokens>): Promise<BshResponse<AuthTokens> | undefined> {\n return this.client.post<AuthTokens>({\n path: `${this.baseEndpoint}/refresh`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'auth.refreshToken',\n });\n }\n\n public async forgetPassword(\n params: BshCallbackParamsWithPayload<{ email: string }, unknown>): Promise<BshResponse<unknown> | undefined> {\n return this.client.post<unknown>({\n path: `${this.baseEndpoint}/forget-password`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'auth.forgetPassword',\n });\n }\n\n public async resetPassword(params: BshCallbackParamsWithPayload<{ email: string, code: string, newPassword: string }, unknown>): Promise<BshResponse<unknown> | undefined> {\n return this.client.post<unknown>({\n path: `${this.baseEndpoint}/reset-password`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'auth.resetPassword',\n });\n }\n\n public async activateAccount(params: BshCallbackParamsWithPayload<{ email: string, code: string }, unknown>): Promise<BshResponse<unknown> | undefined> {\n return this.client.post<unknown>({\n path: `${this.baseEndpoint}/activate-account`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'auth.activateAccount',\n });\n }\n\n public async resendActivationEmail(params: BshCallbackParamsWithPayload<{ email: string }, unknown>): Promise<BshResponse<unknown> | undefined> {\n return this.client.post<unknown>({\n path: `${this.baseEndpoint}/resend-activation-email`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'auth.resendActivationEmail',\n entity: CoreEntities.BshUsers,\n });\n }\n}\n","import { BshClient } from \"@src/client/bsh-client\";\nimport { BshResponse, BshUser, BshUserInit, BshSearch } from \"@types\";\nimport { BshCallbackParams, BshCallbackParamsWithPayload, BshSearchCallbackParams } from \"@src/services\";\nimport { CoreEntities } from \"@src/types/core\";\n\nexport class AdminUserService {\n private readonly baseEndpoint = '/api/users/admin';\n\n public constructor(private readonly client: BshClient) {\n }\n\n public async resetPassword<T = BshUser>(params: BshCallbackParams<Partial<BshUser>, T> & { email: string }): Promise<BshResponse<T> | undefined> {\n return this.client.put<T>({\n path: `${this.baseEndpoint}/forget-password/${params.email}`,\n options: { responseType: 'json' },\n bshOptions: params,\n api: 'users.admin.resetPassword',\n entity: CoreEntities.BshUsers,\n });\n }\n\n public async activateAccount<T = BshUser>(params: BshCallbackParams<Partial<BshUser>, T> & { email: string }): Promise<BshResponse<T> | undefined> {\n return this.client.put<T>({\n path: `${this.baseEndpoint}/activate-account/${params.email}`,\n options: { responseType: 'json' },\n bshOptions: params,\n api: 'users.admin.activateAccount',\n entity: CoreEntities.BshUsers,\n });\n }\n\n public async resendActivationCode<T = BshUser>(params: BshCallbackParams<Partial<BshUser>, T> & { email: string }): Promise<BshResponse<T> | undefined> {\n return this.client.put<T>({\n path: `${this.baseEndpoint}/resend-activation-email/${params.email}`,\n options: { responseType: 'json' },\n bshOptions: params,\n api: 'users.admin.resendActivationCode',\n entity: CoreEntities.BshUsers,\n });\n }\n}\n\nexport class UserService {\n private readonly baseEndpoint = '/api/users';\n\n public constructor(private readonly client: BshClient) {\n }\n\n public async me(params: BshCallbackParams<unknown, BshUser>): Promise<BshResponse<BshUser> | undefined> {\n return this.client.get<BshUser>({\n path: `${this.baseEndpoint}/me`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n api: 'users.me',\n entity: CoreEntities.BshUsers,\n });\n }\n\n public async init<T = BshUser>(params: BshCallbackParamsWithPayload<BshUserInit, T> & { generatePassword?: boolean }): Promise<BshResponse<T> | undefined> {\n return this.client.post<T>({\n path: `${this.baseEndpoint}/init?generatePassword=${params.generatePassword === true ? 'true' : 'false'}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'users.init',\n entity: CoreEntities.BshUsers,\n });\n }\n\n public async invite(params: BshCallbackParamsWithPayload<{ email: string, roles?: string[] }, { message: string }>): Promise<BshResponse<{ message: string }> | undefined> {\n return this.client.post<{ message: string }>({\n path: `${this.baseEndpoint}/invite`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'users.invite',\n entity: CoreEntities.BshUsers,\n });\n }\n\n public async updateProfile<T = BshUser>(params: BshCallbackParamsWithPayload<Partial<BshUser['profile']>, T>): Promise<BshResponse<T> | undefined> {\n return this.client.put<T>({\n path: `${this.baseEndpoint}/profile`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'users.updateProfile',\n entity: CoreEntities.BshUsers,\n });\n }\n\n public async updatePicture<T = BshUser>(params: BshCallbackParamsWithPayload<File, T>): Promise<BshResponse<T> | undefined> {\n const formData = new FormData();\n formData.set('picture', params.payload);\n\n return this.client.post<T>({\n path: `${this.baseEndpoint}/picture`,\n options: {\n responseType: 'json',\n requestFormat: 'form',\n body: formData,\n },\n bshOptions: params,\n api: 'users.updatePicture',\n entity: CoreEntities.BshUsers,\n });\n }\n\n public async updatePassword(params: BshCallbackParamsWithPayload<{ currentPassword: string; newPassword: string }, { message: string }>): Promise<BshResponse<{ message: string }> | undefined> {\n return this.client.put<{ message: string }>({\n path: `${this.baseEndpoint}/password`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'users.updatePassword',\n entity: CoreEntities.BshUsers,\n });\n }\n\n // Admin\n public get admin() {\n return new AdminUserService(this.client);\n }\n\n // CRUD\n public async getById<T = BshUser>(params: BshCallbackParams<unknown, T> & { id: string }): Promise<BshResponse<T> | undefined> {\n return this.client.get<T>({\n path: `${this.baseEndpoint}/${params.id}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n api: 'users.getById',\n entity: CoreEntities.BshUsers,\n });\n }\n\n public async search<T = BshUser, R = BshUser>(params: BshSearchCallbackParams<T, R>): Promise<BshResponse<R> | undefined> {\n return this.client.post<T, R>({\n path: `${this.baseEndpoint}/search`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'users.search',\n entity: CoreEntities.BshUsers,\n });\n }\n\n public async list(params: BshCallbackParams<unknown, BshUser> & {\n queryParams?: {\n page?: string;\n size?: string;\n sort?: string;\n filter?: string;\n }\n }): Promise<BshResponse<BshUser> | undefined> {\n const urlSearchParams = new URLSearchParams();\n if (params.queryParams?.page) urlSearchParams.append('page', params.queryParams.page);\n if (params.queryParams?.size) urlSearchParams.append('size', params.queryParams.size);\n if (params.queryParams?.sort) urlSearchParams.append('sort', params.queryParams.sort);\n if (params.queryParams?.filter) urlSearchParams.append('filter', params.queryParams.filter);\n\n const queryString = urlSearchParams.toString();\n const endpoint = queryString ? `?${queryString}` : '';\n\n return this.client.get<BshUser>({\n path: `${this.baseEndpoint}${endpoint}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n api: 'users.list',\n entity: CoreEntities.BshUsers,\n });\n }\n\n public async update<T = BshUser>(params: BshCallbackParamsWithPayload<Partial<BshUser>, T>): Promise<BshResponse<T> | undefined> {\n return this.client.put<T>({\n path: `${this.baseEndpoint}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'users.update',\n entity: CoreEntities.BshUsers,\n });\n }\n\n public async deleteById<T = BshUser>(params: BshCallbackParams<unknown, T> & { id: string }): Promise<BshResponse<T> | undefined> {\n return this.client.delete<T>({\n path: `${this.baseEndpoint}/${params.id}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n api: 'users.deleteById',\n entity: CoreEntities.BshUsers,\n });\n }\n\n public async count(\n params: BshCallbackParams<unknown, { count: number }>\n ): Promise<BshResponse<{ count: number }> | undefined> {\n return this.client.get<{ count: number }>({\n path: `${this.baseEndpoint}/count`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n api: 'users.count',\n entity: CoreEntities.BshUsers,\n });\n }\n\n public async countFiltered(params: BshSearchCallbackParams<BshUser, { count: number }>): Promise<BshResponse<{ count: number }> | undefined> {\n return this.client.post<{ count: number }>({\n path: `${this.baseEndpoint}/count`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'users.countFiltered',\n entity: CoreEntities.BshUsers,\n });\n }\n}\n","import { BshClient } from \"@src/client/bsh-client\";\nimport { BshResponse, BshTenant, BshTenantPure, BshSearch } from \"@types\";\nimport { BshCallbackParams, BshCallbackParamsWithPayload, BshSearchCallbackParams } from \"@src/services\";\nimport { CoreEntities } from \"@src/types/core\";\n\nexport class TenantService {\n private readonly baseEndpoint = '/api/tenants';\n\n public constructor(private readonly client: BshClient) {\n }\n\n public async create<T = BshTenant, F = BshTenantPure>(params: BshCallbackParamsWithPayload<F, T>): Promise<BshResponse<T> | undefined> {\n return this.client.post<T>({\n path: this.baseEndpoint,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'tenants.create',\n entity: CoreEntities.BshTenants,\n });\n }\n\n public async assignAdmin<T = BshTenant>(params: BshCallbackParams<{ id: string, adminId: string }, T> & { id: string, adminId: string }): Promise<BshResponse<T> | undefined> {\n return this.client.put<T>({\n path: `${this.baseEndpoint}/${params.id}/admin/${params.adminId}`,\n options: {\n responseType: 'json',\n },\n bshOptions: params,\n api: 'tenants.assignAdmin',\n entity: CoreEntities.BshTenants,\n });\n }\n\n public async activate<T = BshTenant>(params: BshCallbackParams<{ id: string }, T> & { id: string }): Promise<BshResponse<T> | undefined> {\n return this.client.post<T>({\n path: `${this.baseEndpoint}/${params.id}/activate`,\n options: {\n responseType: 'json',\n },\n bshOptions: params,\n api: 'tenants.activate',\n entity: CoreEntities.BshTenants,\n });\n }\n\n public async deactivate<T = BshTenant>(params: BshCallbackParams<{ id: string }, T> & { id: string }): Promise<BshResponse<T> | undefined> {\n return this.client.post<T>({\n path: `${this.baseEndpoint}/${params.id}/deactivate`,\n options: {\n responseType: 'json',\n },\n bshOptions: params,\n api: 'tenants.deactivate',\n entity: CoreEntities.BshTenants,\n });\n }\n\n public async block<T = BshTenant>(params: BshCallbackParams<{ id: string }, T> & { id: string }): Promise<BshResponse<T> | undefined> {\n return this.client.post<T>({\n path: `${this.baseEndpoint}/${params.id}/block`,\n options: {\n responseType: 'json',\n },\n bshOptions: params,\n api: 'tenants.block',\n entity: CoreEntities.BshTenants,\n });\n }\n\n public async getById<T = BshTenant>(params: BshCallbackParams<{ id: string }, T> & { id: string }): Promise<BshResponse<T> | undefined> {\n return this.client.get<T>({\n path: `${this.baseEndpoint}/${params.id}`,\n options: {\n responseType: 'json',\n },\n bshOptions: params,\n api: 'tenants.getById',\n entity: CoreEntities.BshTenants,\n });\n }\n\n public async search<T = BshTenant>(params: BshSearchCallbackParams<BshTenant, T>): Promise<BshResponse<T> | undefined> {\n return this.client.post<T>({\n path: `${this.baseEndpoint}/search`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'tenants.search',\n entity: CoreEntities.BshTenants,\n });\n }\n\n public async list<T = BshTenant>(params: BshCallbackParams<unknown, T> & { page?: number, size?: number, sort?: string, filter?: string }): Promise<BshResponse<T> | undefined> {\n const queryParams: Record<string, string> = {};\n if (params.page !== undefined) queryParams.page = params.page.toString();\n if (params.size !== undefined) queryParams.size = params.size.toString();\n if (params.sort !== undefined) queryParams.sort = params.sort;\n if (params.filter !== undefined) queryParams.filter = params.filter;\n\n return this.client.get<T>({\n path: this.baseEndpoint,\n options: {\n responseType: 'json',\n queryParams,\n },\n bshOptions: params,\n api: 'tenants.list',\n entity: CoreEntities.BshTenants,\n });\n }\n\n public async update<T = BshTenant>(params: BshCallbackParamsWithPayload<Partial<T>, T>): Promise<BshResponse<T> | undefined> {\n return this.client.put<T>({\n path: this.baseEndpoint,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'tenants.update',\n entity: CoreEntities.BshTenants,\n });\n }\n\n public async delete<T = any>(params: BshCallbackParams<{ id: string }, T> & { id: string }): Promise<BshResponse<T> | undefined> {\n return this.client.delete<T>({\n path: `${this.baseEndpoint}/${params.id}`,\n options: {\n responseType: 'json',\n },\n bshOptions: params,\n api: 'tenants.delete',\n entity: CoreEntities.BshTenants,\n });\n }\n\n public async count<T = { count: number }>(params: BshCallbackParams<unknown, T>): Promise<BshResponse<T> | undefined> {\n return this.client.get<T>({\n path: `${this.baseEndpoint}/count`,\n options: {\n responseType: 'json',\n },\n bshOptions: params,\n api: 'tenants.count',\n entity: CoreEntities.BshTenants,\n });\n }\n\n public async countFiltered<T = { count: number }>(params: BshSearchCallbackParams<BshTenant, T>): Promise<BshResponse<T> | undefined> {\n return this.client.post<T>({\n path: `${this.baseEndpoint}/count`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'tenants.countFiltered',\n entity: CoreEntities.BshTenants,\n });\n }\n}\n","import { BshClient } from \"@src/client/bsh-client\";\nimport { BshResponse, BshSettings } from \"@types\";\nimport { BshCallbackParams, BshCallbackParamsWithPayload } from \"@src/services\";\nimport { CoreEntities } from \"@src/types/core\";\n\nexport class SettingsService {\n private readonly baseEndpoint = '/api/settings';\n\n public constructor(private readonly client: BshClient) {\n }\n\n public async load(params: BshCallbackParams<unknown, BshSettings>): Promise<BshResponse<BshSettings> | undefined> {\n return this.client.get<BshSettings>({\n path: `${this.baseEndpoint}`,\n options: {\n responseType: 'json',\n requestFormat: 'json'\n },\n bshOptions: params,\n api: 'settings.load',\n entity: CoreEntities.BshConfigurations,\n });\n }\n\n public async update(params: BshCallbackParamsWithPayload<BshSettings, BshSettings>): Promise<BshResponse<BshSettings> | undefined> {\n return this.client.put<BshSettings>({\n path: `${this.baseEndpoint}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: { ...params.payload, name: 'BshEngine' },\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'settings.update',\n entity: CoreEntities.BshConfigurations,\n });\n }\n}\n\n","import { BshClient } from \"@src/client/bsh-client\";\nimport { BshResponse, UploadResponse, UploadOptions } from \"@types\";\nimport { BshCallbackParamsWithPayload } from \"@src/services\";\nimport { CoreEntities } from \"@src/types/core\";\n\nexport class ImageService {\n private readonly baseEndpoint = '/api/images';\n\n public constructor(private readonly client: BshClient) {\n }\n\n public async upload(params: BshCallbackParamsWithPayload<{\n file: File;\n folder?: string;\n filename?: string;\n options?: UploadOptions;\n }, UploadResponse>): Promise<BshResponse<UploadResponse> | undefined> {\n const formData = new FormData();\n formData.set('file', params.payload.file);\n if (params.payload.folder) formData.set('folder', params.payload.folder);\n if (params.payload.filename) formData.set('filename', params.payload.filename);\n if (params.payload.options) formData.set('options', JSON.stringify(params.payload.options));\n\n return this.client.post<UploadResponse>({\n path: `${this.baseEndpoint}/upload`,\n options: {\n responseType: 'json',\n requestFormat: 'form',\n body: formData,\n },\n bshOptions: params,\n api: 'image.upload',\n entity: CoreEntities.BshFiles,\n });\n }\n}\n\n","import { BshClient } from \"@src/client/bsh-client\";\nimport { BshResponse, MailingPayload } from \"@types\";\nimport { BshCallbackParamsWithPayload } from \"@src/services\";\nimport { CoreEntities } from \"@src/types/core\";\n\nexport class MailingService {\n private readonly baseEndpoint = '/api/mailing';\n\n public constructor(private readonly client: BshClient) {\n }\n\n public async send(params: BshCallbackParamsWithPayload<MailingPayload, MailingPayload>): Promise<BshResponse<MailingPayload> | undefined> {\n return this.client.post<MailingPayload>({\n path: `${this.baseEndpoint}/send`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'mailing.send',\n entity: CoreEntities.BshEmails,\n });\n }\n}\n\n","import { BshClient } from \"@src/client/bsh-client\";\nimport { BshResponse, BshTriggerFunction, BshTriggerAction } from \"@types\";\nimport { BshCallbackParams } from \"@src/services\";\nimport { SecretSource } from \"@src/types/secrets\";\n\nexport class BshUtilsService {\n private readonly baseEndpoint = '/api/utils';\n\n public constructor(private readonly client: BshClient) {\n }\n\n public async triggerFunctions(params?: BshCallbackParams<unknown, BshTriggerFunction>): Promise<BshResponse<BshTriggerFunction> | undefined> {\n return this.client.get<BshTriggerFunction>({\n path: `${this.baseEndpoint}/triggers/functions`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: { onSuccess: params?.onSuccess, onError: params?.onError },\n api: 'utils.triggerFunctions',\n });\n }\n\n public async triggerActions(params?: BshCallbackParams<unknown, BshTriggerAction>): Promise<BshResponse<BshTriggerAction> | undefined> {\n return this.client.get<BshTriggerAction>({\n path: `${this.baseEndpoint}/triggers/actions`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: { onSuccess: params?.onSuccess, onError: params?.onError },\n api: 'utils.triggerActions',\n });\n }\n\n public async secrets(params?: BshCallbackParams<unknown, SecretSource> & {source?: string}): Promise<BshResponse<SecretSource> | undefined> {\n return this.client.get<SecretSource>({\n path: `${this.baseEndpoint}/secrets/${params?.source || 'env'}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: { onSuccess: params?.onSuccess, onError: params?.onError },\n api: 'utils.secretsEnv',\n });\n }\n\n public async version(params?: BshCallbackParams<unknown, {version: string}>): Promise<BshResponse<{version: string}> | undefined> {\n return this.client.get<{version: string}>({\n path: `${this.baseEndpoint}/version`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: { onSuccess: params?.onSuccess, onError: params?.onError },\n api: 'utils.version',\n });\n }\n}\n","import { BshClient } from \"@src/client/bsh-client\";\nimport { BshResponse, CacheInfo, BshSearch } from \"@types\";\nimport { BshCallbackParams, BshCallbackParamsWithPayload } from \"@src/services\";\n\nexport type CacheRemoveResponse = {\n caches: string[];\n};\n\nexport class CachingService {\n private readonly baseEndpoint = '/api/caching';\n\n public constructor(private readonly client: BshClient) {\n }\n\n public async findById(params: BshCallbackParams<unknown, CacheInfo> & { id: string }): Promise<BshResponse<CacheInfo> | undefined> {\n return this.client.get<CacheInfo>({\n path: `${this.baseEndpoint}/${params.id}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n api: 'caching.findById',\n });\n }\n\n public async search(params: BshCallbackParamsWithPayload<BshSearch, CacheInfo>): Promise<BshResponse<CacheInfo> | undefined> {\n return this.client.post<CacheInfo>({\n path: `${this.baseEndpoint}/search`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n api: 'caching.search',\n });\n }\n\n public async names(params: BshCallbackParams<unknown, string>): Promise<BshResponse<string> | undefined> {\n return this.client.get<string>({\n path: `${this.baseEndpoint}/names`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n api: 'caching.names',\n });\n }\n\n public async clearById(params: BshCallbackParams<unknown, CacheRemoveResponse> & { id: string }): Promise<BshResponse<CacheRemoveResponse> | undefined> {\n return this.client.delete<CacheRemoveResponse>({\n path: `${this.baseEndpoint}/${params.id}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n api: 'caching.clearById',\n });\n }\n\n public async clearAll(params: BshCallbackParams<unknown, CacheRemoveResponse>): Promise<BshResponse<CacheRemoveResponse> | undefined> {\n return this.client.delete<CacheRemoveResponse>({\n path: `${this.baseEndpoint}/all`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n api: 'caching.clearAll',\n });\n }\n}\n\n","import { BshClient } from \"@src/client/bsh-client\";\nimport { BshResponse, BshApiKeys, BshApiKeysForm } from \"@types\";\nimport { BshCallbackParams, BshCallbackParamsWithPayload, BshSearchCallbackParams } from \"@src/services\";\nimport { CoreEntities } from \"@src/types/core\";\n\nexport class ApiKeyService {\n private readonly baseEndpoint = '/api/api-keys';\n\n public constructor(private readonly client: BshClient) {\n }\n\n public async create(params: BshCallbackParamsWithPayload<BshApiKeysForm, BshApiKeys>): Promise<BshResponse<BshApiKeys> | undefined> {\n return this.client.post<BshApiKeys>({\n path: `${this.baseEndpoint}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n }\n },\n bshOptions: params,\n entity: CoreEntities.BshApiKeys,\n api: 'api-key.create',\n });\n }\n\n public async details(params: BshCallbackParams<unknown, BshApiKeys> & { id: number }): Promise<BshResponse<BshApiKeys> | undefined> {\n return this.client.get<BshApiKeys>({\n path: `${this.baseEndpoint}/${params.id}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n entity: CoreEntities.BshApiKeys,\n api: 'api-key.details',\n });\n }\n\n public async revoke(params: BshCallbackParams<unknown, BshApiKeys> & { id: number }): Promise<BshResponse<BshApiKeys> | undefined> {\n return this.client.delete<BshApiKeys>({\n path: `${this.baseEndpoint}/${params.id}/revoke`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n entity: CoreEntities.BshApiKeys,\n api: 'api-key.revoke',\n });\n }\n\n public async rotate(params: BshCallbackParams<unknown, BshApiKeys> & { id: number }): Promise<BshResponse<BshApiKeys> | undefined> {\n return this.client.post<BshApiKeys>({\n path: `${this.baseEndpoint}/${params.id}/rotate`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n entity: CoreEntities.BshApiKeys,\n api: 'api-key.rotate',\n });\n }\n\n // CRUD\n public async getById(params: BshCallbackParams<unknown, BshApiKeys> & { id: string }): Promise<BshResponse<BshApiKeys> | undefined> {\n return this.client.get<BshApiKeys>({\n path: `${this.baseEndpoint}/${params.id}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n entity: CoreEntities.BshApiKeys,\n api: 'api-key.getById',\n });\n }\n\n public async search(params: BshSearchCallbackParams<BshApiKeys, BshApiKeys>): Promise<BshResponse<BshApiKeys> | undefined> {\n return this.client.post<BshApiKeys>({\n path: `${this.baseEndpoint}/search`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n entity: CoreEntities.BshApiKeys,\n api: 'api-key.search',\n });\n }\n\n public async list(params: BshCallbackParams<unknown, BshApiKeys> & {\n queryParams?: {\n page?: string;\n size?: string;\n sort?: string;\n filter?: string;\n }\n }): Promise<BshResponse<BshApiKeys> | undefined> {\n const urlSearchParams = new URLSearchParams();\n if (params.queryParams?.page) urlSearchParams.append('page', params.queryParams.page);\n if (params.queryParams?.size) urlSearchParams.append('size', params.queryParams.size);\n if (params.queryParams?.sort) urlSearchParams.append('sort', params.queryParams.sort);\n if (params.queryParams?.filter) urlSearchParams.append('filter', params.queryParams.filter);\n\n const queryString = urlSearchParams.toString();\n const endpoint = queryString ? `?${queryString}` : '';\n\n return this.client.get<BshApiKeys>({\n path: `${this.baseEndpoint}${endpoint}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n entity: CoreEntities.BshApiKeys,\n api: 'api-key.list',\n });\n }\n\n public async deleteById(params: BshCallbackParams<unknown, BshApiKeys> & { id: string }): Promise<BshResponse<BshApiKeys> | undefined> {\n return this.client.delete<BshApiKeys>({\n path: `${this.baseEndpoint}/${params.id}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n entity: CoreEntities.BshApiKeys,\n api: 'api-key.deleteById',\n });\n }\n\n public async count(\n params: BshCallbackParams<unknown, {count: number}>\n ): Promise<BshResponse<{count: number}> | undefined> {\n return this.client.get<{count: number}>({\n path: `${this.baseEndpoint}/count`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n entity: CoreEntities.BshApiKeys,\n api: 'api-key.count',\n });\n }\n\n public async countFiltered(params: BshSearchCallbackParams<BshApiKeys, {count: number}>): Promise<BshResponse<{count: number}> | undefined> {\n return this.client.post<{count: number}>({\n path: `${this.baseEndpoint}/count`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n body: params.payload,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n bshOptions: params,\n entity: CoreEntities.BshApiKeys,\n api: 'api-key.countFiltered',\n });\n }\n}\n\n"]}