zoom-api-js 0.1.2 → 0.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/.turbo/turbo-build.log +12 -20
- package/CHANGELOG.md +12 -0
- package/dist/{index.js → index.cjs} +15 -55
- package/dist/index.d.cts +27313 -0
- package/dist/index.d.mts +25459 -5346
- package/dist/index.d.ts +25459 -5346
- package/dist/index.mjs +14 -30
- package/package.json +6 -12
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/specs/meeting.json +0 -33422
- package/specs/meeting.yml +0 -17123
package/dist/index.mjs
CHANGED
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __typeError = (msg) => {
|
|
2
|
-
throw TypeError(msg);
|
|
3
|
-
};
|
|
4
|
-
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
5
|
-
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
6
|
-
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
7
|
-
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
8
|
-
|
|
9
|
-
// src/utils/lang.ts
|
|
10
1
|
function notEmpty(value) {
|
|
11
2
|
return value !== null && value !== void 0;
|
|
12
3
|
}
|
|
@@ -14,9 +5,8 @@ function compactObject(obj) {
|
|
|
14
5
|
return Object.fromEntries(Object.entries(obj).filter(([, value]) => notEmpty(value)));
|
|
15
6
|
}
|
|
16
7
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
async function fetch2({
|
|
8
|
+
const baseUrl = "https://api.zoom.us/v2";
|
|
9
|
+
async function fetch$1({
|
|
20
10
|
url,
|
|
21
11
|
method,
|
|
22
12
|
body,
|
|
@@ -69,21 +59,19 @@ async function fetch2({
|
|
|
69
59
|
throw errorObject;
|
|
70
60
|
}
|
|
71
61
|
}
|
|
72
|
-
|
|
62
|
+
const resolveUrl = (url, queryParams = {}, pathParams = {}) => {
|
|
73
63
|
let query = new URLSearchParams(queryParams).toString();
|
|
74
64
|
if (query) query = `?${query}`;
|
|
75
65
|
return url.replace(/\{\w*\}/g, (key) => pathParams[key.slice(1, -1)] ?? "") + query;
|
|
76
66
|
};
|
|
77
67
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
68
|
+
class ZoomApi {
|
|
69
|
+
#token;
|
|
70
|
+
#fetch;
|
|
81
71
|
constructor(options) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
__privateSet(this, _fetch, options.fetch || fetch);
|
|
86
|
-
if (!__privateGet(this, _fetch)) throw new Error("Fetch is required");
|
|
72
|
+
this.#token = options.token;
|
|
73
|
+
this.#fetch = options.fetch || fetch;
|
|
74
|
+
if (!this.#fetch) throw new Error("Fetch is required");
|
|
87
75
|
}
|
|
88
76
|
get auth() {
|
|
89
77
|
return {
|
|
@@ -92,7 +80,7 @@ var ZoomApi = class {
|
|
|
92
80
|
clientId,
|
|
93
81
|
clientSecret
|
|
94
82
|
}) => {
|
|
95
|
-
const response = await
|
|
83
|
+
const response = await this.#fetch("https://zoom.us/oauth/token", {
|
|
96
84
|
method: "POST",
|
|
97
85
|
body: new URLSearchParams({
|
|
98
86
|
grant_type: "refresh_token",
|
|
@@ -116,13 +104,9 @@ var ZoomApi = class {
|
|
|
116
104
|
async request(endpoint, params) {
|
|
117
105
|
const [method = "", url = ""] = endpoint.split(" ");
|
|
118
106
|
const extraParams = params || {};
|
|
119
|
-
const result = await
|
|
107
|
+
const result = await fetch$1({ ...extraParams, method, url, token: this.#token, fetchImpl: this.#fetch });
|
|
120
108
|
return result;
|
|
121
109
|
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
export {
|
|
126
|
-
ZoomApi
|
|
127
|
-
};
|
|
128
|
-
//# sourceMappingURL=index.mjs.map
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export { ZoomApi };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zoom-api-js",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Zoom API client for Node.js",
|
|
5
5
|
"author": "SferaDev",
|
|
6
6
|
"license": "ISC",
|
|
@@ -8,19 +8,19 @@
|
|
|
8
8
|
"url": "https://github.com/SferaDev/openapi-clients/issues"
|
|
9
9
|
},
|
|
10
10
|
"homepage": "https://github.com/SferaDev/openapi-clients#readme",
|
|
11
|
-
"main": "dist/index.
|
|
11
|
+
"main": "dist/index.cjs",
|
|
12
12
|
"module": "dist/index.mjs",
|
|
13
13
|
"typings": "dist/index.d.ts",
|
|
14
14
|
"exports": {
|
|
15
15
|
"./package.json": "./package.json",
|
|
16
16
|
".": {
|
|
17
17
|
"import": {
|
|
18
|
-
"types": "./dist/index.d.
|
|
18
|
+
"types": "./dist/index.d.mts",
|
|
19
19
|
"default": "./dist/index.mjs"
|
|
20
20
|
},
|
|
21
21
|
"require": {
|
|
22
|
-
"types": "./dist/index.d.
|
|
23
|
-
"default": "./dist/index.
|
|
22
|
+
"types": "./dist/index.d.cts",
|
|
23
|
+
"default": "./dist/index.cjs"
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
},
|
|
@@ -28,15 +28,9 @@
|
|
|
28
28
|
"type": "git",
|
|
29
29
|
"url": "git+https://github.com/SferaDev/openapi-clients.git"
|
|
30
30
|
},
|
|
31
|
-
"devDependencies": {
|
|
32
|
-
"case": "^1.6.3",
|
|
33
|
-
"openapi3-ts": "^4.4.0",
|
|
34
|
-
"postman-to-openapi": "^3.0.1"
|
|
35
|
-
},
|
|
36
31
|
"scripts": {
|
|
37
32
|
"tsc": "tsc --noEmit",
|
|
38
|
-
"build": "
|
|
39
|
-
"pregenerate": "pnpm dlx postman-to-openapi ./specs/meeting.json > ./specs/meeting.yml",
|
|
33
|
+
"build": "unbuild",
|
|
40
34
|
"generate": "openapi-codegen meeting"
|
|
41
35
|
}
|
|
42
36
|
}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/utils/lang.ts","../src/meeting/fetcher.ts","../src/client.ts"],"sourcesContent":["export * from \"./client\";\n\nimport type * as Schemas from \"./api/schemas\";\nimport type * as Components from \"./api/components\";\nexport { Schemas, Components };\n","function notEmpty<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\nexport function compactObject<T>(obj: Record<string, T | null | undefined>): Record<string, T> {\n return Object.fromEntries(Object.entries(obj).filter(([, value]) => notEmpty(value))) as Record<string, T>;\n}\n","import { FetchImpl } from '../utils/fetch';\nimport { compactObject } from '../utils/lang';\n\nexport type FetcherExtraProps = {\n token: string | null;\n fetchImpl: FetchImpl;\n};\n\nconst baseUrl = 'https://api.zoom.us/v2';\n\nexport type ErrorWrapper<TError> = TError | { status: 'unknown'; payload: string };\n\nexport type FetcherOptions<TBody, THeaders, TQueryParams, TPathParams> = {\n url: string;\n method: string;\n body?: TBody | undefined;\n headers?: THeaders | undefined;\n queryParams?: TQueryParams | undefined;\n pathParams?: TPathParams | undefined;\n signal?: AbortSignal | undefined;\n} & FetcherExtraProps;\n\nexport async function fetch<\n TData,\n TError,\n TBody extends {} | FormData | undefined | null,\n THeaders extends {},\n TQueryParams extends {},\n TPathParams extends {}\n>({\n url,\n method,\n body,\n headers,\n pathParams,\n queryParams,\n signal,\n token,\n fetchImpl\n}: FetcherOptions<TBody, THeaders, TQueryParams, TPathParams>): Promise<TData> {\n try {\n const requestHeaders: HeadersInit = compactObject({\n 'Content-Type': 'application/json',\n Authorization: token ? `Bearer ${token}` : undefined,\n ...headers\n });\n\n /**\n * As the fetch API is being used, when multipart/form-data is specified\n * the Content-Type header must be deleted so that the browser can set\n * the correct boundary.\n * https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects#sending_files_using_a_formdata_object\n */\n if (requestHeaders['Content-Type']?.toLowerCase().includes('multipart/form-data')) {\n delete requestHeaders['Content-Type'];\n }\n\n const payload =\n body instanceof FormData\n ? body\n : requestHeaders['Content-Type'] === 'application/json'\n ? JSON.stringify(body)\n : (body as string);\n\n const response = await fetchImpl(`${baseUrl}${resolveUrl(url, queryParams, pathParams)}`, {\n signal,\n method: method.toUpperCase(),\n body: payload,\n headers: requestHeaders\n });\n\n if (!response.ok) {\n let error: ErrorWrapper<TError>;\n try {\n error = await response.json();\n } catch (e) {\n error = {\n status: 'unknown' as const,\n payload: e instanceof Error ? `Unexpected error (${e.message})` : 'Unexpected error'\n };\n }\n\n throw error;\n }\n\n if (response.headers?.get('content-type')?.includes('json')) {\n return await response.json();\n } else {\n // if it is not a json response, assume it is a blob and cast it to TData\n return (await response.text()) as unknown as TData;\n }\n } catch (e) {\n let errorObject: Error = {\n name: 'unknown' as const,\n message: e instanceof Error ? `Network error (${e.message})` : 'Network error',\n stack: e as string\n };\n throw errorObject;\n }\n}\n\nconst resolveUrl = (url: string, queryParams: Record<string, string> = {}, pathParams: Record<string, string> = {}) => {\n let query = new URLSearchParams(queryParams).toString();\n if (query) query = `?${query}`;\n return url.replace(/\\{\\w*\\}/g, (key) => pathParams[key.slice(1, -1)] ?? '') + query;\n};\n","import { operationsByPath as meetingOperationsByPath } from './meeting/extra';\nimport { FetcherExtraProps, fetch as zoomFetch } from './meeting/fetcher';\nimport { FetchImpl } from './utils/fetch';\n\nexport interface ZoomApiOptions {\n token: string | null;\n fetch?: FetchImpl;\n}\n\ntype MeetingRequestEndpointParams<T extends keyof typeof meetingOperationsByPath> = Omit<\n Parameters<(typeof meetingOperationsByPath)[T]>[0],\n keyof FetcherExtraProps\n>;\n\ntype MeetingRequestEndpointResult<T extends keyof typeof meetingOperationsByPath> = ReturnType<(typeof meetingOperationsByPath)[T]>;\n\nexport class ZoomApi {\n #token: string | null;\n #fetch: FetchImpl;\n\n constructor(options: ZoomApiOptions) {\n this.#token = options.token;\n\n this.#fetch = options.fetch || (fetch as FetchImpl);\n if (!this.#fetch) throw new Error('Fetch is required');\n }\n\n get auth() {\n return {\n refreshToken: async ({\n refreshToken,\n clientId,\n clientSecret\n }: RefreshTokenOptions): Promise<RefreshTokenResult> => {\n const response = await this.#fetch(\"https://zoom.us/oauth/token\", {\n method: \"POST\",\n body: new URLSearchParams({\n grant_type: \"refresh_token\",\n refresh_token: refreshToken,\n client_id: clientId,\n client_secret: clientSecret\n })\n });\n\n if (!response.ok) {\n throw new Error(\"Failed to refresh Zoom token\");\n }\n\n const result = await response.json();\n\n return {\n access_token: result.access_token,\n expires_in: result.expires_in,\n refresh_token: result.refresh_token\n }\n }\n };\n }\n\n public async request<Endpoint extends keyof typeof meetingOperationsByPath>(\n endpoint: Endpoint,\n params: MeetingRequestEndpointParams<Endpoint>\n ) {\n const [method = '', url = ''] = endpoint.split(' ');\n const extraParams = (params || {}) as Record<string, unknown>;\n\n const result = await zoomFetch({ ...extraParams, method, url, token: this.#token, fetchImpl: this.#fetch });\n return result as MeetingRequestEndpointResult<Endpoint>;\n }\n}\n\ntype RefreshTokenOptions = {\n refreshToken: string;\n clientId: string;\n clientSecret: string;\n};\n\ntype RefreshTokenResult = {\n access_token: string;\n expires_in: number;\n refresh_token: string;\n}\n"],"mappings":"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","names":["fetch","fetch"]}
|
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/lang.ts","../src/meeting/fetcher.ts","../src/client.ts"],"sourcesContent":["function notEmpty<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\nexport function compactObject<T>(obj: Record<string, T | null | undefined>): Record<string, T> {\n return Object.fromEntries(Object.entries(obj).filter(([, value]) => notEmpty(value))) as Record<string, T>;\n}\n","import { FetchImpl } from '../utils/fetch';\nimport { compactObject } from '../utils/lang';\n\nexport type FetcherExtraProps = {\n token: string | null;\n fetchImpl: FetchImpl;\n};\n\nconst baseUrl = 'https://api.zoom.us/v2';\n\nexport type ErrorWrapper<TError> = TError | { status: 'unknown'; payload: string };\n\nexport type FetcherOptions<TBody, THeaders, TQueryParams, TPathParams> = {\n url: string;\n method: string;\n body?: TBody | undefined;\n headers?: THeaders | undefined;\n queryParams?: TQueryParams | undefined;\n pathParams?: TPathParams | undefined;\n signal?: AbortSignal | undefined;\n} & FetcherExtraProps;\n\nexport async function fetch<\n TData,\n TError,\n TBody extends {} | FormData | undefined | null,\n THeaders extends {},\n TQueryParams extends {},\n TPathParams extends {}\n>({\n url,\n method,\n body,\n headers,\n pathParams,\n queryParams,\n signal,\n token,\n fetchImpl\n}: FetcherOptions<TBody, THeaders, TQueryParams, TPathParams>): Promise<TData> {\n try {\n const requestHeaders: HeadersInit = compactObject({\n 'Content-Type': 'application/json',\n Authorization: token ? `Bearer ${token}` : undefined,\n ...headers\n });\n\n /**\n * As the fetch API is being used, when multipart/form-data is specified\n * the Content-Type header must be deleted so that the browser can set\n * the correct boundary.\n * https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects#sending_files_using_a_formdata_object\n */\n if (requestHeaders['Content-Type']?.toLowerCase().includes('multipart/form-data')) {\n delete requestHeaders['Content-Type'];\n }\n\n const payload =\n body instanceof FormData\n ? body\n : requestHeaders['Content-Type'] === 'application/json'\n ? JSON.stringify(body)\n : (body as string);\n\n const response = await fetchImpl(`${baseUrl}${resolveUrl(url, queryParams, pathParams)}`, {\n signal,\n method: method.toUpperCase(),\n body: payload,\n headers: requestHeaders\n });\n\n if (!response.ok) {\n let error: ErrorWrapper<TError>;\n try {\n error = await response.json();\n } catch (e) {\n error = {\n status: 'unknown' as const,\n payload: e instanceof Error ? `Unexpected error (${e.message})` : 'Unexpected error'\n };\n }\n\n throw error;\n }\n\n if (response.headers?.get('content-type')?.includes('json')) {\n return await response.json();\n } else {\n // if it is not a json response, assume it is a blob and cast it to TData\n return (await response.text()) as unknown as TData;\n }\n } catch (e) {\n let errorObject: Error = {\n name: 'unknown' as const,\n message: e instanceof Error ? `Network error (${e.message})` : 'Network error',\n stack: e as string\n };\n throw errorObject;\n }\n}\n\nconst resolveUrl = (url: string, queryParams: Record<string, string> = {}, pathParams: Record<string, string> = {}) => {\n let query = new URLSearchParams(queryParams).toString();\n if (query) query = `?${query}`;\n return url.replace(/\\{\\w*\\}/g, (key) => pathParams[key.slice(1, -1)] ?? '') + query;\n};\n","import { operationsByPath as meetingOperationsByPath } from './meeting/extra';\nimport { FetcherExtraProps, fetch as zoomFetch } from './meeting/fetcher';\nimport { FetchImpl } from './utils/fetch';\n\nexport interface ZoomApiOptions {\n token: string | null;\n fetch?: FetchImpl;\n}\n\ntype MeetingRequestEndpointParams<T extends keyof typeof meetingOperationsByPath> = Omit<\n Parameters<(typeof meetingOperationsByPath)[T]>[0],\n keyof FetcherExtraProps\n>;\n\ntype MeetingRequestEndpointResult<T extends keyof typeof meetingOperationsByPath> = ReturnType<(typeof meetingOperationsByPath)[T]>;\n\nexport class ZoomApi {\n #token: string | null;\n #fetch: FetchImpl;\n\n constructor(options: ZoomApiOptions) {\n this.#token = options.token;\n\n this.#fetch = options.fetch || (fetch as FetchImpl);\n if (!this.#fetch) throw new Error('Fetch is required');\n }\n\n get auth() {\n return {\n refreshToken: async ({\n refreshToken,\n clientId,\n clientSecret\n }: RefreshTokenOptions): Promise<RefreshTokenResult> => {\n const response = await this.#fetch(\"https://zoom.us/oauth/token\", {\n method: \"POST\",\n body: new URLSearchParams({\n grant_type: \"refresh_token\",\n refresh_token: refreshToken,\n client_id: clientId,\n client_secret: clientSecret\n })\n });\n\n if (!response.ok) {\n throw new Error(\"Failed to refresh Zoom token\");\n }\n\n const result = await response.json();\n\n return {\n access_token: result.access_token,\n expires_in: result.expires_in,\n refresh_token: result.refresh_token\n }\n }\n };\n }\n\n public async request<Endpoint extends keyof typeof meetingOperationsByPath>(\n endpoint: Endpoint,\n params: MeetingRequestEndpointParams<Endpoint>\n ) {\n const [method = '', url = ''] = endpoint.split(' ');\n const extraParams = (params || {}) as Record<string, unknown>;\n\n const result = await zoomFetch({ ...extraParams, method, url, token: this.#token, fetchImpl: this.#fetch });\n return result as MeetingRequestEndpointResult<Endpoint>;\n }\n}\n\ntype RefreshTokenOptions = {\n refreshToken: string;\n clientId: string;\n clientSecret: string;\n};\n\ntype RefreshTokenResult = {\n access_token: string;\n expires_in: number;\n refresh_token: string;\n}\n"],"mappings":"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","names":["fetch","fetch"]}
|