@quickmeet/node 0.1.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/LICENSE +17 -0
- package/README.md +42 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/package.json +41 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
Copyright 2026 QuickMeet contributors
|
|
6
|
+
|
|
7
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
you may not use this file except in compliance with the License.
|
|
9
|
+
You may obtain a copy of the License at
|
|
10
|
+
|
|
11
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
|
|
13
|
+
Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
See the License for the specific language governing permissions and
|
|
17
|
+
limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# @quickmeet/node
|
|
2
|
+
|
|
3
|
+
Server-to-server Node.js client for the self-hosted QuickMeet video conferencing
|
|
4
|
+
API. Use it to create meetings, update meeting policy, and issue trusted
|
|
5
|
+
participant credentials.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @quickmeet/node
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Use
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
import { QuickMeetServerClient } from '@quickmeet/node';
|
|
17
|
+
|
|
18
|
+
const quickmeet = new QuickMeetServerClient({
|
|
19
|
+
apiUrl: process.env.QUICKMEET_API_URL!,
|
|
20
|
+
apiKey: process.env.QUICKMEET_API_KEY!,
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
const created = await quickmeet.createMeeting({
|
|
24
|
+
name: 'Weekly review',
|
|
25
|
+
host: { id: currentUser.id, name: currentUser.name },
|
|
26
|
+
access: 'invite-only',
|
|
27
|
+
features: {
|
|
28
|
+
camera: true,
|
|
29
|
+
microphone: true,
|
|
30
|
+
screenShare: true,
|
|
31
|
+
chat: false,
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Keep the API key on the server. Authenticate and authorize application users
|
|
37
|
+
before calling `issueToken`; never accept participant roles directly from an
|
|
38
|
+
untrusted browser.
|
|
39
|
+
|
|
40
|
+
## License
|
|
41
|
+
|
|
42
|
+
Apache-2.0
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { CreateMeetingInput, CreateMeetingResult, JoinCredentials, MeetingRole, MeetingSummary, UpdateMeetingInput } from '@quickmeet/sdk';
|
|
2
|
+
export interface QuickMeetServerClientOptions {
|
|
3
|
+
apiUrl: string;
|
|
4
|
+
apiKey: string;
|
|
5
|
+
fetch?: typeof globalThis.fetch;
|
|
6
|
+
}
|
|
7
|
+
export interface IssueTokenInput {
|
|
8
|
+
meetingId: string;
|
|
9
|
+
identity: string;
|
|
10
|
+
name: string;
|
|
11
|
+
role?: MeetingRole;
|
|
12
|
+
}
|
|
13
|
+
export declare class QuickMeetServerClient {
|
|
14
|
+
private readonly apiUrl;
|
|
15
|
+
private readonly apiKey;
|
|
16
|
+
private readonly fetcher;
|
|
17
|
+
constructor(options: QuickMeetServerClientOptions);
|
|
18
|
+
createMeeting(input: CreateMeetingInput): Promise<CreateMeetingResult>;
|
|
19
|
+
updateMeeting(meetingId: string, input: Omit<UpdateMeetingInput, 'accessKey'>): Promise<MeetingSummary>;
|
|
20
|
+
issueToken(input: IssueTokenInput): Promise<JoinCredentials>;
|
|
21
|
+
private request;
|
|
22
|
+
}
|
|
23
|
+
export type { CreateMeetingInput, CreateMeetingResult, JoinCredentials, MeetingFeatures, MeetingRole, MeetingSummary, PersonInput, UpdateMeetingInput, } from '@quickmeet/sdk';
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,cAAc,EACd,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;gBAEtC,OAAO,EAAE,4BAA4B;IAMjD,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAOtE,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAOvG,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;YAO9C,OAAO;CAqBtB;AAED,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,WAAW,EACX,cAAc,EACd,WAAW,EACX,kBAAkB,GACnB,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export class QuickMeetServerClient {
|
|
2
|
+
apiUrl;
|
|
3
|
+
apiKey;
|
|
4
|
+
fetcher;
|
|
5
|
+
constructor(options) {
|
|
6
|
+
this.apiUrl = options.apiUrl.replace(/\/+$/, '');
|
|
7
|
+
this.apiKey = options.apiKey;
|
|
8
|
+
this.fetcher = options.fetch ?? globalThis.fetch.bind(globalThis);
|
|
9
|
+
}
|
|
10
|
+
createMeeting(input) {
|
|
11
|
+
return this.request('/v1/meetings', {
|
|
12
|
+
method: 'POST',
|
|
13
|
+
body: JSON.stringify(input),
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
updateMeeting(meetingId, input) {
|
|
17
|
+
return this.request(`/v1/meetings/${encodeURIComponent(meetingId)}`, {
|
|
18
|
+
method: 'PATCH',
|
|
19
|
+
body: JSON.stringify(input),
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
issueToken(input) {
|
|
23
|
+
return this.request(`/v1/meetings/${encodeURIComponent(input.meetingId)}/token`, {
|
|
24
|
+
method: 'POST',
|
|
25
|
+
body: JSON.stringify(input),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
async request(path, init) {
|
|
29
|
+
const response = await this.fetcher(`${this.apiUrl}${path}`, {
|
|
30
|
+
...init,
|
|
31
|
+
headers: {
|
|
32
|
+
'content-type': 'application/json',
|
|
33
|
+
'x-quickmeet-api-key': this.apiKey,
|
|
34
|
+
...init.headers,
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
const body = await response.json();
|
|
38
|
+
if (!response.ok) {
|
|
39
|
+
throw new Error(`QuickMeet request failed (${response.status}): ${'message' in body ? body.message : 'Unknown error'}`);
|
|
40
|
+
}
|
|
41
|
+
return body;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAsBA,MAAM,OAAO,qBAAqB;IACf,MAAM,CAAS;IACf,MAAM,CAAS;IACf,OAAO,CAA0B;IAElD,YAAY,OAAqC;QAC/C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpE,CAAC;IAED,aAAa,CAAC,KAAyB;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YAClC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,SAAiB,EAAE,KAA4C;QAC3E,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,kBAAkB,CAAC,SAAS,CAAC,EAAE,EAAE;YACnE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,UAAU,CAAC,KAAsB;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC/E,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,IAAY,EAAE,IAAiB;QACtD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,EAAE;YAC3D,GAAG,IAAI;YACP,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,qBAAqB,EAAE,IAAI,CAAC,MAAM;gBAClC,GAAG,IAAI,CAAC,OAAO;aAChB;SACF,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA8B,CAAC;QAE/D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,6BAA6B,QAAQ,CAAC,MAAM,MAC1C,SAAS,IAAK,IAAe,CAAC,CAAC,CAAE,IAA6B,CAAC,OAAO,CAAC,CAAC,CAAC,eAC3E,EAAE,CACH,CAAC;QACJ,CAAC;QAED,OAAO,IAAS,CAAC;IACnB,CAAC;CACF"}
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@quickmeet/node",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "QuickMeet server-to-server Node.js SDK",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"quickmeet",
|
|
8
|
+
"nodejs",
|
|
9
|
+
"video-conferencing",
|
|
10
|
+
"webrtc",
|
|
11
|
+
"livekit"
|
|
12
|
+
],
|
|
13
|
+
"type": "module",
|
|
14
|
+
"sideEffects": false,
|
|
15
|
+
"main": "./dist/index.js",
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"exports": {
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"import": "./dist/index.js"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"files": ["dist"],
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"access": "public"
|
|
26
|
+
},
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "tsc -p tsconfig.json",
|
|
29
|
+
"prepublishOnly": "npm run build",
|
|
30
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
31
|
+
},
|
|
32
|
+
"engines": {
|
|
33
|
+
"node": ">=20"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@quickmeet/sdk": "0.1.0"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"typescript": "^5.8.3"
|
|
40
|
+
}
|
|
41
|
+
}
|