@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.
- package/README.md +41 -0
- package/dist/generated/_permissions.d.ts +214 -0
- package/dist/generated/_permissions.d.ts.map +1 -0
- package/dist/generated/_permissions.js +60 -0
- package/dist/generated/_permissions.js.map +1 -0
- package/dist/generated/account-credits/account-credits.d.ts +4 -0
- package/dist/generated/account-credits/account-credits.d.ts.map +1 -1
- package/dist/generated/account-credits/account-credits.js.map +1 -1
- package/dist/generated/articles/articles.d.ts +4 -0
- package/dist/generated/articles/articles.d.ts.map +1 -1
- package/dist/generated/articles/articles.js.map +1 -1
- package/dist/generated/billing-accounts/billing-accounts.d.ts +4 -0
- package/dist/generated/billing-accounts/billing-accounts.d.ts.map +1 -1
- package/dist/generated/billing-accounts/billing-accounts.js.map +1 -1
- package/dist/generated/binding-plans/binding-plans.d.ts +2 -0
- package/dist/generated/binding-plans/binding-plans.d.ts.map +1 -1
- package/dist/generated/binding-plans/binding-plans.js.map +1 -1
- package/dist/generated/coupons/coupons.d.ts +6 -0
- package/dist/generated/coupons/coupons.d.ts.map +1 -1
- package/dist/generated/coupons/coupons.js.map +1 -1
- package/dist/generated/discount-rules/discount-rules.d.ts +2 -0
- package/dist/generated/discount-rules/discount-rules.d.ts.map +1 -1
- package/dist/generated/discount-rules/discount-rules.js.map +1 -1
- package/dist/generated/fortnox-o-auth/fortnox-o-auth.d.ts +1 -1
- package/dist/generated/health/health.d.ts +1 -0
- package/dist/generated/health/health.d.ts.map +1 -1
- package/dist/generated/health/health.js.map +1 -1
- package/dist/generated/integrations/integrations.d.ts +4 -0
- package/dist/generated/integrations/integrations.d.ts.map +1 -1
- package/dist/generated/integrations/integrations.js.map +1 -1
- package/dist/generated/invoices/invoices.d.ts +6 -0
- package/dist/generated/invoices/invoices.d.ts.map +1 -1
- package/dist/generated/invoices/invoices.js.map +1 -1
- package/dist/generated/me/me.d.ts +1 -0
- package/dist/generated/me/me.d.ts.map +1 -1
- package/dist/generated/me/me.js.map +1 -1
- package/dist/generated/orders/orders.d.ts +1 -0
- package/dist/generated/orders/orders.d.ts.map +1 -1
- package/dist/generated/orders/orders.js.map +1 -1
- package/dist/generated/price-lists/price-lists.d.ts +6 -0
- package/dist/generated/price-lists/price-lists.d.ts.map +1 -1
- package/dist/generated/price-lists/price-lists.js.map +1 -1
- package/dist/generated/provider-switch/provider-switch.d.ts +2 -0
- package/dist/generated/provider-switch/provider-switch.d.ts.map +1 -1
- package/dist/generated/provider-switch/provider-switch.js.map +1 -1
- package/dist/generated/stripe-webhook/stripe-webhook.d.ts +1 -1
- package/dist/generated/subscription-configs/subscription-configs.d.ts +3 -0
- package/dist/generated/subscription-configs/subscription-configs.d.ts.map +1 -1
- package/dist/generated/subscription-configs/subscription-configs.js.map +1 -1
- package/dist/generated/tenant-config/tenant-config.d.ts +2 -0
- package/dist/generated/tenant-config/tenant-config.d.ts.map +1 -1
- package/dist/generated/tenant-config/tenant-config.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/permissions.d.ts +39 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +46 -0
- package/dist/permissions.js.map +1 -0
- 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"}
|