@proappstore/sdk 1.16.11 → 1.16.12
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/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/invites.d.ts +82 -0
- package/dist/invites.d.ts.map +1 -0
- package/dist/invites.js +94 -0
- package/dist/invites.js.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -15,12 +15,14 @@ import { LicenseApi } from './license.js';
|
|
|
15
15
|
import { Usage } from './usage.js';
|
|
16
16
|
import { Email } from './email.js';
|
|
17
17
|
import { Webhooks } from './webhooks.js';
|
|
18
|
+
import { Invites } from './invites.js';
|
|
18
19
|
import type { ProInitOptions } from './types.js';
|
|
19
20
|
export type { User, Unsubscribe } from './base-types.js';
|
|
20
21
|
export type { AuthProvider } from './auth.js';
|
|
21
22
|
export type { ConnectionState, Room, RoomMessage, RoomPeer } from './rooms.js';
|
|
22
23
|
export type { DefaultRole, RoleAssignment } from './roles.js';
|
|
23
24
|
export { DEFAULT_ROLES } from './roles.js';
|
|
25
|
+
export type { Invite, InviteListItem, CreateInviteOptions, RedeemResult } from './invites.js';
|
|
24
26
|
export type { ProInitOptions, Subscription, SubscriptionStatus, CheckoutRequest, LicenseInfo, } from './types.js';
|
|
25
27
|
export type { QueryResult, ExecuteResult, Migration, MigrateResult } from './db.js';
|
|
26
28
|
export type { NotificationPayload, SendResult } from './notifications.js';
|
|
@@ -58,6 +60,7 @@ export declare class ProAppStore {
|
|
|
58
60
|
readonly usage: Usage;
|
|
59
61
|
readonly email: Email;
|
|
60
62
|
readonly webhooks: Webhooks;
|
|
63
|
+
readonly invites: Invites;
|
|
61
64
|
constructor(opts: ProInitOptions);
|
|
62
65
|
}
|
|
63
66
|
/** Create a new ProAppStore SDK instance. Includes all free + pro features. */
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACzD,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC/E,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -19,6 +19,7 @@ import { LicenseApi } from './license.js';
|
|
|
19
19
|
import { Usage } from './usage.js';
|
|
20
20
|
import { Email } from './email.js';
|
|
21
21
|
import { Webhooks } from './webhooks.js';
|
|
22
|
+
import { Invites } from './invites.js';
|
|
22
23
|
export { DEFAULT_ROLES } from './roles.js';
|
|
23
24
|
export { TenantScope } from './tenant.js';
|
|
24
25
|
export { Usage } from './usage.js';
|
|
@@ -52,6 +53,7 @@ export class ProAppStore {
|
|
|
52
53
|
usage;
|
|
53
54
|
email;
|
|
54
55
|
webhooks;
|
|
56
|
+
invites;
|
|
55
57
|
constructor(opts) {
|
|
56
58
|
const fasApiBase = opts.fasApiBase ?? 'https://api.freeappstore.online';
|
|
57
59
|
const proApiBase = opts.proApiBase ?? 'https://api.proappstore.online';
|
|
@@ -76,6 +78,7 @@ export class ProAppStore {
|
|
|
76
78
|
this.usage = new Usage(opts.appId, proApiBase, this.auth);
|
|
77
79
|
this.email = new Email(opts.appId, proApiBase, this.auth);
|
|
78
80
|
this.webhooks = new Webhooks(opts.appId, proApiBase, this.auth);
|
|
81
|
+
this.invites = new Invites(opts.appId, proApiBase, this.auth);
|
|
79
82
|
// Auto-start telemetry unless the app opts out. Wrapped in try-catch
|
|
80
83
|
// because localStorage can throw in incognito, sandboxed iframes, or
|
|
81
84
|
// when storage quota is exceeded.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,iFAAiF;AACjF,gFAAgF;AAChF,6EAA6E;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
interface AuthLike {
|
|
2
|
+
token: string | null;
|
|
3
|
+
handleUnauthorized(): void;
|
|
4
|
+
}
|
|
5
|
+
export interface Invite {
|
|
6
|
+
id: string;
|
|
7
|
+
code: string;
|
|
8
|
+
link: string;
|
|
9
|
+
qr: string;
|
|
10
|
+
role: string;
|
|
11
|
+
group: string | null;
|
|
12
|
+
maxUses: number;
|
|
13
|
+
usedCount: number;
|
|
14
|
+
expiresAt: number;
|
|
15
|
+
}
|
|
16
|
+
export interface InviteListItem extends Omit<Invite, 'qr'> {
|
|
17
|
+
metadata: Record<string, unknown> | null;
|
|
18
|
+
expired: boolean;
|
|
19
|
+
exhausted: boolean;
|
|
20
|
+
createdBy: string;
|
|
21
|
+
createdAt: number;
|
|
22
|
+
}
|
|
23
|
+
export interface CreateInviteOptions {
|
|
24
|
+
/** Role to assign on redeem. Default: 'member'. */
|
|
25
|
+
role?: string;
|
|
26
|
+
/** Optional group/org/team scope. */
|
|
27
|
+
group?: string;
|
|
28
|
+
/** Optional app-specific data passed through on redeem. */
|
|
29
|
+
metadata?: Record<string, unknown>;
|
|
30
|
+
/** Max redemptions. Default: 1. */
|
|
31
|
+
uses?: number;
|
|
32
|
+
/** TTL string (e.g. '30m', '24h', '7d'). Default: '7d'. */
|
|
33
|
+
expiresIn?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface RedeemResult {
|
|
36
|
+
ok: boolean;
|
|
37
|
+
role: string;
|
|
38
|
+
group: string | null;
|
|
39
|
+
metadata: Record<string, unknown> | null;
|
|
40
|
+
appId: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Invite links — platform-level join codes with link + QR.
|
|
44
|
+
*
|
|
45
|
+
* Three entry points, one code:
|
|
46
|
+
* - **Code** — say out loud, write on whiteboard
|
|
47
|
+
* - **Link** — send via email, WhatsApp, Slack, SMS
|
|
48
|
+
* - **QR code** — display on projector, print on handout
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* const invite = await app.invites.create({
|
|
52
|
+
* role: 'student',
|
|
53
|
+
* uses: 30,
|
|
54
|
+
* expiresIn: '7d',
|
|
55
|
+
* })
|
|
56
|
+
* invite.code // "HKWX3P"
|
|
57
|
+
* invite.link // "https://my-app.proappstore.online/join/HKWX3P"
|
|
58
|
+
* invite.qr // SVG string
|
|
59
|
+
*
|
|
60
|
+
* const result = await app.invites.redeem('HKWX3P')
|
|
61
|
+
* // → { ok: true, role: 'student', group: null, metadata: null }
|
|
62
|
+
*/
|
|
63
|
+
export declare class Invites {
|
|
64
|
+
private readonly appId;
|
|
65
|
+
private readonly apiBase;
|
|
66
|
+
private readonly auth;
|
|
67
|
+
constructor(appId: string, apiBase: string, auth: AuthLike);
|
|
68
|
+
/** Create an invite link. Caller must have developer-level app access. */
|
|
69
|
+
create(opts?: CreateInviteOptions): Promise<Invite>;
|
|
70
|
+
/** List all invites for this app. Caller must have developer-level app access. */
|
|
71
|
+
list(): Promise<InviteListItem[]>;
|
|
72
|
+
/** Revoke an invite. Caller must have developer-level app access. */
|
|
73
|
+
revoke(inviteId: string): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Redeem an invite code. Any authenticated user.
|
|
76
|
+
* Assigns the specified role and returns the invite details.
|
|
77
|
+
*/
|
|
78
|
+
redeem(code: string): Promise<RedeemResult>;
|
|
79
|
+
private post;
|
|
80
|
+
}
|
|
81
|
+
export {};
|
|
82
|
+
//# sourceMappingURL=invites.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invites.d.ts","sourceRoot":"","sources":["../src/invites.ts"],"names":[],"mappings":"AAAA,UAAU,QAAQ;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,kBAAkB,IAAI,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;IACxD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,OAAO;IAEhB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAFJ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,QAAQ;IAGjC,0EAA0E;IACpE,MAAM,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC;IAK7D,kFAAkF;IAC5E,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAavC,qEAAqE;IAC/D,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc7C;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YAKnC,IAAI;CAenB"}
|
package/dist/invites.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Invite links — platform-level join codes with link + QR.
|
|
3
|
+
*
|
|
4
|
+
* Three entry points, one code:
|
|
5
|
+
* - **Code** — say out loud, write on whiteboard
|
|
6
|
+
* - **Link** — send via email, WhatsApp, Slack, SMS
|
|
7
|
+
* - **QR code** — display on projector, print on handout
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const invite = await app.invites.create({
|
|
11
|
+
* role: 'student',
|
|
12
|
+
* uses: 30,
|
|
13
|
+
* expiresIn: '7d',
|
|
14
|
+
* })
|
|
15
|
+
* invite.code // "HKWX3P"
|
|
16
|
+
* invite.link // "https://my-app.proappstore.online/join/HKWX3P"
|
|
17
|
+
* invite.qr // SVG string
|
|
18
|
+
*
|
|
19
|
+
* const result = await app.invites.redeem('HKWX3P')
|
|
20
|
+
* // → { ok: true, role: 'student', group: null, metadata: null }
|
|
21
|
+
*/
|
|
22
|
+
export class Invites {
|
|
23
|
+
appId;
|
|
24
|
+
apiBase;
|
|
25
|
+
auth;
|
|
26
|
+
constructor(appId, apiBase, auth) {
|
|
27
|
+
this.appId = appId;
|
|
28
|
+
this.apiBase = apiBase;
|
|
29
|
+
this.auth = auth;
|
|
30
|
+
}
|
|
31
|
+
/** Create an invite link. Caller must have developer-level app access. */
|
|
32
|
+
async create(opts = {}) {
|
|
33
|
+
const res = await this.post(`/v1/apps/${encodeURIComponent(this.appId)}/invites`, opts);
|
|
34
|
+
return res;
|
|
35
|
+
}
|
|
36
|
+
/** List all invites for this app. Caller must have developer-level app access. */
|
|
37
|
+
async list() {
|
|
38
|
+
const token = this.auth.token;
|
|
39
|
+
if (!token)
|
|
40
|
+
throw new Error('Not signed in.');
|
|
41
|
+
const res = await fetch(`${this.apiBase}/v1/apps/${encodeURIComponent(this.appId)}/invites`, { headers: { Authorization: `Bearer ${token}` } });
|
|
42
|
+
if (res.status === 401) {
|
|
43
|
+
this.auth.handleUnauthorized();
|
|
44
|
+
throw new Error('Not signed in.');
|
|
45
|
+
}
|
|
46
|
+
if (!res.ok)
|
|
47
|
+
throw new Error(`invites.list failed: ${res.status}`);
|
|
48
|
+
const data = (await res.json());
|
|
49
|
+
return data.invites;
|
|
50
|
+
}
|
|
51
|
+
/** Revoke an invite. Caller must have developer-level app access. */
|
|
52
|
+
async revoke(inviteId) {
|
|
53
|
+
const token = this.auth.token;
|
|
54
|
+
if (!token)
|
|
55
|
+
throw new Error('Not signed in.');
|
|
56
|
+
const res = await fetch(`${this.apiBase}/v1/apps/${encodeURIComponent(this.appId)}/invites/${encodeURIComponent(inviteId)}`, { method: 'DELETE', headers: { Authorization: `Bearer ${token}` } });
|
|
57
|
+
if (res.status === 401) {
|
|
58
|
+
this.auth.handleUnauthorized();
|
|
59
|
+
throw new Error('Not signed in.');
|
|
60
|
+
}
|
|
61
|
+
if (!res.ok) {
|
|
62
|
+
const text = await res.text().catch(() => '');
|
|
63
|
+
throw new Error(`invites.revoke failed: ${res.status} ${text}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Redeem an invite code. Any authenticated user.
|
|
68
|
+
* Assigns the specified role and returns the invite details.
|
|
69
|
+
*/
|
|
70
|
+
async redeem(code) {
|
|
71
|
+
const res = await this.post(`/v1/invites/${encodeURIComponent(code)}/redeem`, {});
|
|
72
|
+
return res;
|
|
73
|
+
}
|
|
74
|
+
async post(path, body) {
|
|
75
|
+
const token = this.auth.token;
|
|
76
|
+
if (!token)
|
|
77
|
+
throw new Error('Not signed in.');
|
|
78
|
+
const res = await fetch(this.apiBase + path, {
|
|
79
|
+
method: 'POST',
|
|
80
|
+
headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
|
|
81
|
+
body: JSON.stringify(body),
|
|
82
|
+
});
|
|
83
|
+
if (res.status === 401) {
|
|
84
|
+
this.auth.handleUnauthorized();
|
|
85
|
+
throw new Error('Not signed in.');
|
|
86
|
+
}
|
|
87
|
+
if (!res.ok) {
|
|
88
|
+
const text = await res.text().catch(() => '');
|
|
89
|
+
throw new Error(`${path} failed: ${res.status} ${text}`);
|
|
90
|
+
}
|
|
91
|
+
return res.json();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=invites.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invites.js","sourceRoot":"","sources":["../src/invites.ts"],"names":[],"mappings":"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"}
|