@bshsolutions/sdk 0.0.40-beta.3 → 0.0.40-beta.5
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/{chunk-BAUGZHUO.js → chunk-MCQQ5VZR.js} +3 -2
- package/dist/chunk-MCQQ5VZR.js.map +1 -0
- package/dist/{chunk-M7M65WTP.js → chunk-ROUYWPYT.js} +84 -4
- package/dist/chunk-ROUYWPYT.js.map +1 -0
- package/dist/{chunk-Q2AC5OLH.js → chunk-VW3CXR6C.js} +3 -3
- package/dist/{chunk-Q2AC5OLH.js.map → chunk-VW3CXR6C.js.map} +1 -1
- package/dist/{chunk-ARI3OLHJ.js → chunk-VYIVFVNS.js} +2 -2
- package/dist/chunk-VYIVFVNS.js.map +1 -0
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.js +3 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.js +7 -4
- package/dist/index.js.map +1 -1
- package/dist/services/index.d.ts +1 -1
- package/dist/services/index.js +2 -2
- package/dist/types/index.d.ts +34 -3
- package/dist/types/index.js +2 -2
- package/dist/{types-CV51lZ8w.d.ts → types-DIupLPzT.d.ts} +31 -2
- package/package.json +1 -1
- package/dist/chunk-ARI3OLHJ.js.map +0 -1
- package/dist/chunk-BAUGZHUO.js.map +0 -1
- package/dist/chunk-M7M65WTP.js.map +0 -1
|
@@ -11,6 +11,7 @@ var CoreEntities = {
|
|
|
11
11
|
BshTenants: "BshTenants",
|
|
12
12
|
TenantAudits: "TenantAudits",
|
|
13
13
|
BshAuthSessions: "BshAuthSessions",
|
|
14
|
+
BshJWTSigningSecret: "BshJWTSigningSecret",
|
|
14
15
|
BshConfigurations: "BshConfigurations",
|
|
15
16
|
BshEmails: "BshEmails",
|
|
16
17
|
BshEmailTemplates: "BshEmailTemplates",
|
|
@@ -32,5 +33,5 @@ var PluginBasedEntities = [
|
|
|
32
33
|
];
|
|
33
34
|
|
|
34
35
|
export { CoreEntities, PluginBasedEntities };
|
|
35
|
-
//# sourceMappingURL=chunk-
|
|
36
|
-
//# sourceMappingURL=chunk-
|
|
36
|
+
//# sourceMappingURL=chunk-MCQQ5VZR.js.map
|
|
37
|
+
//# sourceMappingURL=chunk-MCQQ5VZR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types/core/index.ts"],"names":[],"mappings":";AAYO,IAAM,YAAA,GAAe;AAAA,EACxB,WAAA,EAAa,aAAA;AAAA,EACb,UAAA,EAAY,YAAA;AAAA,EACZ,QAAA,EAAU,UAAA;AAAA,EAEV,QAAA,EAAU,UAAA;AAAA,EACV,WAAA,EAAa,aAAA;AAAA,EACb,QAAA,EAAU,UAAA;AAAA,EACV,UAAA,EAAY,YAAA;AAAA,EAEZ,QAAA,EAAU,UAAA;AAAA,EAEV,UAAA,EAAY,YAAA;AAAA,EACZ,YAAA,EAAc,cAAA;AAAA,EAEd,eAAA,EAAiB,iBAAA;AAAA,EACjB,mBAAA,EAAqB,qBAAA;AAAA,EAErB,iBAAA,EAAmB,mBAAA;AAAA,EAEnB,SAAA,EAAW,WAAA;AAAA,EACX,iBAAA,EAAmB,mBAAA;AAAA,EAEnB,YAAA,EAAc,cAAA;AAAA,EACd,WAAA,EAAa,aAAA;AAAA,EACb,mBAAA,EAAqB,qBAAA;AAAA,EAErB,UAAA,EAAY,YAAA;AAAA,EACZ,gBAAA,EAAkB;AACtB;AAIO,IAAM,mBAAA,GAAgC;AAAA,EACzC,YAAA,CAAa,WAAA;AAAA,EACb,YAAA,CAAa,UAAA;AAAA,EACb,YAAA,CAAa,QAAA;AAAA,EACb,YAAA,CAAa,WAAA;AAAA,EACb,YAAA,CAAa,QAAA;AAAA,EACb,YAAA,CAAa,iBAAA;AAAA,EACb,YAAA,CAAa,iBAAA;AAAA,EACb,YAAA,CAAa;AACjB","file":"chunk-MCQQ5VZR.js","sourcesContent":["export type BshDate = { $date: string }\n\nexport type BshObject = {\n persistenceId: string,\n CreatedAt?: BshDate,\n CreatedBy?: string,\n LastUpdatedAt?: BshDate\n LastUpdatedBy?: string\n}\n\nexport type BshObjectPure<T> = Omit<T, 'persistenceId' | 'CreatedAt' | 'CreatedBy' | 'LastUpdatedAt' | 'LastUpdatedBy'>\n\nexport const CoreEntities = {\n BshEntities: 'BshEntities',\n BshSchemas: 'BshSchemas',\n BshTypes: 'BshTypes',\n\n BshUsers: 'BshUsers',\n BshPolicies: 'BshPolicies',\n BshRoles: 'BshRoles',\n BshApiKeys: 'BshApiKeys',\n\n BshFiles: 'BshFiles',\n\n BshTenants: 'BshTenants',\n TenantAudits: 'TenantAudits',\n\n BshAuthSessions: 'BshAuthSessions',\n BshJWTSigningSecret: 'BshJWTSigningSecret',\n\n BshConfigurations: 'BshConfigurations',\n\n BshEmails: 'BshEmails',\n BshEmailTemplates: 'BshEmailTemplates',\n\n BshEventLogs: 'BshEventLogs',\n BshTriggers: 'BshTriggers',\n BshTriggerInstances: 'BshTriggerInstances',\n\n BshPlugins: 'BshPlugins',\n BshPluginHistory: 'BshPluginHistory',\n} as const;\n\nexport type CoreEntities = keyof typeof CoreEntities\n\nexport const PluginBasedEntities: string[] = [\n CoreEntities.BshEntities,\n CoreEntities.BshSchemas,\n CoreEntities.BshTypes,\n CoreEntities.BshPolicies,\n CoreEntities.BshRoles,\n CoreEntities.BshConfigurations,\n CoreEntities.BshEmailTemplates,\n CoreEntities.BshTriggers,\n];\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CoreEntities } from './chunk-
|
|
1
|
+
import { CoreEntities } from './chunk-MCQQ5VZR.js';
|
|
2
2
|
|
|
3
3
|
// src/services/entities/index.ts
|
|
4
4
|
var EntityService = class {
|
|
@@ -1201,6 +1201,86 @@ var AuthSessionService = class {
|
|
|
1201
1201
|
}
|
|
1202
1202
|
};
|
|
1203
1203
|
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1204
|
+
// src/services/signing-keys/index.ts
|
|
1205
|
+
var SigningKeyService = class {
|
|
1206
|
+
constructor(client) {
|
|
1207
|
+
this.client = client;
|
|
1208
|
+
this.baseEndpoint = "/api/auth/signing-keys";
|
|
1209
|
+
}
|
|
1210
|
+
async search(params) {
|
|
1211
|
+
return this.client.post({
|
|
1212
|
+
path: `${this.baseEndpoint}/search`,
|
|
1213
|
+
options: {
|
|
1214
|
+
responseType: "json",
|
|
1215
|
+
requestFormat: "json",
|
|
1216
|
+
body: params.payload,
|
|
1217
|
+
headers: {
|
|
1218
|
+
"Content-Type": "application/json"
|
|
1219
|
+
}
|
|
1220
|
+
},
|
|
1221
|
+
bshOptions: params,
|
|
1222
|
+
entity: CoreEntities.BshJWTSigningSecret,
|
|
1223
|
+
api: "signing-keys.search"
|
|
1224
|
+
});
|
|
1225
|
+
}
|
|
1226
|
+
async list(params) {
|
|
1227
|
+
const urlSearchParams = new URLSearchParams();
|
|
1228
|
+
if (params.queryParams?.page) urlSearchParams.append("page", params.queryParams.page);
|
|
1229
|
+
if (params.queryParams?.size) urlSearchParams.append("size", params.queryParams.size);
|
|
1230
|
+
if (params.queryParams?.sort) urlSearchParams.append("sort", params.queryParams.sort);
|
|
1231
|
+
if (params.queryParams?.filter) urlSearchParams.append("filter", params.queryParams.filter);
|
|
1232
|
+
const queryString = urlSearchParams.toString();
|
|
1233
|
+
const endpoint = queryString ? `?${queryString}` : "";
|
|
1234
|
+
return this.client.get({
|
|
1235
|
+
path: `${this.baseEndpoint}${endpoint}`,
|
|
1236
|
+
options: {
|
|
1237
|
+
responseType: "json",
|
|
1238
|
+
requestFormat: "json"
|
|
1239
|
+
},
|
|
1240
|
+
bshOptions: params,
|
|
1241
|
+
entity: CoreEntities.BshJWTSigningSecret,
|
|
1242
|
+
api: "signing-keys.list"
|
|
1243
|
+
});
|
|
1244
|
+
}
|
|
1245
|
+
/**
|
|
1246
|
+
* Forces a rotation. `expire: 'previous' | 'all'` expires the previous key(s) immediately:
|
|
1247
|
+
* every user with tokens signed by them is logged out. `reason` is required when expiring.
|
|
1248
|
+
*/
|
|
1249
|
+
async rotate(params) {
|
|
1250
|
+
return this.client.post({
|
|
1251
|
+
path: `${this.baseEndpoint}/rotate`,
|
|
1252
|
+
options: {
|
|
1253
|
+
responseType: "json",
|
|
1254
|
+
requestFormat: "json",
|
|
1255
|
+
body: params.payload,
|
|
1256
|
+
headers: {
|
|
1257
|
+
"Content-Type": "application/json"
|
|
1258
|
+
}
|
|
1259
|
+
},
|
|
1260
|
+
bshOptions: params,
|
|
1261
|
+
entity: CoreEntities.BshJWTSigningSecret,
|
|
1262
|
+
api: "signing-keys.rotate"
|
|
1263
|
+
});
|
|
1264
|
+
}
|
|
1265
|
+
/** Expires a retired key now. The active key cannot be expired, rotate it instead. */
|
|
1266
|
+
async expire(params) {
|
|
1267
|
+
return this.client.post({
|
|
1268
|
+
path: `${this.baseEndpoint}/${params.kid}/expire`,
|
|
1269
|
+
options: {
|
|
1270
|
+
responseType: "json",
|
|
1271
|
+
requestFormat: "json",
|
|
1272
|
+
body: params.payload,
|
|
1273
|
+
headers: {
|
|
1274
|
+
"Content-Type": "application/json"
|
|
1275
|
+
}
|
|
1276
|
+
},
|
|
1277
|
+
bshOptions: params,
|
|
1278
|
+
entity: CoreEntities.BshJWTSigningSecret,
|
|
1279
|
+
api: "signing-keys.expire"
|
|
1280
|
+
});
|
|
1281
|
+
}
|
|
1282
|
+
};
|
|
1283
|
+
|
|
1284
|
+
export { AdminUserService, ApiKeyService, AuthService, AuthSessionService, BshUtilsService, CachingService, EntityService, ImageService, MailingService, SettingsService, SigningKeyService, TenantService, UserService };
|
|
1285
|
+
//# sourceMappingURL=chunk-ROUYWPYT.js.map
|
|
1286
|
+
//# sourceMappingURL=chunk-ROUYWPYT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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","../src/services/auth-sessions/index.ts","../src/services/signing-keys/index.ts"],"names":[],"mappings":"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","file":"chunk-ROUYWPYT.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: BshCallbackParams<unknown, 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 },\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","import { BshClient } from \"@src/client/bsh-client\";\nimport { BshResponse, BshAuthSession, BshRevokeSessionResult } from \"@types\";\nimport { BshCallbackParams, BshSearchCallbackParams } from \"@src/services\";\nimport { CoreEntities } from \"@src/types/core\";\n\n/**\n * Auth sessions of the logged-in user (`/api/auth/sessions`).\n * Requires user authentication (JWT or cookie session), API keys are rejected.\n * Regular users only see their own sessions.\n */\nexport class AuthSessionService {\n private readonly baseEndpoint = '/api/auth/sessions';\n\n public constructor(private readonly client: BshClient) {\n }\n\n public async current(params: BshCallbackParams<unknown, BshAuthSession>): Promise<BshResponse<BshAuthSession> | undefined> {\n return this.client.get<BshAuthSession>({\n path: `${this.baseEndpoint}/current`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n entity: CoreEntities.BshAuthSessions,\n api: 'auth-sessions.current',\n });\n }\n\n public async details(params: BshCallbackParams<unknown, BshAuthSession> & { sid: string }): Promise<BshResponse<BshAuthSession> | undefined> {\n return this.client.get<BshAuthSession>({\n path: `${this.baseEndpoint}/${params.sid}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n entity: CoreEntities.BshAuthSessions,\n api: 'auth-sessions.details',\n });\n }\n\n /** Revokes another session. The current session cannot be revoked, use `auth.logout` instead. */\n public async revoke(params: BshCallbackParams<unknown, BshRevokeSessionResult> & { sid: string }): Promise<BshResponse<BshRevokeSessionResult> | undefined> {\n return this.client.delete<BshRevokeSessionResult>({\n path: `${this.baseEndpoint}/${params.sid}/revoke`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n entity: CoreEntities.BshAuthSessions,\n api: 'auth-sessions.revoke',\n });\n }\n\n public async search(params: BshSearchCallbackParams<BshAuthSession, BshAuthSession>): Promise<BshResponse<BshAuthSession> | undefined> {\n return this.client.post<BshAuthSession>({\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.BshAuthSessions,\n api: 'auth-sessions.search',\n });\n }\n\n /** e.g. `queryParams: { sort: 'iat:desc', filter: 'status:eq:Active' }` */\n public async list(params: BshCallbackParams<unknown, BshAuthSession> & {\n queryParams?: {\n page?: string;\n size?: string;\n sort?: string;\n filter?: string;\n }\n }): Promise<BshResponse<BshAuthSession> | 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<BshAuthSession>({\n path: `${this.baseEndpoint}${endpoint}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n entity: CoreEntities.BshAuthSessions,\n api: 'auth-sessions.list',\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.BshAuthSessions,\n api: 'auth-sessions.count',\n });\n }\n\n public async countFiltered(params: BshSearchCallbackParams<BshAuthSession, {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.BshAuthSessions,\n api: 'auth-sessions.countFiltered',\n });\n }\n}\n","import { BshClient } from \"@src/client/bsh-client\";\nimport { BshResponse, BshSigningKey, BshRotateSigningKey, BshRotateSigningKeyResult, BshExpireSigningKey } from \"@types\";\nimport { BshCallbackParams, BshCallbackParamsWithPayload, BshSearchCallbackParams } from \"@src/services\";\nimport { CoreEntities } from \"@src/types/core\";\n\n/**\n * JWT signing keys (`/api/auth/signing-keys`). BSH admin only.\n * The key material is never returned.\n */\nexport class SigningKeyService {\n private readonly baseEndpoint = '/api/auth/signing-keys';\n\n public constructor(private readonly client: BshClient) {\n }\n\n public async search(params: BshSearchCallbackParams<BshSigningKey, BshSigningKey>): Promise<BshResponse<BshSigningKey> | undefined> {\n return this.client.post<BshSigningKey>({\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.BshJWTSigningSecret,\n api: 'signing-keys.search',\n });\n }\n\n public async list(params: BshCallbackParams<unknown, BshSigningKey> & {\n queryParams?: {\n page?: string;\n size?: string;\n sort?: string;\n filter?: string;\n }\n }): Promise<BshResponse<BshSigningKey> | 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<BshSigningKey>({\n path: `${this.baseEndpoint}${endpoint}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n entity: CoreEntities.BshJWTSigningSecret,\n api: 'signing-keys.list',\n });\n }\n\n /**\n * Forces a rotation. `expire: 'previous' | 'all'` expires the previous key(s) immediately:\n * every user with tokens signed by them is logged out. `reason` is required when expiring.\n */\n public async rotate(params: BshCallbackParamsWithPayload<BshRotateSigningKey, BshRotateSigningKeyResult>): Promise<BshResponse<BshRotateSigningKeyResult> | undefined> {\n return this.client.post<BshRotateSigningKeyResult>({\n path: `${this.baseEndpoint}/rotate`,\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.BshJWTSigningSecret,\n api: 'signing-keys.rotate',\n });\n }\n\n /** Expires a retired key now. The active key cannot be expired, rotate it instead. */\n public async expire(params: BshCallbackParamsWithPayload<BshExpireSigningKey, BshSigningKey> & { kid: string }): Promise<BshResponse<BshSigningKey> | undefined> {\n return this.client.post<BshSigningKey>({\n path: `${this.baseEndpoint}/${params.kid}/expire`,\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.BshJWTSigningSecret,\n api: 'signing-keys.expire',\n });\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BshError } from './chunk-
|
|
1
|
+
import { BshError } from './chunk-VYIVFVNS.js';
|
|
2
2
|
|
|
3
3
|
// src/client/types.ts
|
|
4
4
|
var defaultClientFn = async (params) => {
|
|
@@ -261,5 +261,5 @@ var fetchClientFn = async (params) => {
|
|
|
261
261
|
};
|
|
262
262
|
|
|
263
263
|
export { BshClient, defaultClientFn, fetchClientFn };
|
|
264
|
-
//# sourceMappingURL=chunk-
|
|
265
|
-
//# sourceMappingURL=chunk-
|
|
264
|
+
//# sourceMappingURL=chunk-VW3CXR6C.js.map
|
|
265
|
+
//# sourceMappingURL=chunk-VW3CXR6C.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client/types.ts","../src/client/bsh-client.ts","../src/client/index.ts"],"names":["error"],"mappings":"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","file":"chunk-Q2AC5OLH.js","sourcesContent":["import { BshCallbackParams } from \"@src/services\";\nimport { BshError, BshResponse, BshSearch } from \"@types\";\n\nexport type BshClientFnParams<T = unknown, R = T> = {\n path: string,\n options: {\n method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH',\n responseType?: 'json' | 'blob' | 'text' | 'arrayBuffer',\n requestFormat?: 'json' | 'text' | 'form',\n body?: T | BshSearch<T> | unknown,\n formData?: FormData,\n queryParams?: Record<string, string>,\n headers?: Record<string, string>,\n },\n bshOptions: BshCallbackParams<T, R>,\n api?: string,\n entity?: string\n}\n\nexport type BshClientFn = <T = unknown>(params: BshClientFnParams<T>) => Promise<Response>;\n\nexport const defaultClientFn: BshClientFn = async (params) => {\n return fetch(\n params.path,\n {\n method: params.options.method,\n body: params.options.requestFormat === 'form' ?\n params.options.body as BodyInit : params.options.body ?\n JSON.stringify(params.options.body) : undefined,\n headers: params.options.headers,\n }\n );\n};\n\nexport type AuthToken = {\n type: 'JWT' | 'APIKEY';\n token: string\n}\n\nexport type BshAuthFn = () => Promise<AuthToken | undefined | null>;\n\nexport type BshRefreshTokenFn = () => Promise<string | undefined | null>;\n\nexport type BshOnTokenRefreshedFn = (tokens: { accessToken?: string; refreshToken?: string; }) => void | Promise<void>;\n\nexport type BshTenantFn = () => Promise<string | undefined | null>;\n\nexport type BshPostInterceptor<T = any> = (response: BshResponse<T>, params?: BshClientFnParams<T>) => Promise<BshResponse<T>>;\nexport type BshPreInterceptor<T = any, R = T> = (params: BshClientFnParams<T, R>) => Promise<BshClientFnParams<T, R>>;\nexport type BshErrorInterceptor<T = any> = (error: BshError, response?: BshResponse<T>, params?: BshClientFnParams<T>) => Promise<BshError | undefined>;\n","import { BshResponse, BshError } from \"@types\";\nimport { AuthToken, BshAuthFn, BshClientFn, BshClientFnParams, BshRefreshTokenFn, BshTenantFn, defaultClientFn } from \"@src/client/types\";\nimport { BshEngine } from \"@src/bshengine\";\n\nexport class BshClient {\n private readonly httpClient: BshClientFn;\n private readonly authFn?: BshAuthFn;\n private readonly refreshTokenFn?: BshRefreshTokenFn;\n private readonly tenantFn?: BshTenantFn;\n private readonly host: string;\n private readonly bshEngine?: BshEngine;\n\n constructor(\n host?: string,\n httpClient?: BshClientFn,\n authFn?: BshAuthFn,\n refreshTokenFn?: BshRefreshTokenFn,\n tenantFn?: BshTenantFn,\n bshEngine?: BshEngine\n ) {\n this.host = host || '';\n this.httpClient = httpClient || defaultClientFn;\n this.authFn = authFn;\n this.refreshTokenFn = refreshTokenFn;\n this.tenantFn = tenantFn;\n this.bshEngine = bshEngine;\n }\n\n private async handleResponse<T = any>(response: Response, params: BshClientFnParams<T>, type: 'json'): Promise<BshResponse<T> | undefined>\n private async handleResponse<T = any>(response: Response, params: BshClientFnParams<T>, type: 'blob'): Promise<Blob | undefined>\n private async handleResponse<T = any>(response: Response, params: BshClientFnParams<T>, type: 'json' | 'blob'): Promise<BshResponse<T> | Blob | undefined> {\n if (!response.ok) {\n let data: any = undefined;\n try {\n data = await response.json();\n } catch (error) {\n try {\n data = await response.text();\n } catch (error) {\n data = {\n message: 'Connection Issue'\n };\n }\n }\n let error = new BshError(response.status, params.path, data);\n const byPassErrorInterceptor = params.bshOptions.byPass?.interceptors?.error;\n if ((byPassErrorInterceptor == undefined || !byPassErrorInterceptor) && this.bshEngine?.getErrorInterceptors().length) {\n for (const interceptor of this.bshEngine.getErrorInterceptors()) {\n const newError = await interceptor(error, error.response, params as BshClientFnParams<any>);\n if (newError) error = newError;\n }\n }\n if (params.bshOptions.onError) {\n params.bshOptions.onError(error);\n return undefined;\n }\n else throw error;\n }\n\n if (type === 'json') {\n const data = await response.json();\n let result = data as BshResponse<T>;\n result.api = params.api;\n await this.notifyTokenRefreshedIfPresent(result);\n const byPassPostInterceptors = params.bshOptions.byPass?.interceptors?.post;\n if ((byPassPostInterceptors == undefined || !byPassPostInterceptors) && this.bshEngine?.getPostInterceptors().length) {\n for (const interceptor of this.bshEngine.getPostInterceptors()) {\n const newResult = await interceptor(result, params as BshClientFnParams<any>);\n if (newResult) result = newResult as BshResponse<T>;\n }\n }\n if (params.bshOptions.onSuccess) {\n params.bshOptions.onSuccess(data);\n return undefined;\n }\n return result;\n }\n else if (type === 'blob') {\n const blob = await response.blob();\n if (params.bshOptions.onDownload) {\n params.bshOptions.onDownload(blob);\n return undefined;\n }\n else return blob;\n }\n }\n\n private async notifyTokenRefreshedIfPresent(result: BshResponse<unknown>) {\n const accessToken = result.meta?.accessToken;\n const refreshToken = result.meta?.refreshToken;\n if (!accessToken && !refreshToken) return;\n const handler = this.bshEngine?.getOnTokenRefreshed();\n if (handler) {\n await handler({\n accessToken,\n refreshToken,\n });\n }\n }\n\n private getCookie(name: string): string | undefined {\n if (typeof document === 'undefined') return undefined;\n\n const cookies = document.cookie.split(';');\n\n for (const cookie of cookies) {\n const [key, ...valueParts] = cookie.trim().split('=');\n if (key === name) return decodeURIComponent(valueParts.join('='));\n }\n\n return undefined;\n }\n\n private getCsrfHeaders(params: BshClientFnParams<any>): Record<string, string> {\n const method = params.options?.method?.toUpperCase() || 'GET';\n if (method === 'GET' || method === 'HEAD' || method === 'OPTIONS') return {};\n const csrfToken = this.getCookie('XSRF-TOKEN');\n if (!csrfToken) return {};\n return { 'X-XSRF-TOKEN': csrfToken };\n }\n\n private async getAuthHeaders(params: BshClientFnParams<any>): Promise<Record<string, string>> {\n const auth = this.authFn ? await this.authFn() : undefined;\n\n if (auth?.type === 'APIKEY') return { Authorization: auth.token };\n\n let authHeaders: Record<string, string> = auth?.type === 'JWT'\n ? { Authorization: `Bearer ${auth.token}` }\n : this.getCsrfHeaders(params);\n\n const refreshToken = await this.refreshTokenFn?.();\n if (refreshToken) authHeaders = { ...authHeaders, 'X-BSH-REFRESHTOKEN': refreshToken };\n\n return authHeaders;\n }\n\n private async getTenantHeaders(params: BshClientFnParams<any>): Promise<Record<string, string>> {\n const tenant = await this.tenantFn?.();\n if (!tenant) return {};\n return { 'X-Tenant-Id': tenant };\n }\n\n private getClientHeaders(): Record<string, string> {\n const clientName = this.bshEngine?.getClientName();\n if (!clientName) return {};\n return { 'X-Bsh-Client': clientName };\n }\n\n private async injectHeaders(params: BshClientFnParams<any>): Promise<Record<string, string>> {\n const authHeaders = await this.getAuthHeaders(params);\n const tenantHeaders = await this.getTenantHeaders(params);\n\n return {\n ...this.getClientHeaders(),\n ...authHeaders,\n ...tenantHeaders,\n };\n }\n\n private async applyPreInterceptors<T = unknown, R = T>(params: BshClientFnParams<T, R>): Promise<BshClientFnParams<T, R>> {\n const byPassPreInterceptors = params.bshOptions.byPass?.interceptors?.pre;\n if (byPassPreInterceptors == true || !this.bshEngine?.getPreInterceptors().length) return params;\n for (const interceptor of this.bshEngine.getPreInterceptors()) {\n const newParams = await interceptor(params as BshClientFnParams<unknown, unknown>);\n if (newParams) return newParams as BshClientFnParams<T, R>;\n }\n return params;\n }\n\n async get<T = unknown>(params: BshClientFnParams<T>): Promise<BshResponse<T> | undefined> {\n const authHeaders = await this.injectHeaders({ ...params, options: { ...params.options, method: 'GET' } });\n\n let clientParams = {\n ...params,\n path: `${this.host}${params.path}`,\n options: {\n ...params.options,\n method: 'GET',\n headers: {\n ...params.options.headers,\n ...authHeaders\n }\n }\n } as BshClientFnParams<T>;\n\n clientParams = await this.applyPreInterceptors<T>(clientParams);\n const response = await this.httpClient(clientParams);\n return this.handleResponse(response, clientParams, 'json');\n }\n\n async post<T = unknown, R = T>(params: BshClientFnParams<T, R>): Promise<BshResponse<R> | undefined> {\n const authHeaders = await this.injectHeaders({ ...params, options: { ...params.options, method: 'POST' } });\n\n let clientParams = {\n ...params,\n path: `${this.host}${params.path}`,\n options: {\n ...params.options,\n method: 'POST',\n headers: {\n ...params.options.headers,\n ...authHeaders\n }\n }\n } as BshClientFnParams<T, R>;\n\n clientParams = await this.applyPreInterceptors<T, R>(clientParams);\n const response = await this.httpClient(clientParams);\n return this.handleResponse(response, clientParams, 'json');\n }\n\n async put<T = unknown, R = T>(params: BshClientFnParams<T, R>): Promise<BshResponse<R> | undefined> {\n const authHeaders = await this.injectHeaders({ ...params, options: { ...params.options, method: 'PUT' } });\n let clientParams = {\n ...params,\n path: `${this.host}${params.path}`,\n options: {\n ...params.options,\n method: 'PUT',\n headers: {\n ...params.options.headers,\n ...authHeaders\n }\n }\n } as BshClientFnParams<T, R>;\n\n clientParams = await this.applyPreInterceptors<T, R>(clientParams);\n const response = await this.httpClient(clientParams);\n return this.handleResponse(response, clientParams, 'json');\n }\n\n async delete<T = unknown>(params: BshClientFnParams<T>): Promise<BshResponse<T> | undefined> {\n const authHeaders = await this.injectHeaders({ ...params, options: { ...params.options, method: 'DELETE' } });\n let clientParams = {\n ...params,\n path: `${this.host}${params.path}`,\n options: {\n ...params.options,\n method: 'DELETE',\n headers: {\n ...params.options.headers,\n ...authHeaders\n }\n }\n } as BshClientFnParams<T>;\n\n clientParams = await this.applyPreInterceptors<T>(clientParams);\n const response = await this.httpClient(clientParams);\n return this.handleResponse(response, clientParams, 'json');\n }\n\n async patch<T = unknown>(params: BshClientFnParams<T>): Promise<BshResponse<T> | undefined> {\n const authHeaders = await this.injectHeaders({ ...params, options: { ...params.options, method: 'PATCH' } });\n let clientParams = {\n ...params,\n path: `${this.host}${params.path}`,\n options: {\n ...params.options,\n method: 'PATCH',\n headers: {\n ...params.options.headers,\n ...authHeaders\n }\n }\n } as BshClientFnParams<T>;\n\n clientParams = await this.applyPreInterceptors<T>(clientParams);\n const response = await this.httpClient(clientParams);\n return this.handleResponse(response, clientParams, 'json');\n }\n\n async download<T = unknown>(params: BshClientFnParams<T>): Promise<Blob | undefined> {\n const authHeaders = await this.injectHeaders({ ...params, options: { ...params.options, method: 'GET' } });\n let clientParams = {\n ...params,\n path: `${this.host}${params.path}`,\n options: {\n ...params.options,\n method: 'GET',\n headers: {\n ...params.options.headers,\n ...authHeaders\n }\n }\n } as BshClientFnParams<T>;\n\n clientParams = await this.applyPreInterceptors<T>(clientParams);\n const response = await this.httpClient(clientParams);\n return this.handleResponse(response, clientParams, 'blob');\n }\n}\n","import { BshClientFn } from './types';\n\nexport * from './types';\nexport * from './bsh-client';\n\nexport const fetchClientFn: BshClientFn = async (params) => {\n return fetch(\n params.path,\n {\n method: params.options.method,\n body: params.options.requestFormat === 'form' ?\n params.options.body as BodyInit : params.options.body ?\n JSON.stringify(params.options.body) : undefined,\n headers: params.options.headers,\n }\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/client/types.ts","../src/client/bsh-client.ts","../src/client/index.ts"],"names":["error"],"mappings":"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","file":"chunk-VW3CXR6C.js","sourcesContent":["import { BshCallbackParams } from \"@src/services\";\nimport { BshError, BshResponse, BshSearch } from \"@types\";\n\nexport type BshClientFnParams<T = unknown, R = T> = {\n path: string,\n options: {\n method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH',\n responseType?: 'json' | 'blob' | 'text' | 'arrayBuffer',\n requestFormat?: 'json' | 'text' | 'form',\n body?: T | BshSearch<T> | unknown,\n formData?: FormData,\n queryParams?: Record<string, string>,\n headers?: Record<string, string>,\n },\n bshOptions: BshCallbackParams<T, R>,\n api?: string,\n entity?: string\n}\n\nexport type BshClientFn = <T = unknown>(params: BshClientFnParams<T>) => Promise<Response>;\n\nexport const defaultClientFn: BshClientFn = async (params) => {\n return fetch(\n params.path,\n {\n method: params.options.method,\n body: params.options.requestFormat === 'form' ?\n params.options.body as BodyInit : params.options.body ?\n JSON.stringify(params.options.body) : undefined,\n headers: params.options.headers,\n }\n );\n};\n\nexport type AuthToken = {\n type: 'JWT' | 'APIKEY';\n token: string\n}\n\nexport type BshAuthFn = () => Promise<AuthToken | undefined | null>;\n\nexport type BshRefreshTokenFn = () => Promise<string | undefined | null>;\n\nexport type BshOnTokenRefreshedFn = (tokens: { accessToken?: string; refreshToken?: string; }) => void | Promise<void>;\n\nexport type BshTenantFn = () => Promise<string | undefined | null>;\n\nexport type BshPostInterceptor<T = any> = (response: BshResponse<T>, params?: BshClientFnParams<T>) => Promise<BshResponse<T>>;\nexport type BshPreInterceptor<T = any, R = T> = (params: BshClientFnParams<T, R>) => Promise<BshClientFnParams<T, R>>;\nexport type BshErrorInterceptor<T = any> = (error: BshError, response?: BshResponse<T>, params?: BshClientFnParams<T>) => Promise<BshError | undefined>;\n","import { BshResponse, BshError } from \"@types\";\nimport { AuthToken, BshAuthFn, BshClientFn, BshClientFnParams, BshRefreshTokenFn, BshTenantFn, defaultClientFn } from \"@src/client/types\";\nimport { BshEngine } from \"@src/bshengine\";\n\nexport class BshClient {\n private readonly httpClient: BshClientFn;\n private readonly authFn?: BshAuthFn;\n private readonly refreshTokenFn?: BshRefreshTokenFn;\n private readonly tenantFn?: BshTenantFn;\n private readonly host: string;\n private readonly bshEngine?: BshEngine;\n\n constructor(\n host?: string,\n httpClient?: BshClientFn,\n authFn?: BshAuthFn,\n refreshTokenFn?: BshRefreshTokenFn,\n tenantFn?: BshTenantFn,\n bshEngine?: BshEngine\n ) {\n this.host = host || '';\n this.httpClient = httpClient || defaultClientFn;\n this.authFn = authFn;\n this.refreshTokenFn = refreshTokenFn;\n this.tenantFn = tenantFn;\n this.bshEngine = bshEngine;\n }\n\n private async handleResponse<T = any>(response: Response, params: BshClientFnParams<T>, type: 'json'): Promise<BshResponse<T> | undefined>\n private async handleResponse<T = any>(response: Response, params: BshClientFnParams<T>, type: 'blob'): Promise<Blob | undefined>\n private async handleResponse<T = any>(response: Response, params: BshClientFnParams<T>, type: 'json' | 'blob'): Promise<BshResponse<T> | Blob | undefined> {\n if (!response.ok) {\n let data: any = undefined;\n try {\n data = await response.json();\n } catch (error) {\n try {\n data = await response.text();\n } catch (error) {\n data = {\n message: 'Connection Issue'\n };\n }\n }\n let error = new BshError(response.status, params.path, data);\n const byPassErrorInterceptor = params.bshOptions.byPass?.interceptors?.error;\n if ((byPassErrorInterceptor == undefined || !byPassErrorInterceptor) && this.bshEngine?.getErrorInterceptors().length) {\n for (const interceptor of this.bshEngine.getErrorInterceptors()) {\n const newError = await interceptor(error, error.response, params as BshClientFnParams<any>);\n if (newError) error = newError;\n }\n }\n if (params.bshOptions.onError) {\n params.bshOptions.onError(error);\n return undefined;\n }\n else throw error;\n }\n\n if (type === 'json') {\n const data = await response.json();\n let result = data as BshResponse<T>;\n result.api = params.api;\n await this.notifyTokenRefreshedIfPresent(result);\n const byPassPostInterceptors = params.bshOptions.byPass?.interceptors?.post;\n if ((byPassPostInterceptors == undefined || !byPassPostInterceptors) && this.bshEngine?.getPostInterceptors().length) {\n for (const interceptor of this.bshEngine.getPostInterceptors()) {\n const newResult = await interceptor(result, params as BshClientFnParams<any>);\n if (newResult) result = newResult as BshResponse<T>;\n }\n }\n if (params.bshOptions.onSuccess) {\n params.bshOptions.onSuccess(data);\n return undefined;\n }\n return result;\n }\n else if (type === 'blob') {\n const blob = await response.blob();\n if (params.bshOptions.onDownload) {\n params.bshOptions.onDownload(blob);\n return undefined;\n }\n else return blob;\n }\n }\n\n private async notifyTokenRefreshedIfPresent(result: BshResponse<unknown>) {\n const accessToken = result.meta?.accessToken;\n const refreshToken = result.meta?.refreshToken;\n if (!accessToken && !refreshToken) return;\n const handler = this.bshEngine?.getOnTokenRefreshed();\n if (handler) {\n await handler({\n accessToken,\n refreshToken,\n });\n }\n }\n\n private getCookie(name: string): string | undefined {\n if (typeof document === 'undefined') return undefined;\n\n const cookies = document.cookie.split(';');\n\n for (const cookie of cookies) {\n const [key, ...valueParts] = cookie.trim().split('=');\n if (key === name) return decodeURIComponent(valueParts.join('='));\n }\n\n return undefined;\n }\n\n private getCsrfHeaders(params: BshClientFnParams<any>): Record<string, string> {\n const method = params.options?.method?.toUpperCase() || 'GET';\n if (method === 'GET' || method === 'HEAD' || method === 'OPTIONS') return {};\n const csrfToken = this.getCookie('XSRF-TOKEN');\n if (!csrfToken) return {};\n return { 'X-XSRF-TOKEN': csrfToken };\n }\n\n private async getAuthHeaders(params: BshClientFnParams<any>): Promise<Record<string, string>> {\n const auth = this.authFn ? await this.authFn() : undefined;\n\n if (auth?.type === 'APIKEY') return { Authorization: auth.token };\n\n let authHeaders: Record<string, string> = auth?.type === 'JWT'\n ? { Authorization: `Bearer ${auth.token}` }\n : this.getCsrfHeaders(params);\n\n const refreshToken = await this.refreshTokenFn?.();\n if (refreshToken) authHeaders = { ...authHeaders, 'X-BSH-REFRESHTOKEN': refreshToken };\n\n return authHeaders;\n }\n\n private async getTenantHeaders(params: BshClientFnParams<any>): Promise<Record<string, string>> {\n const tenant = await this.tenantFn?.();\n if (!tenant) return {};\n return { 'X-Tenant-Id': tenant };\n }\n\n private getClientHeaders(): Record<string, string> {\n const clientName = this.bshEngine?.getClientName();\n if (!clientName) return {};\n return { 'X-Bsh-Client': clientName };\n }\n\n private async injectHeaders(params: BshClientFnParams<any>): Promise<Record<string, string>> {\n const authHeaders = await this.getAuthHeaders(params);\n const tenantHeaders = await this.getTenantHeaders(params);\n\n return {\n ...this.getClientHeaders(),\n ...authHeaders,\n ...tenantHeaders,\n };\n }\n\n private async applyPreInterceptors<T = unknown, R = T>(params: BshClientFnParams<T, R>): Promise<BshClientFnParams<T, R>> {\n const byPassPreInterceptors = params.bshOptions.byPass?.interceptors?.pre;\n if (byPassPreInterceptors == true || !this.bshEngine?.getPreInterceptors().length) return params;\n for (const interceptor of this.bshEngine.getPreInterceptors()) {\n const newParams = await interceptor(params as BshClientFnParams<unknown, unknown>);\n if (newParams) return newParams as BshClientFnParams<T, R>;\n }\n return params;\n }\n\n async get<T = unknown>(params: BshClientFnParams<T>): Promise<BshResponse<T> | undefined> {\n const authHeaders = await this.injectHeaders({ ...params, options: { ...params.options, method: 'GET' } });\n\n let clientParams = {\n ...params,\n path: `${this.host}${params.path}`,\n options: {\n ...params.options,\n method: 'GET',\n headers: {\n ...params.options.headers,\n ...authHeaders\n }\n }\n } as BshClientFnParams<T>;\n\n clientParams = await this.applyPreInterceptors<T>(clientParams);\n const response = await this.httpClient(clientParams);\n return this.handleResponse(response, clientParams, 'json');\n }\n\n async post<T = unknown, R = T>(params: BshClientFnParams<T, R>): Promise<BshResponse<R> | undefined> {\n const authHeaders = await this.injectHeaders({ ...params, options: { ...params.options, method: 'POST' } });\n\n let clientParams = {\n ...params,\n path: `${this.host}${params.path}`,\n options: {\n ...params.options,\n method: 'POST',\n headers: {\n ...params.options.headers,\n ...authHeaders\n }\n }\n } as BshClientFnParams<T, R>;\n\n clientParams = await this.applyPreInterceptors<T, R>(clientParams);\n const response = await this.httpClient(clientParams);\n return this.handleResponse(response, clientParams, 'json');\n }\n\n async put<T = unknown, R = T>(params: BshClientFnParams<T, R>): Promise<BshResponse<R> | undefined> {\n const authHeaders = await this.injectHeaders({ ...params, options: { ...params.options, method: 'PUT' } });\n let clientParams = {\n ...params,\n path: `${this.host}${params.path}`,\n options: {\n ...params.options,\n method: 'PUT',\n headers: {\n ...params.options.headers,\n ...authHeaders\n }\n }\n } as BshClientFnParams<T, R>;\n\n clientParams = await this.applyPreInterceptors<T, R>(clientParams);\n const response = await this.httpClient(clientParams);\n return this.handleResponse(response, clientParams, 'json');\n }\n\n async delete<T = unknown>(params: BshClientFnParams<T>): Promise<BshResponse<T> | undefined> {\n const authHeaders = await this.injectHeaders({ ...params, options: { ...params.options, method: 'DELETE' } });\n let clientParams = {\n ...params,\n path: `${this.host}${params.path}`,\n options: {\n ...params.options,\n method: 'DELETE',\n headers: {\n ...params.options.headers,\n ...authHeaders\n }\n }\n } as BshClientFnParams<T>;\n\n clientParams = await this.applyPreInterceptors<T>(clientParams);\n const response = await this.httpClient(clientParams);\n return this.handleResponse(response, clientParams, 'json');\n }\n\n async patch<T = unknown>(params: BshClientFnParams<T>): Promise<BshResponse<T> | undefined> {\n const authHeaders = await this.injectHeaders({ ...params, options: { ...params.options, method: 'PATCH' } });\n let clientParams = {\n ...params,\n path: `${this.host}${params.path}`,\n options: {\n ...params.options,\n method: 'PATCH',\n headers: {\n ...params.options.headers,\n ...authHeaders\n }\n }\n } as BshClientFnParams<T>;\n\n clientParams = await this.applyPreInterceptors<T>(clientParams);\n const response = await this.httpClient(clientParams);\n return this.handleResponse(response, clientParams, 'json');\n }\n\n async download<T = unknown>(params: BshClientFnParams<T>): Promise<Blob | undefined> {\n const authHeaders = await this.injectHeaders({ ...params, options: { ...params.options, method: 'GET' } });\n let clientParams = {\n ...params,\n path: `${this.host}${params.path}`,\n options: {\n ...params.options,\n method: 'GET',\n headers: {\n ...params.options.headers,\n ...authHeaders\n }\n }\n } as BshClientFnParams<T>;\n\n clientParams = await this.applyPreInterceptors<T>(clientParams);\n const response = await this.httpClient(clientParams);\n return this.handleResponse(response, clientParams, 'blob');\n }\n}\n","import { BshClientFn } from './types';\n\nexport * from './types';\nexport * from './bsh-client';\n\nexport const fetchClientFn: BshClientFn = async (params) => {\n return fetch(\n params.path,\n {\n method: params.options.method,\n body: params.options.requestFormat === 'form' ?\n params.options.body as BodyInit : params.options.body ?\n JSON.stringify(params.options.body) : undefined,\n headers: params.options.headers,\n }\n );\n};\n"]}
|
|
@@ -80,5 +80,5 @@ var BshSessionMetaData = {
|
|
|
80
80
|
};
|
|
81
81
|
|
|
82
82
|
export { AggregateFunctions, BshEntityPermissions, BshEntityTypes, BshError, BshInsertDuplicates, BshPKStrategies, BshPKTypes, BshSessionMetaData, BshUpdateStrategies, ComparisonOperators, LogicalOperators, PolicyActions, PrincipalType, defaultSettings, formatFileSize, isExpired, isOk };
|
|
83
|
-
//# sourceMappingURL=chunk-
|
|
84
|
-
//# sourceMappingURL=chunk-
|
|
83
|
+
//# sourceMappingURL=chunk-VYIVFVNS.js.map
|
|
84
|
+
//# sourceMappingURL=chunk-VYIVFVNS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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","../src/types/auth/index.ts"],"names":[],"mappings":"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","file":"chunk-VYIVFVNS.js","sourcesContent":["export type BshErrorCode =\n | 'JWT__SESSION_EXPIRED'\n | 'JWT__EXPIRED'\n | 'JWT__UNSUPPORTED'\n | 'JWT__MALFORMED'\n | 'JWT__INVALID_SIGNATURE'\n | 'JWT__INVALID'\n | 'JWT__INVALID_TYP'\n\n | 'AUTH__USER_NOT_FOUND'\n | 'AUTH__BAD_CREDENTIALS'\n | 'AUTH__NOT_ACTIVATED'\n | 'AUTH__ACCOUNT_DISABLED'\n | 'AUTH__ACCOUNT_LOCKED'\n | 'AUTH__RESET_PASSWORD_REQUIRED'\n | 'TENANT__BLOCKED_OR_INACTIVE'\n | 'TENANT__ACCESS_DENIED'\n\n | 'API__NOT_FOUND'\n\nexport 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 bshError?: BshErrorCode,\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\n/** True when the engine rejected the request because the auth session is over (user must log in again). */\nexport const isExpired = (error: BshError | BshResponse<unknown> | undefined) => {\n const response = error instanceof BshError ? error.response : error\n return response?.meta?.bshError === 'JWT__SESSION_EXPIRED'\n}\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 triggerable?: 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\nexport type BshSigningKeyStatus = 'Active' | 'Retired' | 'Expired';\nexport type BshSigningKeyExpireScope = 'none' | 'previous' | 'all';\n\nexport type BshSigningKey = {\n kid: string;\n status: BshSigningKeyStatus;\n activatedAt: BshDate;\n rotatesAt?: BshDate | null;\n retiredAt?: BshDate | null;\n verifyUntil?: BshDate | null;\n expiredAt?: BshDate | null;\n rotation?: 'Scheduled' | 'Manual';\n reason?: string | null;\n updatedBy?: string | null;\n current?: boolean;\n}\n\nexport type BshRotateSigningKey = {\n expire?: BshSigningKeyExpireScope;\n reason?: string;\n}\n\nexport type BshExpireSigningKey = {\n reason: string;\n}\n\nexport type BshRotateSigningKeyResult = {\n active: BshSigningKey;\n previous?: BshSigningKey | null;\n expired: string[];\n sessionReissued: boolean;\n}\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","import {BshDate, BshObject} from \"@src/types/core\";\n\nexport type LoginParams = {\n email: string;\n password: string;\n}\n\nexport type AuthTokens = {\n access: string;\n refresh: string;\n}\n\nexport type BshAuthSessionStatus = 'Active' | 'Expired' | 'Revoked' | 'LoggedOut' | 'Blocked';\n\nexport const BshSessionMetaData = {\n browsers: [\n 'Edge', 'Opera', 'Samsung Internet', 'Firefox', 'Chrome', 'Safari',\n 'Postman', 'curl', 'axios', 'node-fetch', 'Java', 'Python',\n ],\n os: ['Windows', 'iOS', 'Android', 'ChromeOS', 'macOS', 'Linux'],\n devices: ['Desktop', 'Mobile', 'Tablet', 'Other']\n} as const;\n\nexport type BshBrowser = typeof BshSessionMetaData.browsers[number];\nexport type BshOS = typeof BshSessionMetaData.os[number];\nexport type BshDevice = typeof BshSessionMetaData.devices[number];\n\nexport type BshAuthSessionMetadata = {\n /** Readable summary, e.g. \"Chrome 131 on macOS\". */\n label?: string;\n browser?: BshBrowser;\n /** Major version for browsers, full version for HTTP clients. */\n browserVersion?: string;\n os?: BshOS;\n device?: BshDevice;\n /** Value of the X-Bsh-Client header sent at login. */\n client?: string;\n userAgent?: string;\n};\n\nexport type BshAuthSession = Omit<BshObject, 'persistenceId'> & {\n sid: string;\n sub?: string;\n iat: BshDate;\n exp: BshDate;\n status: BshAuthSessionStatus;\n reason?: string;\n metadata?: BshAuthSessionMetadata;\n current: boolean;\n}\n\n\nexport type BshRevokeSessionResult = {\n sid: string;\n message: string;\n}\n"]}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as BshClientFn } from '../types-
|
|
2
|
-
export { A as AuthToken, B as BshAuthFn, c as BshClient, d as BshClientFnParams, e as BshErrorInterceptor, f as BshOnTokenRefreshedFn, g as BshPostInterceptor, h as BshPreInterceptor, i as BshRefreshTokenFn, j as BshTenantFn, k as defaultClientFn } from '../types-
|
|
1
|
+
import { a as BshClientFn } from '../types-DIupLPzT.js';
|
|
2
|
+
export { A as AuthToken, B as BshAuthFn, c as BshClient, d as BshClientFnParams, e as BshErrorInterceptor, f as BshOnTokenRefreshedFn, g as BshPostInterceptor, h as BshPreInterceptor, i as BshRefreshTokenFn, j as BshTenantFn, k as defaultClientFn } from '../types-DIupLPzT.js';
|
|
3
3
|
import '../types/index.js';
|
|
4
4
|
|
|
5
5
|
declare const fetchClientFn: BshClientFn;
|
package/dist/client/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { BshClient, defaultClientFn, fetchClientFn } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { BshClient, defaultClientFn, fetchClientFn } from '../chunk-VW3CXR6C.js';
|
|
2
|
+
import '../chunk-VYIVFVNS.js';
|
|
3
|
+
import '../chunk-MCQQ5VZR.js';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { fetchClientFn, BshClient } from './chunk-
|
|
2
|
-
import { EntityService, AuthService, AuthSessionService, UserService, TenantService, SettingsService, ImageService, MailingService, BshUtilsService, CachingService, ApiKeyService } from './chunk-
|
|
3
|
-
import './chunk-
|
|
4
|
-
import { CoreEntities } from './chunk-
|
|
1
|
+
import { fetchClientFn, BshClient } from './chunk-VW3CXR6C.js';
|
|
2
|
+
import { EntityService, AuthService, AuthSessionService, SigningKeyService, UserService, TenantService, SettingsService, ImageService, MailingService, BshUtilsService, CachingService, ApiKeyService } from './chunk-ROUYWPYT.js';
|
|
3
|
+
import './chunk-VYIVFVNS.js';
|
|
4
|
+
import { CoreEntities } from './chunk-MCQQ5VZR.js';
|
|
5
5
|
|
|
6
6
|
// src/services/plugins/index.ts
|
|
7
7
|
var PluginService = class {
|
|
@@ -184,6 +184,9 @@ var BshEngine = class {
|
|
|
184
184
|
get authSessions() {
|
|
185
185
|
return new AuthSessionService(this.client);
|
|
186
186
|
}
|
|
187
|
+
get signingKeys() {
|
|
188
|
+
return new SigningKeyService(this.client);
|
|
189
|
+
}
|
|
187
190
|
get users() {
|
|
188
191
|
return new UserService(this.client);
|
|
189
192
|
}
|
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, 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
|
+
{"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, SigningKeyService, 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 signingKeys() {\n return new SigningKeyService(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"]}
|
package/dist/services/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import '../types/index.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-
|
|
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, x as SigningKeyService, T as TenantService, U as UserService } from '../types-DIupLPzT.js';
|
package/dist/services/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AdminUserService, ApiKeyService, AuthService, AuthSessionService, BshUtilsService, CachingService, EntityService, ImageService, MailingService, SettingsService, TenantService, UserService } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { AdminUserService, ApiKeyService, AuthService, AuthSessionService, BshUtilsService, CachingService, EntityService, ImageService, MailingService, SettingsService, SigningKeyService, TenantService, UserService } from '../chunk-ROUYWPYT.js';
|
|
2
|
+
import '../chunk-MCQQ5VZR.js';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/types/index.d.ts
CHANGED
|
@@ -21,6 +21,7 @@ declare const CoreEntities: {
|
|
|
21
21
|
readonly BshTenants: "BshTenants";
|
|
22
22
|
readonly TenantAudits: "TenantAudits";
|
|
23
23
|
readonly BshAuthSessions: "BshAuthSessions";
|
|
24
|
+
readonly BshJWTSigningSecret: "BshJWTSigningSecret";
|
|
24
25
|
readonly BshConfigurations: "BshConfigurations";
|
|
25
26
|
readonly BshEmails: "BshEmails";
|
|
26
27
|
readonly BshEmailTemplates: "BshEmailTemplates";
|
|
@@ -33,7 +34,7 @@ declare const CoreEntities: {
|
|
|
33
34
|
type CoreEntities = keyof typeof CoreEntities;
|
|
34
35
|
declare const PluginBasedEntities: string[];
|
|
35
36
|
|
|
36
|
-
type BshErrorCode = 'JWT__SESSION_EXPIRED' | 'JWT__EXPIRED' | 'JWT__UNSUPPORTED' | 'JWT__MALFORMED' | 'JWT__INVALID_SIGNATURE' | 'JWT__INVALID' | 'JWT__INVALID_TYP' | 'API__NOT_FOUND';
|
|
37
|
+
type BshErrorCode = 'JWT__SESSION_EXPIRED' | 'JWT__EXPIRED' | 'JWT__UNSUPPORTED' | 'JWT__MALFORMED' | 'JWT__INVALID_SIGNATURE' | 'JWT__INVALID' | 'JWT__INVALID_TYP' | 'AUTH__USER_NOT_FOUND' | 'AUTH__BAD_CREDENTIALS' | 'AUTH__NOT_ACTIVATED' | 'AUTH__ACCOUNT_DISABLED' | 'AUTH__ACCOUNT_LOCKED' | 'AUTH__RESET_PASSWORD_REQUIRED' | 'TENANT__BLOCKED_OR_INACTIVE' | 'TENANT__ACCESS_DENIED' | 'API__NOT_FOUND';
|
|
37
38
|
type BshResponse<T> = {
|
|
38
39
|
data: T[];
|
|
39
40
|
timestamp: number;
|
|
@@ -131,6 +132,7 @@ type BshEntities = {
|
|
|
131
132
|
auditable?: boolean;
|
|
132
133
|
isPluginBased?: boolean;
|
|
133
134
|
isMultiTenant?: boolean;
|
|
135
|
+
triggerable?: boolean;
|
|
134
136
|
pks: {
|
|
135
137
|
key: string;
|
|
136
138
|
strategy: 'AutoIncrement' | 'UUID' | 'Fixed';
|
|
@@ -275,6 +277,34 @@ type BshTenant = {
|
|
|
275
277
|
settings?: Record<string, unknown>;
|
|
276
278
|
} & BshObject;
|
|
277
279
|
type BshTenantPure = BshObjectPure<BshTenant>;
|
|
280
|
+
type BshSigningKeyStatus = 'Active' | 'Retired' | 'Expired';
|
|
281
|
+
type BshSigningKeyExpireScope = 'none' | 'previous' | 'all';
|
|
282
|
+
type BshSigningKey = {
|
|
283
|
+
kid: string;
|
|
284
|
+
status: BshSigningKeyStatus;
|
|
285
|
+
activatedAt: BshDate;
|
|
286
|
+
rotatesAt?: BshDate | null;
|
|
287
|
+
retiredAt?: BshDate | null;
|
|
288
|
+
verifyUntil?: BshDate | null;
|
|
289
|
+
expiredAt?: BshDate | null;
|
|
290
|
+
rotation?: 'Scheduled' | 'Manual';
|
|
291
|
+
reason?: string | null;
|
|
292
|
+
updatedBy?: string | null;
|
|
293
|
+
current?: boolean;
|
|
294
|
+
};
|
|
295
|
+
type BshRotateSigningKey = {
|
|
296
|
+
expire?: BshSigningKeyExpireScope;
|
|
297
|
+
reason?: string;
|
|
298
|
+
};
|
|
299
|
+
type BshExpireSigningKey = {
|
|
300
|
+
reason: string;
|
|
301
|
+
};
|
|
302
|
+
type BshRotateSigningKeyResult = {
|
|
303
|
+
active: BshSigningKey;
|
|
304
|
+
previous?: BshSigningKey | null;
|
|
305
|
+
expired: string[];
|
|
306
|
+
sessionReissued: boolean;
|
|
307
|
+
};
|
|
278
308
|
|
|
279
309
|
type BshEventLogs = {
|
|
280
310
|
id: string;
|
|
@@ -655,7 +685,7 @@ type AuthTokens = {
|
|
|
655
685
|
access: string;
|
|
656
686
|
refresh: string;
|
|
657
687
|
};
|
|
658
|
-
type BshAuthSessionStatus = 'Active' | 'Expired' | 'Revoked' | 'LoggedOut';
|
|
688
|
+
type BshAuthSessionStatus = 'Active' | 'Expired' | 'Revoked' | 'LoggedOut' | 'Blocked';
|
|
659
689
|
declare const BshSessionMetaData: {
|
|
660
690
|
readonly browsers: readonly ["Edge", "Opera", "Samsung Internet", "Firefox", "Chrome", "Safari", "Postman", "curl", "axios", "node-fetch", "Java", "Python"];
|
|
661
691
|
readonly os: readonly ["Windows", "iOS", "Android", "ChromeOS", "macOS", "Linux"];
|
|
@@ -682,6 +712,7 @@ type BshAuthSession = Omit<BshObject, 'persistenceId'> & {
|
|
|
682
712
|
iat: BshDate;
|
|
683
713
|
exp: BshDate;
|
|
684
714
|
status: BshAuthSessionStatus;
|
|
715
|
+
reason?: string;
|
|
685
716
|
metadata?: BshAuthSessionMetadata;
|
|
686
717
|
current: boolean;
|
|
687
718
|
};
|
|
@@ -690,4 +721,4 @@ type BshRevokeSessionResult = {
|
|
|
690
721
|
message: string;
|
|
691
722
|
};
|
|
692
723
|
|
|
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 };
|
|
724
|
+
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 BshExpireSigningKey, 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 BshRotateSigningKey, type BshRotateSigningKeyResult, type BshSchemaProperty, type BshSchemas, type BshSchemasPure, type BshSearch, BshSessionMetaData, type BshSettings, type BshSigningKey, type BshSigningKeyExpireScope, type BshSigningKeyStatus, 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 };
|
package/dist/types/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AggregateFunctions, BshEntityPermissions, BshEntityTypes, BshError, BshInsertDuplicates, BshPKStrategies, BshPKTypes, BshSessionMetaData, BshUpdateStrategies, ComparisonOperators, LogicalOperators, PolicyActions, PrincipalType, defaultSettings, formatFileSize, isExpired, isOk } from '../chunk-
|
|
2
|
-
export { CoreEntities, PluginBasedEntities } from '../chunk-
|
|
1
|
+
export { AggregateFunctions, BshEntityPermissions, BshEntityTypes, BshError, BshInsertDuplicates, BshPKStrategies, BshPKTypes, BshSessionMetaData, BshUpdateStrategies, ComparisonOperators, LogicalOperators, PolicyActions, PrincipalType, defaultSettings, formatFileSize, isExpired, isOk } from '../chunk-VYIVFVNS.js';
|
|
2
|
+
export { CoreEntities, PluginBasedEntities } from '../chunk-MCQQ5VZR.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, BshAuthSession, BshRevokeSessionResult, 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, BshSigningKey, BshRotateSigningKey, BshRotateSigningKeyResult, BshExpireSigningKey, BshError } from './types/index.js';
|
|
2
2
|
|
|
3
3
|
declare class PluginService {
|
|
4
4
|
private readonly client;
|
|
@@ -79,6 +79,7 @@ declare class BshEngine {
|
|
|
79
79
|
};
|
|
80
80
|
get auth(): AuthService;
|
|
81
81
|
get authSessions(): AuthSessionService;
|
|
82
|
+
get signingKeys(): SigningKeyService;
|
|
82
83
|
get users(): UserService;
|
|
83
84
|
get tenants(): TenantService;
|
|
84
85
|
get settings(): SettingsService;
|
|
@@ -455,6 +456,34 @@ declare class AuthSessionService {
|
|
|
455
456
|
}> | undefined>;
|
|
456
457
|
}
|
|
457
458
|
|
|
459
|
+
/**
|
|
460
|
+
* JWT signing keys (`/api/auth/signing-keys`). BSH admin only.
|
|
461
|
+
* The key material is never returned.
|
|
462
|
+
*/
|
|
463
|
+
declare class SigningKeyService {
|
|
464
|
+
private readonly client;
|
|
465
|
+
private readonly baseEndpoint;
|
|
466
|
+
constructor(client: BshClient);
|
|
467
|
+
search(params: BshSearchCallbackParams<BshSigningKey, BshSigningKey>): Promise<BshResponse<BshSigningKey> | undefined>;
|
|
468
|
+
list(params: BshCallbackParams<unknown, BshSigningKey> & {
|
|
469
|
+
queryParams?: {
|
|
470
|
+
page?: string;
|
|
471
|
+
size?: string;
|
|
472
|
+
sort?: string;
|
|
473
|
+
filter?: string;
|
|
474
|
+
};
|
|
475
|
+
}): Promise<BshResponse<BshSigningKey> | undefined>;
|
|
476
|
+
/**
|
|
477
|
+
* Forces a rotation. `expire: 'previous' | 'all'` expires the previous key(s) immediately:
|
|
478
|
+
* every user with tokens signed by them is logged out. `reason` is required when expiring.
|
|
479
|
+
*/
|
|
480
|
+
rotate(params: BshCallbackParamsWithPayload<BshRotateSigningKey, BshRotateSigningKeyResult>): Promise<BshResponse<BshRotateSigningKeyResult> | undefined>;
|
|
481
|
+
/** Expires a retired key now. The active key cannot be expired, rotate it instead. */
|
|
482
|
+
expire(params: BshCallbackParamsWithPayload<BshExpireSigningKey, BshSigningKey> & {
|
|
483
|
+
kid: string;
|
|
484
|
+
}): Promise<BshResponse<BshSigningKey> | undefined>;
|
|
485
|
+
}
|
|
486
|
+
|
|
458
487
|
type BshCallbackParams<T = unknown, R = T> = {
|
|
459
488
|
onSuccess?: (response: BshResponse<R>) => void;
|
|
460
489
|
onDownload?: (blob: Blob) => void;
|
|
@@ -504,4 +533,4 @@ type BshPostInterceptor<T = any> = (response: BshResponse<T>, params?: BshClient
|
|
|
504
533
|
type BshPreInterceptor<T = any, R = T> = (params: BshClientFnParams<T, R>) => Promise<BshClientFnParams<T, R>>;
|
|
505
534
|
type BshErrorInterceptor<T = any> = (error: BshError, response?: BshResponse<T>, params?: BshClientFnParams<T>) => Promise<BshError | undefined>;
|
|
506
535
|
|
|
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 };
|
|
536
|
+
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, SigningKeyService as x };
|
package/package.json
CHANGED
|
@@ -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","../src/types/auth/index.ts"],"names":[],"mappings":"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","file":"chunk-ARI3OLHJ.js","sourcesContent":["export type BshErrorCode =\n | 'JWT__SESSION_EXPIRED'\n | 'JWT__EXPIRED'\n | 'JWT__UNSUPPORTED'\n | 'JWT__MALFORMED'\n | 'JWT__INVALID_SIGNATURE'\n | 'JWT__INVALID'\n | 'JWT__INVALID_TYP'\n | 'API__NOT_FOUND'\n\nexport 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 bshError?: BshErrorCode,\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\n/** True when the engine rejected the request because the auth session is over (user must log in again). */\nexport const isExpired = (error: BshError | BshResponse<unknown> | undefined) => {\n const response = error instanceof BshError ? error.response : error\n return response?.meta?.bshError === 'JWT__SESSION_EXPIRED'\n}\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","import {BshDate, BshObject} from \"@src/types/core\";\n\nexport type LoginParams = {\n email: string;\n password: string;\n}\n\nexport type AuthTokens = {\n access: string;\n refresh: string;\n}\n\nexport type BshAuthSessionStatus = 'Active' | 'Expired' | 'Revoked' | 'LoggedOut';\n\nexport const BshSessionMetaData = {\n browsers: [\n 'Edge', 'Opera', 'Samsung Internet', 'Firefox', 'Chrome', 'Safari',\n 'Postman', 'curl', 'axios', 'node-fetch', 'Java', 'Python',\n ],\n os: ['Windows', 'iOS', 'Android', 'ChromeOS', 'macOS', 'Linux'],\n devices: ['Desktop', 'Mobile', 'Tablet', 'Other']\n} as const;\n\nexport type BshBrowser = typeof BshSessionMetaData.browsers[number];\nexport type BshOS = typeof BshSessionMetaData.os[number];\nexport type BshDevice = typeof BshSessionMetaData.devices[number];\n\nexport type BshAuthSessionMetadata = {\n /** Readable summary, e.g. \"Chrome 131 on macOS\". */\n label?: string;\n browser?: BshBrowser;\n /** Major version for browsers, full version for HTTP clients. */\n browserVersion?: string;\n os?: BshOS;\n device?: BshDevice;\n /** Value of the X-Bsh-Client header sent at login. */\n client?: string;\n userAgent?: string;\n};\n\nexport type BshAuthSession = Omit<BshObject, 'persistenceId'> & {\n sid: string;\n sub?: string;\n iat: BshDate;\n exp: BshDate;\n status: BshAuthSessionStatus;\n metadata?: BshAuthSessionMetadata;\n current: boolean;\n}\n\n\nexport type BshRevokeSessionResult = {\n sid: string;\n message: string;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/core/index.ts"],"names":[],"mappings":";AAYO,IAAM,YAAA,GAAe;AAAA,EACxB,WAAA,EAAa,aAAA;AAAA,EACb,UAAA,EAAY,YAAA;AAAA,EACZ,QAAA,EAAU,UAAA;AAAA,EAEV,QAAA,EAAU,UAAA;AAAA,EACV,WAAA,EAAa,aAAA;AAAA,EACb,QAAA,EAAU,UAAA;AAAA,EACV,UAAA,EAAY,YAAA;AAAA,EAEZ,QAAA,EAAU,UAAA;AAAA,EAEV,UAAA,EAAY,YAAA;AAAA,EACZ,YAAA,EAAc,cAAA;AAAA,EAEd,eAAA,EAAiB,iBAAA;AAAA,EAEjB,iBAAA,EAAmB,mBAAA;AAAA,EAEnB,SAAA,EAAW,WAAA;AAAA,EACX,iBAAA,EAAmB,mBAAA;AAAA,EAEnB,YAAA,EAAc,cAAA;AAAA,EACd,WAAA,EAAa,aAAA;AAAA,EACb,mBAAA,EAAqB,qBAAA;AAAA,EAErB,UAAA,EAAY,YAAA;AAAA,EACZ,gBAAA,EAAkB;AACtB;AAIO,IAAM,mBAAA,GAAgC;AAAA,EACzC,YAAA,CAAa,WAAA;AAAA,EACb,YAAA,CAAa,UAAA;AAAA,EACb,YAAA,CAAa,QAAA;AAAA,EACb,YAAA,CAAa,WAAA;AAAA,EACb,YAAA,CAAa,QAAA;AAAA,EACb,YAAA,CAAa,iBAAA;AAAA,EACb,YAAA,CAAa,iBAAA;AAAA,EACb,YAAA,CAAa;AACjB","file":"chunk-BAUGZHUO.js","sourcesContent":["export type BshDate = { $date: string }\n\nexport type BshObject = {\n persistenceId: string,\n CreatedAt?: BshDate,\n CreatedBy?: string,\n LastUpdatedAt?: BshDate\n LastUpdatedBy?: string\n}\n\nexport type BshObjectPure<T> = Omit<T, 'persistenceId' | 'CreatedAt' | 'CreatedBy' | 'LastUpdatedAt' | 'LastUpdatedBy'>\n\nexport const CoreEntities = {\n BshEntities: 'BshEntities',\n BshSchemas: 'BshSchemas',\n BshTypes: 'BshTypes',\n\n BshUsers: 'BshUsers',\n BshPolicies: 'BshPolicies',\n BshRoles: 'BshRoles',\n BshApiKeys: 'BshApiKeys',\n\n BshFiles: 'BshFiles',\n\n BshTenants: 'BshTenants',\n TenantAudits: 'TenantAudits',\n\n BshAuthSessions: 'BshAuthSessions',\n\n BshConfigurations: 'BshConfigurations',\n\n BshEmails: 'BshEmails',\n BshEmailTemplates: 'BshEmailTemplates',\n\n BshEventLogs: 'BshEventLogs',\n BshTriggers: 'BshTriggers',\n BshTriggerInstances: 'BshTriggerInstances',\n\n BshPlugins: 'BshPlugins',\n BshPluginHistory: 'BshPluginHistory',\n} as const;\n\nexport type CoreEntities = keyof typeof CoreEntities\n\nexport const PluginBasedEntities: string[] = [\n CoreEntities.BshEntities,\n CoreEntities.BshSchemas,\n CoreEntities.BshTypes,\n CoreEntities.BshPolicies,\n CoreEntities.BshRoles,\n CoreEntities.BshConfigurations,\n CoreEntities.BshEmailTemplates,\n CoreEntities.BshTriggers,\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","../src/services/auth-sessions/index.ts"],"names":[],"mappings":"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","file":"chunk-M7M65WTP.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: BshCallbackParams<unknown, 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 },\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","import { BshClient } from \"@src/client/bsh-client\";\nimport { BshResponse, BshAuthSession, BshRevokeSessionResult } from \"@types\";\nimport { BshCallbackParams, BshSearchCallbackParams } from \"@src/services\";\nimport { CoreEntities } from \"@src/types/core\";\n\n/**\n * Auth sessions of the logged-in user (`/api/auth/sessions`).\n * Requires user authentication (JWT or cookie session), API keys are rejected.\n * Regular users only see their own sessions.\n */\nexport class AuthSessionService {\n private readonly baseEndpoint = '/api/auth/sessions';\n\n public constructor(private readonly client: BshClient) {\n }\n\n public async current(params: BshCallbackParams<unknown, BshAuthSession>): Promise<BshResponse<BshAuthSession> | undefined> {\n return this.client.get<BshAuthSession>({\n path: `${this.baseEndpoint}/current`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n entity: CoreEntities.BshAuthSessions,\n api: 'auth-sessions.current',\n });\n }\n\n public async details(params: BshCallbackParams<unknown, BshAuthSession> & { sid: string }): Promise<BshResponse<BshAuthSession> | undefined> {\n return this.client.get<BshAuthSession>({\n path: `${this.baseEndpoint}/${params.sid}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n entity: CoreEntities.BshAuthSessions,\n api: 'auth-sessions.details',\n });\n }\n\n /** Revokes another session. The current session cannot be revoked, use `auth.logout` instead. */\n public async revoke(params: BshCallbackParams<unknown, BshRevokeSessionResult> & { sid: string }): Promise<BshResponse<BshRevokeSessionResult> | undefined> {\n return this.client.delete<BshRevokeSessionResult>({\n path: `${this.baseEndpoint}/${params.sid}/revoke`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n entity: CoreEntities.BshAuthSessions,\n api: 'auth-sessions.revoke',\n });\n }\n\n public async search(params: BshSearchCallbackParams<BshAuthSession, BshAuthSession>): Promise<BshResponse<BshAuthSession> | undefined> {\n return this.client.post<BshAuthSession>({\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.BshAuthSessions,\n api: 'auth-sessions.search',\n });\n }\n\n /** e.g. `queryParams: { sort: 'iat:desc', filter: 'status:eq:Active' }` */\n public async list(params: BshCallbackParams<unknown, BshAuthSession> & {\n queryParams?: {\n page?: string;\n size?: string;\n sort?: string;\n filter?: string;\n }\n }): Promise<BshResponse<BshAuthSession> | 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<BshAuthSession>({\n path: `${this.baseEndpoint}${endpoint}`,\n options: {\n responseType: 'json',\n requestFormat: 'json',\n },\n bshOptions: params,\n entity: CoreEntities.BshAuthSessions,\n api: 'auth-sessions.list',\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.BshAuthSessions,\n api: 'auth-sessions.count',\n });\n }\n\n public async countFiltered(params: BshSearchCallbackParams<BshAuthSession, {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.BshAuthSessions,\n api: 'auth-sessions.countFiltered',\n });\n }\n}\n"]}
|