@vindentech/api-client 0.3.0-next.2 → 0.3.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/README.md +41 -0
  2. package/dist/generated/_permissions.d.ts +214 -0
  3. package/dist/generated/_permissions.d.ts.map +1 -0
  4. package/dist/generated/_permissions.js +60 -0
  5. package/dist/generated/_permissions.js.map +1 -0
  6. package/dist/generated/account-credits/account-credits.d.ts +4 -0
  7. package/dist/generated/account-credits/account-credits.d.ts.map +1 -1
  8. package/dist/generated/account-credits/account-credits.js.map +1 -1
  9. package/dist/generated/articles/articles.d.ts +4 -0
  10. package/dist/generated/articles/articles.d.ts.map +1 -1
  11. package/dist/generated/articles/articles.js.map +1 -1
  12. package/dist/generated/billing-accounts/billing-accounts.d.ts +4 -0
  13. package/dist/generated/billing-accounts/billing-accounts.d.ts.map +1 -1
  14. package/dist/generated/billing-accounts/billing-accounts.js.map +1 -1
  15. package/dist/generated/binding-plans/binding-plans.d.ts +2 -0
  16. package/dist/generated/binding-plans/binding-plans.d.ts.map +1 -1
  17. package/dist/generated/binding-plans/binding-plans.js.map +1 -1
  18. package/dist/generated/coupons/coupons.d.ts +6 -0
  19. package/dist/generated/coupons/coupons.d.ts.map +1 -1
  20. package/dist/generated/coupons/coupons.js.map +1 -1
  21. package/dist/generated/discount-rules/discount-rules.d.ts +2 -0
  22. package/dist/generated/discount-rules/discount-rules.d.ts.map +1 -1
  23. package/dist/generated/discount-rules/discount-rules.js.map +1 -1
  24. package/dist/generated/fortnox-o-auth/fortnox-o-auth.d.ts +1 -1
  25. package/dist/generated/health/health.d.ts +1 -0
  26. package/dist/generated/health/health.d.ts.map +1 -1
  27. package/dist/generated/health/health.js.map +1 -1
  28. package/dist/generated/integrations/integrations.d.ts +4 -0
  29. package/dist/generated/integrations/integrations.d.ts.map +1 -1
  30. package/dist/generated/integrations/integrations.js.map +1 -1
  31. package/dist/generated/invoices/invoices.d.ts +6 -0
  32. package/dist/generated/invoices/invoices.d.ts.map +1 -1
  33. package/dist/generated/invoices/invoices.js.map +1 -1
  34. package/dist/generated/me/me.d.ts +1 -0
  35. package/dist/generated/me/me.d.ts.map +1 -1
  36. package/dist/generated/me/me.js.map +1 -1
  37. package/dist/generated/orders/orders.d.ts +1 -0
  38. package/dist/generated/orders/orders.d.ts.map +1 -1
  39. package/dist/generated/orders/orders.js.map +1 -1
  40. package/dist/generated/price-lists/price-lists.d.ts +6 -0
  41. package/dist/generated/price-lists/price-lists.d.ts.map +1 -1
  42. package/dist/generated/price-lists/price-lists.js.map +1 -1
  43. package/dist/generated/provider-switch/provider-switch.d.ts +2 -0
  44. package/dist/generated/provider-switch/provider-switch.d.ts.map +1 -1
  45. package/dist/generated/provider-switch/provider-switch.js.map +1 -1
  46. package/dist/generated/stripe-webhook/stripe-webhook.d.ts +1 -1
  47. package/dist/generated/subscription-configs/subscription-configs.d.ts +3 -0
  48. package/dist/generated/subscription-configs/subscription-configs.d.ts.map +1 -1
  49. package/dist/generated/subscription-configs/subscription-configs.js.map +1 -1
  50. package/dist/generated/tenant-config/tenant-config.d.ts +2 -0
  51. package/dist/generated/tenant-config/tenant-config.d.ts.map +1 -1
  52. package/dist/generated/tenant-config/tenant-config.js.map +1 -1
  53. package/dist/index.d.ts +1 -0
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +5 -0
  56. package/dist/index.js.map +1 -1
  57. package/dist/permissions.d.ts +39 -0
  58. package/dist/permissions.d.ts.map +1 -0
  59. package/dist/permissions.js +46 -0
  60. package/dist/permissions.js.map +1 -0
  61. package/package.json +1 -1
@@ -0,0 +1,46 @@
1
+ import { OPERATION_PERMISSIONS, } from "./generated/_permissions.js";
2
+ export { OPERATION_PERMISSIONS };
3
+ /**
4
+ * The access rule for an operation — what a caller needs to invoke it. A closed
5
+ * discriminated union, so every operation is classified and none reads as
6
+ * "open by omission":
7
+ * - `{ kind: "permissions", permissions }` — caller must hold ALL of them;
8
+ * - `{ kind: "authenticated" }` — any authenticated user;
9
+ * - `{ kind: "public" }` — no authentication required.
10
+ *
11
+ * Keyed by the operation-function name as a typed string literal (e.g.
12
+ * `"billingAccountsControllerCreateAccountV1"`), so a renamed or removed
13
+ * operation is a compile error. Pass the name string, not the function — name
14
+ * lookup is bundler-safe where `Function.name` is not.
15
+ *
16
+ * @example
17
+ * import { requiredPermissions } from "@vindentech/api-client";
18
+ * requiredPermissions("billingAccountsControllerCreateAccountV1");
19
+ * // → { kind: "permissions", permissions: ["billingaccount:write"] }
20
+ */
21
+ export function requiredPermissions(operation) {
22
+ return OPERATION_PERMISSIONS[operation];
23
+ }
24
+ /**
25
+ * Whether the given capabilities (e.g. `me.capabilities` from `GET /v1/me`)
26
+ * satisfy an operation's access rule. `true` for public and authenticated-only
27
+ * operations (they require no specific permission); for permission-gated ones
28
+ * the caller must hold ALL required permissions — mirroring the backend
29
+ * PermissionGuard exactly. Use to gate UI before calling.
30
+ *
31
+ * For logged-out rendering, read `requiredPermissions(op).kind` to distinguish
32
+ * `"public"` from `"authenticated"`.
33
+ *
34
+ * @example
35
+ * if (hasRequiredPermissions(me.capabilities, "billingAccountsControllerCreateAccountV1")) {
36
+ * // show the "Create account" button
37
+ * }
38
+ */
39
+ export function hasRequiredPermissions(capabilities, operation) {
40
+ const access = OPERATION_PERMISSIONS[operation];
41
+ if (access.kind !== "permissions")
42
+ return true;
43
+ const held = new Set(capabilities);
44
+ return access.permissions.every((p) => held.has(p));
45
+ }
46
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,GAItB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAGjC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAwB;IAC1D,OAAO,qBAAqB,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,sBAAsB,CACpC,YAA+B,EAC/B,SAAwB;IAExB,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vindentech/api-client",
3
- "version": "0.3.0-next.2",
3
+ "version": "0.3.0-next.3",
4
4
  "description": "TypeScript SDK for the Vinden Core API. Generated from OpenAPI via orval.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",