@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.
Files changed (64) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +6 -0
  3. package/index.cjs.d.ts +1 -0
  4. package/index.cjs.js +4346 -0
  5. package/index.esm.d.ts +1 -0
  6. package/index.esm.js +4293 -0
  7. package/nestjs/CHANGELOG.md +183 -0
  8. package/nestjs/README.md +11 -0
  9. package/nestjs/package.json +7 -0
  10. package/nestjs/src/index.d.ts +1 -0
  11. package/nestjs/src/index.js +5 -0
  12. package/nestjs/src/index.js.map +1 -0
  13. package/nestjs/src/lib/index.d.ts +2 -0
  14. package/nestjs/src/lib/index.js +6 -0
  15. package/nestjs/src/lib/index.js.map +1 -0
  16. package/nestjs/src/lib/oauth/index.d.ts +3 -0
  17. package/nestjs/src/lib/oauth/index.js +7 -0
  18. package/nestjs/src/lib/oauth/index.js.map +1 -0
  19. package/nestjs/src/lib/oauth/oauth.api.d.ts +12 -0
  20. package/nestjs/src/lib/oauth/oauth.api.js +41 -0
  21. package/nestjs/src/lib/oauth/oauth.api.js.map +1 -0
  22. package/nestjs/src/lib/oauth/oauth.config.d.ts +14 -0
  23. package/nestjs/src/lib/oauth/oauth.config.js +50 -0
  24. package/nestjs/src/lib/oauth/oauth.config.js.map +1 -0
  25. package/nestjs/src/lib/oauth/oauth.module.d.ts +29 -0
  26. package/nestjs/src/lib/oauth/oauth.module.js +36 -0
  27. package/nestjs/src/lib/oauth/oauth.module.js.map +1 -0
  28. package/nestjs/src/lib/oauth/oauth.service.d.ts +55 -0
  29. package/nestjs/src/lib/oauth/oauth.service.js +226 -0
  30. package/nestjs/src/lib/oauth/oauth.service.js.map +1 -0
  31. package/nestjs/src/lib/zoom/index.d.ts +3 -0
  32. package/nestjs/src/lib/zoom/index.js +7 -0
  33. package/nestjs/src/lib/zoom/index.js.map +1 -0
  34. package/nestjs/src/lib/zoom/zoom.api.d.ts +21 -0
  35. package/nestjs/src/lib/zoom/zoom.api.js +65 -0
  36. package/nestjs/src/lib/zoom/zoom.api.js.map +1 -0
  37. package/nestjs/src/lib/zoom/zoom.config.d.ts +10 -0
  38. package/nestjs/src/lib/zoom/zoom.config.js +15 -0
  39. package/nestjs/src/lib/zoom/zoom.config.js.map +1 -0
  40. package/nestjs/src/lib/zoom/zoom.module.d.ts +22 -0
  41. package/nestjs/src/lib/zoom/zoom.module.js +40 -0
  42. package/nestjs/src/lib/zoom/zoom.module.js.map +1 -0
  43. package/package.json +31 -0
  44. package/src/index.d.ts +1 -0
  45. package/src/lib/index.d.ts +7 -0
  46. package/src/lib/oauth/index.d.ts +5 -0
  47. package/src/lib/oauth/oauth.api.d.ts +39 -0
  48. package/src/lib/oauth/oauth.config.d.ts +44 -0
  49. package/src/lib/oauth/oauth.d.ts +71 -0
  50. package/src/lib/oauth/oauth.error.api.d.ts +30 -0
  51. package/src/lib/oauth/oauth.factory.d.ts +34 -0
  52. package/src/lib/zoom/index.d.ts +7 -0
  53. package/src/lib/zoom/zoom.api.meeting.d.ts +144 -0
  54. package/src/lib/zoom/zoom.api.meeting.type.d.ts +297 -0
  55. package/src/lib/zoom/zoom.api.user.d.ts +32 -0
  56. package/src/lib/zoom/zoom.api.user.type.d.ts +287 -0
  57. package/src/lib/zoom/zoom.config.d.ts +69 -0
  58. package/src/lib/zoom/zoom.error.api.d.ts +6 -0
  59. package/src/lib/zoom/zoom.factory.d.ts +23 -0
  60. package/src/lib/zoom.api.page.d.ts +73 -0
  61. package/src/lib/zoom.config.d.ts +39 -0
  62. package/src/lib/zoom.error.api.d.ts +145 -0
  63. package/src/lib/zoom.limit.d.ts +37 -0
  64. 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,3 @@
1
+ export * from './zoom.api';
2
+ export * from './zoom.config';
3
+ export * from './zoom.module';
@@ -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,7 @@
1
+ export * from './zoom';
2
+ export * from './oauth';
3
+ export * from './zoom.error.api';
4
+ export * from './zoom.api.page';
5
+ export * from './zoom.config';
6
+ export * from './zoom.limit';
7
+ export * from './zoom.type';
@@ -0,0 +1,5 @@
1
+ export * from './oauth';
2
+ export * from './oauth.api';
3
+ export * from './oauth.config';
4
+ export * from './oauth.error.api';
5
+ export * from './oauth.factory';
@@ -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;