@dereekb/zoom 12.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 +21 -0
- package/README.md +6 -0
- package/index.cjs.d.ts +1 -0
- package/index.cjs.js +4346 -0
- package/index.esm.d.ts +1 -0
- package/index.esm.js +4293 -0
- package/nestjs/CHANGELOG.md +183 -0
- package/nestjs/README.md +11 -0
- package/nestjs/package.json +7 -0
- package/nestjs/src/index.d.ts +1 -0
- package/nestjs/src/index.js +5 -0
- package/nestjs/src/index.js.map +1 -0
- package/nestjs/src/lib/index.d.ts +2 -0
- package/nestjs/src/lib/index.js +6 -0
- package/nestjs/src/lib/index.js.map +1 -0
- package/nestjs/src/lib/oauth/index.d.ts +3 -0
- package/nestjs/src/lib/oauth/index.js +7 -0
- package/nestjs/src/lib/oauth/index.js.map +1 -0
- package/nestjs/src/lib/oauth/oauth.api.d.ts +12 -0
- package/nestjs/src/lib/oauth/oauth.api.js +41 -0
- package/nestjs/src/lib/oauth/oauth.api.js.map +1 -0
- package/nestjs/src/lib/oauth/oauth.config.d.ts +14 -0
- package/nestjs/src/lib/oauth/oauth.config.js +50 -0
- package/nestjs/src/lib/oauth/oauth.config.js.map +1 -0
- package/nestjs/src/lib/oauth/oauth.module.d.ts +29 -0
- package/nestjs/src/lib/oauth/oauth.module.js +36 -0
- package/nestjs/src/lib/oauth/oauth.module.js.map +1 -0
- package/nestjs/src/lib/oauth/oauth.service.d.ts +55 -0
- package/nestjs/src/lib/oauth/oauth.service.js +226 -0
- package/nestjs/src/lib/oauth/oauth.service.js.map +1 -0
- package/nestjs/src/lib/zoom/index.d.ts +3 -0
- package/nestjs/src/lib/zoom/index.js +7 -0
- package/nestjs/src/lib/zoom/index.js.map +1 -0
- package/nestjs/src/lib/zoom/zoom.api.d.ts +21 -0
- package/nestjs/src/lib/zoom/zoom.api.js +65 -0
- package/nestjs/src/lib/zoom/zoom.api.js.map +1 -0
- package/nestjs/src/lib/zoom/zoom.config.d.ts +10 -0
- package/nestjs/src/lib/zoom/zoom.config.js +15 -0
- package/nestjs/src/lib/zoom/zoom.config.js.map +1 -0
- package/nestjs/src/lib/zoom/zoom.module.d.ts +22 -0
- package/nestjs/src/lib/zoom/zoom.module.js +40 -0
- package/nestjs/src/lib/zoom/zoom.module.js.map +1 -0
- package/package.json +31 -0
- package/src/index.d.ts +1 -0
- package/src/lib/index.d.ts +7 -0
- package/src/lib/oauth/index.d.ts +5 -0
- package/src/lib/oauth/oauth.api.d.ts +39 -0
- package/src/lib/oauth/oauth.config.d.ts +44 -0
- package/src/lib/oauth/oauth.d.ts +71 -0
- package/src/lib/oauth/oauth.error.api.d.ts +30 -0
- package/src/lib/oauth/oauth.factory.d.ts +34 -0
- package/src/lib/zoom/index.d.ts +7 -0
- package/src/lib/zoom/zoom.api.meeting.d.ts +144 -0
- package/src/lib/zoom/zoom.api.meeting.type.d.ts +297 -0
- package/src/lib/zoom/zoom.api.user.d.ts +32 -0
- package/src/lib/zoom/zoom.api.user.type.d.ts +287 -0
- package/src/lib/zoom/zoom.config.d.ts +69 -0
- package/src/lib/zoom/zoom.error.api.d.ts +6 -0
- package/src/lib/zoom/zoom.factory.d.ts +23 -0
- package/src/lib/zoom.api.page.d.ts +73 -0
- package/src/lib/zoom.config.d.ts +39 -0
- package/src/lib/zoom.error.api.d.ts +145 -0
- package/src/lib/zoom.limit.d.ts +37 -0
- package/src/lib/zoom.type.d.ts +12 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_FILE_ZOOM_ACCOUNTS_ACCESS_TOKEN_CACHE_SERVICE_PATH = exports.ZoomOAuthAccessTokenCacheService = void 0;
|
|
4
|
+
exports.logMergeZoomOAuthAccessTokenCacheServiceErrorFunction = logMergeZoomOAuthAccessTokenCacheServiceErrorFunction;
|
|
5
|
+
exports.mergeZoomOAuthAccessTokenCacheServices = mergeZoomOAuthAccessTokenCacheServices;
|
|
6
|
+
exports.memoryZoomOAuthAccessTokenCacheService = memoryZoomOAuthAccessTokenCacheService;
|
|
7
|
+
exports.fileZoomOAuthAccessTokenCacheService = fileZoomOAuthAccessTokenCacheService;
|
|
8
|
+
const tslib_1 = require("tslib");
|
|
9
|
+
const common_1 = require("@nestjs/common");
|
|
10
|
+
const util_1 = require("@dereekb/util");
|
|
11
|
+
const path_1 = require("path");
|
|
12
|
+
const fs_1 = require("fs");
|
|
13
|
+
/**
|
|
14
|
+
* Service used for retrieving ZoomAccessTokenCache for Zoom services.
|
|
15
|
+
*/
|
|
16
|
+
let ZoomOAuthAccessTokenCacheService = class ZoomOAuthAccessTokenCacheService {
|
|
17
|
+
};
|
|
18
|
+
exports.ZoomOAuthAccessTokenCacheService = ZoomOAuthAccessTokenCacheService;
|
|
19
|
+
exports.ZoomOAuthAccessTokenCacheService = ZoomOAuthAccessTokenCacheService = tslib_1.__decorate([
|
|
20
|
+
(0, common_1.Injectable)()
|
|
21
|
+
], ZoomOAuthAccessTokenCacheService);
|
|
22
|
+
function logMergeZoomOAuthAccessTokenCacheServiceErrorFunction(failedUpdates) {
|
|
23
|
+
console.warn(`mergeZoomOAuthAccessTokenCacheServices(): failed updating ${failedUpdates.length} caches.`);
|
|
24
|
+
failedUpdates.forEach(([x, e], i) => {
|
|
25
|
+
console.warn(`Cache update failure ${i + 1}: - ${e}`);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Merges the input services in order to use some as a backup source.
|
|
30
|
+
*
|
|
31
|
+
* If once source fails retrieval, the next will be tried.
|
|
32
|
+
*
|
|
33
|
+
* When updating a cached token, it will update the token across all services.
|
|
34
|
+
*
|
|
35
|
+
* @param servicesToMerge Must include atleast one service. Empty arrays will throw an error.
|
|
36
|
+
*/
|
|
37
|
+
function mergeZoomOAuthAccessTokenCacheServices(inputServicesToMerge, logError) {
|
|
38
|
+
const allServices = [...inputServicesToMerge];
|
|
39
|
+
const logErrorFunction = typeof logError === 'function' ? logError : logError !== false ? logMergeZoomOAuthAccessTokenCacheServiceErrorFunction : undefined;
|
|
40
|
+
if (allServices.length === 0) {
|
|
41
|
+
throw new Error('mergeZoomOAuthAccessTokenCacheServices() input cannot be empty.');
|
|
42
|
+
}
|
|
43
|
+
const loadZoomAccessTokenCache = (accessCachesForServices) => {
|
|
44
|
+
const loadCachedTokenFromFirstService = (0, util_1.tryWithPromiseFactoriesFunction)({
|
|
45
|
+
promiseFactories: accessCachesForServices.map((x) => () => x
|
|
46
|
+
.loadCachedToken()
|
|
47
|
+
.catch(() => null)
|
|
48
|
+
.then((x) => {
|
|
49
|
+
let result = undefined;
|
|
50
|
+
if (x && !(0, util_1.isPast)(x.expiresAt)) {
|
|
51
|
+
result = x; // only return from cache if it is not expired
|
|
52
|
+
}
|
|
53
|
+
return result;
|
|
54
|
+
})),
|
|
55
|
+
successOnMaybe: false,
|
|
56
|
+
throwErrors: false
|
|
57
|
+
});
|
|
58
|
+
const cacheForService = {
|
|
59
|
+
loadCachedToken: function () {
|
|
60
|
+
return loadCachedTokenFromFirstService();
|
|
61
|
+
},
|
|
62
|
+
updateCachedToken: async function (accessToken) {
|
|
63
|
+
return Promise.allSettled(accessCachesForServices.map((x) => x
|
|
64
|
+
.updateCachedToken(accessToken)
|
|
65
|
+
.then(() => null)
|
|
66
|
+
.catch((e) => {
|
|
67
|
+
return [x, e];
|
|
68
|
+
}))).then((x) => {
|
|
69
|
+
// only find the failures if we're logging
|
|
70
|
+
if (logErrorFunction != null) {
|
|
71
|
+
const failedUpdates = (0, util_1.filterMaybeArrayValues)(x.map((y) => y.value));
|
|
72
|
+
if (failedUpdates.length) {
|
|
73
|
+
logErrorFunction(failedUpdates);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
return cacheForService;
|
|
80
|
+
};
|
|
81
|
+
const allServiceAccessTokenCaches = allServices.map((x) => x.loadZoomAccessTokenCache());
|
|
82
|
+
const allServicesWithCacheForRefreshToken = allServices.filter((x) => x.cacheForRefreshToken != null);
|
|
83
|
+
const cacheForRefreshToken = allServiceAccessTokenCaches.length > 0
|
|
84
|
+
? (refreshToken) => {
|
|
85
|
+
const allCaches = allServicesWithCacheForRefreshToken.map((x) => x.cacheForRefreshToken(refreshToken));
|
|
86
|
+
return loadZoomAccessTokenCache(allCaches);
|
|
87
|
+
}
|
|
88
|
+
: undefined;
|
|
89
|
+
const service = {
|
|
90
|
+
loadZoomAccessTokenCache: () => loadZoomAccessTokenCache(allServiceAccessTokenCaches),
|
|
91
|
+
cacheForRefreshToken
|
|
92
|
+
};
|
|
93
|
+
return service;
|
|
94
|
+
}
|
|
95
|
+
// MARK: Memory Access Token Cache
|
|
96
|
+
/**
|
|
97
|
+
* Creates a ZoomOAuthAccessTokenCacheService that uses in-memory storage.
|
|
98
|
+
*
|
|
99
|
+
* @returns
|
|
100
|
+
*/
|
|
101
|
+
function memoryZoomOAuthAccessTokenCacheService(existingToken) {
|
|
102
|
+
let token = existingToken;
|
|
103
|
+
function loadZoomAccessTokenCache() {
|
|
104
|
+
const accessTokenCache = {
|
|
105
|
+
loadCachedToken: async function () {
|
|
106
|
+
console.log('retrieving access token from memory: ', { token });
|
|
107
|
+
return token;
|
|
108
|
+
},
|
|
109
|
+
updateCachedToken: async function (accessToken) {
|
|
110
|
+
token = accessToken;
|
|
111
|
+
console.log('updating access token in memory: ', { accessToken });
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
return accessTokenCache;
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
loadZoomAccessTokenCache,
|
|
118
|
+
cacheForRefreshToken: () => loadZoomAccessTokenCache()
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
// MARK: File System Access Token Cache
|
|
122
|
+
exports.DEFAULT_FILE_ZOOM_ACCOUNTS_ACCESS_TOKEN_CACHE_SERVICE_PATH = '.tmp/zoom-access-tokens.json';
|
|
123
|
+
/**
|
|
124
|
+
* Creates a ZoomOAuthAccessTokenCacheService that reads and writes the access token to the file system.
|
|
125
|
+
*
|
|
126
|
+
* Useful for testing.
|
|
127
|
+
*
|
|
128
|
+
* @returns
|
|
129
|
+
*/
|
|
130
|
+
function fileZoomOAuthAccessTokenCacheService(filename = exports.DEFAULT_FILE_ZOOM_ACCOUNTS_ACCESS_TOKEN_CACHE_SERVICE_PATH, useMemoryCache = true) {
|
|
131
|
+
let loadedToken = null;
|
|
132
|
+
async function loadTokenFile() {
|
|
133
|
+
let token = undefined;
|
|
134
|
+
if (!loadedToken) {
|
|
135
|
+
token = (await readTokenFile()) ?? {};
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
token = loadedToken;
|
|
139
|
+
}
|
|
140
|
+
return token;
|
|
141
|
+
}
|
|
142
|
+
function readTokenFile() {
|
|
143
|
+
return new Promise((resolve) => {
|
|
144
|
+
(0, fs_1.mkdirSync)((0, path_1.dirname)(filename), { recursive: true }); // make the directory first
|
|
145
|
+
(0, fs_1.readFile)(filename, {}, (x, data) => {
|
|
146
|
+
let result = undefined;
|
|
147
|
+
if (!x) {
|
|
148
|
+
try {
|
|
149
|
+
result = JSON.parse(data.toString());
|
|
150
|
+
if (result?.token) {
|
|
151
|
+
result.token.expiresAt = new Date(result.token.expiresAt);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
catch (e) {
|
|
155
|
+
console.error('Failed reading token file: ', e);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
resolve(result);
|
|
159
|
+
});
|
|
160
|
+
}).then((x) => {
|
|
161
|
+
// update loaded tokens
|
|
162
|
+
if (useMemoryCache) {
|
|
163
|
+
loadedToken = {
|
|
164
|
+
...loadedToken,
|
|
165
|
+
...x
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
return x;
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
async function writeTokenFile(tokens) {
|
|
172
|
+
return new Promise((resolve, reject) => {
|
|
173
|
+
(0, fs_1.writeFile)(filename, JSON.stringify(tokens), {}, (x) => {
|
|
174
|
+
if (!x) {
|
|
175
|
+
resolve();
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
reject(x);
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
async function deleteTokenFile() {
|
|
184
|
+
return new Promise((resolve, reject) => {
|
|
185
|
+
(0, fs_1.rm)(filename, (x) => {
|
|
186
|
+
if (!x) {
|
|
187
|
+
resolve();
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
reject(x);
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
function loadZoomAccessTokenCache() {
|
|
196
|
+
const accessTokenCache = {
|
|
197
|
+
loadCachedToken: async function () {
|
|
198
|
+
const tokens = await loadTokenFile();
|
|
199
|
+
const token = tokens.token;
|
|
200
|
+
// console.log('retrieving access token from file: ', { token });
|
|
201
|
+
return token;
|
|
202
|
+
},
|
|
203
|
+
updateCachedToken: async function (accessToken) {
|
|
204
|
+
const tokenFile = await loadTokenFile();
|
|
205
|
+
if (tokenFile) {
|
|
206
|
+
tokenFile.token = accessToken;
|
|
207
|
+
}
|
|
208
|
+
// console.log('updating access token in file: ', { accessToken });
|
|
209
|
+
try {
|
|
210
|
+
await writeTokenFile(tokenFile);
|
|
211
|
+
}
|
|
212
|
+
catch (e) {
|
|
213
|
+
console.error('Failed updating access token in file: ', e);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
return accessTokenCache;
|
|
218
|
+
}
|
|
219
|
+
return {
|
|
220
|
+
loadZoomAccessTokenCache,
|
|
221
|
+
readTokenFile,
|
|
222
|
+
writeTokenFile,
|
|
223
|
+
deleteTokenFile
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=oauth.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.service.js","sourceRoot":"","sources":["../../../../../../../packages/zoom/nestjs/src/lib/oauth/oauth.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./zoom.api"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./zoom.config"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./zoom.module"), exports);
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/zoom/nestjs/src/lib/zoom/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B;AAC3B,wDAA8B;AAC9B,wDAA8B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ZoomServiceConfig } from './zoom.config';
|
|
2
|
+
import { Zoom, ZoomServerContext } from '@dereekb/zoom';
|
|
3
|
+
import { ZoomOAuthApi } from '../oauth';
|
|
4
|
+
export declare class ZoomApi {
|
|
5
|
+
readonly config: ZoomServiceConfig;
|
|
6
|
+
readonly zoomOAuthApi: ZoomOAuthApi;
|
|
7
|
+
readonly zoom: Zoom;
|
|
8
|
+
get zoomContext(): ZoomServerContext;
|
|
9
|
+
get zoomRateLimiter(): import("dist/packages/util/src").ResetPeriodPromiseRateLimiter;
|
|
10
|
+
constructor(config: ZoomServiceConfig, zoomOAuthApi: ZoomOAuthApi);
|
|
11
|
+
get getUser(): import("@dereekb/zoom").GetUserFunction;
|
|
12
|
+
get listUsers(): import("@dereekb/zoom").ListUsersFunction;
|
|
13
|
+
get listUsersPageFactory(): import("@dereekb/zoom").ListUsersPageFactory;
|
|
14
|
+
get listMeetingsForUser(): import("@dereekb/zoom").ListMeetingsForUserFunction;
|
|
15
|
+
get listMeetingsForUserPageFactory(): import("@dereekb/zoom").ListMeetingsForUserPageFactory;
|
|
16
|
+
get createMeetingForUser(): (input: import("@dereekb/zoom").CreateMeetingForUserInput) => Promise<import("@dereekb/zoom").CreateMeetingForUserResponse>;
|
|
17
|
+
get deleteMeeting(): import("@dereekb/zoom").DeleteMeetingFunction;
|
|
18
|
+
}
|
|
19
|
+
export declare class ZoomApiUserContext {
|
|
20
|
+
constructor(refreshToken: string);
|
|
21
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ZoomApiUserContext = exports.ZoomApi = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const zoom_config_1 = require("./zoom.config");
|
|
7
|
+
const zoom_1 = require("@dereekb/zoom");
|
|
8
|
+
const oauth_1 = require("../oauth");
|
|
9
|
+
let ZoomApi = class ZoomApi {
|
|
10
|
+
config;
|
|
11
|
+
zoomOAuthApi;
|
|
12
|
+
zoom;
|
|
13
|
+
get zoomContext() {
|
|
14
|
+
return this.zoom.zoomServerContext;
|
|
15
|
+
}
|
|
16
|
+
get zoomRateLimiter() {
|
|
17
|
+
return this.zoom.zoomServerContext.zoomRateLimiter;
|
|
18
|
+
}
|
|
19
|
+
constructor(config, zoomOAuthApi) {
|
|
20
|
+
this.config = config;
|
|
21
|
+
this.zoomOAuthApi = zoomOAuthApi;
|
|
22
|
+
this.zoom = (0, zoom_1.zoomFactory)({
|
|
23
|
+
...config.factoryConfig,
|
|
24
|
+
oauthContext: zoomOAuthApi.oauthContext
|
|
25
|
+
})(config.zoom);
|
|
26
|
+
}
|
|
27
|
+
// MARK: Users
|
|
28
|
+
get getUser() {
|
|
29
|
+
return (0, zoom_1.getUser)(this.zoomContext);
|
|
30
|
+
}
|
|
31
|
+
get listUsers() {
|
|
32
|
+
return (0, zoom_1.listUsers)(this.zoomContext);
|
|
33
|
+
}
|
|
34
|
+
get listUsersPageFactory() {
|
|
35
|
+
return (0, zoom_1.listUsersPageFactory)(this.zoomContext);
|
|
36
|
+
}
|
|
37
|
+
// MARK: Meetings
|
|
38
|
+
get listMeetingsForUser() {
|
|
39
|
+
return (0, zoom_1.listMeetingsForUser)(this.zoomContext);
|
|
40
|
+
}
|
|
41
|
+
get listMeetingsForUserPageFactory() {
|
|
42
|
+
return (0, zoom_1.listMeetingsForUserPageFactory)(this.zoomContext);
|
|
43
|
+
}
|
|
44
|
+
get createMeetingForUser() {
|
|
45
|
+
return (0, zoom_1.createMeetingForUser)(this.zoomContext);
|
|
46
|
+
}
|
|
47
|
+
get deleteMeeting() {
|
|
48
|
+
return (0, zoom_1.deleteMeeting)(this.zoomContext);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
exports.ZoomApi = ZoomApi;
|
|
52
|
+
exports.ZoomApi = ZoomApi = tslib_1.__decorate([
|
|
53
|
+
(0, common_1.Injectable)(),
|
|
54
|
+
tslib_1.__param(0, (0, common_1.Inject)(zoom_config_1.ZoomServiceConfig)),
|
|
55
|
+
tslib_1.__param(1, (0, common_1.Inject)(oauth_1.ZoomOAuthApi)),
|
|
56
|
+
tslib_1.__metadata("design:paramtypes", [zoom_config_1.ZoomServiceConfig,
|
|
57
|
+
oauth_1.ZoomOAuthApi])
|
|
58
|
+
], ZoomApi);
|
|
59
|
+
class ZoomApiUserContext {
|
|
60
|
+
constructor(refreshToken) {
|
|
61
|
+
// TODO: ...
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.ZoomApiUserContext = ZoomApiUserContext;
|
|
65
|
+
//# sourceMappingURL=zoom.api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zoom.api.js","sourceRoot":"","sources":["../../../../../../../packages/zoom/nestjs/src/lib/zoom/zoom.api.ts"],"names":[],"mappings":";;;;AAAA,2CAAoD;AACpD,+CAAkD;AAClD,wCAAyM;AACzM,oCAAwC;AAGjC,IAAM,OAAO,GAAb,MAAM,OAAO;IAYoB;IACL;IAZxB,IAAI,CAAO;IAEpB,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACrC,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC;IACrD,CAAC;IAED,YACsC,MAAyB,EAC9B,YAA0B;QADrB,WAAM,GAAN,MAAM,CAAmB;QAC9B,iBAAY,GAAZ,YAAY,CAAc;QAEzD,IAAI,CAAC,IAAI,GAAG,IAAA,kBAAW,EAAC;YACtB,GAAG,MAAM,CAAC,aAAa;YACvB,YAAY,EAAE,YAAY,CAAC,YAAY;SACxC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAED,cAAc;IACd,IAAI,OAAO;QACT,OAAO,IAAA,cAAO,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAA,gBAAS,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,oBAAoB;QACtB,OAAO,IAAA,2BAAoB,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,iBAAiB;IACjB,IAAI,mBAAmB;QACrB,OAAO,IAAA,0BAAmB,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,8BAA8B;QAChC,OAAO,IAAA,qCAA8B,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,oBAAoB;QACtB,OAAO,IAAA,2BAAoB,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAA,oBAAa,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;CACF,CAAA;AAlDY,0BAAO;kBAAP,OAAO;IADnB,IAAA,mBAAU,GAAE;IAaR,mBAAA,IAAA,eAAM,EAAC,+BAAiB,CAAC,CAAA;IACzB,mBAAA,IAAA,eAAM,EAAC,oBAAY,CAAC,CAAA;6CADuB,+BAAiB;QAChB,oBAAY;GAbhD,OAAO,CAkDnB;AAED,MAAa,kBAAkB;IAC7B,YAAY,YAAoB;QAC9B,YAAY;IACd,CAAC;CACF;AAJD,gDAIC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ZoomConfig, ZoomFactoryConfig } from '@dereekb/zoom';
|
|
2
|
+
export type ZoomServiceApiConfig = ZoomConfig & {};
|
|
3
|
+
/**
|
|
4
|
+
* Configuration for ZoomService
|
|
5
|
+
*/
|
|
6
|
+
export declare abstract class ZoomServiceConfig {
|
|
7
|
+
readonly zoom: ZoomServiceApiConfig;
|
|
8
|
+
readonly factoryConfig?: ZoomFactoryConfig;
|
|
9
|
+
static assertValidConfig(config: ZoomServiceConfig): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ZoomServiceConfig = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Configuration for ZoomService
|
|
6
|
+
*/
|
|
7
|
+
class ZoomServiceConfig {
|
|
8
|
+
zoom;
|
|
9
|
+
factoryConfig;
|
|
10
|
+
static assertValidConfig(config) {
|
|
11
|
+
// TODO?
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.ZoomServiceConfig = ZoomServiceConfig;
|
|
15
|
+
//# sourceMappingURL=zoom.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zoom.config.js","sourceRoot":"","sources":["../../../../../../../packages/zoom/nestjs/src/lib/zoom/zoom.config.ts"],"names":[],"mappings":";;;AAIA;;GAEG;AACH,MAAsB,iBAAiB;IAC5B,IAAI,CAAwB;IAC5B,aAAa,CAAqB;IAE3C,MAAM,CAAC,iBAAiB,CAAC,MAAyB;QAChD,QAAQ;IACV,CAAC;CACF;AAPD,8CAOC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ModuleMetadata } from '@nestjs/common';
|
|
2
|
+
import { ConfigService } from '@nestjs/config';
|
|
3
|
+
import { ZoomServiceConfig } from './zoom.config';
|
|
4
|
+
import { type Maybe } from '@dereekb/util';
|
|
5
|
+
export declare function zoomServiceConfigFactory(configService: ConfigService): ZoomServiceConfig;
|
|
6
|
+
export interface ProvideAppZoomMetadataConfig extends Pick<ModuleMetadata, 'imports' | 'exports' | 'providers'> {
|
|
7
|
+
/**
|
|
8
|
+
* The ZoomModule requires the following dependencies in order to initialze properly:
|
|
9
|
+
* - ZoomOAuthApi
|
|
10
|
+
*
|
|
11
|
+
* This module declaration makes it easier to import a module that exports those depenendencies.
|
|
12
|
+
*/
|
|
13
|
+
readonly dependencyModule?: Maybe<Required<ModuleMetadata>['imports']['0']>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Convenience function used to generate ModuleMetadata for an app's ZoomModule.
|
|
17
|
+
*
|
|
18
|
+
* @param provide
|
|
19
|
+
* @param useFactory
|
|
20
|
+
* @returns
|
|
21
|
+
*/
|
|
22
|
+
export declare function appZoomModuleMetadata(config: ProvideAppZoomMetadataConfig): ModuleMetadata;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.zoomServiceConfigFactory = zoomServiceConfigFactory;
|
|
4
|
+
exports.appZoomModuleMetadata = appZoomModuleMetadata;
|
|
5
|
+
const config_1 = require("@nestjs/config");
|
|
6
|
+
const zoom_api_1 = require("./zoom.api");
|
|
7
|
+
const zoom_config_1 = require("./zoom.config");
|
|
8
|
+
// MARK: Provider Factories
|
|
9
|
+
function zoomServiceConfigFactory(configService) {
|
|
10
|
+
const config = {
|
|
11
|
+
zoom: {}
|
|
12
|
+
};
|
|
13
|
+
zoom_config_1.ZoomServiceConfig.assertValidConfig(config);
|
|
14
|
+
return config;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Convenience function used to generate ModuleMetadata for an app's ZoomModule.
|
|
18
|
+
*
|
|
19
|
+
* @param provide
|
|
20
|
+
* @param useFactory
|
|
21
|
+
* @returns
|
|
22
|
+
*/
|
|
23
|
+
function appZoomModuleMetadata(config) {
|
|
24
|
+
const { dependencyModule, imports, exports, providers } = config;
|
|
25
|
+
const dependencyModuleImport = dependencyModule ? [dependencyModule] : [];
|
|
26
|
+
return {
|
|
27
|
+
imports: [config_1.ConfigModule, ...dependencyModuleImport, ...(imports ?? [])],
|
|
28
|
+
exports: [zoom_api_1.ZoomApi, ...(exports ?? [])],
|
|
29
|
+
providers: [
|
|
30
|
+
{
|
|
31
|
+
provide: zoom_config_1.ZoomServiceConfig,
|
|
32
|
+
inject: [config_1.ConfigService],
|
|
33
|
+
useFactory: zoomServiceConfigFactory
|
|
34
|
+
},
|
|
35
|
+
zoom_api_1.ZoomApi,
|
|
36
|
+
...(providers ?? [])
|
|
37
|
+
]
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=zoom.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zoom.module.js","sourceRoot":"","sources":["../../../../../../../packages/zoom/nestjs/src/lib/zoom/zoom.module.ts"],"names":[],"mappings":";;AAOA,4DAOC;AAoBD,sDAiBC;AAlDD,2CAA6D;AAC7D,yCAAqC;AACrC,+CAAkD;AAGlD,2BAA2B;AAC3B,SAAgB,wBAAwB,CAAC,aAA4B;IACnE,MAAM,MAAM,GAAsB;QAChC,IAAI,EAAE,EAAE;KACT,CAAC;IAEF,+BAAiB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC;AAChB,CAAC;AAaD;;;;;;GAMG;AACH,SAAgB,qBAAqB,CAAC,MAAoC;IACxE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IACjE,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE1E,OAAO;QACL,OAAO,EAAE,CAAC,qBAAY,EAAE,GAAG,sBAAsB,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACtE,OAAO,EAAE,CAAC,kBAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACtC,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,+BAAiB;gBAC1B,MAAM,EAAE,CAAC,sBAAa,CAAC;gBACvB,UAAU,EAAE,wBAAwB;aACrC;YACD,kBAAO;YACP,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;SACrB;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@dereekb/zoom",
|
|
3
|
+
"version": "12.1.0",
|
|
4
|
+
"exports": {
|
|
5
|
+
".": {
|
|
6
|
+
"types": "./src/index.d.ts",
|
|
7
|
+
"node": {
|
|
8
|
+
"require": "./index.cjs.js",
|
|
9
|
+
"import": "./index.mjs"
|
|
10
|
+
},
|
|
11
|
+
"browser": {
|
|
12
|
+
"require": "./index.cjs.js",
|
|
13
|
+
"import": "./index.esm.js"
|
|
14
|
+
},
|
|
15
|
+
"default": "./index.cjs.js"
|
|
16
|
+
},
|
|
17
|
+
"./nestjs": {
|
|
18
|
+
"types": "./nestjs/src/index.d.ts",
|
|
19
|
+
"main": "./nestjs/src/index.js",
|
|
20
|
+
"require": "./nestjs/src/index.js",
|
|
21
|
+
"default": "./nestjs/src/index.js"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"peerDependencies": {
|
|
25
|
+
"@dereekb/util": "*",
|
|
26
|
+
"make-error": "^1.3.0"
|
|
27
|
+
},
|
|
28
|
+
"module": "./index.esm.js",
|
|
29
|
+
"main": "./index.cjs.js",
|
|
30
|
+
"types": "./index.esm.d.ts"
|
|
31
|
+
}
|
package/src/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './lib';
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { FetchJsonInput } from '@dereekb/util/fetch';
|
|
2
|
+
import { ZoomOAuthContext } from './oauth.config';
|
|
3
|
+
import { ZoomAccountId, ZoomAuthClientIdAndSecretPair, ZoomRefreshToken } from '../zoom.config';
|
|
4
|
+
import { ZoomAccessTokenApiDomain, ZoomAccessTokenScopesString, ZoomAccessTokenString } from './oauth';
|
|
5
|
+
import { Maybe, Seconds } from '@dereekb/util';
|
|
6
|
+
import { ZoomOAuthAccessTokenErrorCode } from './oauth.error.api';
|
|
7
|
+
export interface ZoomOAuthServerAccessTokenInput {
|
|
8
|
+
readonly client?: Maybe<ZoomAuthClientIdAndSecretPair>;
|
|
9
|
+
readonly accountId?: Maybe<ZoomAccountId>;
|
|
10
|
+
}
|
|
11
|
+
export interface ZoomOAuthUserAccessTokenInput extends ZoomOAuthServerAccessTokenInput {
|
|
12
|
+
readonly refreshToken: ZoomRefreshToken;
|
|
13
|
+
}
|
|
14
|
+
export interface ZoomOAuthAccessTokenResponse {
|
|
15
|
+
readonly access_token: ZoomAccessTokenString;
|
|
16
|
+
readonly token_type: 'bearer';
|
|
17
|
+
readonly api_url: ZoomAccessTokenApiDomain;
|
|
18
|
+
readonly scope: ZoomAccessTokenScopesString;
|
|
19
|
+
readonly expires_in: Seconds;
|
|
20
|
+
}
|
|
21
|
+
export interface ZoomOAuthAccessTokenErrorResponse {
|
|
22
|
+
readonly error: ZoomOAuthAccessTokenErrorCode;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Retrieves a new AccessToken for Server to Server authentication.
|
|
26
|
+
*
|
|
27
|
+
* @param context
|
|
28
|
+
* @returns
|
|
29
|
+
*/
|
|
30
|
+
export declare function serverAccessToken(context: ZoomOAuthContext): (input?: ZoomOAuthServerAccessTokenInput) => Promise<ZoomOAuthAccessTokenResponse>;
|
|
31
|
+
/**
|
|
32
|
+
* Retrieves a new AccessToken for a user using their refresh token.
|
|
33
|
+
*
|
|
34
|
+
* @param context
|
|
35
|
+
* @returns
|
|
36
|
+
*/
|
|
37
|
+
export declare function userAccessToken(context: ZoomOAuthContext): (input: ZoomOAuthUserAccessTokenInput) => Promise<ZoomOAuthAccessTokenResponse>;
|
|
38
|
+
export declare function zoomOAuthApiFetchJsonInput(context: ZoomOAuthContext, input?: Maybe<ZoomOAuthServerAccessTokenInput>): FetchJsonInput;
|
|
39
|
+
export declare function zoomOAuthServerBasicAuthorizationHeaderValue(input: ZoomAuthClientIdAndSecretPair): string;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { FactoryWithInput, FactoryWithRequiredInput, type Maybe } from '@dereekb/util';
|
|
2
|
+
import { ConfiguredFetch, FetchJsonFunction } from '@dereekb/util/fetch';
|
|
3
|
+
import { ZoomAuthClientIdAndSecretPair, ZoomAccountIdRef, ZoomRefreshToken } from '../zoom.config';
|
|
4
|
+
import { ZoomAccessTokenCache, ZoomAccessTokenFactory } from './oauth';
|
|
5
|
+
/**
|
|
6
|
+
* The Zoom OAuth API URL for the US datacenter.
|
|
7
|
+
*/
|
|
8
|
+
export declare const ZOOM_OAUTH_API_URL = "https://zoom.us/oauth";
|
|
9
|
+
/**
|
|
10
|
+
* Url for the Zoom OAuth API.
|
|
11
|
+
*
|
|
12
|
+
* https://developers.zoom.us/docs/integrations/oauth/
|
|
13
|
+
*/
|
|
14
|
+
export type ZoomOAuthApiUrl = typeof ZOOM_OAUTH_API_URL;
|
|
15
|
+
/**
|
|
16
|
+
* Configuration for ZoomOAuth.
|
|
17
|
+
*/
|
|
18
|
+
export interface ZoomOAuthConfig extends ZoomAuthClientIdAndSecretPair, ZoomAccountIdRef {
|
|
19
|
+
/**
|
|
20
|
+
* Optional ZoomAccessTokenCache for caching access tokens.
|
|
21
|
+
*/
|
|
22
|
+
readonly accessTokenCache?: Maybe<ZoomAccessTokenCache>;
|
|
23
|
+
}
|
|
24
|
+
export interface ZoomOAuthFetchFactoryInput {
|
|
25
|
+
}
|
|
26
|
+
export type ZoomOAuthFetchFactory = FactoryWithInput<ConfiguredFetch, ZoomOAuthFetchFactoryInput>;
|
|
27
|
+
export type ZoomOAuthMakeUserAccessTokenFactoryInput = {
|
|
28
|
+
readonly refreshToken: ZoomRefreshToken;
|
|
29
|
+
readonly userAccessTokenCache?: Maybe<ZoomAccessTokenCache>;
|
|
30
|
+
};
|
|
31
|
+
export type ZoomOAuthMakeUserAccessTokenFactory = FactoryWithRequiredInput<ZoomAccessTokenFactory, ZoomOAuthMakeUserAccessTokenFactoryInput>;
|
|
32
|
+
/**
|
|
33
|
+
* Context used for performing fetch() and fetchJson() calls with a configured fetch instance.
|
|
34
|
+
*/
|
|
35
|
+
export interface ZoomOAuthContext {
|
|
36
|
+
readonly fetch: ConfiguredFetch;
|
|
37
|
+
readonly fetchJson: FetchJsonFunction;
|
|
38
|
+
readonly loadAccessToken: ZoomAccessTokenFactory;
|
|
39
|
+
readonly makeUserAccessTokenFactory: ZoomOAuthMakeUserAccessTokenFactory;
|
|
40
|
+
readonly config: ZoomOAuthConfig;
|
|
41
|
+
}
|
|
42
|
+
export interface ZoomOAuthContextRef {
|
|
43
|
+
readonly oauthContext: ZoomOAuthContext;
|
|
44
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { type Maybe } from '@dereekb/util';
|
|
2
|
+
/**
|
|
3
|
+
* Access token authorization string generated from a refresh token.
|
|
4
|
+
*/
|
|
5
|
+
export type ZoomAccessTokenString = string;
|
|
6
|
+
/**
|
|
7
|
+
* Scopes string for a ZoomAccessToken that is space-separated.
|
|
8
|
+
*
|
|
9
|
+
* Example: "user:read:user:admin api:write:zoom etc:etc:etc"
|
|
10
|
+
*/
|
|
11
|
+
export type ZoomAccessTokenScopesString = string;
|
|
12
|
+
/**
|
|
13
|
+
* Api domain string for a ZoomAccessToken
|
|
14
|
+
*
|
|
15
|
+
* Example: "https://api.zoom.us"
|
|
16
|
+
*/
|
|
17
|
+
export type ZoomAccessTokenApiDomain = string;
|
|
18
|
+
/**
|
|
19
|
+
* Zoom account access token.
|
|
20
|
+
*/
|
|
21
|
+
export interface ZoomAccessToken {
|
|
22
|
+
readonly accessToken: ZoomAccessTokenString;
|
|
23
|
+
readonly scope: ZoomAccessTokenScopesString;
|
|
24
|
+
/**
|
|
25
|
+
* Api domain for the token.
|
|
26
|
+
*/
|
|
27
|
+
readonly apiDomain: ZoomAccessTokenApiDomain;
|
|
28
|
+
/**
|
|
29
|
+
* Length of time the token is valid for.
|
|
30
|
+
*/
|
|
31
|
+
readonly expiresIn: number;
|
|
32
|
+
/**
|
|
33
|
+
* Date the token expires at.
|
|
34
|
+
*/
|
|
35
|
+
readonly expiresAt: Date;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Used for retrieving and storing ZoomAccessToken values.
|
|
39
|
+
*/
|
|
40
|
+
export interface ZoomAccessTokenCache {
|
|
41
|
+
/**
|
|
42
|
+
* Loads the token from the cache, if available.
|
|
43
|
+
*
|
|
44
|
+
* The token may be expired.
|
|
45
|
+
*/
|
|
46
|
+
loadCachedToken(): Promise<Maybe<ZoomAccessToken>>;
|
|
47
|
+
/**
|
|
48
|
+
* Updates the cache with the given access token.
|
|
49
|
+
*/
|
|
50
|
+
updateCachedToken(accessToken: ZoomAccessToken): Promise<void>;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Source for retriving a ZoomAccessToken.
|
|
54
|
+
*
|
|
55
|
+
* Throws an ZoomOAuthAuthRetrievalError error if the token could not be retrieved.
|
|
56
|
+
*/
|
|
57
|
+
export type ZoomAccessTokenFactory = () => Promise<ZoomAccessToken>;
|
|
58
|
+
/**
|
|
59
|
+
* A ZoomAccessTokenFactory that always generates a new ZoomAccessToken.
|
|
60
|
+
*/
|
|
61
|
+
export type ZoomAccessTokenRefresher = ZoomAccessTokenFactory;
|
|
62
|
+
/**
|
|
63
|
+
* Source for retriving a ZoomAccessToken string.
|
|
64
|
+
*
|
|
65
|
+
* Throws an ZoomOAuthAuthRetrievalError error if the token could not be retrieved.
|
|
66
|
+
*/
|
|
67
|
+
export type ZoomAccessTokenStringFactory = () => Promise<ZoomAccessTokenString>;
|
|
68
|
+
/**
|
|
69
|
+
* Generates a new ZoomAccessTokenStringFactory.
|
|
70
|
+
*/
|
|
71
|
+
export declare function zoomAccessTokenStringFactory(zoomAccessTokenFactory: ZoomAccessTokenFactory): ZoomAccessTokenStringFactory;
|