@blimu/backend 1.1.1 → 1.1.4
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/README.md +6 -13
- package/dist/__tests__/token-verifier.test.cjs +17662 -0
- package/dist/__tests__/token-verifier.test.cjs.map +1 -0
- package/dist/__tests__/token-verifier.test.d.mts +2 -0
- package/dist/__tests__/token-verifier.test.d.ts +2 -0
- package/dist/__tests__/token-verifier.test.mjs +17661 -0
- package/dist/__tests__/token-verifier.test.mjs.map +1 -0
- package/dist/auth-strategies.cjs +42 -0
- package/dist/auth-strategies.cjs.map +1 -0
- package/dist/auth-strategies.d.mts +16 -0
- package/dist/auth-strategies.d.ts +16 -0
- package/dist/auth-strategies.mjs +17 -0
- package/dist/auth-strategies.mjs.map +1 -0
- package/dist/client.cjs +483 -0
- package/dist/client.cjs.map +1 -0
- package/dist/client.d.mts +26 -18
- package/dist/client.d.ts +26 -18
- package/dist/client.mjs +447 -39
- package/dist/client.mjs.map +1 -1
- package/dist/{main.js → index.cjs} +290 -407
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.mts +15 -33
- package/dist/index.d.ts +15 -33
- package/dist/index.mjs +440 -339
- package/dist/index.mjs.map +1 -1
- package/dist/{schema-B1usIXCr.d.mts → schema-BbKn_i-U.d.mts} +82 -93
- package/dist/{schema-B1usIXCr.d.ts → schema-BbKn_i-U.d.ts} +82 -93
- package/dist/{schema.js → schema.cjs} +1 -1
- package/dist/schema.cjs.map +1 -0
- package/dist/schema.d.mts +1 -2
- package/dist/schema.d.ts +1 -2
- package/dist/{schema.zod-CRNAHxbc.d.mts → schema.zod-DtXVS-1g.d.mts} +38 -48
- package/dist/{schema.zod-CRNAHxbc.d.ts → schema.zod-DtXVS-1g.d.ts} +38 -48
- package/dist/{schema.zod.js → schema.zod.cjs} +174 -248
- package/dist/schema.zod.cjs.map +1 -0
- package/dist/schema.zod.d.mts +1 -1
- package/dist/schema.zod.d.ts +1 -1
- package/dist/schema.zod.mjs +173 -242
- package/dist/schema.zod.mjs.map +1 -1
- package/dist/services/{bulk_resources.js → bulk_resources.cjs} +3 -2
- package/dist/services/bulk_resources.cjs.map +1 -0
- package/dist/services/bulk_resources.d.mts +4 -6
- package/dist/services/bulk_resources.d.ts +4 -6
- package/dist/services/bulk_resources.mjs +2 -1
- package/dist/services/bulk_resources.mjs.map +1 -1
- package/dist/services/{bulk_roles.js → bulk_roles.cjs} +3 -2
- package/dist/services/bulk_roles.cjs.map +1 -0
- package/dist/services/bulk_roles.d.mts +3 -5
- package/dist/services/bulk_roles.d.ts +3 -5
- package/dist/services/bulk_roles.mjs +2 -1
- package/dist/services/bulk_roles.mjs.map +1 -1
- package/dist/services/{entitlements.js → entitlements.cjs} +5 -4
- package/dist/services/entitlements.cjs.map +1 -0
- package/dist/services/entitlements.d.mts +4 -6
- package/dist/services/entitlements.d.ts +4 -6
- package/dist/services/entitlements.mjs +4 -3
- package/dist/services/entitlements.mjs.map +1 -1
- package/dist/services/{plans.js → plans.cjs} +5 -4
- package/dist/services/plans.cjs.map +1 -0
- package/dist/services/plans.d.mts +6 -8
- package/dist/services/plans.d.ts +6 -8
- package/dist/services/plans.mjs +4 -3
- package/dist/services/plans.mjs.map +1 -1
- package/dist/services/{resource_members.js → resource_members.cjs} +3 -2
- package/dist/services/resource_members.cjs.map +1 -0
- package/dist/services/resource_members.d.mts +4 -6
- package/dist/services/resource_members.d.ts +4 -6
- package/dist/services/resource_members.mjs +2 -1
- package/dist/services/resource_members.mjs.map +1 -1
- package/dist/services/{resources.js → resources.cjs} +7 -6
- package/dist/services/resources.cjs.map +1 -0
- package/dist/services/resources.d.mts +8 -10
- package/dist/services/resources.d.ts +8 -10
- package/dist/services/resources.mjs +6 -5
- package/dist/services/resources.mjs.map +1 -1
- package/dist/services/{roles.js → roles.cjs} +5 -4
- package/dist/services/roles.cjs.map +1 -0
- package/dist/services/roles.d.mts +4 -6
- package/dist/services/roles.d.ts +4 -6
- package/dist/services/roles.mjs +4 -3
- package/dist/services/roles.mjs.map +1 -1
- package/dist/services/{usage.js → usage.cjs} +7 -6
- package/dist/services/usage.cjs.map +1 -0
- package/dist/services/usage.d.mts +5 -7
- package/dist/services/usage.d.ts +5 -7
- package/dist/services/usage.mjs +6 -5
- package/dist/services/usage.mjs.map +1 -1
- package/dist/services/{users.js → users.cjs} +8 -7
- package/dist/services/users.cjs.map +1 -0
- package/dist/services/users.d.mts +3 -5
- package/dist/services/users.d.ts +3 -5
- package/dist/services/users.mjs +7 -6
- package/dist/services/users.mjs.map +1 -1
- package/dist/{token-verifier.js → token-verifier.cjs} +10 -30
- package/dist/token-verifier.cjs.map +1 -0
- package/dist/token-verifier.d.mts +5 -5
- package/dist/token-verifier.d.ts +5 -5
- package/dist/token-verifier.mjs +10 -33
- package/dist/token-verifier.mjs.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/{utils.js → utils.cjs} +9 -3
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.d.mts +4 -3
- package/dist/utils.d.ts +4 -3
- package/dist/utils.mjs +7 -2
- package/dist/utils.mjs.map +1 -1
- package/package.json +36 -24
- package/dist/client.js +0 -71
- package/dist/client.js.map +0 -1
- package/dist/index.js +0 -1052
- package/dist/index.js.map +0 -1
- package/dist/main.d.mts +0 -19
- package/dist/main.d.ts +0 -19
- package/dist/main.js.map +0 -1
- package/dist/main.mjs +0 -1275
- package/dist/main.mjs.map +0 -1
- package/dist/schema.js.map +0 -1
- package/dist/schema.zod.js.map +0 -1
- package/dist/services/bulk_resources.js.map +0 -1
- package/dist/services/bulk_roles.js.map +0 -1
- package/dist/services/entitlements.js.map +0 -1
- package/dist/services/plans.js.map +0 -1
- package/dist/services/resource_members.js.map +0 -1
- package/dist/services/resources.js.map +0 -1
- package/dist/services/roles.js.map +0 -1
- package/dist/services/usage.js.map +0 -1
- package/dist/services/users.js.map +0 -1
- package/dist/token-verifier.js.map +0 -1
- package/dist/utils.js.map +0 -1
- package/src/client.ts +0 -74
- package/src/index.ts +0 -55
- package/src/main.ts +0 -3
- package/src/schema.ts +0 -430
- package/src/schema.zod.ts +0 -558
- package/src/services/bulk_resources.ts +0 -24
- package/src/services/bulk_roles.ts +0 -22
- package/src/services/entitlements.ts +0 -58
- package/src/services/plans.ts +0 -57
- package/src/services/resource_members.ts +0 -25
- package/src/services/resources.ts +0 -91
- package/src/services/roles.ts +0 -58
- package/src/services/usage.ts +0 -93
- package/src/services/users.ts +0 -100
- package/src/token-verifier.ts +0 -280
- package/src/utils.ts +0 -56
package/dist/index.mjs
CHANGED
|
@@ -5,48 +5,28 @@ var __export = (target, all) => {
|
|
|
5
5
|
};
|
|
6
6
|
|
|
7
7
|
// src/client.ts
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
location: "header",
|
|
22
|
-
name: "X-API-KEY"
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
const finalAuthStrategies = [
|
|
26
|
-
..._existingAuth?.strategies || [],
|
|
27
|
-
...authStrategies
|
|
28
|
-
];
|
|
29
|
-
const fetchConfig = {
|
|
30
|
-
...restCfg,
|
|
31
|
-
baseURL: cfg.baseURL ?? "https://api.blimu.dev",
|
|
32
|
-
// Explicitly set auth after restCfg to ensure it's not overwritten
|
|
33
|
-
// (restCfg might have an auth property that we want to replace)
|
|
34
|
-
...finalAuthStrategies.length > 0 ? {
|
|
35
|
-
auth: {
|
|
36
|
-
strategies: finalAuthStrategies
|
|
37
|
-
}
|
|
38
|
-
} : {}
|
|
39
|
-
// Hooks are passed through directly from FetchClientConfig (no mapping needed)
|
|
40
|
-
};
|
|
41
|
-
super(fetchConfig);
|
|
42
|
-
}
|
|
43
|
-
async request(init) {
|
|
44
|
-
return await super.request(init);
|
|
45
|
-
}
|
|
46
|
-
async *requestStream(init) {
|
|
47
|
-
yield* super.requestStream(init);
|
|
8
|
+
import { FetchClient as FetchClient10, FetchError } from "@blimu/fetch";
|
|
9
|
+
import "@blimu/fetch";
|
|
10
|
+
|
|
11
|
+
// src/auth-strategies.ts
|
|
12
|
+
function buildAuthStrategies(cfg) {
|
|
13
|
+
const authStrategies = [...cfg?.authStrategies ?? []];
|
|
14
|
+
if (cfg.apiKey) {
|
|
15
|
+
authStrategies.push({
|
|
16
|
+
type: "apiKey",
|
|
17
|
+
key: cfg.apiKey,
|
|
18
|
+
location: "header",
|
|
19
|
+
name: "X-API-KEY"
|
|
20
|
+
});
|
|
48
21
|
}
|
|
49
|
-
|
|
22
|
+
return authStrategies;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// src/services/bulk_resources.ts
|
|
26
|
+
import "@blimu/fetch";
|
|
27
|
+
|
|
28
|
+
// src/schema.ts
|
|
29
|
+
var schema_exports = {};
|
|
50
30
|
|
|
51
31
|
// src/services/bulk_resources.ts
|
|
52
32
|
var BulkResourcesService = class {
|
|
@@ -62,12 +42,13 @@ var BulkResourcesService = class {
|
|
|
62
42
|
method: "POST",
|
|
63
43
|
path: `/v1/resources/${encodeURIComponent(resourceType)}/bulk`,
|
|
64
44
|
body,
|
|
65
|
-
...init
|
|
45
|
+
...init ?? {}
|
|
66
46
|
});
|
|
67
47
|
}
|
|
68
48
|
};
|
|
69
49
|
|
|
70
50
|
// src/services/bulk_roles.ts
|
|
51
|
+
import "@blimu/fetch";
|
|
71
52
|
var BulkRolesService = class {
|
|
72
53
|
constructor(core) {
|
|
73
54
|
this.core = core;
|
|
@@ -81,12 +62,13 @@ var BulkRolesService = class {
|
|
|
81
62
|
method: "POST",
|
|
82
63
|
path: `/v1/users/roles/bulk`,
|
|
83
64
|
body,
|
|
84
|
-
...init
|
|
65
|
+
...init ?? {}
|
|
85
66
|
});
|
|
86
67
|
}
|
|
87
68
|
};
|
|
88
69
|
|
|
89
70
|
// src/services/entitlements.ts
|
|
71
|
+
import "@blimu/fetch";
|
|
90
72
|
var EntitlementsService = class {
|
|
91
73
|
constructor(core) {
|
|
92
74
|
this.core = core;
|
|
@@ -100,7 +82,7 @@ var EntitlementsService = class {
|
|
|
100
82
|
method: "POST",
|
|
101
83
|
path: `/v1/entitlements/check`,
|
|
102
84
|
body,
|
|
103
|
-
...init
|
|
85
|
+
...init ?? {}
|
|
104
86
|
});
|
|
105
87
|
}
|
|
106
88
|
/**
|
|
@@ -112,7 +94,7 @@ var EntitlementsService = class {
|
|
|
112
94
|
method: "GET",
|
|
113
95
|
path: `/v1/entitlements/list-for-resource/${encodeURIComponent(resourceType)}/${encodeURIComponent(resourceId)}`,
|
|
114
96
|
query,
|
|
115
|
-
...init
|
|
97
|
+
...init ?? {}
|
|
116
98
|
});
|
|
117
99
|
}
|
|
118
100
|
/**
|
|
@@ -124,12 +106,13 @@ var EntitlementsService = class {
|
|
|
124
106
|
method: "GET",
|
|
125
107
|
path: `/v1/entitlements/list-for-tenant/${encodeURIComponent(tenantResourceId)}`,
|
|
126
108
|
query,
|
|
127
|
-
...init
|
|
109
|
+
...init ?? {}
|
|
128
110
|
});
|
|
129
111
|
}
|
|
130
112
|
};
|
|
131
113
|
|
|
132
114
|
// src/services/plans.ts
|
|
115
|
+
import "@blimu/fetch";
|
|
133
116
|
var PlansService = class {
|
|
134
117
|
constructor(core) {
|
|
135
118
|
this.core = core;
|
|
@@ -142,7 +125,7 @@ var PlansService = class {
|
|
|
142
125
|
return this.core.request({
|
|
143
126
|
method: "DELETE",
|
|
144
127
|
path: `/v1/resources/${encodeURIComponent(resourceType)}/${encodeURIComponent(resourceId)}/plan`,
|
|
145
|
-
...init
|
|
128
|
+
...init ?? {}
|
|
146
129
|
});
|
|
147
130
|
}
|
|
148
131
|
/**
|
|
@@ -153,7 +136,7 @@ var PlansService = class {
|
|
|
153
136
|
return this.core.request({
|
|
154
137
|
method: "GET",
|
|
155
138
|
path: `/v1/resources/${encodeURIComponent(resourceType)}/${encodeURIComponent(resourceId)}/plan`,
|
|
156
|
-
...init
|
|
139
|
+
...init ?? {}
|
|
157
140
|
});
|
|
158
141
|
}
|
|
159
142
|
/**
|
|
@@ -165,12 +148,13 @@ var PlansService = class {
|
|
|
165
148
|
method: "POST",
|
|
166
149
|
path: `/v1/resources/${encodeURIComponent(resourceType)}/${encodeURIComponent(resourceId)}/plan`,
|
|
167
150
|
body,
|
|
168
|
-
...init
|
|
151
|
+
...init ?? {}
|
|
169
152
|
});
|
|
170
153
|
}
|
|
171
154
|
};
|
|
172
155
|
|
|
173
156
|
// src/services/resource_members.ts
|
|
157
|
+
import "@blimu/fetch";
|
|
174
158
|
var ResourceMembersService = class {
|
|
175
159
|
constructor(core) {
|
|
176
160
|
this.core = core;
|
|
@@ -184,12 +168,13 @@ var ResourceMembersService = class {
|
|
|
184
168
|
method: "GET",
|
|
185
169
|
path: `/v1/resources/${encodeURIComponent(resourceType)}/${encodeURIComponent(resourceId)}/members`,
|
|
186
170
|
query,
|
|
187
|
-
...init
|
|
171
|
+
...init ?? {}
|
|
188
172
|
});
|
|
189
173
|
}
|
|
190
174
|
};
|
|
191
175
|
|
|
192
176
|
// src/services/resources.ts
|
|
177
|
+
import "@blimu/fetch";
|
|
193
178
|
var ResourcesService = class {
|
|
194
179
|
constructor(core) {
|
|
195
180
|
this.core = core;
|
|
@@ -203,7 +188,7 @@ var ResourcesService = class {
|
|
|
203
188
|
method: "GET",
|
|
204
189
|
path: `/v1/resources/${encodeURIComponent(resourceType)}`,
|
|
205
190
|
query,
|
|
206
|
-
...init
|
|
191
|
+
...init ?? {}
|
|
207
192
|
});
|
|
208
193
|
}
|
|
209
194
|
/**
|
|
@@ -215,7 +200,7 @@ var ResourcesService = class {
|
|
|
215
200
|
method: "POST",
|
|
216
201
|
path: `/v1/resources/${encodeURIComponent(resourceType)}`,
|
|
217
202
|
body,
|
|
218
|
-
...init
|
|
203
|
+
...init ?? {}
|
|
219
204
|
});
|
|
220
205
|
}
|
|
221
206
|
/**
|
|
@@ -226,7 +211,7 @@ var ResourcesService = class {
|
|
|
226
211
|
return this.core.request({
|
|
227
212
|
method: "DELETE",
|
|
228
213
|
path: `/v1/resources/${encodeURIComponent(resourceType)}/${encodeURIComponent(resourceId)}`,
|
|
229
|
-
...init
|
|
214
|
+
...init ?? {}
|
|
230
215
|
});
|
|
231
216
|
}
|
|
232
217
|
/**
|
|
@@ -237,7 +222,7 @@ var ResourcesService = class {
|
|
|
237
222
|
return this.core.request({
|
|
238
223
|
method: "GET",
|
|
239
224
|
path: `/v1/resources/${encodeURIComponent(resourceType)}/${encodeURIComponent(resourceId)}`,
|
|
240
|
-
...init
|
|
225
|
+
...init ?? {}
|
|
241
226
|
});
|
|
242
227
|
}
|
|
243
228
|
/**
|
|
@@ -249,12 +234,13 @@ var ResourcesService = class {
|
|
|
249
234
|
method: "PUT",
|
|
250
235
|
path: `/v1/resources/${encodeURIComponent(resourceType)}/${encodeURIComponent(resourceId)}`,
|
|
251
236
|
body,
|
|
252
|
-
...init
|
|
237
|
+
...init ?? {}
|
|
253
238
|
});
|
|
254
239
|
}
|
|
255
240
|
};
|
|
256
241
|
|
|
257
242
|
// src/services/roles.ts
|
|
243
|
+
import "@blimu/fetch";
|
|
258
244
|
var RolesService = class {
|
|
259
245
|
constructor(core) {
|
|
260
246
|
this.core = core;
|
|
@@ -268,7 +254,7 @@ var RolesService = class {
|
|
|
268
254
|
method: "GET",
|
|
269
255
|
path: `/v1/users/${encodeURIComponent(userId)}/roles`,
|
|
270
256
|
query,
|
|
271
|
-
...init
|
|
257
|
+
...init ?? {}
|
|
272
258
|
});
|
|
273
259
|
}
|
|
274
260
|
/**
|
|
@@ -280,7 +266,7 @@ var RolesService = class {
|
|
|
280
266
|
method: "POST",
|
|
281
267
|
path: `/v1/users/${encodeURIComponent(userId)}/roles`,
|
|
282
268
|
body,
|
|
283
|
-
...init
|
|
269
|
+
...init ?? {}
|
|
284
270
|
});
|
|
285
271
|
}
|
|
286
272
|
/**
|
|
@@ -291,12 +277,13 @@ var RolesService = class {
|
|
|
291
277
|
return this.core.request({
|
|
292
278
|
method: "DELETE",
|
|
293
279
|
path: `/v1/users/${encodeURIComponent(userId)}/roles/${encodeURIComponent(resourceType)}/${encodeURIComponent(resourceId)}`,
|
|
294
|
-
...init
|
|
280
|
+
...init ?? {}
|
|
295
281
|
});
|
|
296
282
|
}
|
|
297
283
|
};
|
|
298
284
|
|
|
299
285
|
// src/services/usage.ts
|
|
286
|
+
import "@blimu/fetch";
|
|
300
287
|
var UsageService = class {
|
|
301
288
|
constructor(core) {
|
|
302
289
|
this.core = core;
|
|
@@ -310,7 +297,7 @@ var UsageService = class {
|
|
|
310
297
|
method: "GET",
|
|
311
298
|
path: `/v1/usage/balance/${encodeURIComponent(resourceType)}/${encodeURIComponent(resourceId)}/${encodeURIComponent(limitType)}`,
|
|
312
299
|
query,
|
|
313
|
-
...init
|
|
300
|
+
...init ?? {}
|
|
314
301
|
});
|
|
315
302
|
}
|
|
316
303
|
/**
|
|
@@ -322,7 +309,7 @@ var UsageService = class {
|
|
|
322
309
|
method: "POST",
|
|
323
310
|
path: `/v1/usage/check`,
|
|
324
311
|
body,
|
|
325
|
-
...init
|
|
312
|
+
...init ?? {}
|
|
326
313
|
});
|
|
327
314
|
}
|
|
328
315
|
/**
|
|
@@ -334,7 +321,7 @@ var UsageService = class {
|
|
|
334
321
|
method: "POST",
|
|
335
322
|
path: `/v1/usage/consume`,
|
|
336
323
|
body,
|
|
337
|
-
...init
|
|
324
|
+
...init ?? {}
|
|
338
325
|
});
|
|
339
326
|
}
|
|
340
327
|
/**
|
|
@@ -346,7 +333,7 @@ var UsageService = class {
|
|
|
346
333
|
method: "POST",
|
|
347
334
|
path: `/v1/usage/credit`,
|
|
348
335
|
body,
|
|
349
|
-
...init
|
|
336
|
+
...init ?? {}
|
|
350
337
|
});
|
|
351
338
|
}
|
|
352
339
|
/**
|
|
@@ -358,12 +345,13 @@ var UsageService = class {
|
|
|
358
345
|
method: "GET",
|
|
359
346
|
path: `/v1/usage/transactions/${encodeURIComponent(resourceType)}/${encodeURIComponent(resourceId)}/${encodeURIComponent(limitType)}`,
|
|
360
347
|
query,
|
|
361
|
-
...init
|
|
348
|
+
...init ?? {}
|
|
362
349
|
});
|
|
363
350
|
}
|
|
364
351
|
};
|
|
365
352
|
|
|
366
353
|
// src/services/users.ts
|
|
354
|
+
import "@blimu/fetch";
|
|
367
355
|
var UsersService = class {
|
|
368
356
|
constructor(core) {
|
|
369
357
|
this.core = core;
|
|
@@ -377,7 +365,7 @@ var UsersService = class {
|
|
|
377
365
|
method: "GET",
|
|
378
366
|
path: `/v1/users`,
|
|
379
367
|
query,
|
|
380
|
-
...init
|
|
368
|
+
...init ?? {}
|
|
381
369
|
});
|
|
382
370
|
}
|
|
383
371
|
/**
|
|
@@ -389,7 +377,7 @@ var UsersService = class {
|
|
|
389
377
|
method: "POST",
|
|
390
378
|
path: `/v1/users`,
|
|
391
379
|
body,
|
|
392
|
-
...init
|
|
380
|
+
...init ?? {}
|
|
393
381
|
});
|
|
394
382
|
}
|
|
395
383
|
/**
|
|
@@ -400,7 +388,7 @@ var UsersService = class {
|
|
|
400
388
|
return this.core.request({
|
|
401
389
|
method: "DELETE",
|
|
402
390
|
path: `/v1/users/${encodeURIComponent(userId)}`,
|
|
403
|
-
...init
|
|
391
|
+
...init ?? {}
|
|
404
392
|
});
|
|
405
393
|
}
|
|
406
394
|
/**
|
|
@@ -411,7 +399,7 @@ var UsersService = class {
|
|
|
411
399
|
return this.core.request({
|
|
412
400
|
method: "GET",
|
|
413
401
|
path: `/v1/users/${encodeURIComponent(userId)}`,
|
|
414
|
-
...init
|
|
402
|
+
...init ?? {}
|
|
415
403
|
});
|
|
416
404
|
}
|
|
417
405
|
/**
|
|
@@ -423,7 +411,7 @@ var UsersService = class {
|
|
|
423
411
|
method: "PUT",
|
|
424
412
|
path: `/v1/users/${encodeURIComponent(userId)}`,
|
|
425
413
|
body,
|
|
426
|
-
...init
|
|
414
|
+
...init ?? {}
|
|
427
415
|
});
|
|
428
416
|
}
|
|
429
417
|
/**
|
|
@@ -434,10 +422,43 @@ var UsersService = class {
|
|
|
434
422
|
return this.core.request({
|
|
435
423
|
method: "GET",
|
|
436
424
|
path: `/v1/users/${encodeURIComponent(userId)}/effective-user-resources-roles`,
|
|
437
|
-
...init
|
|
425
|
+
...init ?? {}
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
};
|
|
429
|
+
|
|
430
|
+
// src/client.ts
|
|
431
|
+
var Blimu = class {
|
|
432
|
+
bulkResources;
|
|
433
|
+
bulkRoles;
|
|
434
|
+
entitlements;
|
|
435
|
+
plans;
|
|
436
|
+
resourceMembers;
|
|
437
|
+
resources;
|
|
438
|
+
roles;
|
|
439
|
+
usage;
|
|
440
|
+
users;
|
|
441
|
+
constructor(options) {
|
|
442
|
+
const restCfg = { ...options ?? {} };
|
|
443
|
+
delete restCfg.apiKey;
|
|
444
|
+
const authStrategies = buildAuthStrategies(options ?? {});
|
|
445
|
+
const core = new FetchClient10({
|
|
446
|
+
...restCfg,
|
|
447
|
+
baseURL: options?.baseURL ?? "https://api.blimu.dev",
|
|
448
|
+
...authStrategies.length > 0 ? { authStrategies } : {}
|
|
438
449
|
});
|
|
450
|
+
this.bulkResources = new BulkResourcesService(core);
|
|
451
|
+
this.bulkRoles = new BulkRolesService(core);
|
|
452
|
+
this.entitlements = new EntitlementsService(core);
|
|
453
|
+
this.plans = new PlansService(core);
|
|
454
|
+
this.resourceMembers = new ResourceMembersService(core);
|
|
455
|
+
this.resources = new ResourcesService(core);
|
|
456
|
+
this.roles = new RolesService(core);
|
|
457
|
+
this.usage = new UsageService(core);
|
|
458
|
+
this.users = new UsersService(core);
|
|
439
459
|
}
|
|
440
460
|
};
|
|
461
|
+
var BlimuError = FetchError;
|
|
441
462
|
|
|
442
463
|
// src/index.ts
|
|
443
464
|
export * from "@blimu/fetch";
|
|
@@ -460,13 +481,14 @@ async function* paginate(fetchPage, initialQuery = {}, pageSize = 100) {
|
|
|
460
481
|
}
|
|
461
482
|
async function listAll(fetchPage, query = {}, pageSize = 100) {
|
|
462
483
|
const out = [];
|
|
463
|
-
for await (const item of paginate(fetchPage, query, pageSize))
|
|
464
|
-
out.push(item);
|
|
484
|
+
for await (const item of paginate(fetchPage, query, pageSize)) out.push(item);
|
|
465
485
|
return out;
|
|
466
486
|
}
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
487
|
+
function isNotUndefined(arr) {
|
|
488
|
+
return arr.filter(
|
|
489
|
+
(item) => item !== void 0
|
|
490
|
+
);
|
|
491
|
+
}
|
|
470
492
|
|
|
471
493
|
// src/schema.zod.ts
|
|
472
494
|
var schema_zod_exports = {};
|
|
@@ -475,15 +497,12 @@ __export(schema_zod_exports, {
|
|
|
475
497
|
CheckLimitResponseSchema: () => CheckLimitResponseSchema,
|
|
476
498
|
EntitlementCheckBodySchema: () => EntitlementCheckBodySchema,
|
|
477
499
|
EntitlementCheckResultSchema: () => EntitlementCheckResultSchema,
|
|
478
|
-
EntitlementTypeSchema: () => EntitlementTypeSchema,
|
|
479
500
|
EntitlementsListForResourceQuerySchema: () => EntitlementsListForResourceQuerySchema,
|
|
480
501
|
EntitlementsListForTenantQuerySchema: () => EntitlementsListForTenantQuerySchema,
|
|
481
502
|
EntitlementsListResultSchema: () => EntitlementsListResultSchema,
|
|
482
|
-
LimitTypeSchema: () => LimitTypeSchema,
|
|
483
503
|
PlanAssignBodySchema: () => PlanAssignBodySchema,
|
|
484
504
|
PlanDeleteResponseSchema: () => PlanDeleteResponseSchema,
|
|
485
505
|
PlanResponseSchema: () => PlanResponseSchema,
|
|
486
|
-
PlanTypeSchema: () => PlanTypeSchema,
|
|
487
506
|
ResourceBulkCreateBodySchema: () => ResourceBulkCreateBodySchema,
|
|
488
507
|
ResourceBulkResultSchema: () => ResourceBulkResultSchema,
|
|
489
508
|
ResourceCreateBodySchema: () => ResourceCreateBodySchema,
|
|
@@ -491,7 +510,6 @@ __export(schema_zod_exports, {
|
|
|
491
510
|
ResourceMemberListSchema: () => ResourceMemberListSchema,
|
|
492
511
|
ResourceMembersListQuerySchema: () => ResourceMembersListQuerySchema,
|
|
493
512
|
ResourceSchema: () => ResourceSchema,
|
|
494
|
-
ResourceTypeSchema: () => ResourceTypeSchema,
|
|
495
513
|
ResourceUpdateBodySchema: () => ResourceUpdateBodySchema,
|
|
496
514
|
ResourcesListQuerySchema: () => ResourcesListQuerySchema,
|
|
497
515
|
RoleBulkCreateBodySchema: () => RoleBulkCreateBodySchema,
|
|
@@ -506,7 +524,6 @@ __export(schema_zod_exports, {
|
|
|
506
524
|
UsageCreditBodySchema: () => UsageCreditBodySchema,
|
|
507
525
|
UsageGetBalanceQuerySchema: () => UsageGetBalanceQuerySchema,
|
|
508
526
|
UsageGetTransactionHistoryQuerySchema: () => UsageGetTransactionHistoryQuerySchema,
|
|
509
|
-
UsageLimitTypeSchema: () => UsageLimitTypeSchema,
|
|
510
527
|
UsageWalletResponseSchema: () => UsageWalletResponseSchema,
|
|
511
528
|
UserCreateBodySchema: () => UserCreateBodySchema,
|
|
512
529
|
UserListSchema: () => UserListSchema,
|
|
@@ -516,11 +533,6 @@ __export(schema_zod_exports, {
|
|
|
516
533
|
UsersListQuerySchema: () => UsersListQuerySchema
|
|
517
534
|
});
|
|
518
535
|
import { z } from "zod";
|
|
519
|
-
var EntitlementTypeSchema = z.string();
|
|
520
|
-
var LimitTypeSchema = z.string();
|
|
521
|
-
var PlanTypeSchema = z.string();
|
|
522
|
-
var ResourceTypeSchema = z.string();
|
|
523
|
-
var UsageLimitTypeSchema = z.string();
|
|
524
536
|
var BalanceResponseSchema = z.object({ balance: z.number() });
|
|
525
537
|
var CheckLimitResponseSchema = z.object({
|
|
526
538
|
allowed: z.boolean(),
|
|
@@ -530,7 +542,7 @@ var CheckLimitResponseSchema = z.object({
|
|
|
530
542
|
});
|
|
531
543
|
var EntitlementCheckBodySchema = z.object({
|
|
532
544
|
amount: z.number().int().optional(),
|
|
533
|
-
entitlement:
|
|
545
|
+
entitlement: z.string(),
|
|
534
546
|
resourceId: z.string(),
|
|
535
547
|
userId: z.string()
|
|
536
548
|
});
|
|
@@ -547,109 +559,89 @@ var EntitlementCheckResultSchema = z.object({
|
|
|
547
559
|
}).nullable().optional(),
|
|
548
560
|
plans: z.object({
|
|
549
561
|
allowed: z.boolean(),
|
|
550
|
-
allowedPlans: z.
|
|
562
|
+
allowedPlans: z.string().array().optional(),
|
|
551
563
|
plan: z.string().nullable().optional(),
|
|
552
564
|
reason: z.string().optional()
|
|
553
565
|
}).nullable().optional(),
|
|
554
566
|
roles: z.object({
|
|
555
567
|
allowed: z.boolean(),
|
|
556
|
-
allowedRoles: z.
|
|
568
|
+
allowedRoles: z.string().array().optional(),
|
|
557
569
|
reason: z.string().optional(),
|
|
558
|
-
userRoles: z.
|
|
570
|
+
userRoles: z.string().array().optional()
|
|
559
571
|
}).nullable().optional()
|
|
560
572
|
});
|
|
561
573
|
var EntitlementsListResultSchema = z.object({
|
|
562
|
-
results: z.
|
|
563
|
-
z.object({
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
resourceId: z.string(),
|
|
577
|
-
resourceType: ResourceTypeSchema
|
|
578
|
-
})
|
|
579
|
-
)
|
|
574
|
+
results: z.object({
|
|
575
|
+
entitlements: z.object({
|
|
576
|
+
allowed: z.boolean(),
|
|
577
|
+
allowedByPlan: z.boolean(),
|
|
578
|
+
allowedByRole: z.boolean(),
|
|
579
|
+
allowedPlans: z.string().array().optional(),
|
|
580
|
+
allowedRoles: z.string().array(),
|
|
581
|
+
currentPlan: z.string().optional(),
|
|
582
|
+
currentRole: z.string().optional(),
|
|
583
|
+
entitlement: z.string()
|
|
584
|
+
}).array(),
|
|
585
|
+
resourceId: z.string(),
|
|
586
|
+
resourceType: z.string()
|
|
587
|
+
}).array()
|
|
580
588
|
});
|
|
581
|
-
var PlanAssignBodySchema = z.object({ planKey:
|
|
589
|
+
var PlanAssignBodySchema = z.object({ planKey: z.string() });
|
|
582
590
|
var PlanDeleteResponseSchema = z.object({ success: z.boolean() });
|
|
583
591
|
var PlanResponseSchema = z.object({
|
|
584
|
-
createdAt: z.
|
|
592
|
+
createdAt: z.iso.datetime(),
|
|
585
593
|
environmentId: z.string(),
|
|
586
|
-
planKey:
|
|
594
|
+
planKey: z.string(),
|
|
587
595
|
resourceId: z.string(),
|
|
588
|
-
resourceType:
|
|
589
|
-
updatedAt: z.
|
|
596
|
+
resourceType: z.string(),
|
|
597
|
+
updatedAt: z.iso.datetime()
|
|
590
598
|
});
|
|
591
599
|
var ResourceSchema = z.object({
|
|
592
|
-
createdAt: z.
|
|
600
|
+
createdAt: z.iso.datetime(),
|
|
593
601
|
id: z.string(),
|
|
594
602
|
name: z.string().nullable(),
|
|
595
|
-
parents: z.
|
|
596
|
-
z.
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
).optional(),
|
|
601
|
-
type: ResourceTypeSchema
|
|
603
|
+
parents: z.object({
|
|
604
|
+
id: z.string(),
|
|
605
|
+
type: z.string()
|
|
606
|
+
}).array().optional(),
|
|
607
|
+
type: z.string()
|
|
602
608
|
});
|
|
603
609
|
var ResourceBulkCreateBodySchema = z.object({
|
|
604
|
-
resources: z.
|
|
605
|
-
z.
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
role: z.string(),
|
|
617
|
-
userId: z.string()
|
|
618
|
-
})
|
|
619
|
-
).optional()
|
|
620
|
-
})
|
|
621
|
-
)
|
|
610
|
+
resources: z.object({
|
|
611
|
+
id: z.string().optional(),
|
|
612
|
+
name: z.string().optional(),
|
|
613
|
+
parents: z.object({
|
|
614
|
+
id: z.string(),
|
|
615
|
+
type: z.string()
|
|
616
|
+
}).array().optional(),
|
|
617
|
+
roles: z.object({
|
|
618
|
+
role: z.string(),
|
|
619
|
+
userId: z.string()
|
|
620
|
+
}).array().optional()
|
|
621
|
+
}).array()
|
|
622
622
|
});
|
|
623
623
|
var ResourceBulkResultSchema = z.object({
|
|
624
|
-
created: z.
|
|
625
|
-
z.
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
z.object({
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
id: z.string()
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
).optional(),
|
|
644
|
-
roles: z.array(
|
|
645
|
-
z.object({
|
|
646
|
-
role: z.string(),
|
|
647
|
-
userId: z.string()
|
|
648
|
-
})
|
|
649
|
-
).optional()
|
|
650
|
-
})
|
|
624
|
+
created: z.object({
|
|
625
|
+
environmentId: z.string(),
|
|
626
|
+
id: z.string(),
|
|
627
|
+
type: z.string()
|
|
628
|
+
}).array(),
|
|
629
|
+
errors: z.object({
|
|
630
|
+
error: z.string(),
|
|
631
|
+
index: z.number(),
|
|
632
|
+
resource: z.object({
|
|
633
|
+
id: z.string().optional(),
|
|
634
|
+
name: z.string().optional(),
|
|
635
|
+
parents: z.object({
|
|
636
|
+
id: z.string(),
|
|
637
|
+
type: z.string()
|
|
638
|
+
}).array().optional(),
|
|
639
|
+
roles: z.object({
|
|
640
|
+
role: z.string(),
|
|
641
|
+
userId: z.string()
|
|
642
|
+
}).array().optional()
|
|
651
643
|
})
|
|
652
|
-
),
|
|
644
|
+
}).array(),
|
|
653
645
|
success: z.boolean(),
|
|
654
646
|
summary: z.object({
|
|
655
647
|
failed: z.number(),
|
|
@@ -660,58 +652,33 @@ var ResourceBulkResultSchema = z.object({
|
|
|
660
652
|
var ResourceCreateBodySchema = z.object({
|
|
661
653
|
id: z.string().optional(),
|
|
662
654
|
name: z.string().optional(),
|
|
663
|
-
parents: z.
|
|
664
|
-
z.
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
role: z.string(),
|
|
672
|
-
userId: z.string()
|
|
673
|
-
})
|
|
674
|
-
).optional()
|
|
675
|
-
});
|
|
676
|
-
var ResourceListSchema = z.object({
|
|
677
|
-
items: z.array(
|
|
678
|
-
z.object({
|
|
679
|
-
createdAt: z.string().datetime(),
|
|
680
|
-
id: z.string(),
|
|
681
|
-
name: z.string().nullable(),
|
|
682
|
-
parents: z.array(
|
|
683
|
-
z.object({
|
|
684
|
-
id: z.string(),
|
|
685
|
-
type: ResourceTypeSchema
|
|
686
|
-
})
|
|
687
|
-
).optional(),
|
|
688
|
-
type: ResourceTypeSchema
|
|
689
|
-
})
|
|
690
|
-
),
|
|
691
|
-
limit: z.number(),
|
|
692
|
-
page: z.number(),
|
|
693
|
-
total: z.number()
|
|
655
|
+
parents: z.object({
|
|
656
|
+
id: z.string(),
|
|
657
|
+
type: z.string()
|
|
658
|
+
}).array().optional(),
|
|
659
|
+
roles: z.object({
|
|
660
|
+
role: z.string(),
|
|
661
|
+
userId: z.string()
|
|
662
|
+
}).array().optional()
|
|
694
663
|
});
|
|
695
664
|
var ResourceMemberListSchema = z.object({
|
|
696
|
-
items: z.
|
|
697
|
-
z.
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
})
|
|
714
|
-
),
|
|
665
|
+
items: z.object({
|
|
666
|
+
inherited: z.boolean(),
|
|
667
|
+
role: z.string(),
|
|
668
|
+
user: z.object({
|
|
669
|
+
avatarUrl: z.string().nullable(),
|
|
670
|
+
createdAt: z.iso.datetime(),
|
|
671
|
+
email: z.email(),
|
|
672
|
+
emailVerified: z.boolean(),
|
|
673
|
+
firstName: z.string().nullable(),
|
|
674
|
+
id: z.string(),
|
|
675
|
+
lastLoginAt: z.iso.datetime().nullable(),
|
|
676
|
+
lastName: z.string().nullable(),
|
|
677
|
+
lookupKey: z.string().nullable(),
|
|
678
|
+
updatedAt: z.iso.datetime()
|
|
679
|
+
}),
|
|
680
|
+
userId: z.string()
|
|
681
|
+
}).array(),
|
|
715
682
|
limit: z.number(),
|
|
716
683
|
page: z.number(),
|
|
717
684
|
total: z.number()
|
|
@@ -719,54 +686,46 @@ var ResourceMemberListSchema = z.object({
|
|
|
719
686
|
var ResourceUpdateBodySchema = z.object({
|
|
720
687
|
name: z.string().optional(),
|
|
721
688
|
/** Creates relationships with other resources. Parent resources must already exist. */
|
|
722
|
-
parents: z.
|
|
723
|
-
z.
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
})
|
|
727
|
-
).optional()
|
|
689
|
+
parents: z.object({
|
|
690
|
+
id: z.string(),
|
|
691
|
+
type: z.string()
|
|
692
|
+
}).array().optional()
|
|
728
693
|
});
|
|
729
694
|
var RoleSchema = z.object({
|
|
730
695
|
createdAt: z.string(),
|
|
731
696
|
environmentId: z.string(),
|
|
732
697
|
resourceId: z.string(),
|
|
733
|
-
resourceType:
|
|
698
|
+
resourceType: z.string(),
|
|
734
699
|
role: z.string(),
|
|
735
700
|
userId: z.string()
|
|
736
701
|
});
|
|
737
702
|
var RoleBulkCreateBodySchema = z.object({
|
|
738
|
-
roles: z.
|
|
739
|
-
z.
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
})
|
|
745
|
-
)
|
|
703
|
+
roles: z.object({
|
|
704
|
+
resourceId: z.string(),
|
|
705
|
+
resourceType: z.string(),
|
|
706
|
+
role: z.string(),
|
|
707
|
+
userId: z.string()
|
|
708
|
+
}).array()
|
|
746
709
|
});
|
|
747
710
|
var RoleBulkResultSchema = z.object({
|
|
748
|
-
created: z.
|
|
749
|
-
z.
|
|
750
|
-
|
|
751
|
-
|
|
711
|
+
created: z.object({
|
|
712
|
+
createdAt: z.string(),
|
|
713
|
+
environmentId: z.string(),
|
|
714
|
+
resourceId: z.string(),
|
|
715
|
+
resourceType: z.string(),
|
|
716
|
+
role: z.string(),
|
|
717
|
+
userId: z.string()
|
|
718
|
+
}).array(),
|
|
719
|
+
errors: z.object({
|
|
720
|
+
error: z.string(),
|
|
721
|
+
index: z.number(),
|
|
722
|
+
role: z.object({
|
|
752
723
|
resourceId: z.string(),
|
|
753
|
-
resourceType:
|
|
724
|
+
resourceType: z.string(),
|
|
754
725
|
role: z.string(),
|
|
755
726
|
userId: z.string()
|
|
756
727
|
})
|
|
757
|
-
),
|
|
758
|
-
errors: z.array(
|
|
759
|
-
z.object({
|
|
760
|
-
error: z.string(),
|
|
761
|
-
index: z.number(),
|
|
762
|
-
role: z.object({
|
|
763
|
-
resourceId: z.string(),
|
|
764
|
-
resourceType: ResourceTypeSchema,
|
|
765
|
-
role: z.string(),
|
|
766
|
-
userId: z.string()
|
|
767
|
-
})
|
|
768
|
-
})
|
|
769
|
-
),
|
|
728
|
+
}).array(),
|
|
770
729
|
success: z.boolean(),
|
|
771
730
|
summary: z.object({
|
|
772
731
|
failed: z.number(),
|
|
@@ -776,84 +735,80 @@ var RoleBulkResultSchema = z.object({
|
|
|
776
735
|
});
|
|
777
736
|
var RoleCreateBodySchema = z.object({
|
|
778
737
|
resourceId: z.string(),
|
|
779
|
-
resourceType:
|
|
738
|
+
resourceType: z.string(),
|
|
780
739
|
role: z.string()
|
|
781
740
|
});
|
|
782
741
|
var RoleListSchema = z.object({
|
|
783
742
|
limit: z.number(),
|
|
784
743
|
page: z.number(),
|
|
785
|
-
roles: z.
|
|
786
|
-
z.
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
})
|
|
794
|
-
),
|
|
744
|
+
roles: z.object({
|
|
745
|
+
createdAt: z.string(),
|
|
746
|
+
environmentId: z.string(),
|
|
747
|
+
resourceId: z.string(),
|
|
748
|
+
resourceType: z.string(),
|
|
749
|
+
role: z.string(),
|
|
750
|
+
userId: z.string()
|
|
751
|
+
}).array(),
|
|
795
752
|
total: z.number()
|
|
796
753
|
});
|
|
797
754
|
var TransactionHistoryResponseSchema = z.object({
|
|
798
|
-
items: z.
|
|
799
|
-
z.
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
})
|
|
809
|
-
)
|
|
755
|
+
items: z.object({
|
|
756
|
+
amount: z.number().int(),
|
|
757
|
+
createdAt: z.iso.datetime(),
|
|
758
|
+
environmentId: z.string(),
|
|
759
|
+
id: z.string(),
|
|
760
|
+
limitType: z.string(),
|
|
761
|
+
resourceId: z.string(),
|
|
762
|
+
resourceType: z.string(),
|
|
763
|
+
tags: z.record(z.string(), z.unknown()).nullable()
|
|
764
|
+
}).array()
|
|
810
765
|
});
|
|
811
766
|
var UsageCheckBodySchema = z.object({
|
|
812
767
|
amount: z.number().int(),
|
|
813
|
-
limitType:
|
|
768
|
+
limitType: z.string(),
|
|
814
769
|
period: z.enum(["monthly", "yearly", "lifetime"]),
|
|
815
770
|
resourceId: z.string(),
|
|
816
|
-
resourceType:
|
|
771
|
+
resourceType: z.string()
|
|
817
772
|
});
|
|
818
773
|
var UsageConsumeBodySchema = z.object({
|
|
819
774
|
amount: z.number().int(),
|
|
820
|
-
limitType:
|
|
775
|
+
limitType: z.string(),
|
|
821
776
|
resourceId: z.string(),
|
|
822
|
-
resourceType:
|
|
777
|
+
resourceType: z.string(),
|
|
823
778
|
tags: z.record(z.string(), z.unknown()).optional()
|
|
824
779
|
});
|
|
825
780
|
var UsageCreditBodySchema = z.object({
|
|
826
781
|
amount: z.number().int(),
|
|
827
|
-
limitType:
|
|
782
|
+
limitType: z.string(),
|
|
828
783
|
resourceId: z.string(),
|
|
829
|
-
resourceType:
|
|
784
|
+
resourceType: z.string(),
|
|
830
785
|
tags: z.record(z.string(), z.unknown()).optional()
|
|
831
786
|
});
|
|
832
787
|
var UsageWalletResponseSchema = z.object({
|
|
833
788
|
amount: z.number().int(),
|
|
834
|
-
createdAt: z.
|
|
789
|
+
createdAt: z.iso.datetime(),
|
|
835
790
|
environmentId: z.string(),
|
|
836
791
|
id: z.string(),
|
|
837
|
-
limitType:
|
|
792
|
+
limitType: z.string(),
|
|
838
793
|
resourceId: z.string(),
|
|
839
|
-
resourceType:
|
|
794
|
+
resourceType: z.string(),
|
|
840
795
|
tags: z.record(z.string(), z.unknown()).nullable()
|
|
841
796
|
});
|
|
842
797
|
var UserSchema = z.object({
|
|
843
798
|
avatarUrl: z.string().nullable(),
|
|
844
|
-
createdAt: z.
|
|
845
|
-
email: z.
|
|
799
|
+
createdAt: z.iso.datetime(),
|
|
800
|
+
email: z.email(),
|
|
846
801
|
emailVerified: z.boolean(),
|
|
847
802
|
firstName: z.string().nullable(),
|
|
848
803
|
id: z.string(),
|
|
849
|
-
lastLoginAt: z.
|
|
804
|
+
lastLoginAt: z.iso.datetime().nullable(),
|
|
850
805
|
lastName: z.string().nullable(),
|
|
851
806
|
lookupKey: z.string().nullable(),
|
|
852
|
-
updatedAt: z.
|
|
807
|
+
updatedAt: z.iso.datetime()
|
|
853
808
|
});
|
|
854
809
|
var UserCreateBodySchema = z.object({
|
|
855
|
-
avatarUrl: z.
|
|
856
|
-
email: z.
|
|
810
|
+
avatarUrl: z.url().optional(),
|
|
811
|
+
email: z.email(),
|
|
857
812
|
firstName: z.string().nullable().optional(),
|
|
858
813
|
lastName: z.string().nullable().optional(),
|
|
859
814
|
lookupKey: z.string(),
|
|
@@ -861,20 +816,18 @@ var UserCreateBodySchema = z.object({
|
|
|
861
816
|
password: z.string().nullable().optional()
|
|
862
817
|
});
|
|
863
818
|
var UserListSchema = z.object({
|
|
864
|
-
items: z.
|
|
865
|
-
z.
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
})
|
|
877
|
-
),
|
|
819
|
+
items: z.object({
|
|
820
|
+
avatarUrl: z.string().nullable(),
|
|
821
|
+
createdAt: z.iso.datetime(),
|
|
822
|
+
email: z.email(),
|
|
823
|
+
emailVerified: z.boolean(),
|
|
824
|
+
firstName: z.string().nullable(),
|
|
825
|
+
id: z.string(),
|
|
826
|
+
lastLoginAt: z.iso.datetime().nullable(),
|
|
827
|
+
lastName: z.string().nullable(),
|
|
828
|
+
lookupKey: z.string().nullable(),
|
|
829
|
+
updatedAt: z.iso.datetime()
|
|
830
|
+
}).array(),
|
|
878
831
|
limit: z.number(),
|
|
879
832
|
page: z.number(),
|
|
880
833
|
total: z.number()
|
|
@@ -885,25 +838,29 @@ var UserResourceListSchema = z.array(
|
|
|
885
838
|
resource: z.object({
|
|
886
839
|
id: z.string(),
|
|
887
840
|
name: z.string(),
|
|
888
|
-
parents: z.
|
|
889
|
-
z.
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
),
|
|
894
|
-
type: ResourceTypeSchema
|
|
841
|
+
parents: z.object({
|
|
842
|
+
id: z.string(),
|
|
843
|
+
type: z.string()
|
|
844
|
+
}).array(),
|
|
845
|
+
type: z.string()
|
|
895
846
|
}).catchall(z.unknown()),
|
|
896
847
|
role: z.string()
|
|
897
848
|
})
|
|
898
849
|
);
|
|
899
850
|
var UserUpdateBodySchema = z.object({
|
|
900
|
-
avatarUrl: z.
|
|
901
|
-
email: z.
|
|
851
|
+
avatarUrl: z.url().nullable().optional(),
|
|
852
|
+
email: z.email().optional(),
|
|
902
853
|
firstName: z.string().nullable().optional(),
|
|
903
854
|
lastName: z.string().nullable().optional(),
|
|
904
855
|
lookupKey: z.string().optional(),
|
|
905
856
|
password: z.string().optional()
|
|
906
857
|
});
|
|
858
|
+
var ResourceListSchema = z.object({
|
|
859
|
+
items: ResourceSchema.array(),
|
|
860
|
+
limit: z.number(),
|
|
861
|
+
page: z.number(),
|
|
862
|
+
total: z.number()
|
|
863
|
+
});
|
|
907
864
|
var EntitlementsListForResourceQuerySchema = z.object({
|
|
908
865
|
/** The unique identifier of the user */
|
|
909
866
|
userId: z.string()
|
|
@@ -936,17 +893,13 @@ var RolesListQuerySchema = z.object({
|
|
|
936
893
|
/** Filter roles by specific resource ID */
|
|
937
894
|
resourceId: z.string().optional(),
|
|
938
895
|
/** Filter roles by resource type */
|
|
939
|
-
resourceType:
|
|
896
|
+
resourceType: z.string().optional(),
|
|
940
897
|
/** Filter by role name */
|
|
941
898
|
role: z.string().optional()
|
|
942
899
|
});
|
|
943
900
|
var UsageGetBalanceQuerySchema = z.object({
|
|
944
901
|
/** Time period for the balance calculation */
|
|
945
|
-
period: z.enum([
|
|
946
|
-
"monthly",
|
|
947
|
-
"yearly",
|
|
948
|
-
"lifetime"
|
|
949
|
-
])
|
|
902
|
+
period: z.enum(["monthly", "yearly", "lifetime"])
|
|
950
903
|
});
|
|
951
904
|
var UsageGetTransactionHistoryQuerySchema = z.object({
|
|
952
905
|
/** End date for filtering transactions (ISO 8601 format) */
|
|
@@ -965,37 +918,182 @@ var UsersListQuerySchema = z.object({
|
|
|
965
918
|
search: z.string().optional()
|
|
966
919
|
});
|
|
967
920
|
|
|
968
|
-
// src/
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
resources;
|
|
976
|
-
roles;
|
|
977
|
-
usage;
|
|
978
|
-
users;
|
|
921
|
+
// src/token-verifier.ts
|
|
922
|
+
import * as crypto from "crypto";
|
|
923
|
+
import * as jwt from "jsonwebtoken";
|
|
924
|
+
var TokenVerifier = class {
|
|
925
|
+
cache = /* @__PURE__ */ new Map();
|
|
926
|
+
cacheTTL;
|
|
927
|
+
runtimeApiUrl;
|
|
979
928
|
constructor(options) {
|
|
980
|
-
|
|
981
|
-
this.
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
929
|
+
this.cacheTTL = options?.cacheTTL ?? 60 * 60 * 1e3;
|
|
930
|
+
this.runtimeApiUrl = options?.runtimeApiUrl ?? "https://api.blimu.dev";
|
|
931
|
+
}
|
|
932
|
+
/**
|
|
933
|
+
* Fetch JWK Set from runtime-api
|
|
934
|
+
*/
|
|
935
|
+
async fetchJWKSet(endpoint, headers) {
|
|
936
|
+
console.log(`[TokenVerifier] \u{1F4E1} Fetching JWK Set from: ${endpoint}`);
|
|
937
|
+
if (headers) {
|
|
938
|
+
console.log(
|
|
939
|
+
`[TokenVerifier] \u{1F4E1} Request headers: ${JSON.stringify(Object.keys(headers).map((k) => `${k}: ${k === "x-api-key" ? "***" : headers[k]}`))}`
|
|
940
|
+
);
|
|
941
|
+
}
|
|
942
|
+
const response = await fetch(endpoint, {
|
|
943
|
+
method: "GET",
|
|
944
|
+
headers: {
|
|
945
|
+
"Content-Type": "application/json",
|
|
946
|
+
...headers
|
|
947
|
+
}
|
|
948
|
+
});
|
|
949
|
+
console.log(`[TokenVerifier] \u{1F4E1} Response status: ${response.status} ${response.statusText}`);
|
|
950
|
+
if (!response.ok) {
|
|
951
|
+
const errorText = await response.text();
|
|
952
|
+
console.error(`[TokenVerifier] \u274C Failed to fetch JWKs: ${response.status} ${errorText}`);
|
|
953
|
+
throw new FetchError("Failed to fetch JWKs", response.status, errorText);
|
|
954
|
+
}
|
|
955
|
+
const jwkSet = await response.json();
|
|
956
|
+
console.log(`[TokenVerifier] \u2705 Successfully fetched JWK Set with ${jwkSet.keys.length} keys`);
|
|
957
|
+
return jwkSet;
|
|
958
|
+
}
|
|
959
|
+
/**
|
|
960
|
+
* Convert JWK to KeyObject
|
|
961
|
+
*/
|
|
962
|
+
jwkToKeyObject(jwk) {
|
|
963
|
+
return crypto.createPublicKey({
|
|
964
|
+
key: {
|
|
965
|
+
kty: jwk.kty,
|
|
966
|
+
n: jwk.n,
|
|
967
|
+
e: jwk.e,
|
|
968
|
+
alg: jwk.alg
|
|
969
|
+
},
|
|
970
|
+
format: "jwk"
|
|
971
|
+
});
|
|
972
|
+
}
|
|
973
|
+
/**
|
|
974
|
+
* Get public key for a specific key ID
|
|
975
|
+
*/
|
|
976
|
+
async getPublicKey(kid, cacheKey, endpoint, headers) {
|
|
977
|
+
const cached = this.cache.get(cacheKey);
|
|
978
|
+
if (cached && cached.expiresAt > Date.now()) {
|
|
979
|
+
console.log(`[TokenVerifier] \u2705 Using cached key for kid: ${kid}`);
|
|
980
|
+
return cached.key;
|
|
981
|
+
}
|
|
982
|
+
console.log(`[TokenVerifier] \u{1F50D} Cache miss or expired. Fetching new key for kid: ${kid}`);
|
|
983
|
+
const jwkSet = await this.fetchJWKSet(endpoint, headers);
|
|
984
|
+
const jwk = jwkSet.keys.find((k) => k.kid === kid);
|
|
985
|
+
if (!jwk) {
|
|
986
|
+
const availableKids = jwkSet.keys.map((k) => k.kid).join(", ");
|
|
987
|
+
console.error(
|
|
988
|
+
`[TokenVerifier] \u274C Key with kid '${kid}' not found in JWK Set. Available kids: ${availableKids}`
|
|
989
|
+
);
|
|
990
|
+
throw new Error(
|
|
991
|
+
`Key with kid '${kid}' not found in JWK Set. Available kids: ${availableKids}`
|
|
992
|
+
);
|
|
993
|
+
}
|
|
994
|
+
console.log(`[TokenVerifier] \u2705 Found key with kid: ${kid}`);
|
|
995
|
+
const keyObject = this.jwkToKeyObject(jwk);
|
|
996
|
+
this.cache.set(cacheKey, {
|
|
997
|
+
key: keyObject,
|
|
998
|
+
kid,
|
|
999
|
+
expiresAt: Date.now() + this.cacheTTL
|
|
1000
|
+
});
|
|
1001
|
+
return keyObject;
|
|
1002
|
+
}
|
|
1003
|
+
/**
|
|
1004
|
+
* Verify JWT token using JWKs from runtime-api
|
|
1005
|
+
*/
|
|
1006
|
+
async verifyToken(options) {
|
|
1007
|
+
const { url, secretKey, token, runtimeApiUrl } = options;
|
|
1008
|
+
if (!url && !secretKey) {
|
|
1009
|
+
throw new Error("Either url or secretKey must be provided");
|
|
1010
|
+
}
|
|
1011
|
+
if (url && secretKey) {
|
|
1012
|
+
throw new Error("Cannot provide both url and secretKey");
|
|
1013
|
+
}
|
|
1014
|
+
const decoded = jwt.decode(token, { complete: true });
|
|
1015
|
+
if (!decoded || typeof decoded === "string") {
|
|
1016
|
+
throw new Error("Invalid token format");
|
|
1017
|
+
}
|
|
1018
|
+
const header = decoded.header;
|
|
1019
|
+
if (!header.kid) {
|
|
1020
|
+
throw new Error("Token missing kid in header");
|
|
1021
|
+
}
|
|
1022
|
+
let endpoint;
|
|
1023
|
+
let cacheKey;
|
|
1024
|
+
let headers;
|
|
1025
|
+
if (secretKey) {
|
|
1026
|
+
const apiUrl = runtimeApiUrl ?? this.runtimeApiUrl;
|
|
1027
|
+
endpoint = `${apiUrl}/v1/auth/.well-known/jwks.json`;
|
|
1028
|
+
cacheKey = secretKey;
|
|
1029
|
+
headers = {
|
|
1030
|
+
"x-api-key": secretKey
|
|
1031
|
+
};
|
|
1032
|
+
console.log(
|
|
1033
|
+
`[TokenVerifier] \u{1F50D} Verifying token with kid: ${header.kid}, endpoint: ${endpoint}`
|
|
1034
|
+
);
|
|
1035
|
+
} else {
|
|
1036
|
+
endpoint = url;
|
|
1037
|
+
cacheKey = url;
|
|
1038
|
+
console.log(
|
|
1039
|
+
`[TokenVerifier] \u{1F50D} Verifying token with kid: ${header.kid}, endpoint: ${endpoint}`
|
|
1040
|
+
);
|
|
1041
|
+
}
|
|
1042
|
+
let publicKey;
|
|
1043
|
+
try {
|
|
1044
|
+
publicKey = await this.getPublicKey(header.kid, cacheKey, endpoint, headers);
|
|
1045
|
+
console.log(`[TokenVerifier] \u2705 Successfully retrieved public key for kid: ${header.kid}`);
|
|
1046
|
+
} catch (error) {
|
|
1047
|
+
console.error(
|
|
1048
|
+
`[TokenVerifier] \u274C Failed to get public key (first attempt): ${error instanceof Error ? error.message : String(error)}`
|
|
1049
|
+
);
|
|
1050
|
+
this.clearCache(cacheKey);
|
|
1051
|
+
console.log(`[TokenVerifier] \u{1F504} Retrying after cache clear...`);
|
|
1052
|
+
try {
|
|
1053
|
+
publicKey = await this.getPublicKey(header.kid, cacheKey, endpoint, headers);
|
|
1054
|
+
console.log(
|
|
1055
|
+
`[TokenVerifier] \u2705 Successfully retrieved public key for kid: ${header.kid} (retry)`
|
|
1056
|
+
);
|
|
1057
|
+
} catch (retryError) {
|
|
1058
|
+
console.error(
|
|
1059
|
+
`[TokenVerifier] \u274C Failed to get public key (retry): ${retryError instanceof Error ? retryError.message : String(retryError)}`
|
|
1060
|
+
);
|
|
1061
|
+
throw retryError;
|
|
1062
|
+
}
|
|
1063
|
+
}
|
|
1064
|
+
try {
|
|
1065
|
+
const payload = jwt.verify(token, publicKey, {
|
|
1066
|
+
algorithms: ["RS256"]
|
|
1067
|
+
});
|
|
1068
|
+
console.log(`[TokenVerifier] \u2705 Token verified successfully`);
|
|
1069
|
+
return payload;
|
|
1070
|
+
} catch (error) {
|
|
1071
|
+
console.error(
|
|
1072
|
+
`[TokenVerifier] \u274C JWT verification failed: ${error instanceof Error ? error.message : String(error)}`
|
|
1073
|
+
);
|
|
1074
|
+
throw error;
|
|
1075
|
+
}
|
|
1076
|
+
}
|
|
1077
|
+
/**
|
|
1078
|
+
* Clear cache (useful for testing or key rotation)
|
|
1079
|
+
*/
|
|
1080
|
+
clearCache(secretKeyOrUrl) {
|
|
1081
|
+
if (secretKeyOrUrl) {
|
|
1082
|
+
this.cache.delete(secretKeyOrUrl);
|
|
1083
|
+
} else {
|
|
1084
|
+
this.cache.clear();
|
|
1085
|
+
}
|
|
990
1086
|
}
|
|
991
1087
|
};
|
|
992
|
-
|
|
1088
|
+
async function verifyToken(options) {
|
|
1089
|
+
const verifier = new TokenVerifier();
|
|
1090
|
+
return verifier.verifyToken(options);
|
|
1091
|
+
}
|
|
993
1092
|
export {
|
|
994
1093
|
Blimu,
|
|
995
1094
|
BlimuError,
|
|
996
1095
|
BulkResourcesService,
|
|
997
1096
|
BulkRolesService,
|
|
998
|
-
CoreClient,
|
|
999
1097
|
EntitlementsService,
|
|
1000
1098
|
FetchError,
|
|
1001
1099
|
PlansService,
|
|
@@ -1003,12 +1101,15 @@ export {
|
|
|
1003
1101
|
ResourcesService,
|
|
1004
1102
|
RolesService,
|
|
1005
1103
|
schema_exports as Schema,
|
|
1104
|
+
TokenVerifier,
|
|
1006
1105
|
UsageService,
|
|
1007
1106
|
UsersService,
|
|
1008
1107
|
schema_zod_exports as ZodSchema,
|
|
1108
|
+
isNotUndefined,
|
|
1009
1109
|
listAll,
|
|
1010
1110
|
paginate,
|
|
1011
1111
|
parseNDJSONStream,
|
|
1012
|
-
parseSSEStream
|
|
1112
|
+
parseSSEStream,
|
|
1113
|
+
verifyToken
|
|
1013
1114
|
};
|
|
1014
1115
|
//# sourceMappingURL=index.mjs.map
|