@or-sdk/library 0.1.0-beta.1912.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/src/Library.ts ADDED
@@ -0,0 +1,506 @@
1
+ import { Base } from '@or-sdk/base';
2
+ import {
3
+ SERVICE_KEY,
4
+ INDEX_TYPE,
5
+ } from './constants';
6
+
7
+ import type {
8
+ LibraryConfig,
9
+ OptionalParams,
10
+ CrossEnvOptionalParams,
11
+ IsPlaygroundParam,
12
+ } from './types';
13
+
14
+ import {
15
+ CategoryItemResponseDTO,
16
+ CategoryListResponseDTO,
17
+ CreateCategoryBodyDTO,
18
+ CreatePackageByVersionBodyDTO,
19
+ CreatePackageByVersionResponseDTO,
20
+ CreatePackageReleaseBodyDTO,
21
+ CreateReleaseParamsDTO,
22
+ GetPackageArchiveSignedUrlDTO,
23
+ GetPackageByIdQueryUnionDTO,
24
+ GetPackageByIdResponseDTO,
25
+ GetPackageResponseDTO,
26
+ GetPackagesQueryDTO,
27
+ GetPackagesResponseDTO,
28
+ PackageParamNpmScopeDTO,
29
+ PackageParamUniversalDTO,
30
+ PutLegacyVersionResponseDTO,
31
+ SyncLegacyResponseDTO,
32
+ PutLegacyPackageBodyDTO,
33
+ DeprecateLegacyStepsBodyDTO,
34
+ PackageTypeEnum,
35
+ PackageStatusDetailsStatusEnum,
36
+ } from '@or-sdk/library-types-v1';
37
+
38
+ export class Library extends Base {
39
+ private readonly packageType: PackageTypeEnum;
40
+
41
+ /**
42
+ * ```typescript
43
+ * import { Library } from '@or-sdk/library';
44
+ * import config from '../config';
45
+ *
46
+ * const LibrarySDK = new Library({
47
+ * token: 'my-account-token-string',
48
+ * libraryApiUrl: config.LIBRARY_API_URL
49
+ * });
50
+ * ```
51
+ */
52
+ constructor(params: LibraryConfig) {
53
+ const { token, discoveryUrl, packageType, libraryApiUrl } = params;
54
+
55
+ super({
56
+ discoveryUrl,
57
+ token,
58
+ serviceKey: SERVICE_KEY,
59
+ serviceUrl: libraryApiUrl,
60
+ useDefaultSerializer: false,
61
+ });
62
+
63
+ this.packageType = packageType;
64
+ }
65
+
66
+ /**
67
+ * List all packages
68
+ */
69
+ async getPackages(
70
+ params: GetPackagesQueryDTO,
71
+ { type, signal }: OptionalParams = {}
72
+ ): Promise<GetPackagesResponseDTO> {
73
+ const packageType = type ?? this.packageType;
74
+
75
+ return this.callApiV2({
76
+ route: `/api/v1/packages/${packageType}`,
77
+ signal,
78
+ params,
79
+ });
80
+ }
81
+
82
+ /**
83
+ * List all packages from the playground
84
+ */
85
+ async getPlayground(
86
+ params: GetPackagesQueryDTO,
87
+ { type, signal }: OptionalParams = {}
88
+ ): Promise<GetPackagesResponseDTO> {
89
+ const packageType = type ?? this.packageType;
90
+
91
+ return this.callApiV2({
92
+ route: `/api/v1/playground/${packageType}`,
93
+ signal,
94
+ params,
95
+ });
96
+ }
97
+
98
+ /**
99
+ * List all categories
100
+ */
101
+ async getCategories(
102
+ params = {},
103
+ { type, signal }: OptionalParams = {}
104
+ ): Promise<CategoryListResponseDTO> {
105
+ const packageType = type || this.packageType;
106
+
107
+ return this.callApiV2({
108
+ route: `/api/v1/categories/${packageType}`,
109
+ signal,
110
+ params,
111
+ });
112
+ }
113
+
114
+ /**
115
+ * Upsert given category
116
+ */
117
+ async putCategory(
118
+ data: CreateCategoryBodyDTO,
119
+ { type, signal, customHeaders }: CrossEnvOptionalParams = {}
120
+ ): Promise<CategoryItemResponseDTO> {
121
+ const packageType = type ?? this.packageType;
122
+
123
+ return this.callApiV2({
124
+ method: 'PUT',
125
+ route: `/api/v1/categories/${packageType}`,
126
+ data,
127
+ signal,
128
+ customHeaders,
129
+ });
130
+ }
131
+
132
+ /**
133
+ * Get category by ID
134
+ */
135
+ async getCategoryById(
136
+ { id }: Pick<PackageParamUniversalDTO, 'id'>,
137
+ { type, signal }: OptionalParams = {}
138
+ ): Promise<CategoryItemResponseDTO> {
139
+ const packageType = type ?? this.packageType;
140
+
141
+ return this.callApiV2({
142
+ route: `/api/v1/categories/${packageType}/id/${id}`,
143
+ signal,
144
+ });
145
+ }
146
+
147
+ /**
148
+ * Get credentials for uploading the package
149
+ * ```typescript
150
+ * const result = await libraryApi.getUploadCredentials({ id: 'id', version: 'version' });
151
+ * ```
152
+ */
153
+ public async getUploadCredentials(
154
+ data: CreatePackageByVersionBodyDTO & PackageParamUniversalDTO & PackageParamNpmScopeDTO,
155
+ { type, signal, customHeaders }: CrossEnvOptionalParams = {}
156
+ ): Promise<CreatePackageByVersionResponseDTO> {
157
+ const packageType = type ?? this.packageType;
158
+ const { id, version } = data;
159
+
160
+ return this.callApiV2({
161
+ method: 'POST',
162
+ route: `/api/v1/packages/${packageType}/id/${id}/version/${version}`,
163
+ data,
164
+ customHeaders,
165
+ signal,
166
+ });
167
+ }
168
+
169
+ /**
170
+ * Get credentials for uploading the package to the playground (playground)
171
+ */
172
+ async getUploadCredentialsPlayground(
173
+ data: CreatePackageByVersionBodyDTO & PackageParamUniversalDTO & PackageParamNpmScopeDTO,
174
+ { type, signal }: OptionalParams = {}
175
+ ): Promise<CreatePackageByVersionResponseDTO> {
176
+ const packageType = type ?? this.packageType;
177
+ const { id, version } = data;
178
+
179
+ return this.callApiV2({
180
+ method: 'POST',
181
+ route: `/api/v1/playground/${packageType}/id/${id}/version/${version}`,
182
+ data,
183
+ signal,
184
+ });
185
+ }
186
+
187
+ /**
188
+ * List all versions of given package
189
+ */
190
+ async getVersions(
191
+ { id, isPlayground, ...params }: Pick<PackageParamUniversalDTO, 'id' | 'type'> &
192
+ GetPackageByIdQueryUnionDTO & IsPlaygroundParam,
193
+ { type, signal }: OptionalParams = {}
194
+ ): Promise<GetPackageByIdResponseDTO> {
195
+ const packageType = type ?? this.packageType;
196
+ const index = isPlayground ? INDEX_TYPE.PLAYGROUND : INDEX_TYPE.PACKAGES;
197
+
198
+ return this.callApiV2({
199
+ route: `/api/v1/${index}/${packageType}/id/${id}`,
200
+ signal,
201
+ params,
202
+ });
203
+ }
204
+
205
+ /**
206
+ * Delete given package version from playground
207
+ */
208
+ async deletePackageVersionFromPlayground(
209
+ { id, version }: Pick<PackageParamUniversalDTO, 'id' | 'version'>,
210
+ { type, signal }: OptionalParams = {}
211
+ ) {
212
+ const packageType = type ?? this.packageType;
213
+
214
+ return this.callApiV2({
215
+ method: 'DELETE',
216
+ route: `/api/v1/playground/${packageType}/id/${id}/version/${version}`,
217
+ signal,
218
+ });
219
+ }
220
+
221
+ /**
222
+ * Get the latest version of the package meta by ID
223
+ */
224
+ async getPackageMetaLatestVersionById(
225
+ { id }: Pick<PackageParamUniversalDTO, 'id'>,
226
+ { type, signal }: OptionalParams = {}
227
+ ): Promise<GetPackageResponseDTO> {
228
+ const packageType = type ?? this.packageType;
229
+
230
+ return this.callApiV2({
231
+ route: `/api/v1/packages/${packageType}/id/${id}/latest`,
232
+ signal,
233
+ });
234
+ }
235
+
236
+ /**
237
+ * Get download package archive url
238
+ * ```typescript
239
+ * const result = await libraryApi.getMetaByVersion({ id: 'id', version: 'version', isPlayground: false });
240
+ * ```
241
+ */
242
+ async getMetaByVersion(
243
+ { id, version, isPlayground }: Pick<PackageParamUniversalDTO, 'id' | 'version'> & IsPlaygroundParam,
244
+ { signal, customHeaders, type }: CrossEnvOptionalParams = {}
245
+ ) {
246
+ const packageType = type ?? this.packageType;
247
+ const index = isPlayground ? INDEX_TYPE.PLAYGROUND : INDEX_TYPE.PACKAGES;
248
+
249
+ return this.callApiV2({
250
+ method: 'GET',
251
+ route: `/api/v1/${index}/${packageType}/id/${id}/version/${version}`,
252
+ customHeaders,
253
+ signal,
254
+ });
255
+ }
256
+
257
+ /**
258
+ * List favorites
259
+ */
260
+ async getFavorites(
261
+ params: GetPackagesQueryDTO,
262
+ { type, signal }: OptionalParams = {}
263
+ ): Promise<GetPackagesResponseDTO> {
264
+ const packageType = type ?? this.packageType;
265
+
266
+ return this.callApiV2({
267
+ route: `/api/v1/packages/${packageType}/favorites`,
268
+ signal,
269
+ params,
270
+ });
271
+ }
272
+
273
+ /**
274
+ * Submit legacy Step Template to Library API
275
+ */
276
+ async submitLegacyStepJson(
277
+ legacyStepTemplate: PutLegacyPackageBodyDTO & Pick<PackageParamUniversalDTO, 'id' | 'version'>,
278
+ { signal }: Pick<OptionalParams, 'signal'> = {}
279
+ ): Promise<SyncLegacyResponseDTO> {
280
+ const packageType = PackageTypeEnum.STEP;
281
+ const { id, version = '0.0.1' } = legacyStepTemplate;
282
+ const data = {
283
+ data: legacyStepTemplate,
284
+ name: legacyStepTemplate.name,
285
+ description: legacyStepTemplate.description,
286
+ categories: legacyStepTemplate.categories,
287
+ };
288
+
289
+ return this.callApiV2({
290
+ method: 'PUT',
291
+ route: `/api/v1/service/sync/${packageType}/legacy/id/${id}/version/${version}/json`,
292
+ data,
293
+ signal,
294
+ });
295
+ }
296
+
297
+ /**
298
+ * Get legacy Step Template from Library API
299
+ */
300
+ async getLegacyStepJson(
301
+ { id, version }: Pick<PackageParamUniversalDTO, 'id' | 'version'>,
302
+ { signal }: Pick<OptionalParams, 'signal'> = {}
303
+ ): Promise<GetPackageResponseDTO> {
304
+ const packageType = PackageTypeEnum.STEP;
305
+
306
+ return this.callApiV2({
307
+ route: `/api/v1/packages/${packageType}/id/${id}/version/${version}/json`,
308
+ signal,
309
+ });
310
+ }
311
+
312
+ /**
313
+ * Sync legacy Step Templates from playground Account
314
+ */
315
+ async syncLegacyStepFromLibrary(
316
+ { id }: Pick<PackageParamUniversalDTO, 'id'>,
317
+ { signal }: Pick<OptionalParams, 'signal'> = {}
318
+ ): Promise<SyncLegacyResponseDTO> {
319
+ const packageType = 'STEP';
320
+
321
+ return this.callApiV2({
322
+ method: 'PUT',
323
+ route: `/api/v1/service/sync/${packageType}/legacy/id/${id}/latest`,
324
+ signal,
325
+ });
326
+ }
327
+
328
+ /**
329
+ * Set release status
330
+ */
331
+ async setReleaseStatus(
332
+ data: CreateReleaseParamsDTO & CreatePackageReleaseBodyDTO,
333
+ { type, signal }: OptionalParams = {}
334
+ ): Promise<boolean> {
335
+ const packageType = type ?? this.packageType;
336
+ const { id, version } = data;
337
+ const { level } = data;
338
+
339
+ delete data.level;
340
+
341
+ return this.callApiV2({
342
+ method: 'POST',
343
+ route: `/api/v1/packages/${packageType}/id/${id}/version/${version}/status/release/${level}`,
344
+ data,
345
+ signal,
346
+ });
347
+ }
348
+
349
+ /**
350
+ * Set release status to BETA
351
+ */
352
+ async setReleaseStatusToBeta(
353
+ data: CreateReleaseParamsDTO,
354
+ { type, signal }: OptionalParams = {}
355
+ ): Promise<boolean> {
356
+ const status = PackageStatusDetailsStatusEnum.BETA;
357
+
358
+ return this.setReleaseStatus({
359
+ ...data,
360
+ status,
361
+ }, {
362
+ type,
363
+ signal,
364
+ });
365
+ }
366
+
367
+ /**
368
+ * Set release status to RELEASED
369
+ */
370
+ async setReleaseStatusToReleased(
371
+ data: CreateReleaseParamsDTO,
372
+ { type, signal }: OptionalParams = {}
373
+ ): Promise<boolean> {
374
+ const status = PackageStatusDetailsStatusEnum.RELEASED;
375
+
376
+ return this.setReleaseStatus({
377
+ ...data,
378
+ status,
379
+ }, {
380
+ type,
381
+ signal,
382
+ });
383
+ }
384
+
385
+ /**
386
+ * Set release status to DEPRECATED
387
+ */
388
+ async setReleaseStatusToDeprecated(
389
+ data: CreateReleaseParamsDTO,
390
+ { type, signal }: OptionalParams = {}
391
+ ): Promise<boolean> {
392
+ const status = PackageStatusDetailsStatusEnum.DEPRECATED;
393
+
394
+ return this.setReleaseStatus({
395
+ ...data,
396
+ status,
397
+ }, {
398
+ type,
399
+ signal,
400
+ });
401
+ }
402
+
403
+ /**
404
+ * Deprecate legacy Step Template
405
+ */
406
+ async deprecateLegacyStep(
407
+ data: CreateReleaseParamsDTO,
408
+ { signal }: Pick<OptionalParams, 'signal'> = {}
409
+ ): Promise<boolean> {
410
+ const type = 'STEP';
411
+
412
+ return this.setReleaseStatusToDeprecated(data, {
413
+ type,
414
+ signal,
415
+ });
416
+ }
417
+
418
+ /**
419
+ * Deprecate multiple legacy Step Templates
420
+ */
421
+ async deprecateLegacySteps(
422
+ data: DeprecateLegacyStepsBodyDTO,
423
+ { signal }: Pick<OptionalParams, 'signal'> = {}
424
+ ) {
425
+ return this.callApiV2({
426
+ method: 'POST',
427
+ route: '/api/v1/service/sync/STEP/legacy/deprecate',
428
+ data,
429
+ signal,
430
+ });
431
+ }
432
+
433
+ /**
434
+ * Get download package archive url
435
+ * ```typescript
436
+ * const result = await libraryApi.getDownloadArchiveCredentials({ id: 'id', version: 'version' });
437
+ * ```
438
+ */
439
+ public async getDownloadArchiveCredentials(
440
+ { id, version }: Pick<PackageParamUniversalDTO, 'id' | 'version'>,
441
+ { signal, customHeaders }: CrossEnvOptionalParams = {}
442
+ ): Promise<GetPackageArchiveSignedUrlDTO> {
443
+ return this.callApiV2({
444
+ method: 'GET',
445
+ route: `/api/v1/packages/${this.packageType}/id/${id}/version/${version}/archive`,
446
+ customHeaders,
447
+ signal,
448
+ });
449
+ }
450
+
451
+ /**
452
+ * Sync inputs from global library to specific env
453
+ * ```typescript
454
+ * const result = await libraryApi.syncInputFromLibrary({ id: 'id', version: 'version' });
455
+ * ```
456
+ */
457
+ async syncInputFromLibrary(
458
+ { id, version }: Pick<PackageParamUniversalDTO, 'id' | 'version'>,
459
+ { signal, customHeaders }: CrossEnvOptionalParams = {}
460
+ ): Promise<PutLegacyVersionResponseDTO> {
461
+ return this.callApiV2({
462
+ method: 'PUT',
463
+ route: `/api/v1/service/sync/${this.packageType}/id/${id}/version/${version}`,
464
+ customHeaders,
465
+ signal,
466
+ });
467
+ }
468
+
469
+ /**
470
+ * Get new packages
471
+ * ```typescript
472
+ * const result = await libraryApi.getNewPackages({size}, {customHeaders: {Auth: 'token'}});)
473
+ * ```
474
+ */
475
+ async getNewPackages(
476
+ params: GetPackagesQueryDTO,
477
+ { signal, customHeaders }: CrossEnvOptionalParams = {}
478
+ ): Promise<GetPackagesResponseDTO> {
479
+ return this.callApi({
480
+ method: 'GET',
481
+ route: `/api/v1/packages/${this.packageType}/new`,
482
+ params,
483
+ customHeaders,
484
+ signal,
485
+ });
486
+ }
487
+
488
+ /**
489
+ * Get popular packages
490
+ * ```typescript
491
+ * const result = await libraryApi.getNewPackages({size}, {customHeaders: {Auth: 'token'}});)
492
+ * ```
493
+ */
494
+ async getPopularPackages(
495
+ params: GetPackagesQueryDTO,
496
+ { signal, customHeaders }: CrossEnvOptionalParams = {}
497
+ ): Promise<GetPackagesResponseDTO> {
498
+ return this.callApi({
499
+ method: 'GET',
500
+ route: `/api/v1/packages/${this.packageType}/popular`,
501
+ params,
502
+ customHeaders,
503
+ signal,
504
+ });
505
+ }
506
+ }
@@ -0,0 +1,8 @@
1
+ export const SERVICE_KEY = 'library-api';
2
+ export const LIBRARY_SERVICE_KEY = SERVICE_KEY;
3
+ export const LIBRARY_API_URL_KEY = 'LIBRARY_API_URL';
4
+
5
+ export const INDEX_TYPE = {
6
+ PACKAGES: 'packages',
7
+ PLAYGROUND: 'playground',
8
+ } as const;
package/src/index.ts ADDED
@@ -0,0 +1,9 @@
1
+ export { Library } from './Library';
2
+ export * from './types';
3
+ export * from './constants';
4
+ export type {
5
+ PackageSchemaTypeEnum,
6
+ PackageStatusDetailsLevelEnum,
7
+ PackageStatusDetailsStatusEnum,
8
+ PackageTypeEnum,
9
+ } from '@or-sdk/library-types-v1';
package/src/types.ts ADDED
@@ -0,0 +1,40 @@
1
+ import { Token, CustomHeaders } from '@or-sdk/base';
2
+ import { PackageTypeEnum } from '@or-sdk/library-types-v1/dist';
3
+
4
+ export type LibraryConfig = {
5
+ /**
6
+ * token
7
+ */
8
+ token: Token;
9
+
10
+ /**
11
+ * Url of OneReach service discovery api
12
+ */
13
+ discoveryUrl?: string;
14
+
15
+ /**
16
+ * Url of OneReach Library api
17
+ */
18
+ libraryApiUrl?: string;
19
+
20
+ /**
21
+ * Package type
22
+ */
23
+ packageType: PackageTypeEnum;
24
+ };
25
+
26
+ export type OptionalParams = {
27
+ type?: PackageTypeEnum;
28
+ signal?: AbortSignal;
29
+ };
30
+
31
+ export type CrossEnvOptionalParams = OptionalParams & {
32
+ customHeaders?: CustomHeaders;
33
+ };
34
+
35
+ export type IsPlaygroundParam = {
36
+ /**
37
+ * isPlayground property
38
+ */
39
+ isPlayground?: boolean;
40
+ };
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "./tsconfig.esm.json",
3
+ "compilerOptions": {
4
+ "declarationDir": "./dist/types",
5
+ "rootDir": "./src",
6
+ "declaration": true
7
+ }
8
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "./dist/esm",
5
+ "declarationDir": "./dist/types",
6
+ "module": "ES6",
7
+ "target": "es6",
8
+ "rootDir": "./src",
9
+ "declaration": true,
10
+ "declarationMap": true
11
+ }
12
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "./dist/cjs",
5
+ "rootDir": "./src"
6
+ }
7
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "declarationDir": "./dist/types",
5
+ "rootDir": "./src",
6
+ "declaration": true,
7
+ "declarationMap": true,
8
+ "emitDeclarationOnly": true
9
+ }
10
+ }