@infinitetoken/lumber-kit 0.3.8 → 0.4.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/cjs/constants/index.d.ts +1 -1
- package/dist/cjs/constants/index.d.ts.map +1 -1
- package/dist/cjs/constants/index.js +4 -4
- package/dist/cjs/types/index.d.ts +74 -4
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.d.ts +4 -1
- package/dist/cjs/utils/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.js +17 -1
- package/dist/esm/constants/index.d.ts +1 -1
- package/dist/esm/constants/index.d.ts.map +1 -1
- package/dist/esm/constants/index.js +4 -4
- package/dist/esm/types/index.d.ts +74 -4
- package/dist/esm/types/index.d.ts.map +1 -1
- package/dist/esm/utils/index.d.ts +4 -1
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +14 -0
- package/package.json +1 -1
|
@@ -29,7 +29,7 @@ export declare const subscriptionLevelToName: Record<SubscriptionLevel, Subscrip
|
|
|
29
29
|
export declare const subscriptionLevels: readonly SubscriptionLevel[];
|
|
30
30
|
export type SubscriptionLimits = {
|
|
31
31
|
apps: number;
|
|
32
|
-
|
|
32
|
+
seats: number;
|
|
33
33
|
apiKeys: number;
|
|
34
34
|
logRetentionDays: number;
|
|
35
35
|
monthlyLogs: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":"AAEA,oFAAoF;AACpF,0BAAkB,QAAQ;IACxB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;IACT,KAAK,IAAI;CACV;AAED,sCAAsC;AACtC,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;AAExE,2DAA2D;AAC3D,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAMvD,CAAA;AAED,0DAA0D;AAC1D,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,YAAY,EAAE,QAAQ,CAM9D,CAAA;AAED,+DAA+D;AAC/D,eAAO,MAAM,SAAS,EAAE,SAAS,QAAQ,EAAmF,CAAA;AAE5H,6EAA6E;AAC7E,0BAAkB,iBAAiB;IACjC,KAAK,IAAI;IACT,GAAG,IAAI;IACP,GAAG,IAAI;IACP,UAAU,IAAI;CACf;AAED,qFAAqF;AACrF,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,YAAY,CAAA;AAE1E,gEAAgE;AAChE,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,CAKpF,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,EAAE,SAAS,iBAAiB,EAA0G,CAAA;AAErK,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":"AAEA,oFAAoF;AACpF,0BAAkB,QAAQ;IACxB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;IACT,KAAK,IAAI;CACV;AAED,sCAAsC;AACtC,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;AAExE,2DAA2D;AAC3D,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAMvD,CAAA;AAED,0DAA0D;AAC1D,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,YAAY,EAAE,QAAQ,CAM9D,CAAA;AAED,+DAA+D;AAC/D,eAAO,MAAM,SAAS,EAAE,SAAS,QAAQ,EAAmF,CAAA;AAE5H,6EAA6E;AAC7E,0BAAkB,iBAAiB;IACjC,KAAK,IAAI;IACT,GAAG,IAAI;IACP,GAAG,IAAI;IACP,UAAU,IAAI;CACf;AAED,qFAAqF;AACrF,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,YAAY,CAAA;AAE1E,gEAAgE;AAChE,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,CAKpF,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,EAAE,SAAS,iBAAiB,EAA0G,CAAA;AAErK,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,8DAA8D;IAC9D,YAAY,EAAE,OAAO,CAAA;IACrB,4FAA4F;IAC5F,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAK5E,CAAA"}
|
|
@@ -48,8 +48,8 @@ exports.subscriptionLevelToName = {
|
|
|
48
48
|
exports.subscriptionLevels = [0 /* SubscriptionLevel.Hobby */, 1 /* SubscriptionLevel.Dev */, 2 /* SubscriptionLevel.Pro */, 3 /* SubscriptionLevel.Enterprise */];
|
|
49
49
|
/** Per-level resource limits. Use Infinity to mean unlimited or disabled. */
|
|
50
50
|
exports.subscriptionLimits = {
|
|
51
|
-
[0 /* SubscriptionLevel.Hobby */]: { apps:
|
|
52
|
-
[1 /* SubscriptionLevel.Dev */]: { apps:
|
|
53
|
-
[2 /* SubscriptionLevel.Pro */]: { apps:
|
|
54
|
-
[3 /* SubscriptionLevel.Enterprise */]: { apps: Infinity,
|
|
51
|
+
[0 /* SubscriptionLevel.Hobby */]: { apps: 5, seats: 1, apiKeys: 1, logRetentionDays: 7, monthlyLogs: 10000, realtimeLogs: false, minPushLevel: Infinity },
|
|
52
|
+
[1 /* SubscriptionLevel.Dev */]: { apps: 10, seats: 5, apiKeys: 5, logRetentionDays: 30, monthlyLogs: 250000, realtimeLogs: true, minPushLevel: 3 /* LogLevel.Error */ },
|
|
53
|
+
[2 /* SubscriptionLevel.Pro */]: { apps: 20, seats: 20, apiKeys: 15, logRetentionDays: 90, monthlyLogs: 2000000, realtimeLogs: true, minPushLevel: 2 /* LogLevel.Warn */ },
|
|
54
|
+
[3 /* SubscriptionLevel.Enterprise */]: { apps: Infinity, seats: Infinity, apiKeys: Infinity, logRetentionDays: Infinity, monthlyLogs: Infinity, realtimeLogs: true, minPushLevel: 0 /* LogLevel.Debug */ }
|
|
55
55
|
};
|
|
@@ -24,6 +24,17 @@ export interface LogPrivate {
|
|
|
24
24
|
nonce: string;
|
|
25
25
|
keyVersion: number;
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Encrypted note content.
|
|
29
|
+
* payload = base64(authTag + ciphertext)
|
|
30
|
+
* nonce = base64(random IV)
|
|
31
|
+
* keyVersion enables future key rotation.
|
|
32
|
+
*/
|
|
33
|
+
export interface NotePrivate {
|
|
34
|
+
payload: string;
|
|
35
|
+
nonce: string;
|
|
36
|
+
keyVersion: number;
|
|
37
|
+
}
|
|
27
38
|
/**
|
|
28
39
|
* API response shape for a stored log.
|
|
29
40
|
*/
|
|
@@ -59,7 +70,8 @@ export interface AppRecord {
|
|
|
59
70
|
updatedAt: string;
|
|
60
71
|
name: string;
|
|
61
72
|
color?: string;
|
|
62
|
-
|
|
73
|
+
imageUrl?: string;
|
|
74
|
+
teamId?: string;
|
|
63
75
|
encryptedKey: string | null;
|
|
64
76
|
}
|
|
65
77
|
/**
|
|
@@ -69,6 +81,30 @@ export interface AppRecord {
|
|
|
69
81
|
export interface AppCreatedRecord extends AppRecord {
|
|
70
82
|
apiKey?: string;
|
|
71
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* An organization that owns apps and pays for member usage.
|
|
86
|
+
* Team subscriptionLevel takes precedence over individual member levels.
|
|
87
|
+
*/
|
|
88
|
+
export interface TeamRecord {
|
|
89
|
+
id: string;
|
|
90
|
+
createdAt: string;
|
|
91
|
+
updatedAt: string;
|
|
92
|
+
name: string;
|
|
93
|
+
color?: string;
|
|
94
|
+
imageUrl?: string;
|
|
95
|
+
subscriptionLevel: SubscriptionLevel;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Membership of a user in a team.
|
|
99
|
+
*/
|
|
100
|
+
export interface TeamMemberRecord {
|
|
101
|
+
id: string;
|
|
102
|
+
createdAt: string;
|
|
103
|
+
updatedAt: string;
|
|
104
|
+
teamId: string;
|
|
105
|
+
userId: string;
|
|
106
|
+
role: 'owner' | 'admin' | 'member';
|
|
107
|
+
}
|
|
72
108
|
/**
|
|
73
109
|
* Machine authentication credential.
|
|
74
110
|
*/
|
|
@@ -80,9 +116,9 @@ export interface ApiKeyRecord {
|
|
|
80
116
|
name?: string;
|
|
81
117
|
}
|
|
82
118
|
/**
|
|
83
|
-
*
|
|
119
|
+
* External guest granted access to a specific app without being a team member.
|
|
84
120
|
*/
|
|
85
|
-
export interface
|
|
121
|
+
export interface GuestRecord {
|
|
86
122
|
id: string;
|
|
87
123
|
createdAt: string;
|
|
88
124
|
updatedAt: string;
|
|
@@ -90,6 +126,19 @@ export interface MembershipRecord {
|
|
|
90
126
|
userId: string;
|
|
91
127
|
role: 'owner' | 'admin' | 'read' | 'write';
|
|
92
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* A short user-authored note, encrypted with the app key.
|
|
131
|
+
* Visible to all members of the associated app.
|
|
132
|
+
* Query by teamId in NotesQuery to build a cross-app team feed.
|
|
133
|
+
*/
|
|
134
|
+
export interface NoteRecord {
|
|
135
|
+
id: string;
|
|
136
|
+
createdAt: string;
|
|
137
|
+
updatedAt: string;
|
|
138
|
+
appId: string;
|
|
139
|
+
userId: string;
|
|
140
|
+
private: NotePrivate;
|
|
141
|
+
}
|
|
93
142
|
export interface PushToken {
|
|
94
143
|
token: string;
|
|
95
144
|
deviceId?: string;
|
|
@@ -115,7 +164,7 @@ export interface UserRecord {
|
|
|
115
164
|
publicKey?: string;
|
|
116
165
|
appearance?: Appearance;
|
|
117
166
|
color?: string;
|
|
118
|
-
|
|
167
|
+
imageUrl?: string;
|
|
119
168
|
agreedToTermsVersion?: string;
|
|
120
169
|
notificationPreferences: NotificationPreferences;
|
|
121
170
|
pushTokens: PushToken[];
|
|
@@ -157,6 +206,27 @@ export interface AppsQuery {
|
|
|
157
206
|
from?: string;
|
|
158
207
|
to?: string;
|
|
159
208
|
}
|
|
209
|
+
/**
|
|
210
|
+
* Filter params for GET /teams.
|
|
211
|
+
*/
|
|
212
|
+
export interface TeamsQuery {
|
|
213
|
+
limit?: number;
|
|
214
|
+
cursor?: string;
|
|
215
|
+
sort?: string;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Filter params for GET /notes.
|
|
219
|
+
*/
|
|
220
|
+
export interface NotesQuery {
|
|
221
|
+
appId?: string;
|
|
222
|
+
teamId?: string;
|
|
223
|
+
userId?: string;
|
|
224
|
+
from?: string;
|
|
225
|
+
to?: string;
|
|
226
|
+
sort?: string;
|
|
227
|
+
limit?: number;
|
|
228
|
+
cursor?: string;
|
|
229
|
+
}
|
|
160
230
|
export type DeviceLinkStatus = 'pending' | 'approved' | 'denied';
|
|
161
231
|
/**
|
|
162
232
|
* Response from POST /device-links.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAE1D,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;AAEpD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IAEjB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,KAAK,EAAE,QAAQ,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IAEf,OAAO,EAAE,OAAO,CAAA;IAEhB,OAAO,CAAC,EAAE,UAAU,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAElC,OAAO,CAAC,EAAE,UAAU,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IAEjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAE1D,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;AAEpD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IAEjB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,KAAK,EAAE,QAAQ,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IAEf,OAAO,EAAE,OAAO,CAAA;IAEhB,OAAO,CAAC,EAAE,UAAU,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAElC,OAAO,CAAC,EAAE,UAAU,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IAEjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IAEjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,EAAE,iBAAiB,CAAA;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IAEjB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IAEd,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAA;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IAEjB,KAAK,EAAE,MAAM,CAAA;IAEb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IAEjB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IAEd,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAA;CAC3C;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IAEjB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IAEd,OAAO,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,CAAA;CACrC;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IAEjB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,uBAAuB,EAAE,uBAAuB,CAAA;IAChD,UAAU,EAAE,SAAS,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAA;IACP,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAA;AAEhE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,gBAAgB,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { LogLevel, SubscriptionLevel } from '../constants';
|
|
2
|
-
import { Appearance, DeviceLinkStatus } from '../types';
|
|
2
|
+
import { Appearance, DeviceLinkStatus, TeamMemberRecord } from '../types';
|
|
3
3
|
export declare const isValidAppearance: (value: unknown) => value is Appearance;
|
|
4
4
|
/** Accepts 3- and 6-digit hex color strings (#rgb, #rrggbb). */
|
|
5
5
|
export declare const isValidColor: (value: string) => boolean;
|
|
6
6
|
export declare const isValidLogLevel: (value: unknown) => value is LogLevel;
|
|
7
7
|
export declare const isValidSubscriptionLevel: (value: unknown) => value is SubscriptionLevel;
|
|
8
8
|
export declare const isValidDeviceLinkStatus: (value: unknown) => value is DeviceLinkStatus;
|
|
9
|
+
export declare const isValidTeamMemberRole: (value: unknown) => value is TeamMemberRecord["role"];
|
|
10
|
+
/** Accepts any valid absolute URL (https://..., http://..., etc.). */
|
|
11
|
+
export declare const isValidImageUrl: (value: unknown) => value is string;
|
|
9
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,iBAAiB,EAAsB,MAAM,cAAc,CAAA;AACzF,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,iBAAiB,EAAsB,MAAM,cAAc,CAAA;AACzF,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAIzE,eAAO,MAAM,iBAAiB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,UAA4D,CAAA;AAExH,gEAAgE;AAChE,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,OAA2D,CAAA;AAExG,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,QAA6D,CAAA;AAEvH,eAAO,MAAM,wBAAwB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,iBAAyF,CAAA;AAI5J,eAAO,MAAM,uBAAuB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,gBAA0E,CAAA;AAI5I,eAAO,MAAM,qBAAqB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,gBAAgB,CAAC,MAAM,CAAgE,CAAA;AAEvJ,sEAAsE;AACtE,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAQzD,CAAA"}
|
package/dist/cjs/utils/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isValidDeviceLinkStatus = exports.isValidSubscriptionLevel = exports.isValidLogLevel = exports.isValidColor = exports.isValidAppearance = void 0;
|
|
3
|
+
exports.isValidImageUrl = exports.isValidTeamMemberRole = exports.isValidDeviceLinkStatus = exports.isValidSubscriptionLevel = exports.isValidLogLevel = exports.isValidColor = exports.isValidAppearance = void 0;
|
|
4
4
|
const constants_1 = require("../constants");
|
|
5
5
|
const appearanceValues = ['system', 'dark', 'light'];
|
|
6
6
|
const isValidAppearance = (value) => appearanceValues.includes(value);
|
|
@@ -15,3 +15,19 @@ exports.isValidSubscriptionLevel = isValidSubscriptionLevel;
|
|
|
15
15
|
const deviceLinkStatuses = ['pending', 'approved', 'denied'];
|
|
16
16
|
const isValidDeviceLinkStatus = (value) => deviceLinkStatuses.includes(value);
|
|
17
17
|
exports.isValidDeviceLinkStatus = isValidDeviceLinkStatus;
|
|
18
|
+
const teamMemberRoles = ['owner', 'admin', 'member'];
|
|
19
|
+
const isValidTeamMemberRole = (value) => teamMemberRoles.includes(value);
|
|
20
|
+
exports.isValidTeamMemberRole = isValidTeamMemberRole;
|
|
21
|
+
/** Accepts any valid absolute URL (https://..., http://..., etc.). */
|
|
22
|
+
const isValidImageUrl = (value) => {
|
|
23
|
+
if (typeof value !== 'string' || value.length === 0)
|
|
24
|
+
return false;
|
|
25
|
+
try {
|
|
26
|
+
new URL(value);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
exports.isValidImageUrl = isValidImageUrl;
|
|
@@ -29,7 +29,7 @@ export declare const subscriptionLevelToName: Record<SubscriptionLevel, Subscrip
|
|
|
29
29
|
export declare const subscriptionLevels: readonly SubscriptionLevel[];
|
|
30
30
|
export type SubscriptionLimits = {
|
|
31
31
|
apps: number;
|
|
32
|
-
|
|
32
|
+
seats: number;
|
|
33
33
|
apiKeys: number;
|
|
34
34
|
logRetentionDays: number;
|
|
35
35
|
monthlyLogs: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":"AAEA,oFAAoF;AACpF,0BAAkB,QAAQ;IACxB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;IACT,KAAK,IAAI;CACV;AAED,sCAAsC;AACtC,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;AAExE,2DAA2D;AAC3D,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAMvD,CAAA;AAED,0DAA0D;AAC1D,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,YAAY,EAAE,QAAQ,CAM9D,CAAA;AAED,+DAA+D;AAC/D,eAAO,MAAM,SAAS,EAAE,SAAS,QAAQ,EAAmF,CAAA;AAE5H,6EAA6E;AAC7E,0BAAkB,iBAAiB;IACjC,KAAK,IAAI;IACT,GAAG,IAAI;IACP,GAAG,IAAI;IACP,UAAU,IAAI;CACf;AAED,qFAAqF;AACrF,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,YAAY,CAAA;AAE1E,gEAAgE;AAChE,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,CAKpF,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,EAAE,SAAS,iBAAiB,EAA0G,CAAA;AAErK,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":"AAEA,oFAAoF;AACpF,0BAAkB,QAAQ;IACxB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;IACT,KAAK,IAAI;CACV;AAED,sCAAsC;AACtC,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;AAExE,2DAA2D;AAC3D,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAMvD,CAAA;AAED,0DAA0D;AAC1D,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,YAAY,EAAE,QAAQ,CAM9D,CAAA;AAED,+DAA+D;AAC/D,eAAO,MAAM,SAAS,EAAE,SAAS,QAAQ,EAAmF,CAAA;AAE5H,6EAA6E;AAC7E,0BAAkB,iBAAiB;IACjC,KAAK,IAAI;IACT,GAAG,IAAI;IACP,GAAG,IAAI;IACP,UAAU,IAAI;CACf;AAED,qFAAqF;AACrF,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,YAAY,CAAA;AAE1E,gEAAgE;AAChE,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,CAKpF,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,EAAE,SAAS,iBAAiB,EAA0G,CAAA;AAErK,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,8DAA8D;IAC9D,YAAY,EAAE,OAAO,CAAA;IACrB,4FAA4F;IAC5F,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAK5E,CAAA"}
|
|
@@ -45,8 +45,8 @@ export const subscriptionLevelToName = {
|
|
|
45
45
|
export const subscriptionLevels = [0 /* SubscriptionLevel.Hobby */, 1 /* SubscriptionLevel.Dev */, 2 /* SubscriptionLevel.Pro */, 3 /* SubscriptionLevel.Enterprise */];
|
|
46
46
|
/** Per-level resource limits. Use Infinity to mean unlimited or disabled. */
|
|
47
47
|
export const subscriptionLimits = {
|
|
48
|
-
[0 /* SubscriptionLevel.Hobby */]: { apps:
|
|
49
|
-
[1 /* SubscriptionLevel.Dev */]: { apps:
|
|
50
|
-
[2 /* SubscriptionLevel.Pro */]: { apps:
|
|
51
|
-
[3 /* SubscriptionLevel.Enterprise */]: { apps: Infinity,
|
|
48
|
+
[0 /* SubscriptionLevel.Hobby */]: { apps: 5, seats: 1, apiKeys: 1, logRetentionDays: 7, monthlyLogs: 10000, realtimeLogs: false, minPushLevel: Infinity },
|
|
49
|
+
[1 /* SubscriptionLevel.Dev */]: { apps: 10, seats: 5, apiKeys: 5, logRetentionDays: 30, monthlyLogs: 250000, realtimeLogs: true, minPushLevel: 3 /* LogLevel.Error */ },
|
|
50
|
+
[2 /* SubscriptionLevel.Pro */]: { apps: 20, seats: 20, apiKeys: 15, logRetentionDays: 90, monthlyLogs: 2000000, realtimeLogs: true, minPushLevel: 2 /* LogLevel.Warn */ },
|
|
51
|
+
[3 /* SubscriptionLevel.Enterprise */]: { apps: Infinity, seats: Infinity, apiKeys: Infinity, logRetentionDays: Infinity, monthlyLogs: Infinity, realtimeLogs: true, minPushLevel: 0 /* LogLevel.Debug */ }
|
|
52
52
|
};
|
|
@@ -24,6 +24,17 @@ export interface LogPrivate {
|
|
|
24
24
|
nonce: string;
|
|
25
25
|
keyVersion: number;
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Encrypted note content.
|
|
29
|
+
* payload = base64(authTag + ciphertext)
|
|
30
|
+
* nonce = base64(random IV)
|
|
31
|
+
* keyVersion enables future key rotation.
|
|
32
|
+
*/
|
|
33
|
+
export interface NotePrivate {
|
|
34
|
+
payload: string;
|
|
35
|
+
nonce: string;
|
|
36
|
+
keyVersion: number;
|
|
37
|
+
}
|
|
27
38
|
/**
|
|
28
39
|
* API response shape for a stored log.
|
|
29
40
|
*/
|
|
@@ -59,7 +70,8 @@ export interface AppRecord {
|
|
|
59
70
|
updatedAt: string;
|
|
60
71
|
name: string;
|
|
61
72
|
color?: string;
|
|
62
|
-
|
|
73
|
+
imageUrl?: string;
|
|
74
|
+
teamId?: string;
|
|
63
75
|
encryptedKey: string | null;
|
|
64
76
|
}
|
|
65
77
|
/**
|
|
@@ -69,6 +81,30 @@ export interface AppRecord {
|
|
|
69
81
|
export interface AppCreatedRecord extends AppRecord {
|
|
70
82
|
apiKey?: string;
|
|
71
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* An organization that owns apps and pays for member usage.
|
|
86
|
+
* Team subscriptionLevel takes precedence over individual member levels.
|
|
87
|
+
*/
|
|
88
|
+
export interface TeamRecord {
|
|
89
|
+
id: string;
|
|
90
|
+
createdAt: string;
|
|
91
|
+
updatedAt: string;
|
|
92
|
+
name: string;
|
|
93
|
+
color?: string;
|
|
94
|
+
imageUrl?: string;
|
|
95
|
+
subscriptionLevel: SubscriptionLevel;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Membership of a user in a team.
|
|
99
|
+
*/
|
|
100
|
+
export interface TeamMemberRecord {
|
|
101
|
+
id: string;
|
|
102
|
+
createdAt: string;
|
|
103
|
+
updatedAt: string;
|
|
104
|
+
teamId: string;
|
|
105
|
+
userId: string;
|
|
106
|
+
role: 'owner' | 'admin' | 'member';
|
|
107
|
+
}
|
|
72
108
|
/**
|
|
73
109
|
* Machine authentication credential.
|
|
74
110
|
*/
|
|
@@ -80,9 +116,9 @@ export interface ApiKeyRecord {
|
|
|
80
116
|
name?: string;
|
|
81
117
|
}
|
|
82
118
|
/**
|
|
83
|
-
*
|
|
119
|
+
* External guest granted access to a specific app without being a team member.
|
|
84
120
|
*/
|
|
85
|
-
export interface
|
|
121
|
+
export interface GuestRecord {
|
|
86
122
|
id: string;
|
|
87
123
|
createdAt: string;
|
|
88
124
|
updatedAt: string;
|
|
@@ -90,6 +126,19 @@ export interface MembershipRecord {
|
|
|
90
126
|
userId: string;
|
|
91
127
|
role: 'owner' | 'admin' | 'read' | 'write';
|
|
92
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* A short user-authored note, encrypted with the app key.
|
|
131
|
+
* Visible to all members of the associated app.
|
|
132
|
+
* Query by teamId in NotesQuery to build a cross-app team feed.
|
|
133
|
+
*/
|
|
134
|
+
export interface NoteRecord {
|
|
135
|
+
id: string;
|
|
136
|
+
createdAt: string;
|
|
137
|
+
updatedAt: string;
|
|
138
|
+
appId: string;
|
|
139
|
+
userId: string;
|
|
140
|
+
private: NotePrivate;
|
|
141
|
+
}
|
|
93
142
|
export interface PushToken {
|
|
94
143
|
token: string;
|
|
95
144
|
deviceId?: string;
|
|
@@ -115,7 +164,7 @@ export interface UserRecord {
|
|
|
115
164
|
publicKey?: string;
|
|
116
165
|
appearance?: Appearance;
|
|
117
166
|
color?: string;
|
|
118
|
-
|
|
167
|
+
imageUrl?: string;
|
|
119
168
|
agreedToTermsVersion?: string;
|
|
120
169
|
notificationPreferences: NotificationPreferences;
|
|
121
170
|
pushTokens: PushToken[];
|
|
@@ -157,6 +206,27 @@ export interface AppsQuery {
|
|
|
157
206
|
from?: string;
|
|
158
207
|
to?: string;
|
|
159
208
|
}
|
|
209
|
+
/**
|
|
210
|
+
* Filter params for GET /teams.
|
|
211
|
+
*/
|
|
212
|
+
export interface TeamsQuery {
|
|
213
|
+
limit?: number;
|
|
214
|
+
cursor?: string;
|
|
215
|
+
sort?: string;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Filter params for GET /notes.
|
|
219
|
+
*/
|
|
220
|
+
export interface NotesQuery {
|
|
221
|
+
appId?: string;
|
|
222
|
+
teamId?: string;
|
|
223
|
+
userId?: string;
|
|
224
|
+
from?: string;
|
|
225
|
+
to?: string;
|
|
226
|
+
sort?: string;
|
|
227
|
+
limit?: number;
|
|
228
|
+
cursor?: string;
|
|
229
|
+
}
|
|
160
230
|
export type DeviceLinkStatus = 'pending' | 'approved' | 'denied';
|
|
161
231
|
/**
|
|
162
232
|
* Response from POST /device-links.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAE1D,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;AAEpD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IAEjB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,KAAK,EAAE,QAAQ,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IAEf,OAAO,EAAE,OAAO,CAAA;IAEhB,OAAO,CAAC,EAAE,UAAU,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAElC,OAAO,CAAC,EAAE,UAAU,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IAEjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { LogLevel, SubscriptionLevel } from '../constants';
|
|
2
|
-
import { Appearance, DeviceLinkStatus } from '../types';
|
|
2
|
+
import { Appearance, DeviceLinkStatus, TeamMemberRecord } from '../types';
|
|
3
3
|
export declare const isValidAppearance: (value: unknown) => value is Appearance;
|
|
4
4
|
/** Accepts 3- and 6-digit hex color strings (#rgb, #rrggbb). */
|
|
5
5
|
export declare const isValidColor: (value: string) => boolean;
|
|
6
6
|
export declare const isValidLogLevel: (value: unknown) => value is LogLevel;
|
|
7
7
|
export declare const isValidSubscriptionLevel: (value: unknown) => value is SubscriptionLevel;
|
|
8
8
|
export declare const isValidDeviceLinkStatus: (value: unknown) => value is DeviceLinkStatus;
|
|
9
|
+
export declare const isValidTeamMemberRole: (value: unknown) => value is TeamMemberRecord["role"];
|
|
10
|
+
/** Accepts any valid absolute URL (https://..., http://..., etc.). */
|
|
11
|
+
export declare const isValidImageUrl: (value: unknown) => value is string;
|
|
9
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,iBAAiB,EAAsB,MAAM,cAAc,CAAA;AACzF,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,iBAAiB,EAAsB,MAAM,cAAc,CAAA;AACzF,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAIzE,eAAO,MAAM,iBAAiB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,UAA4D,CAAA;AAExH,gEAAgE;AAChE,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,OAA2D,CAAA;AAExG,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,QAA6D,CAAA;AAEvH,eAAO,MAAM,wBAAwB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,iBAAyF,CAAA;AAI5J,eAAO,MAAM,uBAAuB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,gBAA0E,CAAA;AAI5I,eAAO,MAAM,qBAAqB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,gBAAgB,CAAC,MAAM,CAAgE,CAAA;AAEvJ,sEAAsE;AACtE,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAQzD,CAAA"}
|
package/dist/esm/utils/index.js
CHANGED
|
@@ -7,3 +7,17 @@ export const isValidLogLevel = (value) => logLevels.includes(value);
|
|
|
7
7
|
export const isValidSubscriptionLevel = (value) => subscriptionLevels.includes(value);
|
|
8
8
|
const deviceLinkStatuses = ['pending', 'approved', 'denied'];
|
|
9
9
|
export const isValidDeviceLinkStatus = (value) => deviceLinkStatuses.includes(value);
|
|
10
|
+
const teamMemberRoles = ['owner', 'admin', 'member'];
|
|
11
|
+
export const isValidTeamMemberRole = (value) => teamMemberRoles.includes(value);
|
|
12
|
+
/** Accepts any valid absolute URL (https://..., http://..., etc.). */
|
|
13
|
+
export const isValidImageUrl = (value) => {
|
|
14
|
+
if (typeof value !== 'string' || value.length === 0)
|
|
15
|
+
return false;
|
|
16
|
+
try {
|
|
17
|
+
new URL(value);
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
};
|
package/package.json
CHANGED