@kontrolia/shared 1.0.0 → 1.2.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.
- package/dist/types.d.ts +102 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/types.d.ts
CHANGED
|
@@ -19,10 +19,18 @@ export interface KontroliaMembership {
|
|
|
19
19
|
status: "active" | "invited" | "suspended";
|
|
20
20
|
roles: string[];
|
|
21
21
|
}
|
|
22
|
+
/** A membership with its organization resolved — what a "switch company" selector needs to render. */
|
|
23
|
+
export interface KontroliaMembershipWithOrganization extends KontroliaMembership {
|
|
24
|
+
organization: KontroliaOrganization;
|
|
25
|
+
}
|
|
22
26
|
/**
|
|
23
|
-
* Shape of the custom claims injected by
|
|
24
|
-
* (see packages/db/migrations/0007_custom_access_token_hook.sql)
|
|
25
|
-
*
|
|
27
|
+
* Shape of the custom claims injected by kontrolia_auth.custom_access_token_hook
|
|
28
|
+
* (see packages/db/migrations/0007_custom_access_token_hook.sql), plus the
|
|
29
|
+
* standard GoTrue claims every Supabase-issued access token already carries
|
|
30
|
+
* (`email`, `user_metadata`) — present under the top-level JWT claims,
|
|
31
|
+
* decoded by @kontrolia/auth. `user_metadata` is whatever was passed at
|
|
32
|
+
* signup / `updateProfile()`; only the keys @kontrolia/auth itself reads and
|
|
33
|
+
* writes are typed here.
|
|
26
34
|
*/
|
|
27
35
|
export interface KontroliaTokenClaims {
|
|
28
36
|
sub: string;
|
|
@@ -31,7 +39,31 @@ export interface KontroliaTokenClaims {
|
|
|
31
39
|
organization_id: string | null;
|
|
32
40
|
roles: string[];
|
|
33
41
|
permissions: string[];
|
|
42
|
+
/**
|
|
43
|
+
* True for a user granted platform-admin status (see
|
|
44
|
+
* kontrolia_auth.platform_admins) — a reserved claim outside the app
|
|
45
|
+
* permission-key namespace, for support/ops tooling that needs to see
|
|
46
|
+
* across every organization instead of just the active one. Not
|
|
47
|
+
* something an app's own role/permission catalog can grant.
|
|
48
|
+
*/
|
|
49
|
+
is_platform_admin?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* `{ "<application slug>": "<plan slug>" }` for every live subscription
|
|
52
|
+
* of the active organization. Informational (show "Plan Pro" without a
|
|
53
|
+
* round trip) — the actual gate is that `permissions` above is already
|
|
54
|
+
* intersected with the plan for applications that require one. Limits
|
|
55
|
+
* and usage are never in the token; see KontroliaEntitlements.
|
|
56
|
+
*/
|
|
57
|
+
plans?: Record<string, string>;
|
|
34
58
|
exp: number;
|
|
59
|
+
email?: string | null;
|
|
60
|
+
user_metadata?: {
|
|
61
|
+
full_name?: string | null;
|
|
62
|
+
avatar_url?: string | null;
|
|
63
|
+
locale?: string | null;
|
|
64
|
+
timezone?: string | null;
|
|
65
|
+
[key: string]: unknown;
|
|
66
|
+
} | null;
|
|
35
67
|
[key: string]: unknown;
|
|
36
68
|
}
|
|
37
69
|
export interface KontroliaInvitation {
|
|
@@ -43,4 +75,71 @@ export interface KontroliaInvitation {
|
|
|
43
75
|
}
|
|
44
76
|
/** A single "resource.action" permission key, e.g. "facturacion.facturas.crear". */
|
|
45
77
|
export type PermissionKey = string;
|
|
78
|
+
export type KontroliaBillingInterval = "month" | "year" | "one_time";
|
|
79
|
+
export type KontroliaLimitPeriod = "day" | "month" | "year" | "lifetime";
|
|
80
|
+
export type KontroliaSubscriptionStatus = "trialing" | "active" | "past_due" | "canceled" | "expired";
|
|
81
|
+
export interface KontroliaPlanLimit {
|
|
82
|
+
key: string;
|
|
83
|
+
/** null = unlimited. */
|
|
84
|
+
limit: number | null;
|
|
85
|
+
period: KontroliaLimitPeriod;
|
|
86
|
+
description: string | null;
|
|
87
|
+
}
|
|
88
|
+
/** A commercial tier of an application, as an app shows it on its pricing screen. */
|
|
89
|
+
export interface KontroliaPlan {
|
|
90
|
+
id: string;
|
|
91
|
+
applicationId: string;
|
|
92
|
+
slug: string;
|
|
93
|
+
name: string;
|
|
94
|
+
description: string | null;
|
|
95
|
+
/** Minor units (centavos/cents). */
|
|
96
|
+
priceAmount: number;
|
|
97
|
+
currency: string;
|
|
98
|
+
billingInterval: KontroliaBillingInterval;
|
|
99
|
+
trialDays: number;
|
|
100
|
+
features: string[];
|
|
101
|
+
isDefault: boolean;
|
|
102
|
+
isActive: boolean;
|
|
103
|
+
sortOrder: number;
|
|
104
|
+
/** Permission keys this plan unlocks. */
|
|
105
|
+
permissions: string[];
|
|
106
|
+
limits: KontroliaPlanLimit[];
|
|
107
|
+
}
|
|
108
|
+
export interface KontroliaSubscription {
|
|
109
|
+
id: string;
|
|
110
|
+
organizationId: string;
|
|
111
|
+
applicationId: string;
|
|
112
|
+
planId: string;
|
|
113
|
+
planSlug: string;
|
|
114
|
+
planName: string;
|
|
115
|
+
status: KontroliaSubscriptionStatus;
|
|
116
|
+
/** Whether it currently grants access (active/trialing, or past_due inside the grace window). */
|
|
117
|
+
isLive: boolean;
|
|
118
|
+
currentPeriodStart: string | null;
|
|
119
|
+
currentPeriodEnd: string | null;
|
|
120
|
+
cancelAtPeriodEnd: boolean;
|
|
121
|
+
provider: "manual" | "stripe";
|
|
122
|
+
}
|
|
123
|
+
export interface KontroliaUsage extends KontroliaPlanLimit {
|
|
124
|
+
used: number;
|
|
125
|
+
/** null when the limit is unlimited. */
|
|
126
|
+
remaining: number | null;
|
|
127
|
+
periodStart: string;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* What the caller's active organization is entitled to in one application:
|
|
131
|
+
* its live plan (if any), why access might be blocked, the permissions that
|
|
132
|
+
* survive the role ∩ plan intersection, and every limit with its current
|
|
133
|
+
* usage.
|
|
134
|
+
*/
|
|
135
|
+
export interface KontroliaEntitlements {
|
|
136
|
+
applicationId: string;
|
|
137
|
+
applicationSlug: string;
|
|
138
|
+
plansRequired: boolean;
|
|
139
|
+
subscription: KontroliaSubscription | null;
|
|
140
|
+
/** "ok" when access is granted; otherwise why not. */
|
|
141
|
+
access: "ok" | "no_subscription" | "past_due" | "canceled" | "expired";
|
|
142
|
+
permissions: string[];
|
|
143
|
+
usage: KontroliaUsage[];
|
|
144
|
+
}
|
|
46
145
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;IAC3C,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|