@blimu/backend 0.6.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +129 -134
  2. package/dist/client.d.mts +24 -0
  3. package/dist/client.d.ts +15 -57
  4. package/dist/client.js +67 -157
  5. package/dist/client.js.map +1 -1
  6. package/dist/client.mjs +48 -0
  7. package/dist/client.mjs.map +1 -0
  8. package/dist/index.d.mts +36 -0
  9. package/dist/index.d.ts +25 -26
  10. package/dist/index.js +1037 -83
  11. package/dist/index.js.map +1 -1
  12. package/dist/index.mjs +1005 -0
  13. package/dist/index.mjs.map +1 -0
  14. package/dist/main.d.mts +19 -0
  15. package/dist/main.d.ts +19 -0
  16. package/dist/main.js +1273 -0
  17. package/dist/main.js.map +1 -0
  18. package/dist/main.mjs +1264 -0
  19. package/dist/main.mjs.map +1 -0
  20. package/dist/schema-B1usIXCr.d.mts +424 -0
  21. package/dist/schema-B1usIXCr.d.ts +424 -0
  22. package/dist/schema.d.mts +2 -0
  23. package/dist/schema.d.ts +2 -381
  24. package/dist/schema.js +17 -2
  25. package/dist/schema.js.map +1 -1
  26. package/dist/schema.mjs +1 -0
  27. package/dist/schema.mjs.map +1 -0
  28. package/dist/schema.zod-CRNAHxbc.d.mts +444 -0
  29. package/dist/schema.zod-CRNAHxbc.d.ts +444 -0
  30. package/dist/schema.zod.d.mts +2 -0
  31. package/dist/schema.zod.d.ts +2 -0
  32. package/dist/schema.zod.js +562 -0
  33. package/dist/schema.zod.js.map +1 -0
  34. package/dist/schema.zod.mjs +496 -0
  35. package/dist/schema.zod.mjs.map +1 -0
  36. package/dist/services/bulk_resources.d.mts +12 -0
  37. package/dist/services/bulk_resources.d.ts +9 -4
  38. package/dist/services/bulk_resources.js +45 -18
  39. package/dist/services/bulk_resources.js.map +1 -1
  40. package/dist/services/bulk_resources.mjs +22 -0
  41. package/dist/services/bulk_resources.mjs.map +1 -0
  42. package/dist/services/bulk_roles.d.mts +12 -0
  43. package/dist/services/bulk_roles.d.ts +9 -4
  44. package/dist/services/bulk_roles.js +45 -18
  45. package/dist/services/bulk_roles.js.map +1 -1
  46. package/dist/services/bulk_roles.mjs +22 -0
  47. package/dist/services/bulk_roles.mjs.map +1 -0
  48. package/dist/services/entitlements.d.mts +14 -0
  49. package/dist/services/entitlements.d.ts +11 -6
  50. package/dist/services/entitlements.js +69 -34
  51. package/dist/services/entitlements.js.map +1 -1
  52. package/dist/services/entitlements.mjs +46 -0
  53. package/dist/services/entitlements.mjs.map +1 -0
  54. package/dist/services/plans.d.mts +14 -0
  55. package/dist/services/plans.d.ts +11 -6
  56. package/dist/services/plans.js +67 -32
  57. package/dist/services/plans.js.map +1 -1
  58. package/dist/services/plans.mjs +44 -0
  59. package/dist/services/plans.mjs.map +1 -0
  60. package/dist/services/resource_members.d.mts +12 -0
  61. package/dist/services/resource_members.d.ts +9 -4
  62. package/dist/services/resource_members.js +45 -17
  63. package/dist/services/resource_members.js.map +1 -1
  64. package/dist/services/resource_members.mjs +22 -0
  65. package/dist/services/resource_members.mjs.map +1 -0
  66. package/dist/services/resources.d.mts +16 -0
  67. package/dist/services/resources.d.ts +13 -8
  68. package/dist/services/resources.js +91 -49
  69. package/dist/services/resources.js.map +1 -1
  70. package/dist/services/resources.mjs +68 -0
  71. package/dist/services/resources.mjs.map +1 -0
  72. package/dist/services/roles.d.mts +14 -0
  73. package/dist/services/roles.d.ts +11 -6
  74. package/dist/services/roles.js +68 -33
  75. package/dist/services/roles.js.map +1 -1
  76. package/dist/services/roles.mjs +45 -0
  77. package/dist/services/roles.mjs.map +1 -0
  78. package/dist/services/usage.d.mts +16 -0
  79. package/dist/services/usage.d.ts +13 -8
  80. package/dist/services/usage.js +93 -52
  81. package/dist/services/usage.js.map +1 -1
  82. package/dist/services/usage.mjs +70 -0
  83. package/dist/services/usage.mjs.map +1 -0
  84. package/dist/services/users.d.mts +17 -0
  85. package/dist/services/users.d.ts +13 -8
  86. package/dist/services/users.js +102 -56
  87. package/dist/services/users.js.map +1 -1
  88. package/dist/services/users.mjs +79 -0
  89. package/dist/services/users.mjs.map +1 -0
  90. package/dist/token-verifier.d.mts +35 -0
  91. package/dist/token-verifier.d.ts +8 -6
  92. package/dist/token-verifier.js +225 -172
  93. package/dist/token-verifier.js.map +1 -1
  94. package/dist/token-verifier.mjs +201 -0
  95. package/dist/token-verifier.mjs.map +1 -0
  96. package/dist/tsconfig.tsbuildinfo +1 -1
  97. package/dist/utils.d.mts +20 -0
  98. package/dist/utils.d.ts +7 -3
  99. package/dist/utils.js +50 -20
  100. package/dist/utils.js.map +1 -1
  101. package/dist/utils.mjs +29 -0
  102. package/dist/utils.mjs.map +1 -0
  103. package/package.json +37 -62
  104. package/src/client.ts +74 -0
  105. package/src/index.ts +55 -0
  106. package/src/main.ts +3 -0
  107. package/src/schema.ts +430 -0
  108. package/src/schema.zod.ts +558 -0
  109. package/src/services/bulk_resources.ts +24 -0
  110. package/src/services/bulk_roles.ts +22 -0
  111. package/src/services/entitlements.ts +58 -0
  112. package/src/services/plans.ts +57 -0
  113. package/src/services/resource_members.ts +25 -0
  114. package/src/services/resources.ts +91 -0
  115. package/src/services/roles.ts +58 -0
  116. package/src/services/usage.ts +93 -0
  117. package/src/services/users.ts +100 -0
  118. package/src/token-verifier.ts +280 -0
  119. package/src/utils.ts +56 -0
  120. package/bin/blimu +0 -0
  121. package/scripts/download-binary.js +0 -243
  122. package/scripts/postinstall.js +0 -24
package/dist/utils.js CHANGED
@@ -1,26 +1,56 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.paginate = paginate;
4
- exports.listAll = listAll;
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/utils.ts
20
+ var utils_exports = {};
21
+ __export(utils_exports, {
22
+ listAll: () => listAll,
23
+ paginate: () => paginate,
24
+ parseNDJSONStream: () => import_fetch.parseNDJSONStream,
25
+ parseSSEStream: () => import_fetch.parseSSEStream
26
+ });
27
+ module.exports = __toCommonJS(utils_exports);
28
+ var import_fetch = require("@blimu/fetch");
5
29
  async function* paginate(fetchPage, initialQuery = {}, pageSize = 100) {
6
- let offset = Number(initialQuery.offset ?? 0);
7
- const limit = Number(initialQuery.limit ?? pageSize);
8
- const baseQuery = { ...initialQuery };
9
- while (true) {
10
- const page = await fetchPage({ ...baseQuery, limit, offset });
11
- const items = page.data ?? [];
12
- for (const item of items) {
13
- yield item;
14
- }
15
- if (!page.hasMore || items.length < limit)
16
- break;
17
- offset += limit;
30
+ let offset = Number(initialQuery.offset ?? 0);
31
+ const limit = Number(initialQuery.limit ?? pageSize);
32
+ const baseQuery = { ...initialQuery };
33
+ while (true) {
34
+ const page = await fetchPage({ ...baseQuery, limit, offset });
35
+ const items = page.data ?? [];
36
+ for (const item of items) {
37
+ yield item;
18
38
  }
39
+ if (!page.hasMore || items.length < limit) break;
40
+ offset += limit;
41
+ }
19
42
  }
20
43
  async function listAll(fetchPage, query = {}, pageSize = 100) {
21
- const out = [];
22
- for await (const item of paginate(fetchPage, query, pageSize))
23
- out.push(item);
24
- return out;
44
+ const out = [];
45
+ for await (const item of paginate(fetchPage, query, pageSize))
46
+ out.push(item);
47
+ return out;
25
48
  }
49
+ // Annotate the CommonJS export names for ESM import in node:
50
+ 0 && (module.exports = {
51
+ listAll,
52
+ paginate,
53
+ parseNDJSONStream,
54
+ parseSSEStream
55
+ });
26
56
  //# sourceMappingURL=utils.js.map
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AAEA,4BAqBC;AAED,0BAWC;AAlCM,KAAK,SAAS,CAAC,CAAC,QAAQ,CAC7B,SAGgF,EAChF,eAA+B,EAAE,EACjC,QAAQ,GAAG,GAAG;IAEd,IAAI,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;IAErD,MAAM,SAAS,GAAQ,EAAE,GAAG,YAAY,EAAE,CAAC;IAC3C,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,IAAS,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK;YAAE,MAAM;QACjD,MAAM,IAAI,KAAK,CAAC;IAClB,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,OAAO,CAC3B,SAGgF,EAChF,QAAwB,EAAE,EAC1B,QAAQ,GAAG,GAAG;IAEd,MAAM,GAAG,GAAQ,EAAE,CAAC;IACpB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,QAAQ,CAAI,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjF,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"sources":["../src/utils.ts"],"sourcesContent":["import { parseSSEStream, parseNDJSONStream } from '@blimu/fetch';\n\nexport type PaginableQuery = { limit?: number; offset?: number } & Record<\n string,\n unknown\n>;\n\nexport async function* paginate<T>(\n fetchPage: (\n query?: any,\n init?: Omit<RequestInit, 'method' | 'body'>\n ) => Promise<{\n data?: T[];\n hasMore?: boolean;\n limit?: number;\n offset?: number;\n }>,\n initialQuery: PaginableQuery = {},\n pageSize = 100\n): AsyncGenerator<T, void, unknown> {\n let offset = Number(initialQuery.offset ?? 0);\n const limit = Number(initialQuery.limit ?? pageSize);\n // shallow copy to avoid mutating caller\n const baseQuery: any = { ...initialQuery };\n while (true) {\n const page = await fetchPage({ ...baseQuery, limit, offset });\n const items = page.data ?? [];\n for (const item of items) {\n yield item as T;\n }\n if (!page.hasMore || items.length < limit) break;\n offset += limit;\n }\n}\n\nexport async function listAll<T>(\n fetchPage: (\n query?: any,\n init?: Omit<RequestInit, 'method' | 'body'>\n ) => Promise<{\n data?: T[];\n hasMore?: boolean;\n limit?: number;\n offset?: number;\n }>,\n query: PaginableQuery = {},\n pageSize = 100\n): Promise<T[]> {\n const out: T[] = [];\n for await (const item of paginate<T>(fetchPage, query, pageSize))\n out.push(item);\n return out;\n}\n\n// Re-export streaming parsers from @blimu/fetch\nexport { parseSSEStream, parseNDJSONStream };\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkD;AAOlD,gBAAuB,SACrB,WASA,eAA+B,CAAC,GAChC,WAAW,KACuB;AAClC,MAAI,SAAS,OAAO,aAAa,UAAU,CAAC;AAC5C,QAAM,QAAQ,OAAO,aAAa,SAAS,QAAQ;AAEnD,QAAM,YAAiB,EAAE,GAAG,aAAa;AACzC,SAAO,MAAM;AACX,UAAM,OAAO,MAAM,UAAU,EAAE,GAAG,WAAW,OAAO,OAAO,CAAC;AAC5D,UAAM,QAAQ,KAAK,QAAQ,CAAC;AAC5B,eAAW,QAAQ,OAAO;AACxB,YAAM;AAAA,IACR;AACA,QAAI,CAAC,KAAK,WAAW,MAAM,SAAS,MAAO;AAC3C,cAAU;AAAA,EACZ;AACF;AAEA,eAAsB,QACpB,WASA,QAAwB,CAAC,GACzB,WAAW,KACG;AACd,QAAM,MAAW,CAAC;AAClB,mBAAiB,QAAQ,SAAY,WAAW,OAAO,QAAQ;AAC7D,QAAI,KAAK,IAAI;AACf,SAAO;AACT;","names":[]}
package/dist/utils.mjs ADDED
@@ -0,0 +1,29 @@
1
+ // src/utils.ts
2
+ import { parseSSEStream, parseNDJSONStream } from "@blimu/fetch";
3
+ async function* paginate(fetchPage, initialQuery = {}, pageSize = 100) {
4
+ let offset = Number(initialQuery.offset ?? 0);
5
+ const limit = Number(initialQuery.limit ?? pageSize);
6
+ const baseQuery = { ...initialQuery };
7
+ while (true) {
8
+ const page = await fetchPage({ ...baseQuery, limit, offset });
9
+ const items = page.data ?? [];
10
+ for (const item of items) {
11
+ yield item;
12
+ }
13
+ if (!page.hasMore || items.length < limit) break;
14
+ offset += limit;
15
+ }
16
+ }
17
+ async function listAll(fetchPage, query = {}, pageSize = 100) {
18
+ const out = [];
19
+ for await (const item of paginate(fetchPage, query, pageSize))
20
+ out.push(item);
21
+ return out;
22
+ }
23
+ export {
24
+ listAll,
25
+ paginate,
26
+ parseNDJSONStream,
27
+ parseSSEStream
28
+ };
29
+ //# sourceMappingURL=utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils.ts"],"sourcesContent":["import { parseSSEStream, parseNDJSONStream } from '@blimu/fetch';\n\nexport type PaginableQuery = { limit?: number; offset?: number } & Record<\n string,\n unknown\n>;\n\nexport async function* paginate<T>(\n fetchPage: (\n query?: any,\n init?: Omit<RequestInit, 'method' | 'body'>\n ) => Promise<{\n data?: T[];\n hasMore?: boolean;\n limit?: number;\n offset?: number;\n }>,\n initialQuery: PaginableQuery = {},\n pageSize = 100\n): AsyncGenerator<T, void, unknown> {\n let offset = Number(initialQuery.offset ?? 0);\n const limit = Number(initialQuery.limit ?? pageSize);\n // shallow copy to avoid mutating caller\n const baseQuery: any = { ...initialQuery };\n while (true) {\n const page = await fetchPage({ ...baseQuery, limit, offset });\n const items = page.data ?? [];\n for (const item of items) {\n yield item as T;\n }\n if (!page.hasMore || items.length < limit) break;\n offset += limit;\n }\n}\n\nexport async function listAll<T>(\n fetchPage: (\n query?: any,\n init?: Omit<RequestInit, 'method' | 'body'>\n ) => Promise<{\n data?: T[];\n hasMore?: boolean;\n limit?: number;\n offset?: number;\n }>,\n query: PaginableQuery = {},\n pageSize = 100\n): Promise<T[]> {\n const out: T[] = [];\n for await (const item of paginate<T>(fetchPage, query, pageSize))\n out.push(item);\n return out;\n}\n\n// Re-export streaming parsers from @blimu/fetch\nexport { parseSSEStream, parseNDJSONStream };\n"],"mappings":";AAAA,SAAS,gBAAgB,yBAAyB;AAOlD,gBAAuB,SACrB,WASA,eAA+B,CAAC,GAChC,WAAW,KACuB;AAClC,MAAI,SAAS,OAAO,aAAa,UAAU,CAAC;AAC5C,QAAM,QAAQ,OAAO,aAAa,SAAS,QAAQ;AAEnD,QAAM,YAAiB,EAAE,GAAG,aAAa;AACzC,SAAO,MAAM;AACX,UAAM,OAAO,MAAM,UAAU,EAAE,GAAG,WAAW,OAAO,OAAO,CAAC;AAC5D,UAAM,QAAQ,KAAK,QAAQ,CAAC;AAC5B,eAAW,QAAQ,OAAO;AACxB,YAAM;AAAA,IACR;AACA,QAAI,CAAC,KAAK,WAAW,MAAM,SAAS,MAAO;AAC3C,cAAU;AAAA,EACZ;AACF;AAEA,eAAsB,QACpB,WASA,QAAwB,CAAC,GACzB,WAAW,KACG;AACd,QAAM,MAAW,CAAC;AAClB,mBAAiB,QAAQ,SAAY,WAAW,OAAO,QAAQ;AAC7D,QAAI,KAAK,IAAI;AACf,SAAO;AACT;","names":[]}
package/package.json CHANGED
@@ -1,90 +1,65 @@
1
1
  {
2
2
  "name": "@blimu/backend",
3
+ "version": "1.1.0",
4
+ "description": "TypeScript SDK for Blimu API (auto-generated)",
3
5
  "repository": {
4
6
  "type": "git",
5
7
  "url": "https://github.com/blimu-dev/blimu-ts"
6
8
  },
7
- "author": "viniciusdacal",
8
- "license": "MIT",
9
- "version": "0.6.3",
10
- "description": "TypeScript SDK for Blimu API (auto-generated)",
11
- "main": "dist/index.js",
12
- "types": "dist/index.d.ts",
13
- "bin": {
14
- "blimu": "./bin/blimu"
15
- },
9
+ "main": "dist/main.js",
10
+ "module": "dist/main.mjs",
11
+ "types": "dist/main.d.ts",
16
12
  "files": [
17
13
  "dist/**",
18
- "bin/**",
19
- "scripts/**"
14
+ "src/**"
20
15
  ],
21
- "scripts": {
22
- "build": "tsc -p tsconfig.json",
23
- "typecheck": "tsc -p tsconfig.json --noEmit",
24
- "lint": "eslint .",
25
- "format": "eslint --fix . && prettier --write .",
26
- "prepublishOnly": "npm run build && npm run typecheck || true",
27
- "postinstall": "node scripts/postinstall.js"
28
- },
29
16
  "exports": {
30
17
  ".": {
31
- "import": {
32
- "default": "./dist/index.mjs",
33
- "types": "./dist/index.d.ts"
34
- },
35
- "require": {
36
- "default": "./dist/index.js",
37
- "types": "./dist/index.d.ts"
38
- }
18
+ "types": "./dist/main.d.ts",
19
+ "import": "./dist/main.mjs",
20
+ "require": "./dist/main.js",
21
+ "default": "./dist/main.js"
39
22
  },
40
23
  "./services/*": {
24
+ "types": "./dist/services/*.d.ts",
41
25
  "import": "./dist/services/*.mjs",
42
26
  "require": "./dist/services/*.js",
43
- "types": "./dist/services/*.d.ts"
27
+ "default": "./dist/services/*.js"
44
28
  },
45
29
  "./schema": {
46
- "import": {
47
- "default": "./dist/schema.mjs",
48
- "types": "./dist/schema.d.ts"
49
- },
50
- "require": {
51
- "default": "./dist/schema.js",
52
- "types": "./dist/schema.d.ts"
53
- }
30
+ "types": "./dist/schema.d.ts",
31
+ "import": "./dist/schema.mjs",
32
+ "require": "./dist/schema.js",
33
+ "default": "./dist/schema.js"
54
34
  },
55
35
  "./client": {
56
- "import": {
57
- "default": "./dist/client.mjs",
58
- "types": "./dist/client.d.ts"
59
- },
60
- "require": {
61
- "default": "./dist/client.js",
62
- "types": "./dist/client.d.ts"
63
- }
36
+ "types": "./dist/client.d.ts",
37
+ "import": "./dist/client.mjs",
38
+ "require": "./dist/client.js",
39
+ "default": "./dist/client.js"
64
40
  },
65
41
  "./utils": {
66
- "import": {
67
- "default": "./dist/utils.mjs",
68
- "types": "./dist/utils.d.ts"
69
- },
70
- "require": {
71
- "default": "./dist/utils.js",
72
- "types": "./dist/utils.d.ts"
73
- }
42
+ "types": "./dist/utils.d.ts",
43
+ "import": "./dist/utils.mjs",
44
+ "require": "./dist/utils.js",
45
+ "default": "./dist/utils.js"
74
46
  }
75
47
  },
48
+ "scripts": {
49
+ "build": "tsup",
50
+ "typecheck": "tsc -p tsconfig.json --noEmit",
51
+ "lint": "eslint .",
52
+ "format": "eslint --fix . && prettier --write .",
53
+ "prepublishOnly": "npm run build && npm run typecheck || true"
54
+ },
76
55
  "dependencies": {
77
- "jsonwebtoken": "^9.0.3"
56
+ "@blimu/fetch": "^0.2.0",
57
+ "@blimu/types": "^1.1.0",
58
+ "jsonwebtoken": "^9.0.3",
59
+ "zod": "^4.3.5"
78
60
  },
79
61
  "devDependencies": {
80
- "@types/jsonwebtoken": "^9.0.10"
81
- },
82
- "engines": {
83
- "node": "24"
84
- },
85
- "packageManager": "yarn@3.8.7",
86
- "volta": {
87
- "node": "24.1.0",
88
- "yarn": "3.8.7"
62
+ "@types/jsonwebtoken": "^9",
63
+ "tsup": "^8.5.1"
89
64
  }
90
65
  }
package/src/client.ts ADDED
@@ -0,0 +1,74 @@
1
+ import {
2
+ FetchClient,
3
+ FetchError,
4
+ type FetchClientConfig,
5
+ type AuthStrategy,
6
+ } from '@blimu/fetch';
7
+
8
+ export type ClientOption = FetchClientConfig & { apiKey?: string };
9
+
10
+ // Re-export FetchError for backward compatibility
11
+ export { FetchError };
12
+
13
+ export class CoreClient extends FetchClient {
14
+ constructor(cfg: ClientOption = {}) {
15
+ // Build auth strategies from OpenAPI security schemes
16
+ const authStrategies: AuthStrategy[] = [];
17
+
18
+ // Extract auth and security scheme properties to avoid passing them to FetchClient
19
+ const { auth: _existingAuth, apiKey, ...restCfg } = cfg;
20
+ if (cfg?.apiKey) {
21
+ const apiKeyValue = cfg.apiKey;
22
+ authStrategies.push({
23
+ type: 'apiKey',
24
+ key: () => apiKeyValue,
25
+ location: 'header',
26
+ name: 'X-API-KEY',
27
+ });
28
+ } // Build final auth config (merge existing with new strategies)
29
+ const finalAuthStrategies = [
30
+ ...(_existingAuth?.strategies || []),
31
+ ...authStrategies,
32
+ ];
33
+
34
+ // Build fetchConfig, ensuring auth comes after restCfg spread to override any existing auth
35
+ const fetchConfig: FetchClientConfig = {
36
+ ...restCfg,
37
+ baseURL: cfg.baseURL ?? 'https://api.blimu.dev',
38
+ // Explicitly set auth after restCfg to ensure it's not overwritten
39
+ // (restCfg might have an auth property that we want to replace)
40
+ ...(finalAuthStrategies.length > 0
41
+ ? {
42
+ auth: {
43
+ strategies: finalAuthStrategies,
44
+ },
45
+ }
46
+ : {}),
47
+ // Hooks are passed through directly from FetchClientConfig (no mapping needed)
48
+ };
49
+
50
+ super(fetchConfig);
51
+ }
52
+
53
+ async request(
54
+ init: RequestInit & {
55
+ path: string;
56
+ method: string;
57
+ query?: Record<string, any>;
58
+ }
59
+ ) {
60
+ return await super.request(init);
61
+ }
62
+
63
+ async *requestStream<T = any>(
64
+ init: RequestInit & {
65
+ path: string;
66
+ method: string;
67
+ query?: Record<string, any>;
68
+ contentType: string;
69
+ streamingFormat?: 'sse' | 'ndjson' | 'chunked';
70
+ }
71
+ ): AsyncGenerator<T, void, unknown> {
72
+ yield* super.requestStream(init);
73
+ }
74
+ }
package/src/index.ts ADDED
@@ -0,0 +1,55 @@
1
+ import { CoreClient, FetchError, type ClientOption } from './client';
2
+ import { BulkResourcesService } from './services/bulk_resources';
3
+ import { BulkRolesService } from './services/bulk_roles';
4
+ import { EntitlementsService } from './services/entitlements';
5
+ import { PlansService } from './services/plans';
6
+ import { ResourceMembersService } from './services/resource_members';
7
+ import { ResourcesService } from './services/resources';
8
+ import { RolesService } from './services/roles';
9
+ import { UsageService } from './services/usage';
10
+ import { UsersService } from './services/users';
11
+ export class Blimu {
12
+ readonly bulkResources: BulkResourcesService;
13
+ readonly bulkRoles: BulkRolesService;
14
+ readonly entitlements: EntitlementsService;
15
+ readonly plans: PlansService;
16
+ readonly resourceMembers: ResourceMembersService;
17
+ readonly resources: ResourcesService;
18
+ readonly roles: RolesService;
19
+ readonly usage: UsageService;
20
+ readonly users: UsersService;
21
+ constructor(options?: ClientOption) {
22
+ const core = new CoreClient(options);
23
+ this.bulkResources = new BulkResourcesService(core);
24
+ this.bulkRoles = new BulkRolesService(core);
25
+ this.entitlements = new EntitlementsService(core);
26
+ this.plans = new PlansService(core);
27
+ this.resourceMembers = new ResourceMembersService(core);
28
+ this.resources = new ResourcesService(core);
29
+ this.roles = new RolesService(core);
30
+ this.usage = new UsageService(core);
31
+ this.users = new UsersService(core);
32
+ }
33
+ }
34
+
35
+ export type { ClientOption };
36
+
37
+ // Export FetchError and CoreClient for error handling and advanced usage
38
+ export { FetchError, CoreClient };
39
+ // Re-export all error types from @blimu/fetch for instanceof checks
40
+ export * from '@blimu/fetch';
41
+ export const BlimuError = FetchError;
42
+
43
+ // Re-exports for better ergonomics
44
+ export * from './utils';
45
+ export * as Schema from './schema';
46
+ export * as ZodSchema from './schema.zod';
47
+ export { BulkResourcesService } from './services/bulk_resources';
48
+ export { BulkRolesService } from './services/bulk_roles';
49
+ export { EntitlementsService } from './services/entitlements';
50
+ export { PlansService } from './services/plans';
51
+ export { ResourceMembersService } from './services/resource_members';
52
+ export { ResourcesService } from './services/resources';
53
+ export { RolesService } from './services/roles';
54
+ export { UsageService } from './services/usage';
55
+ export { UsersService } from './services/users';
package/src/main.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './index';
2
+ export * from './token-verifier';
3
+ export type * from '@blimu/types';