From 5f2f3f29a985546f015af9473ac2419fab4e3d58 Mon Sep 17 00:00:00 2001 From: box-sdk-build Date: Thu, 23 Nov 2023 04:19:05 -0800 Subject: [PATCH] generated with codegen at box/box-codegen@80c0d6c0 and spec at box/box-openapi@12286d5 --- .github/workflows/build_and_test.yml | 1 + README.md | 15 +- docs/fileMetadata.md | 33 ++- docs/folderMetadata.md | 20 +- docs/invites.md | 19 +- docs/metadataTemplates.md | 112 +++++--- docs/shieldInformationBarriers.md | 37 ++- example.html | 36 +++ package.json | 13 +- rollup.config.js | 20 ++ src/fetch.ts | 37 +-- src/index.ts | 6 + src/jwtAuth.ts | 30 +- src/managers/metadataTemplates.generated.ts | 261 +++++++++--------- src/schemas.generated.ts | 51 +--- src/test/fileMetadata.generated.test.ts | 90 +++--- src/test/folderMetadata.generated.test.ts | 61 ++-- src/test/invites.generated.test.ts | 61 ++++ src/test/metadataTemplates.generated.test.ts | 163 ++++++++--- src/test/search.generated.test.ts | 82 +++--- ...hieldInformationBarriers.generated.test.ts | 93 +++++++ src/utils.ts | 43 ++- tsconfig.rollup.json | 16 ++ 23 files changed, 868 insertions(+), 432 deletions(-) create mode 100644 example.html create mode 100644 rollup.config.js create mode 100644 src/index.ts create mode 100644 src/test/invites.generated.test.ts create mode 100644 src/test/shieldInformationBarriers.generated.test.ts create mode 100644 tsconfig.rollup.json diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 2322feb2..754963dc 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -34,6 +34,7 @@ jobs: USER_ID: ${{ secrets.USER_ID }} ENTERPRISE_ID: ${{ secrets.ENTERPRISE_ID }} BOX_FILE_REQUEST_ID: ${{ secrets.BOX_FILE_REQUEST_ID }} + BOX_EXTERNAL_USER_EMAIL: ${{ secrets.BOX_EXTERNAL_USER_EMAIL }} - name: Coveralls uses: coverallsapp/github-action@master with: diff --git a/README.md b/README.md index f4876ff1..f5ef5af7 100644 --- a/README.md +++ b/README.md @@ -58,10 +58,7 @@ Using `Client` object you can access managers, which allow you to perform some o The example below demonstrates how to authenticate with Developer Token and print names of all items inside a root folder. ```js -const { BoxClient } = require('box-typescript-sdk-gen/lib/client.generated.js'); -const { - BoxDeveloperTokenAuth, -} = require('box-typescript-sdk-gen/lib/developerTokenAuth.generated.js'); +const { BoxClient, BoxDeveloperTokenAuth } = require('box-typescript-sdk-gen'); async function main(token) { let auth = new BoxDeveloperTokenAuth({ token }); @@ -73,6 +70,14 @@ async function main(token) { main('INSERT YOUR DEVELOPER TOKEN HERE'); ``` +In order to use in browser make sure you include the `lib/bundle.js` file and then you can access the classes like so: + +```js +const { BoxClient, BoxDeveloperTokenAuth } = window['box-typescript-sdk-gen']; +``` + +See example.html for an example website using this SDK. + # Integration Tests ## Running integration tests locally @@ -94,7 +99,7 @@ Now select `Authorization` and submit application to be reviewed by account admi download your app configuration settings as JSON. 2. Encode configuration file to Base64, e.g. using command: `base64 -i path_to_json_file` 3. Set environment variable: `JWT_CONFIG_BASE_64` with base64 encoded jwt configuration file -4. Set environment variable: `BOX_FILE_REQUEST_ID` with ID of file request already created in the user account. +4. Set environment variable: `BOX_FILE_REQUEST_ID` with ID of file request already created in the user account, `BOX_EXTERNAL_USER_EMAIL` with email of free external user which not belongs to any enterprise. # Questions, Bugs, and Feature Requests? diff --git a/docs/fileMetadata.md b/docs/fileMetadata.md index 2dfc12c1..e7e273ae 100644 --- a/docs/fileMetadata.md +++ b/docs/fileMetadata.md @@ -18,7 +18,7 @@ See the endpoint docs at ```ts -await client.fileMetadata.getFileMetadata(fileId); +await client.fileMetadata.getFileMetadata(file.id); ``` ### Arguments @@ -52,7 +52,11 @@ See the endpoint docs at ```ts -await client.fileMetadata.getFileMetadataById(fileId, scope, template); +await client.fileMetadata.getFileMetadataById( + file.id, + 'global' as GetFileMetadataByIdScopeArg, + 'properties' +); ``` ### Arguments @@ -141,13 +145,18 @@ See the endpoint docs at ```ts -await client.fileMetadata.updateFileMetadataById(fileId, scope, template, [ - { - op: 'replace' as UpdateFileMetadataByIdRequestBodyArgOpField, - path: '/abc', - value: newValue, - } satisfies UpdateFileMetadataByIdRequestBodyArg, -]); +await client.fileMetadata.updateFileMetadataById( + file.id, + 'global' as UpdateFileMetadataByIdScopeArg, + 'properties', + [ + { + op: 'replace' as UpdateFileMetadataByIdRequestBodyArgOpField, + path: '/abc', + value: newValue, + } satisfies UpdateFileMetadataByIdRequestBodyArg, + ] +); ``` ### Arguments @@ -184,7 +193,11 @@ See the endpoint docs at ```ts -await client.fileMetadata.deleteFileMetadataById(fileId, scope, template); +await client.fileMetadata.deleteFileMetadataById( + file.id, + 'enterprise' as DeleteFileMetadataByIdScopeArg, + templateKey +); ``` ### Arguments diff --git a/docs/folderMetadata.md b/docs/folderMetadata.md index 67f61289..eb87140a 100644 --- a/docs/folderMetadata.md +++ b/docs/folderMetadata.md @@ -53,7 +53,11 @@ See the endpoint docs at ```ts -await client.folderMetadata.getFolderMetadataById(folder.id, scope, template); +await client.folderMetadata.getFolderMetadataById( + folder.id, + 'global' as GetFolderMetadataByIdScopeArg, + 'properties' +); ``` ### Arguments @@ -99,9 +103,9 @@ See the endpoint docs at ```ts await client.folderMetadata.createFolderMetadataById( folder.id, - scope, - template, - data + 'global' as CreateFolderMetadataByIdScopeArg, + 'properties', + { ['abc']: 'xyz' } ); ``` @@ -148,8 +152,8 @@ See the endpoint docs at ```ts await client.folderMetadata.updateFolderMetadataById( folder.id, - scope, - template, + 'global' as UpdateFolderMetadataByIdScopeArg, + 'properties', [ { op: 'replace' as UpdateFolderMetadataByIdRequestBodyArgOpField, @@ -196,8 +200,8 @@ See the endpoint docs at ```ts await client.folderMetadata.deleteFolderMetadataById( folder.id, - scope, - template + 'global' as DeleteFolderMetadataByIdScopeArg, + 'properties' ); ``` diff --git a/docs/invites.md b/docs/invites.md index c20e722d..cb8fbf25 100644 --- a/docs/invites.md +++ b/docs/invites.md @@ -20,7 +20,18 @@ This operation is performed by calling function `createInvite`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-invites/). -_Currently we don't have an example for calling `createInvite` in integration tests_ + + +```ts +await client.invites.createInvite({ + enterprise: { + id: currentUser.enterprise!.id!, + } satisfies CreateInviteRequestBodyArgEnterpriseField, + actionableBy: { + login: email, + } satisfies CreateInviteRequestBodyArgActionableByField, +} satisfies CreateInviteRequestBodyArg); +``` ### Arguments @@ -48,7 +59,11 @@ This operation is performed by calling function `getInviteById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-invites-id/). -_Currently we don't have an example for calling `getInviteById` in integration tests_ + + +```ts +await client.invites.getInviteById(invitation.id); +``` ### Arguments diff --git a/docs/metadataTemplates.md b/docs/metadataTemplates.md index 38b3b7ae..ec3e0600 100644 --- a/docs/metadataTemplates.md +++ b/docs/metadataTemplates.md @@ -14,19 +14,25 @@ Finds a metadata template by searching for the ID of an instance of the template. -This operation is performed by calling function `getMetadataTemplates`. +This operation is performed by calling function `getMetadataTemplatesByInstanceId`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-metadata-templates/). -_Currently we don't have an example for calling `getMetadataTemplates` in integration tests_ + + +```ts +await client.metadataTemplates.getMetadataTemplatesByInstanceId({ + metadataInstanceId: createdMetadataInstance.id!, +} satisfies GetMetadataTemplatesByInstanceIdQueryParamsArg); +``` ### Arguments -- queryParams `GetMetadataTemplatesQueryParamsArg` - - Query parameters of getMetadataTemplates method -- headers `GetMetadataTemplatesHeadersArg` - - Headers of getMetadataTemplates method +- queryParams `GetMetadataTemplatesByInstanceIdQueryParamsArg` + - Query parameters of getMetadataTemplatesByInstanceId method +- headers `GetMetadataTemplatesByInstanceIdHeadersArg` + - Headers of getMetadataTemplatesByInstanceId method - cancellationToken `undefined | CancellationToken` - Token used for request cancellation. @@ -44,7 +50,7 @@ Retrieves a metadata template by its `scope` and `templateKey` values. To find the `scope` and `templateKey` for a template, list all templates for an enterprise or globally, or list all templates applied to a file or folder. -This operation is performed by calling function `getMetadataTemplateSchema`. +This operation is performed by calling function `getMetadataTemplate`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-metadata-templates-id-id-schema/). @@ -52,20 +58,20 @@ See the endpoint docs at ```ts -await client.metadataTemplates.getMetadataTemplateSchema( - 'enterprise' as GetMetadataTemplateSchemaScopeArg, +await client.metadataTemplates.getMetadataTemplate( + 'enterprise' as GetMetadataTemplateScopeArg, template.templateKey! ); ``` ### Arguments -- scope `GetMetadataTemplateSchemaScopeArg` +- scope `GetMetadataTemplateScopeArg` - The scope of the metadata template Example: "global" - templateKey `string` - The name of the metadata template Example: "properties" -- headers `GetMetadataTemplateSchemaHeadersArg` - - Headers of getMetadataTemplateSchema method +- headers `GetMetadataTemplateHeadersArg` + - Headers of getMetadataTemplate method - cancellationToken `undefined | CancellationToken` - Token used for request cancellation. @@ -86,23 +92,37 @@ already exists. The update is applied atomically. If any errors occur during the application of the operations, the metadata template will not be changed. -This operation is performed by calling function `updateMetadataTemplateSchema`. +This operation is performed by calling function `updateMetadataTemplate`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-metadata-templates-id-id-schema/). -_Currently we don't have an example for calling `updateMetadataTemplateSchema` in integration tests_ + + +```ts +await client.metadataTemplates.updateMetadataTemplate( + 'enterprise' as UpdateMetadataTemplateScopeArg, + templateKey, + [ + { + op: 'addField' as UpdateMetadataTemplateRequestBodyArgOpField, + fieldKey: 'newfieldname', + data: { ['type']: 'string', ['displayName']: 'newFieldName' }, + } satisfies UpdateMetadataTemplateRequestBodyArg, + ] +); +``` ### Arguments -- scope `UpdateMetadataTemplateSchemaScopeArg` +- scope `UpdateMetadataTemplateScopeArg` - The scope of the metadata template Example: "global" - templateKey `string` - The name of the metadata template Example: "properties" -- requestBody `readonly UpdateMetadataTemplateSchemaRequestBodyArg[]` - - Request body of updateMetadataTemplateSchema method -- headers `UpdateMetadataTemplateSchemaHeadersArg` - - Headers of updateMetadataTemplateSchema method +- requestBody `readonly UpdateMetadataTemplateRequestBodyArg[]` + - Request body of updateMetadataTemplate method +- headers `UpdateMetadataTemplateHeadersArg` + - Headers of updateMetadataTemplate method - cancellationToken `undefined | CancellationToken` - Token used for request cancellation. @@ -118,7 +138,7 @@ custom template data included. Delete a metadata template and its instances. This deletion is permanent and can not be reversed. -This operation is performed by calling function `deleteMetadataTemplateSchema`. +This operation is performed by calling function `deleteMetadataTemplate`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-metadata-templates-id-id-schema/). @@ -126,20 +146,20 @@ See the endpoint docs at ```ts -await client.metadataTemplates.deleteMetadataTemplateSchema( - 'enterprise' as DeleteMetadataTemplateSchemaScopeArg, +await client.metadataTemplates.deleteMetadataTemplate( + 'enterprise' as DeleteMetadataTemplateScopeArg, template.templateKey ); ``` ### Arguments -- scope `DeleteMetadataTemplateSchemaScopeArg` +- scope `DeleteMetadataTemplateScopeArg` - The scope of the metadata template Example: "global" - templateKey `string` - The name of the metadata template Example: "properties" -- headers `DeleteMetadataTemplateSchemaHeadersArg` - - Headers of deleteMetadataTemplateSchema method +- headers `DeleteMetadataTemplateHeadersArg` + - Headers of deleteMetadataTemplate method - cancellationToken `undefined | CancellationToken` - Token used for request cancellation. @@ -185,7 +205,7 @@ Returns the metadata template that matches the ID. Used to retrieve all generic, global metadata templates available to all enterprises using Box. -This operation is performed by calling function `getMetadataTemplateGlobal`. +This operation is performed by calling function `getGlobalMetadataTemplates`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-metadata-templates-global/). @@ -193,15 +213,15 @@ See the endpoint docs at ```ts -await client.metadataTemplates.getMetadataTemplateGlobal(); +await client.metadataTemplates.getGlobalMetadataTemplates(); ``` ### Arguments -- queryParams `GetMetadataTemplateGlobalQueryParamsArg` - - Query parameters of getMetadataTemplateGlobal method -- headers `GetMetadataTemplateGlobalHeadersArg` - - Headers of getMetadataTemplateGlobal method +- queryParams `GetGlobalMetadataTemplatesQueryParamsArg` + - Query parameters of getGlobalMetadataTemplates method +- headers `GetGlobalMetadataTemplatesHeadersArg` + - Headers of getGlobalMetadataTemplates method - cancellationToken `undefined | CancellationToken` - Token used for request cancellation. @@ -217,7 +237,7 @@ and their corresponding schema. Used to retrieve all metadata templates created to be used specifically within the user's enterprise -This operation is performed by calling function `getMetadataTemplateEnterprise`. +This operation is performed by calling function `getEnterpriseMetadataTemplates`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-metadata-templates-enterprise/). @@ -225,15 +245,15 @@ See the endpoint docs at ```ts -await client.metadataTemplates.getMetadataTemplateEnterprise(); +await client.metadataTemplates.getEnterpriseMetadataTemplates(); ``` ### Arguments -- queryParams `GetMetadataTemplateEnterpriseQueryParamsArg` - - Query parameters of getMetadataTemplateEnterprise method -- headers `GetMetadataTemplateEnterpriseHeadersArg` - - Headers of getMetadataTemplateEnterprise method +- queryParams `GetEnterpriseMetadataTemplatesQueryParamsArg` + - Query parameters of getEnterpriseMetadataTemplates method +- headers `GetEnterpriseMetadataTemplatesHeadersArg` + - Headers of getEnterpriseMetadataTemplates method - cancellationToken `undefined | CancellationToken` - Token used for request cancellation. @@ -249,7 +269,7 @@ and their corresponding schema. Creates a new metadata template that can be applied to files and folders. -This operation is performed by calling function `createMetadataTemplateSchema`. +This operation is performed by calling function `createMetadataTemplate`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-metadata-templates-schema/). @@ -257,26 +277,26 @@ See the endpoint docs at ```ts -await client.metadataTemplates.createMetadataTemplateSchema({ +await client.metadataTemplates.createMetadataTemplate({ scope: 'enterprise', displayName: templateKey, templateKey: templateKey, fields: [ { - type: 'string' as CreateMetadataTemplateSchemaRequestBodyArgFieldsFieldTypeField, + type: 'string' as CreateMetadataTemplateRequestBodyArgFieldsFieldTypeField, key: 'testName', displayName: 'testName', - } satisfies CreateMetadataTemplateSchemaRequestBodyArgFieldsField, + } satisfies CreateMetadataTemplateRequestBodyArgFieldsField, ], -} satisfies CreateMetadataTemplateSchemaRequestBodyArg); +} satisfies CreateMetadataTemplateRequestBodyArg); ``` ### Arguments -- requestBody `CreateMetadataTemplateSchemaRequestBodyArg` - - Request body of createMetadataTemplateSchema method -- headers `CreateMetadataTemplateSchemaHeadersArg` - - Headers of createMetadataTemplateSchema method +- requestBody `CreateMetadataTemplateRequestBodyArg` + - Request body of createMetadataTemplate method +- headers `CreateMetadataTemplateHeadersArg` + - Headers of createMetadataTemplate method - cancellationToken `undefined | CancellationToken` - Token used for request cancellation. diff --git a/docs/shieldInformationBarriers.md b/docs/shieldInformationBarriers.md index 8ca7d328..2f164447 100644 --- a/docs/shieldInformationBarriers.md +++ b/docs/shieldInformationBarriers.md @@ -14,7 +14,13 @@ This operation is performed by calling function `getShieldInformationBarrierById See the endpoint docs at [API Reference](https://developer.box.com/reference/get-shield-information-barriers-id/). -_Currently we don't have an example for calling `getShieldInformationBarrierById` in integration tests_ + + +```ts +await client.shieldInformationBarriers.getShieldInformationBarrierById( + barrierId +); +``` ### Arguments @@ -40,7 +46,17 @@ This operation is performed by calling function `createShieldInformationBarrierC See the endpoint docs at [API Reference](https://developer.box.com/reference/post-shield-information-barriers-change-status/). -_Currently we don't have an example for calling `createShieldInformationBarrierChangeStatus` in integration tests_ + + +```ts +await client.shieldInformationBarriers.createShieldInformationBarrierChangeStatus( + { + id: barrierId, + status: + 'disabled' as CreateShieldInformationBarrierChangeStatusRequestBodyArgStatusField, + } satisfies CreateShieldInformationBarrierChangeStatusRequestBodyArg +); +``` ### Arguments @@ -67,7 +83,11 @@ This operation is performed by calling function `getShieldInformationBarriers`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-shield-information-barriers/). -_Currently we don't have an example for calling `getShieldInformationBarriers` in integration tests_ + + +```ts +await client.shieldInformationBarriers.getShieldInformationBarriers(); +``` ### Arguments @@ -97,7 +117,16 @@ This operation is performed by calling function `createShieldInformationBarrier` See the endpoint docs at [API Reference](https://developer.box.com/reference/post-shield-information-barriers/). -_Currently we don't have an example for calling `createShieldInformationBarrier` in integration tests_ + + +```ts +await client.shieldInformationBarriers.createShieldInformationBarrier({ + enterprise: { + id: enterpriseId, + type: 'enterprise' as EnterpriseBaseTypeField, + } satisfies EnterpriseBase, +} satisfies CreateShieldInformationBarrierRequestBodyArg); +``` ### Arguments diff --git a/example.html b/example.html new file mode 100644 index 00000000..6d71466b --- /dev/null +++ b/example.html @@ -0,0 +1,36 @@ + + + + + Sample Website + + + + + + + + + + diff --git a/package.json b/package.json index 4482164e..1fd7e4b7 100644 --- a/package.json +++ b/package.json @@ -13,9 +13,10 @@ "engines": { "node": ">=16.0.0" }, - "main": "./lib/client.generated.js", + "main": "./lib/index.js", "scripts": { "build": "tsc", + "postbuild": "rollup -c", "start": "echo \"Error: no start specified\" && exit 1", "test": "jest" }, @@ -26,11 +27,16 @@ }, "dependencies": { "form-data": "^4.0.0", - "jsonwebtoken": "^9.0.0", "node-fetch": "^2.6.3", + "buffer": "^6.0.3", + "jsonwebtoken": "^9.0.0", + "tslib": "^2.6.2", "uuid": "^9.0.0" }, "devDependencies": { + "@rollup/plugin-commonjs": "^25.0.7", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-typescript": "^11.1.5", "@types/jest": "^29.5.1", "@types/jsonwebtoken": "^9.0.1", "@types/node": "*", @@ -38,7 +44,8 @@ "@types/uuid": "^9.0.1", "jest": "^29.5.0", "ts-jest": "^29.1.0", - "typescript": "*" + "typescript": "*", + "rollup": "^4.4.0" }, "files": [ "lib" diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 00000000..6c1db3f7 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,20 @@ +exports.default = { + input: 'src/index.ts', + output: { + file: 'lib/bundle.js', + format: 'umd', + name: 'box-typescript-sdk-gen', + sourcemap: true, + exports: 'named', + }, + plugins: [ + require('@rollup/plugin-node-resolve')({ + browser: true, // Instruct the plugin to use the "browser" field in package.json + preferBuiltins: false, // Do not prefer built-in modules over npm packages + }), // Resolves node modules + require('@rollup/plugin-commonjs')(), // Converts CommonJS modules to ES6, necessary for some npm packages + require('@rollup/plugin-typescript')({ + tsconfig: './tsconfig.rollup.json', + }), // Compiles TypeScript + ], +}; diff --git a/src/fetch.ts b/src/fetch.ts index 2408fb9f..dc608e71 100644 --- a/src/fetch.ts +++ b/src/fetch.ts @@ -1,6 +1,5 @@ -import FormData from 'form-data'; import nodeFetch, { RequestInit } from 'node-fetch'; -import { Readable } from 'stream'; +import type { Readable } from 'stream'; import { Authentication } from './auth'; import { jsonToSerializedData, @@ -9,10 +8,17 @@ import { SerializedData, } from './json'; import { getRetryTimeout, NetworkSession } from './network'; -import { ByteStream, CancellationToken, isBrowser } from './utils'; +import { + ByteStream, + CancellationToken, + generateByteStreamFromBuffer, + isBrowser, +} from './utils'; const sdkVersion = '0.1.0'; -export const userAgentHeader = `Box JavaScript generated SDK v${sdkVersion} (Node ${process.version})`; +export const userAgentHeader = `Box JavaScript generated SDK v${sdkVersion} (${ + isBrowser() ? navigator.userAgent : `Node ${process.version}` +})`; export const xBoxUaHeader = constructBoxUAHeader(); export interface MultipartItem { @@ -113,6 +119,9 @@ async function createFetchOptions(options: FetchOptions): Promise { body: Readable | string; }> => { if (options.multipartData) { + const FormData = isBrowser() + ? window.FormData + : eval('require')('form-data'); const formData = new FormData(); for (const item of options.multipartData) { if (item.fileStream) { @@ -248,13 +257,7 @@ export async function fetch( return void 0; })(); - const content = new Readable({ - read() { - this.push(new Uint8Array(responseBytesBuffer)); - this.push(null); - }, - }); - + const content = generateByteStreamFromBuffer(responseBytesBuffer); const { status } = response; return { status, data, content }; @@ -275,11 +278,11 @@ async function calculateMD5Hash(data: string | Buffer): Promise { .map((b) => b.toString(16).padStart(2, '0')) .join(''); return hashHex; - } else { - // Node environment - createHash = eval('require')('crypto').createHash; - return createHash('sha1').update(data).digest('hex'); } + + // Node environment + createHash = eval('require')('crypto').createHash; + return createHash('sha1').update(data).digest('hex'); } async function readStream(fileStream: Readable): Promise { @@ -296,7 +299,9 @@ async function readStream(fileStream: Readable): Promise { function constructBoxUAHeader() { const analyticsIdentifiers = { agent: `box-javascript-generated-sdk/${sdkVersion}`, - env: `Node/${process.version.replace('v', '')}`, + env: isBrowser() + ? navigator.userAgent + : `Node/${process.version.replace('v', '')}`, } as Record; return Object.keys(analyticsIdentifiers) diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 00000000..72b60551 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,6 @@ +export { BoxCcgAuth, CcgConfig } from './ccgAuth'; +export { BoxClient } from './client.generated'; +export { BoxDeveloperTokenAuth } from './developerTokenAuth.generated'; +export type { FetchOptions, FetchResponse, MultipartItem } from './fetch'; +export { BoxJwtAuth, JwtConfig } from './jwtAuth'; +export { BoxOAuth } from './oauth.generated'; diff --git a/src/jwtAuth.ts b/src/jwtAuth.ts index 0f95ef1c..086d32eb 100644 --- a/src/jwtAuth.ts +++ b/src/jwtAuth.ts @@ -1,17 +1,16 @@ +import type * as jwt from 'jsonwebtoken'; +import { v4 as uuidv4 } from 'uuid'; +import { Authentication } from './auth'; import { TokenRequest, TokenRequestBoxSubjectType, TokenRequestGrantType, } from './authSchemas.js'; -import { AccessToken, deserializeAccessToken } from './schemas.generated.js'; -import { readFileSync } from 'fs'; -import jwt from 'jsonwebtoken'; -import { v4 as uuid } from 'uuid'; -import { Authentication } from './auth'; +import { FetchResponse, fetch } from './fetch.js'; import { NetworkSession } from './network'; -import { fetch, FetchResponse } from './fetch.js'; +import { AccessToken, deserializeAccessToken } from './schemas.generated.js'; import { InMemoryTokenStorage, TokenStorage } from './tokenStorage.generated'; -import { jsonToSerializedData } from './json.js'; +import { isBrowser } from './utils.js'; const BOX_JWT_AUDIENCE = 'https://api.box.com/oauth2/token'; const BOX_JWT_GRANT_TYPE: TokenRequestGrantType = @@ -134,6 +133,11 @@ export class JwtConfig { configFilePath: string, tokenStorage?: TokenStorage ): JwtConfig { + if (isBrowser()) { + throw new Error('JWT is unavailble in browser environment'); + } + + const { readFileSync } = eval('require')('fs'); const config = readFileSync(configFilePath, 'utf8'); return JwtConfig.fromConfigJsonString(config, tokenStorage); } @@ -183,6 +187,10 @@ export class BoxJwtAuth implements Authentication { * @returns {Promise} A promise resolving to the access token. */ async refreshToken(networkSession?: NetworkSession): Promise { + if (isBrowser()) { + throw new Error('JWT is unavailble in browser environment'); + } + const expInSec = Math.floor(Date.now() / 1000) + 30; const claims = { exp: expInSec, @@ -193,7 +201,7 @@ export class BoxJwtAuth implements Authentication { audience: BOX_JWT_AUDIENCE, subject: this.subjectId, issuer: this.config.clientId, - jwtid: uuid(), + jwtid: uuidv4(), keyid: this.config.jwtKeyId, }; const keyParams = { @@ -201,7 +209,11 @@ export class BoxJwtAuth implements Authentication { passphrase: this.config.privateKeyPassphrase, }; - const assertion = jwt.sign(claims, keyParams, jwtOptions); + const assertion = eval('require')('jsonwebtoken').sign( + claims, + keyParams, + jwtOptions + ); const requestBody: TokenRequest = { grant_type: BOX_JWT_GRANT_TYPE, diff --git a/src/managers/metadataTemplates.generated.ts b/src/managers/metadataTemplates.generated.ts index 55f08288..1e27394a 100644 --- a/src/managers/metadataTemplates.generated.ts +++ b/src/managers/metadataTemplates.generated.ts @@ -24,36 +24,38 @@ import { sdIsNumber } from '../json.js'; import { sdIsString } from '../json.js'; import { sdIsList } from '../json.js'; import { sdIsMap } from '../json.js'; -export interface GetMetadataTemplatesQueryParamsArg { +export interface GetMetadataTemplatesByInstanceIdQueryParamsArg { readonly metadataInstanceId: string; } -export class GetMetadataTemplatesHeadersArg { +export class GetMetadataTemplatesByInstanceIdHeadersArg { readonly extraHeaders?: { readonly [key: string]: undefined | string; } = {}; constructor( fields: - | Omit - | Partial> + | Omit + | Partial< + Pick + > ) { Object.assign(this, fields); } } -export type GetMetadataTemplateSchemaScopeArg = 'global' | 'enterprise'; -export class GetMetadataTemplateSchemaHeadersArg { +export type GetMetadataTemplateScopeArg = 'global' | 'enterprise'; +export class GetMetadataTemplateHeadersArg { readonly extraHeaders?: { readonly [key: string]: undefined | string; } = {}; constructor( fields: - | Omit - | Partial> + | Omit + | Partial> ) { Object.assign(this, fields); } } -export type UpdateMetadataTemplateSchemaScopeArg = 'global' | 'enterprise'; -export type UpdateMetadataTemplateSchemaRequestBodyArgOpField = +export type UpdateMetadataTemplateScopeArg = 'global' | 'enterprise'; +export type UpdateMetadataTemplateRequestBodyArgOpField = | 'editTemplate' | 'addField' | 'reorderFields' @@ -67,8 +69,8 @@ export type UpdateMetadataTemplateSchemaRequestBodyArgOpField = | 'removeEnumOption' | 'editMultiSelectOption' | 'removeMultiSelectOption'; -export interface UpdateMetadataTemplateSchemaRequestBodyArg { - readonly op: UpdateMetadataTemplateSchemaRequestBodyArgOpField; +export interface UpdateMetadataTemplateRequestBodyArg { + readonly op: UpdateMetadataTemplateRequestBodyArgOpField; readonly data?: { readonly [key: string]: string; }; @@ -79,27 +81,27 @@ export interface UpdateMetadataTemplateSchemaRequestBodyArg { readonly multiSelectOptionKey?: string; readonly multiSelectOptionKeys?: readonly string[]; } -export class UpdateMetadataTemplateSchemaHeadersArg { +export class UpdateMetadataTemplateHeadersArg { readonly extraHeaders?: { readonly [key: string]: undefined | string; } = {}; constructor( fields: - | Omit - | Partial> + | Omit + | Partial> ) { Object.assign(this, fields); } } -export type DeleteMetadataTemplateSchemaScopeArg = 'global' | 'enterprise'; -export class DeleteMetadataTemplateSchemaHeadersArg { +export type DeleteMetadataTemplateScopeArg = 'global' | 'enterprise'; +export class DeleteMetadataTemplateHeadersArg { readonly extraHeaders?: { readonly [key: string]: undefined | string; } = {}; constructor( fields: - | Omit - | Partial> + | Omit + | Partial> ) { Object.assign(this, fields); } @@ -116,71 +118,71 @@ export class GetMetadataTemplateByIdHeadersArg { Object.assign(this, fields); } } -export interface GetMetadataTemplateGlobalQueryParamsArg { +export interface GetGlobalMetadataTemplatesQueryParamsArg { readonly marker?: string; readonly limit?: number; } -export class GetMetadataTemplateGlobalHeadersArg { +export class GetGlobalMetadataTemplatesHeadersArg { readonly extraHeaders?: { readonly [key: string]: undefined | string; } = {}; constructor( fields: - | Omit - | Partial> + | Omit + | Partial> ) { Object.assign(this, fields); } } -export interface GetMetadataTemplateEnterpriseQueryParamsArg { +export interface GetEnterpriseMetadataTemplatesQueryParamsArg { readonly marker?: string; readonly limit?: number; } -export class GetMetadataTemplateEnterpriseHeadersArg { +export class GetEnterpriseMetadataTemplatesHeadersArg { readonly extraHeaders?: { readonly [key: string]: undefined | string; } = {}; constructor( fields: - | Omit - | Partial> + | Omit + | Partial> ) { Object.assign(this, fields); } } -export type CreateMetadataTemplateSchemaRequestBodyArgFieldsFieldTypeField = +export type CreateMetadataTemplateRequestBodyArgFieldsFieldTypeField = | 'string' | 'float' | 'date' | 'enum' | 'multiSelect'; -export interface CreateMetadataTemplateSchemaRequestBodyArgFieldsFieldOptionsField { +export interface CreateMetadataTemplateRequestBodyArgFieldsFieldOptionsField { readonly key: string; } -export interface CreateMetadataTemplateSchemaRequestBodyArgFieldsField { - readonly type: CreateMetadataTemplateSchemaRequestBodyArgFieldsFieldTypeField; +export interface CreateMetadataTemplateRequestBodyArgFieldsField { + readonly type: CreateMetadataTemplateRequestBodyArgFieldsFieldTypeField; readonly key: string; readonly displayName: string; readonly description?: string; readonly hidden?: boolean; - readonly options?: readonly CreateMetadataTemplateSchemaRequestBodyArgFieldsFieldOptionsField[]; + readonly options?: readonly CreateMetadataTemplateRequestBodyArgFieldsFieldOptionsField[]; } -export interface CreateMetadataTemplateSchemaRequestBodyArg { +export interface CreateMetadataTemplateRequestBodyArg { readonly scope: string; readonly templateKey?: string; readonly displayName: string; readonly hidden?: boolean; - readonly fields?: readonly CreateMetadataTemplateSchemaRequestBodyArgFieldsField[]; + readonly fields?: readonly CreateMetadataTemplateRequestBodyArgFieldsField[]; readonly copyInstanceOnItemCopy?: boolean; } -export class CreateMetadataTemplateSchemaHeadersArg { +export class CreateMetadataTemplateHeadersArg { readonly extraHeaders?: { readonly [key: string]: undefined | string; } = {}; constructor( fields: - | Omit - | Partial> + | Omit + | Partial> ) { Object.assign(this, fields); } @@ -191,21 +193,21 @@ export class MetadataTemplatesManager { constructor( fields: Omit< MetadataTemplatesManager, - | 'getMetadataTemplates' - | 'getMetadataTemplateSchema' - | 'updateMetadataTemplateSchema' - | 'deleteMetadataTemplateSchema' + | 'getMetadataTemplatesByInstanceId' + | 'getMetadataTemplate' + | 'updateMetadataTemplate' + | 'deleteMetadataTemplate' | 'getMetadataTemplateById' - | 'getMetadataTemplateGlobal' - | 'getMetadataTemplateEnterprise' - | 'createMetadataTemplateSchema' + | 'getGlobalMetadataTemplates' + | 'getEnterpriseMetadataTemplates' + | 'createMetadataTemplate' > ) { Object.assign(this, fields); } - async getMetadataTemplates( - queryParams: GetMetadataTemplatesQueryParamsArg, - headers: GetMetadataTemplatesHeadersArg = new GetMetadataTemplatesHeadersArg( + async getMetadataTemplatesByInstanceId( + queryParams: GetMetadataTemplatesByInstanceIdQueryParamsArg, + headers: GetMetadataTemplatesByInstanceIdHeadersArg = new GetMetadataTemplatesByInstanceIdHeadersArg( {} ), cancellationToken?: CancellationToken @@ -234,10 +236,10 @@ export class MetadataTemplatesManager { )) as FetchResponse; return deserializeMetadataTemplates(response.data); } - async getMetadataTemplateSchema( - scope: GetMetadataTemplateSchemaScopeArg, + async getMetadataTemplate( + scope: GetMetadataTemplateScopeArg, templateKey: string, - headers: GetMetadataTemplateSchemaHeadersArg = new GetMetadataTemplateSchemaHeadersArg( + headers: GetMetadataTemplateHeadersArg = new GetMetadataTemplateHeadersArg( {} ), cancellationToken?: CancellationToken @@ -264,11 +266,11 @@ export class MetadataTemplatesManager { )) as FetchResponse; return deserializeMetadataTemplate(response.data); } - async updateMetadataTemplateSchema( - scope: UpdateMetadataTemplateSchemaScopeArg, + async updateMetadataTemplate( + scope: UpdateMetadataTemplateScopeArg, templateKey: string, - requestBody: readonly UpdateMetadataTemplateSchemaRequestBodyArg[], - headers: UpdateMetadataTemplateSchemaHeadersArg = new UpdateMetadataTemplateSchemaHeadersArg( + requestBody: readonly UpdateMetadataTemplateRequestBodyArg[], + headers: UpdateMetadataTemplateHeadersArg = new UpdateMetadataTemplateHeadersArg( {} ), cancellationToken?: CancellationToken @@ -288,7 +290,7 @@ export class MetadataTemplatesManager { method: 'PUT', headers: headersMap, data: requestBody.map( - serializeUpdateMetadataTemplateSchemaRequestBodyArg + serializeUpdateMetadataTemplateRequestBodyArg ) as readonly any[], contentType: 'application/json-patch+json', responseFormat: 'json', @@ -299,10 +301,10 @@ export class MetadataTemplatesManager { )) as FetchResponse; return deserializeMetadataTemplate(response.data); } - async deleteMetadataTemplateSchema( - scope: DeleteMetadataTemplateSchemaScopeArg, + async deleteMetadataTemplate( + scope: DeleteMetadataTemplateScopeArg, templateKey: string, - headers: DeleteMetadataTemplateSchemaHeadersArg = new DeleteMetadataTemplateSchemaHeadersArg( + headers: DeleteMetadataTemplateHeadersArg = new DeleteMetadataTemplateHeadersArg( {} ), cancellationToken?: CancellationToken @@ -355,9 +357,9 @@ export class MetadataTemplatesManager { )) as FetchResponse; return deserializeMetadataTemplate(response.data); } - async getMetadataTemplateGlobal( - queryParams: GetMetadataTemplateGlobalQueryParamsArg = {} satisfies GetMetadataTemplateGlobalQueryParamsArg, - headers: GetMetadataTemplateGlobalHeadersArg = new GetMetadataTemplateGlobalHeadersArg( + async getGlobalMetadataTemplates( + queryParams: GetGlobalMetadataTemplatesQueryParamsArg = {} satisfies GetGlobalMetadataTemplatesQueryParamsArg, + headers: GetGlobalMetadataTemplatesHeadersArg = new GetGlobalMetadataTemplatesHeadersArg( {} ), cancellationToken?: CancellationToken @@ -385,9 +387,9 @@ export class MetadataTemplatesManager { )) as FetchResponse; return deserializeMetadataTemplates(response.data); } - async getMetadataTemplateEnterprise( - queryParams: GetMetadataTemplateEnterpriseQueryParamsArg = {} satisfies GetMetadataTemplateEnterpriseQueryParamsArg, - headers: GetMetadataTemplateEnterpriseHeadersArg = new GetMetadataTemplateEnterpriseHeadersArg( + async getEnterpriseMetadataTemplates( + queryParams: GetEnterpriseMetadataTemplatesQueryParamsArg = {} satisfies GetEnterpriseMetadataTemplatesQueryParamsArg, + headers: GetEnterpriseMetadataTemplatesHeadersArg = new GetEnterpriseMetadataTemplatesHeadersArg( {} ), cancellationToken?: CancellationToken @@ -417,9 +419,9 @@ export class MetadataTemplatesManager { )) as FetchResponse; return deserializeMetadataTemplates(response.data); } - async createMetadataTemplateSchema( - requestBody: CreateMetadataTemplateSchemaRequestBodyArg, - headers: CreateMetadataTemplateSchemaHeadersArg = new CreateMetadataTemplateSchemaHeadersArg( + async createMetadataTemplate( + requestBody: CreateMetadataTemplateRequestBodyArg, + headers: CreateMetadataTemplateHeadersArg = new CreateMetadataTemplateHeadersArg( {} ), cancellationToken?: CancellationToken @@ -432,7 +434,7 @@ export class MetadataTemplatesManager { { method: 'POST', headers: headersMap, - data: serializeCreateMetadataTemplateSchemaRequestBodyArg(requestBody), + data: serializeCreateMetadataTemplateRequestBodyArg(requestBody), contentType: 'application/json', responseFormat: 'json', auth: this.auth, @@ -443,16 +445,16 @@ export class MetadataTemplatesManager { return deserializeMetadataTemplate(response.data); } } -export function serializeGetMetadataTemplateSchemaScopeArg( - val: GetMetadataTemplateSchemaScopeArg +export function serializeGetMetadataTemplateScopeArg( + val: GetMetadataTemplateScopeArg ): SerializedData { return val; } -export function deserializeGetMetadataTemplateSchemaScopeArg( +export function deserializeGetMetadataTemplateScopeArg( val: any -): GetMetadataTemplateSchemaScopeArg { +): GetMetadataTemplateScopeArg { if (!sdIsString(val)) { - throw 'Expecting a string for "GetMetadataTemplateSchemaScopeArg"'; + throw 'Expecting a string for "GetMetadataTemplateScopeArg"'; } if (val == 'global') { return 'global'; @@ -462,16 +464,16 @@ export function deserializeGetMetadataTemplateSchemaScopeArg( } throw ''.concat('Invalid value: ', val) as string; } -export function serializeUpdateMetadataTemplateSchemaScopeArg( - val: UpdateMetadataTemplateSchemaScopeArg +export function serializeUpdateMetadataTemplateScopeArg( + val: UpdateMetadataTemplateScopeArg ): SerializedData { return val; } -export function deserializeUpdateMetadataTemplateSchemaScopeArg( +export function deserializeUpdateMetadataTemplateScopeArg( val: any -): UpdateMetadataTemplateSchemaScopeArg { +): UpdateMetadataTemplateScopeArg { if (!sdIsString(val)) { - throw 'Expecting a string for "UpdateMetadataTemplateSchemaScopeArg"'; + throw 'Expecting a string for "UpdateMetadataTemplateScopeArg"'; } if (val == 'global') { return 'global'; @@ -481,16 +483,16 @@ export function deserializeUpdateMetadataTemplateSchemaScopeArg( } throw ''.concat('Invalid value: ', val) as string; } -export function serializeUpdateMetadataTemplateSchemaRequestBodyArgOpField( - val: UpdateMetadataTemplateSchemaRequestBodyArgOpField +export function serializeUpdateMetadataTemplateRequestBodyArgOpField( + val: UpdateMetadataTemplateRequestBodyArgOpField ): SerializedData { return val; } -export function deserializeUpdateMetadataTemplateSchemaRequestBodyArgOpField( +export function deserializeUpdateMetadataTemplateRequestBodyArgOpField( val: any -): UpdateMetadataTemplateSchemaRequestBodyArgOpField { +): UpdateMetadataTemplateRequestBodyArgOpField { if (!sdIsString(val)) { - throw 'Expecting a string for "UpdateMetadataTemplateSchemaRequestBodyArgOpField"'; + throw 'Expecting a string for "UpdateMetadataTemplateRequestBodyArgOpField"'; } if (val == 'editTemplate') { return 'editTemplate'; @@ -533,11 +535,11 @@ export function deserializeUpdateMetadataTemplateSchemaRequestBodyArgOpField( } throw ''.concat('Invalid value: ', val) as string; } -export function serializeUpdateMetadataTemplateSchemaRequestBodyArg( - val: UpdateMetadataTemplateSchemaRequestBodyArg +export function serializeUpdateMetadataTemplateRequestBodyArg( + val: UpdateMetadataTemplateRequestBodyArg ): SerializedData { return { - ['op']: serializeUpdateMetadataTemplateSchemaRequestBodyArgOpField(val.op), + ['op']: serializeUpdateMetadataTemplateRequestBodyArgOpField(val.op), ['data']: val.data == void 0 ? void 0 : val.data, ['fieldKey']: val.fieldKey == void 0 ? void 0 : val.fieldKey, ['fieldKeys']: @@ -563,11 +565,11 @@ export function serializeUpdateMetadataTemplateSchemaRequestBodyArg( }) as readonly any[]), }; } -export function deserializeUpdateMetadataTemplateSchemaRequestBodyArg( +export function deserializeUpdateMetadataTemplateRequestBodyArg( val: any -): UpdateMetadataTemplateSchemaRequestBodyArg { - const op: UpdateMetadataTemplateSchemaRequestBodyArgOpField = - deserializeUpdateMetadataTemplateSchemaRequestBodyArgOpField(val.op); +): UpdateMetadataTemplateRequestBodyArg { + const op: UpdateMetadataTemplateRequestBodyArgOpField = + deserializeUpdateMetadataTemplateRequestBodyArgOpField(val.op); const data: | undefined | { @@ -612,18 +614,18 @@ export function deserializeUpdateMetadataTemplateSchemaRequestBodyArg( enumOptionKeys: enumOptionKeys, multiSelectOptionKey: multiSelectOptionKey, multiSelectOptionKeys: multiSelectOptionKeys, - } satisfies UpdateMetadataTemplateSchemaRequestBodyArg; + } satisfies UpdateMetadataTemplateRequestBodyArg; } -export function serializeDeleteMetadataTemplateSchemaScopeArg( - val: DeleteMetadataTemplateSchemaScopeArg +export function serializeDeleteMetadataTemplateScopeArg( + val: DeleteMetadataTemplateScopeArg ): SerializedData { return val; } -export function deserializeDeleteMetadataTemplateSchemaScopeArg( +export function deserializeDeleteMetadataTemplateScopeArg( val: any -): DeleteMetadataTemplateSchemaScopeArg { +): DeleteMetadataTemplateScopeArg { if (!sdIsString(val)) { - throw 'Expecting a string for "DeleteMetadataTemplateSchemaScopeArg"'; + throw 'Expecting a string for "DeleteMetadataTemplateScopeArg"'; } if (val == 'global') { return 'global'; @@ -633,16 +635,16 @@ export function deserializeDeleteMetadataTemplateSchemaScopeArg( } throw ''.concat('Invalid value: ', val) as string; } -export function serializeCreateMetadataTemplateSchemaRequestBodyArgFieldsFieldTypeField( - val: CreateMetadataTemplateSchemaRequestBodyArgFieldsFieldTypeField +export function serializeCreateMetadataTemplateRequestBodyArgFieldsFieldTypeField( + val: CreateMetadataTemplateRequestBodyArgFieldsFieldTypeField ): SerializedData { return val; } -export function deserializeCreateMetadataTemplateSchemaRequestBodyArgFieldsFieldTypeField( +export function deserializeCreateMetadataTemplateRequestBodyArgFieldsFieldTypeField( val: any -): CreateMetadataTemplateSchemaRequestBodyArgFieldsFieldTypeField { +): CreateMetadataTemplateRequestBodyArgFieldsFieldTypeField { if (!sdIsString(val)) { - throw 'Expecting a string for "CreateMetadataTemplateSchemaRequestBodyArgFieldsFieldTypeField"'; + throw 'Expecting a string for "CreateMetadataTemplateRequestBodyArgFieldsFieldTypeField"'; } if (val == 'string') { return 'string'; @@ -661,27 +663,26 @@ export function deserializeCreateMetadataTemplateSchemaRequestBodyArgFieldsField } throw ''.concat('Invalid value: ', val) as string; } -export function serializeCreateMetadataTemplateSchemaRequestBodyArgFieldsFieldOptionsField( - val: CreateMetadataTemplateSchemaRequestBodyArgFieldsFieldOptionsField +export function serializeCreateMetadataTemplateRequestBodyArgFieldsFieldOptionsField( + val: CreateMetadataTemplateRequestBodyArgFieldsFieldOptionsField ): SerializedData { return { ['key']: val.key }; } -export function deserializeCreateMetadataTemplateSchemaRequestBodyArgFieldsFieldOptionsField( +export function deserializeCreateMetadataTemplateRequestBodyArgFieldsFieldOptionsField( val: any -): CreateMetadataTemplateSchemaRequestBodyArgFieldsFieldOptionsField { +): CreateMetadataTemplateRequestBodyArgFieldsFieldOptionsField { const key: string = val.key; return { key: key, - } satisfies CreateMetadataTemplateSchemaRequestBodyArgFieldsFieldOptionsField; + } satisfies CreateMetadataTemplateRequestBodyArgFieldsFieldOptionsField; } -export function serializeCreateMetadataTemplateSchemaRequestBodyArgFieldsField( - val: CreateMetadataTemplateSchemaRequestBodyArgFieldsField +export function serializeCreateMetadataTemplateRequestBodyArgFieldsField( + val: CreateMetadataTemplateRequestBodyArgFieldsField ): SerializedData { return { - ['type']: - serializeCreateMetadataTemplateSchemaRequestBodyArgFieldsFieldTypeField( - val.type - ), + ['type']: serializeCreateMetadataTemplateRequestBodyArgFieldsFieldTypeField( + val.type + ), ['key']: val.key, ['displayName']: val.displayName, ['description']: val.description == void 0 ? void 0 : val.description, @@ -690,19 +691,19 @@ export function serializeCreateMetadataTemplateSchemaRequestBodyArgFieldsField( val.options == void 0 ? void 0 : (val.options.map(function ( - item: CreateMetadataTemplateSchemaRequestBodyArgFieldsFieldOptionsField + item: CreateMetadataTemplateRequestBodyArgFieldsFieldOptionsField ): any { - return serializeCreateMetadataTemplateSchemaRequestBodyArgFieldsFieldOptionsField( + return serializeCreateMetadataTemplateRequestBodyArgFieldsFieldOptionsField( item ); }) as readonly any[]), }; } -export function deserializeCreateMetadataTemplateSchemaRequestBodyArgFieldsField( +export function deserializeCreateMetadataTemplateRequestBodyArgFieldsField( val: any -): CreateMetadataTemplateSchemaRequestBodyArgFieldsField { - const type: CreateMetadataTemplateSchemaRequestBodyArgFieldsFieldTypeField = - deserializeCreateMetadataTemplateSchemaRequestBodyArgFieldsFieldTypeField( +): CreateMetadataTemplateRequestBodyArgFieldsField { + const type: CreateMetadataTemplateRequestBodyArgFieldsFieldTypeField = + deserializeCreateMetadataTemplateRequestBodyArgFieldsFieldTypeField( val.type ); const key: string = val.key; @@ -713,12 +714,12 @@ export function deserializeCreateMetadataTemplateSchemaRequestBodyArgFieldsField val.hidden == void 0 ? void 0 : val.hidden; const options: | undefined - | readonly CreateMetadataTemplateSchemaRequestBodyArgFieldsFieldOptionsField[] = + | readonly CreateMetadataTemplateRequestBodyArgFieldsFieldOptionsField[] = val.options == void 0 ? void 0 : sdIsList(val.options) ? (val.options.map(function (itm: SerializedData): any { - return deserializeCreateMetadataTemplateSchemaRequestBodyArgFieldsFieldOptionsField( + return deserializeCreateMetadataTemplateRequestBodyArgFieldsFieldOptionsField( itm ); }) as readonly any[]) @@ -730,10 +731,10 @@ export function deserializeCreateMetadataTemplateSchemaRequestBodyArgFieldsField description: description, hidden: hidden, options: options, - } satisfies CreateMetadataTemplateSchemaRequestBodyArgFieldsField; + } satisfies CreateMetadataTemplateRequestBodyArgFieldsField; } -export function serializeCreateMetadataTemplateSchemaRequestBodyArg( - val: CreateMetadataTemplateSchemaRequestBodyArg +export function serializeCreateMetadataTemplateRequestBodyArg( + val: CreateMetadataTemplateRequestBodyArg ): SerializedData { return { ['scope']: val.scope, @@ -744,9 +745,9 @@ export function serializeCreateMetadataTemplateSchemaRequestBodyArg( val.fields == void 0 ? void 0 : (val.fields.map(function ( - item: CreateMetadataTemplateSchemaRequestBodyArgFieldsField + item: CreateMetadataTemplateRequestBodyArgFieldsField ): any { - return serializeCreateMetadataTemplateSchemaRequestBodyArgFieldsField( + return serializeCreateMetadataTemplateRequestBodyArgFieldsField( item ); }) as readonly any[]), @@ -756,9 +757,9 @@ export function serializeCreateMetadataTemplateSchemaRequestBodyArg( : val.copyInstanceOnItemCopy, }; } -export function deserializeCreateMetadataTemplateSchemaRequestBodyArg( +export function deserializeCreateMetadataTemplateRequestBodyArg( val: any -): CreateMetadataTemplateSchemaRequestBodyArg { +): CreateMetadataTemplateRequestBodyArg { const scope: string = val.scope; const templateKey: undefined | string = val.templateKey == void 0 ? void 0 : val.templateKey; @@ -767,12 +768,12 @@ export function deserializeCreateMetadataTemplateSchemaRequestBodyArg( val.hidden == void 0 ? void 0 : val.hidden; const fields: | undefined - | readonly CreateMetadataTemplateSchemaRequestBodyArgFieldsField[] = + | readonly CreateMetadataTemplateRequestBodyArgFieldsField[] = val.fields == void 0 ? void 0 : sdIsList(val.fields) ? (val.fields.map(function (itm: SerializedData): any { - return deserializeCreateMetadataTemplateSchemaRequestBodyArgFieldsField( + return deserializeCreateMetadataTemplateRequestBodyArgFieldsField( itm ); }) as readonly any[]) @@ -786,5 +787,5 @@ export function deserializeCreateMetadataTemplateSchemaRequestBodyArg( hidden: hidden, fields: fields, copyInstanceOnItemCopy: copyInstanceOnItemCopy, - } satisfies CreateMetadataTemplateSchemaRequestBodyArg; + } satisfies CreateMetadataTemplateRequestBodyArg; } diff --git a/src/schemas.generated.ts b/src/schemas.generated.ts index 0d480c2e..fdda114e 100644 --- a/src/schemas.generated.ts +++ b/src/schemas.generated.ts @@ -410,13 +410,12 @@ export interface MetadataCascadePolicyParentField { readonly type?: MetadataCascadePolicyParentFieldTypeField; readonly id?: string; } -export type MetadataCascadePolicyScopeField = 'global' | 'enterprise_*'; export interface MetadataCascadePolicy { - readonly id?: string; - readonly type?: MetadataCascadePolicyTypeField; + readonly id: string; + readonly type: MetadataCascadePolicyTypeField; readonly ownerEnterprise?: MetadataCascadePolicyOwnerEnterpriseField; readonly parent?: MetadataCascadePolicyParentField; - readonly scope?: MetadataCascadePolicyScopeField; + readonly scope?: string; readonly templateKey?: string; } export interface MetadataCascadePolicies { @@ -5479,34 +5478,12 @@ export function deserializeMetadataCascadePolicyParentField( const id: undefined | string = val.id == void 0 ? void 0 : val.id; return { type: type, id: id } satisfies MetadataCascadePolicyParentField; } -export function serializeMetadataCascadePolicyScopeField( - val: MetadataCascadePolicyScopeField -): SerializedData { - return val; -} -export function deserializeMetadataCascadePolicyScopeField( - val: any -): MetadataCascadePolicyScopeField { - if (!sdIsString(val)) { - throw 'Expecting a string for "MetadataCascadePolicyScopeField"'; - } - if (val == 'global') { - return 'global'; - } - if (val == 'enterprise_*') { - return 'enterprise_*'; - } - throw ''.concat('Invalid value: ', val) as string; -} export function serializeMetadataCascadePolicy( val: MetadataCascadePolicy ): SerializedData { return { - ['id']: val.id == void 0 ? void 0 : val.id, - ['type']: - val.type == void 0 - ? void 0 - : serializeMetadataCascadePolicyTypeField(val.type), + ['id']: val.id, + ['type']: serializeMetadataCascadePolicyTypeField(val.type), ['owner_enterprise']: val.ownerEnterprise == void 0 ? void 0 @@ -5517,21 +5494,16 @@ export function serializeMetadataCascadePolicy( val.parent == void 0 ? void 0 : serializeMetadataCascadePolicyParentField(val.parent), - ['scope']: - val.scope == void 0 - ? void 0 - : serializeMetadataCascadePolicyScopeField(val.scope), + ['scope']: val.scope == void 0 ? void 0 : val.scope, ['templateKey']: val.templateKey == void 0 ? void 0 : val.templateKey, }; } export function deserializeMetadataCascadePolicy( val: any ): MetadataCascadePolicy { - const id: undefined | string = val.id == void 0 ? void 0 : val.id; - const type: undefined | MetadataCascadePolicyTypeField = - val.type == void 0 - ? void 0 - : deserializeMetadataCascadePolicyTypeField(val.type); + const id: string = val.id; + const type: MetadataCascadePolicyTypeField = + deserializeMetadataCascadePolicyTypeField(val.type); const ownerEnterprise: undefined | MetadataCascadePolicyOwnerEnterpriseField = val.owner_enterprise == void 0 ? void 0 @@ -5542,10 +5514,7 @@ export function deserializeMetadataCascadePolicy( val.parent == void 0 ? void 0 : deserializeMetadataCascadePolicyParentField(val.parent); - const scope: undefined | MetadataCascadePolicyScopeField = - val.scope == void 0 - ? void 0 - : deserializeMetadataCascadePolicyScopeField(val.scope); + const scope: undefined | string = val.scope == void 0 ? void 0 : val.scope; const templateKey: undefined | string = val.templateKey == void 0 ? void 0 : val.templateKey; return { diff --git a/src/test/fileMetadata.generated.test.ts b/src/test/fileMetadata.generated.test.ts index a153b378..0f0b615b 100644 --- a/src/test/fileMetadata.generated.test.ts +++ b/src/test/fileMetadata.generated.test.ts @@ -1,29 +1,37 @@ -import { serializeFiles } from '../schemas.generated.js'; -import { deserializeFiles } from '../schemas.generated.js'; -import { serializeUploadFileRequestBodyArgAttributesField } from '../managers/uploads.generated.js'; -import { deserializeUploadFileRequestBodyArgAttributesField } from '../managers/uploads.generated.js'; -import { serializeUploadFileRequestBodyArgAttributesFieldParentField } from '../managers/uploads.generated.js'; -import { deserializeUploadFileRequestBodyArgAttributesFieldParentField } from '../managers/uploads.generated.js'; +import { serializeFileFull } from '../schemas.generated.js'; +import { deserializeFileFull } from '../schemas.generated.js'; import { serializeMetadatas } from '../schemas.generated.js'; import { deserializeMetadatas } from '../schemas.generated.js'; import { serializeMetadataFull } from '../schemas.generated.js'; import { deserializeMetadataFull } from '../schemas.generated.js'; +import { serializeCreateFileMetadataByIdScopeArg } from '../managers/fileMetadata.generated.js'; +import { deserializeCreateFileMetadataByIdScopeArg } from '../managers/fileMetadata.generated.js'; +import { serializeGetFileMetadataByIdScopeArg } from '../managers/fileMetadata.generated.js'; +import { deserializeGetFileMetadataByIdScopeArg } from '../managers/fileMetadata.generated.js'; +import { serializeUpdateFileMetadataByIdScopeArg } from '../managers/fileMetadata.generated.js'; +import { deserializeUpdateFileMetadataByIdScopeArg } from '../managers/fileMetadata.generated.js'; import { serializeUpdateFileMetadataByIdRequestBodyArg } from '../managers/fileMetadata.generated.js'; import { deserializeUpdateFileMetadataByIdRequestBodyArg } from '../managers/fileMetadata.generated.js'; import { serializeUpdateFileMetadataByIdRequestBodyArgOpField } from '../managers/fileMetadata.generated.js'; import { deserializeUpdateFileMetadataByIdRequestBodyArgOpField } from '../managers/fileMetadata.generated.js'; +import { serializeDeleteFileMetadataByIdScopeArg } from '../managers/fileMetadata.generated.js'; +import { deserializeDeleteFileMetadataByIdScopeArg } from '../managers/fileMetadata.generated.js'; import { BoxClient } from '../client.generated.js'; -import { Files } from '../schemas.generated.js'; -import { UploadFileRequestBodyArg } from '../managers/uploads.generated.js'; -import { UploadFileRequestBodyArgAttributesField } from '../managers/uploads.generated.js'; -import { UploadFileRequestBodyArgAttributesFieldParentField } from '../managers/uploads.generated.js'; +import { FileFull } from '../schemas.generated.js'; import { Metadatas } from '../schemas.generated.js'; import { MetadataFull } from '../schemas.generated.js'; +import { CreateFileMetadataByIdScopeArg } from '../managers/fileMetadata.generated.js'; +import { GetFileMetadataByIdScopeArg } from '../managers/fileMetadata.generated.js'; +import { UpdateFileMetadataByIdScopeArg } from '../managers/fileMetadata.generated.js'; import { UpdateFileMetadataByIdRequestBodyArg } from '../managers/fileMetadata.generated.js'; import { UpdateFileMetadataByIdRequestBodyArgOpField } from '../managers/fileMetadata.generated.js'; +import { DeleteFileMetadataByIdScopeArg } from '../managers/fileMetadata.generated.js'; import { generateByteStream } from '../utils.js'; import { getUuid } from '../utils.js'; import { getDefaultClient } from './commons.generated.js'; +import { uploadNewFile } from './commons.generated.js'; +import { toString } from '../utils.js'; +import { sdToJson } from '../json.js'; import { SerializedData } from '../json.js'; import { sdIsEmpty } from '../json.js'; import { sdIsBoolean } from '../json.js'; @@ -33,51 +41,39 @@ import { sdIsList } from '../json.js'; import { sdIsMap } from '../json.js'; const client: any = getDefaultClient(); test('testFileMetadata', async function testFileMetadata(): Promise { - const uploadedFiles: any = await client.uploads.uploadFile({ - attributes: { - name: getUuid(), - parent: { - id: '0', - } satisfies UploadFileRequestBodyArgAttributesFieldParentField, - } satisfies UploadFileRequestBodyArgAttributesField, - file: generateByteStream(256), - } satisfies UploadFileRequestBodyArg); - const fileId: any = uploadedFiles.entries![0].id; - const fileMetadata: any = await client.fileMetadata.getFileMetadata(fileId); + const file: any = await uploadNewFile(); + const fileMetadata: any = await client.fileMetadata.getFileMetadata(file.id); if (!(fileMetadata.entries!.length == 0)) { throw 'Assertion failed'; } - const scope: any = 'global'; - const template: any = 'properties'; - const data: any = { ['abc']: 'xyz' }; const createdMetadata: any = await client.fileMetadata.createFileMetadataById( - fileId, - scope, - template, - data + file.id, + 'global' as CreateFileMetadataByIdScopeArg, + 'properties', + { ['abc']: 'xyz' } ); - if (!(createdMetadata.template == template)) { + if (!((toString(createdMetadata.template) as string) == 'properties')) { throw 'Assertion failed'; } - if (!(createdMetadata.scope == scope)) { + if (!((toString(createdMetadata.scope) as string) == 'global')) { throw 'Assertion failed'; } if (!(createdMetadata.version == 0)) { throw 'Assertion failed'; } const receivedMetadata: any = await client.fileMetadata.getFileMetadataById( - fileId, - scope, - template + file.id, + 'global' as GetFileMetadataByIdScopeArg, + 'properties' ); - if (!(receivedMetadata.extraData!.abc == data.abc)) { + if (!(receivedMetadata.extraData!.abc == 'xyz')) { throw 'Assertion failed'; } const newValue: any = 'bar'; const updatedMetadata: any = await client.fileMetadata.updateFileMetadataById( - fileId, - scope, - template, + file.id, + 'global' as UpdateFileMetadataByIdScopeArg, + 'properties', [ { op: 'replace' as UpdateFileMetadataByIdRequestBodyArgOpField, @@ -87,14 +83,26 @@ test('testFileMetadata', async function testFileMetadata(): Promise { ] ); const receivedUpdatedMetadata: any = - await client.fileMetadata.getFileMetadataById(fileId, scope, template); + await client.fileMetadata.getFileMetadataById( + file.id, + 'global' as GetFileMetadataByIdScopeArg, + 'properties' + ); if (!(receivedUpdatedMetadata.extraData!.abc == newValue)) { throw 'Assertion failed'; } - await client.fileMetadata.deleteFileMetadataById(fileId, scope, template); + await client.fileMetadata.deleteFileMetadataById( + file.id, + 'global' as DeleteFileMetadataByIdScopeArg, + 'properties' + ); expect(async () => { - await client.fileMetadata.getFileMetadataById(fileId, scope, template); + await client.fileMetadata.getFileMetadataById( + file.id, + 'global' as GetFileMetadataByIdScopeArg, + 'properties' + ); }).rejects.toThrow(); - await client.files.deleteFileById(fileId); + await client.files.deleteFileById(file.id); }); export {}; diff --git a/src/test/folderMetadata.generated.test.ts b/src/test/folderMetadata.generated.test.ts index 502578b5..4c909c05 100644 --- a/src/test/folderMetadata.generated.test.ts +++ b/src/test/folderMetadata.generated.test.ts @@ -1,27 +1,36 @@ import { serializeFolderFull } from '../schemas.generated.js'; import { deserializeFolderFull } from '../schemas.generated.js'; -import { serializeCreateFolderRequestBodyArg } from '../managers/folders.generated.js'; -import { deserializeCreateFolderRequestBodyArg } from '../managers/folders.generated.js'; -import { serializeCreateFolderRequestBodyArgParentField } from '../managers/folders.generated.js'; -import { deserializeCreateFolderRequestBodyArgParentField } from '../managers/folders.generated.js'; import { serializeMetadatas } from '../schemas.generated.js'; import { deserializeMetadatas } from '../schemas.generated.js'; import { serializeMetadataFull } from '../schemas.generated.js'; import { deserializeMetadataFull } from '../schemas.generated.js'; +import { serializeCreateFolderMetadataByIdScopeArg } from '../managers/folderMetadata.generated.js'; +import { deserializeCreateFolderMetadataByIdScopeArg } from '../managers/folderMetadata.generated.js'; +import { serializeGetFolderMetadataByIdScopeArg } from '../managers/folderMetadata.generated.js'; +import { deserializeGetFolderMetadataByIdScopeArg } from '../managers/folderMetadata.generated.js'; +import { serializeUpdateFolderMetadataByIdScopeArg } from '../managers/folderMetadata.generated.js'; +import { deserializeUpdateFolderMetadataByIdScopeArg } from '../managers/folderMetadata.generated.js'; import { serializeUpdateFolderMetadataByIdRequestBodyArg } from '../managers/folderMetadata.generated.js'; import { deserializeUpdateFolderMetadataByIdRequestBodyArg } from '../managers/folderMetadata.generated.js'; import { serializeUpdateFolderMetadataByIdRequestBodyArgOpField } from '../managers/folderMetadata.generated.js'; import { deserializeUpdateFolderMetadataByIdRequestBodyArgOpField } from '../managers/folderMetadata.generated.js'; +import { serializeDeleteFolderMetadataByIdScopeArg } from '../managers/folderMetadata.generated.js'; +import { deserializeDeleteFolderMetadataByIdScopeArg } from '../managers/folderMetadata.generated.js'; import { BoxClient } from '../client.generated.js'; import { FolderFull } from '../schemas.generated.js'; -import { CreateFolderRequestBodyArg } from '../managers/folders.generated.js'; -import { CreateFolderRequestBodyArgParentField } from '../managers/folders.generated.js'; import { Metadatas } from '../schemas.generated.js'; import { MetadataFull } from '../schemas.generated.js'; +import { CreateFolderMetadataByIdScopeArg } from '../managers/folderMetadata.generated.js'; +import { GetFolderMetadataByIdScopeArg } from '../managers/folderMetadata.generated.js'; +import { UpdateFolderMetadataByIdScopeArg } from '../managers/folderMetadata.generated.js'; import { UpdateFolderMetadataByIdRequestBodyArg } from '../managers/folderMetadata.generated.js'; import { UpdateFolderMetadataByIdRequestBodyArgOpField } from '../managers/folderMetadata.generated.js'; +import { DeleteFolderMetadataByIdScopeArg } from '../managers/folderMetadata.generated.js'; import { getUuid } from '../utils.js'; import { getDefaultClient } from './commons.generated.js'; +import { createNewFolder } from './commons.generated.js'; +import { toString } from '../utils.js'; +import { sdToJson } from '../json.js'; import { SerializedData } from '../json.js'; import { sdIsEmpty } from '../json.js'; import { sdIsBoolean } from '../json.js'; @@ -31,30 +40,24 @@ import { sdIsList } from '../json.js'; import { sdIsMap } from '../json.js'; const client: any = getDefaultClient(); test('testFolderMetadata', async function testFolderMetadata(): Promise { - const folder: any = await client.folders.createFolder({ - name: getUuid(), - parent: { id: '0' } satisfies CreateFolderRequestBodyArgParentField, - } satisfies CreateFolderRequestBodyArg); + const folder: any = await createNewFolder(); const folderMetadata: any = await client.folderMetadata.getFolderMetadata( folder.id ); if (!(folderMetadata.entries!.length == 0)) { throw 'Assertion failed'; } - const scope: any = 'global'; - const template: any = 'properties'; - const data: any = { ['abc']: 'xyz' }; const createdMetadata: any = await client.folderMetadata.createFolderMetadataById( folder.id, - scope, - template, - data + 'global' as CreateFolderMetadataByIdScopeArg, + 'properties', + { ['abc']: 'xyz' } ); - if (!(createdMetadata.template == template)) { + if (!((toString(createdMetadata.template) as string) == 'properties')) { throw 'Assertion failed'; } - if (!(createdMetadata.scope == scope)) { + if (!((toString(createdMetadata.scope) as string) == 'global')) { throw 'Assertion failed'; } if (!(createdMetadata.version == 0)) { @@ -63,18 +66,18 @@ test('testFolderMetadata', async function testFolderMetadata(): Promise { const receivedMetadata: any = await client.folderMetadata.getFolderMetadataById( folder.id, - scope, - template + 'global' as GetFolderMetadataByIdScopeArg, + 'properties' ); - if (!(receivedMetadata.extraData!.abc == data.abc)) { + if (!(receivedMetadata.extraData!.abc == 'xyz')) { throw 'Assertion failed'; } const newValue: any = 'bar'; const updatedMetadata: any = await client.folderMetadata.updateFolderMetadataById( folder.id, - scope, - template, + 'global' as UpdateFolderMetadataByIdScopeArg, + 'properties', [ { op: 'replace' as UpdateFolderMetadataByIdRequestBodyArgOpField, @@ -86,22 +89,22 @@ test('testFolderMetadata', async function testFolderMetadata(): Promise { const receivedUpdatedMetadata: any = await client.folderMetadata.getFolderMetadataById( folder.id, - scope, - template + 'global' as GetFolderMetadataByIdScopeArg, + 'properties' ); if (!(receivedUpdatedMetadata.extraData!.abc == newValue)) { throw 'Assertion failed'; } await client.folderMetadata.deleteFolderMetadataById( folder.id, - scope, - template + 'global' as DeleteFolderMetadataByIdScopeArg, + 'properties' ); expect(async () => { await client.folderMetadata.getFolderMetadataById( folder.id, - scope, - template + 'global' as GetFolderMetadataByIdScopeArg, + 'properties' ); }).rejects.toThrow(); await client.folders.deleteFolderById(folder.id); diff --git a/src/test/invites.generated.test.ts b/src/test/invites.generated.test.ts new file mode 100644 index 00000000..e38da47c --- /dev/null +++ b/src/test/invites.generated.test.ts @@ -0,0 +1,61 @@ +import { serializeUserFull } from '../schemas.generated.js'; +import { deserializeUserFull } from '../schemas.generated.js'; +import { serializeInvite } from '../schemas.generated.js'; +import { deserializeInvite } from '../schemas.generated.js'; +import { serializeCreateInviteRequestBodyArg } from '../managers/invites.generated.js'; +import { deserializeCreateInviteRequestBodyArg } from '../managers/invites.generated.js'; +import { serializeCreateInviteRequestBodyArgEnterpriseField } from '../managers/invites.generated.js'; +import { deserializeCreateInviteRequestBodyArgEnterpriseField } from '../managers/invites.generated.js'; +import { serializeCreateInviteRequestBodyArgActionableByField } from '../managers/invites.generated.js'; +import { deserializeCreateInviteRequestBodyArgActionableByField } from '../managers/invites.generated.js'; +import { BoxClient } from '../client.generated.js'; +import { UserFull } from '../schemas.generated.js'; +import { GetUserMeQueryParamsArg } from '../managers/users.generated.js'; +import { Invite } from '../schemas.generated.js'; +import { CreateInviteRequestBodyArg } from '../managers/invites.generated.js'; +import { CreateInviteRequestBodyArgEnterpriseField } from '../managers/invites.generated.js'; +import { CreateInviteRequestBodyArgActionableByField } from '../managers/invites.generated.js'; +import { getUuid } from '../utils.js'; +import { getEnvVar } from '../utils.js'; +import { getDefaultClientAsUser } from './commons.generated.js'; +import { toString } from '../utils.js'; +import { sdToJson } from '../json.js'; +import { SerializedData } from '../json.js'; +import { sdIsEmpty } from '../json.js'; +import { sdIsBoolean } from '../json.js'; +import { sdIsNumber } from '../json.js'; +import { sdIsString } from '../json.js'; +import { sdIsList } from '../json.js'; +import { sdIsMap } from '../json.js'; +test('testInvites', async function testInvites(): Promise { + const userId: string = getEnvVar('USER_ID'); + const client: BoxClient = await getDefaultClientAsUser(userId); + const currentUser: UserFull = await client.users.getUserMe({ + fields: ['enterprise' as ''], + } satisfies GetUserMeQueryParamsArg); + const email: string = getEnvVar('BOX_EXTERNAL_USER_EMAIL'); + const invitation: Invite = await client.invites.createInvite({ + enterprise: { + id: currentUser.enterprise!.id!, + } satisfies CreateInviteRequestBodyArgEnterpriseField, + actionableBy: { + login: email, + } satisfies CreateInviteRequestBodyArgActionableByField, + } satisfies CreateInviteRequestBodyArg); + if (!((toString(invitation.type) as string) == 'invite')) { + throw 'Assertion failed'; + } + if (!(invitation.invitedTo!.id == currentUser.enterprise!.id)) { + throw 'Assertion failed'; + } + if (!(invitation.actionableBy!.login == email)) { + throw 'Assertion failed'; + } + const getInvitation: Invite = await client.invites.getInviteById( + invitation.id + ); + if (!(getInvitation.id == invitation.id)) { + throw 'Assertion failed'; + } +}); +export {}; diff --git a/src/test/metadataTemplates.generated.test.ts b/src/test/metadataTemplates.generated.test.ts index 6e735630..4579bba4 100644 --- a/src/test/metadataTemplates.generated.test.ts +++ b/src/test/metadataTemplates.generated.test.ts @@ -1,27 +1,50 @@ import { serializeMetadataTemplate } from '../schemas.generated.js'; import { deserializeMetadataTemplate } from '../schemas.generated.js'; -import { serializeCreateMetadataTemplateSchemaRequestBodyArg } from '../managers/metadataTemplates.generated.js'; -import { deserializeCreateMetadataTemplateSchemaRequestBodyArg } from '../managers/metadataTemplates.generated.js'; -import { serializeCreateMetadataTemplateSchemaRequestBodyArgFieldsField } from '../managers/metadataTemplates.generated.js'; -import { deserializeCreateMetadataTemplateSchemaRequestBodyArgFieldsField } from '../managers/metadataTemplates.generated.js'; -import { serializeCreateMetadataTemplateSchemaRequestBodyArgFieldsFieldTypeField } from '../managers/metadataTemplates.generated.js'; -import { deserializeCreateMetadataTemplateSchemaRequestBodyArgFieldsFieldTypeField } from '../managers/metadataTemplates.generated.js'; -import { serializeGetMetadataTemplateSchemaScopeArg } from '../managers/metadataTemplates.generated.js'; -import { deserializeGetMetadataTemplateSchemaScopeArg } from '../managers/metadataTemplates.generated.js'; +import { serializeCreateMetadataTemplateRequestBodyArg } from '../managers/metadataTemplates.generated.js'; +import { deserializeCreateMetadataTemplateRequestBodyArg } from '../managers/metadataTemplates.generated.js'; +import { serializeCreateMetadataTemplateRequestBodyArgFieldsField } from '../managers/metadataTemplates.generated.js'; +import { deserializeCreateMetadataTemplateRequestBodyArgFieldsField } from '../managers/metadataTemplates.generated.js'; +import { serializeCreateMetadataTemplateRequestBodyArgFieldsFieldTypeField } from '../managers/metadataTemplates.generated.js'; +import { deserializeCreateMetadataTemplateRequestBodyArgFieldsFieldTypeField } from '../managers/metadataTemplates.generated.js'; +import { serializeUpdateMetadataTemplateScopeArg } from '../managers/metadataTemplates.generated.js'; +import { deserializeUpdateMetadataTemplateScopeArg } from '../managers/metadataTemplates.generated.js'; +import { serializeUpdateMetadataTemplateRequestBodyArg } from '../managers/metadataTemplates.generated.js'; +import { deserializeUpdateMetadataTemplateRequestBodyArg } from '../managers/metadataTemplates.generated.js'; +import { serializeUpdateMetadataTemplateRequestBodyArgOpField } from '../managers/metadataTemplates.generated.js'; +import { deserializeUpdateMetadataTemplateRequestBodyArgOpField } from '../managers/metadataTemplates.generated.js'; +import { serializeGetMetadataTemplateScopeArg } from '../managers/metadataTemplates.generated.js'; +import { deserializeGetMetadataTemplateScopeArg } from '../managers/metadataTemplates.generated.js'; import { serializeMetadataTemplates } from '../schemas.generated.js'; import { deserializeMetadataTemplates } from '../schemas.generated.js'; -import { serializeDeleteMetadataTemplateSchemaScopeArg } from '../managers/metadataTemplates.generated.js'; -import { deserializeDeleteMetadataTemplateSchemaScopeArg } from '../managers/metadataTemplates.generated.js'; +import { serializeDeleteMetadataTemplateScopeArg } from '../managers/metadataTemplates.generated.js'; +import { deserializeDeleteMetadataTemplateScopeArg } from '../managers/metadataTemplates.generated.js'; +import { serializeFileFull } from '../schemas.generated.js'; +import { deserializeFileFull } from '../schemas.generated.js'; +import { serializeMetadataFull } from '../schemas.generated.js'; +import { deserializeMetadataFull } from '../schemas.generated.js'; +import { serializeCreateFileMetadataByIdScopeArg } from '../managers/fileMetadata.generated.js'; +import { deserializeCreateFileMetadataByIdScopeArg } from '../managers/fileMetadata.generated.js'; +import { serializeDeleteFileMetadataByIdScopeArg } from '../managers/fileMetadata.generated.js'; +import { deserializeDeleteFileMetadataByIdScopeArg } from '../managers/fileMetadata.generated.js'; import { BoxClient } from '../client.generated.js'; import { MetadataTemplate } from '../schemas.generated.js'; -import { CreateMetadataTemplateSchemaRequestBodyArg } from '../managers/metadataTemplates.generated.js'; -import { CreateMetadataTemplateSchemaRequestBodyArgFieldsField } from '../managers/metadataTemplates.generated.js'; -import { CreateMetadataTemplateSchemaRequestBodyArgFieldsFieldTypeField } from '../managers/metadataTemplates.generated.js'; -import { GetMetadataTemplateSchemaScopeArg } from '../managers/metadataTemplates.generated.js'; +import { CreateMetadataTemplateRequestBodyArg } from '../managers/metadataTemplates.generated.js'; +import { CreateMetadataTemplateRequestBodyArgFieldsField } from '../managers/metadataTemplates.generated.js'; +import { CreateMetadataTemplateRequestBodyArgFieldsFieldTypeField } from '../managers/metadataTemplates.generated.js'; +import { UpdateMetadataTemplateScopeArg } from '../managers/metadataTemplates.generated.js'; +import { UpdateMetadataTemplateRequestBodyArg } from '../managers/metadataTemplates.generated.js'; +import { UpdateMetadataTemplateRequestBodyArgOpField } from '../managers/metadataTemplates.generated.js'; +import { GetMetadataTemplateScopeArg } from '../managers/metadataTemplates.generated.js'; import { MetadataTemplates } from '../schemas.generated.js'; -import { DeleteMetadataTemplateSchemaScopeArg } from '../managers/metadataTemplates.generated.js'; +import { DeleteMetadataTemplateScopeArg } from '../managers/metadataTemplates.generated.js'; +import { FileFull } from '../schemas.generated.js'; +import { MetadataFull } from '../schemas.generated.js'; +import { CreateFileMetadataByIdScopeArg } from '../managers/fileMetadata.generated.js'; +import { GetMetadataTemplatesByInstanceIdQueryParamsArg } from '../managers/metadataTemplates.generated.js'; +import { DeleteFileMetadataByIdScopeArg } from '../managers/fileMetadata.generated.js'; import { getUuid } from '../utils.js'; import { getDefaultClient } from './commons.generated.js'; +import { uploadNewFile } from './commons.generated.js'; import { SerializedData } from '../json.js'; import { sdIsEmpty } from '../json.js'; import { sdIsBoolean } from '../json.js'; @@ -32,26 +55,25 @@ import { sdIsMap } from '../json.js'; const client: any = getDefaultClient(); test('testMetadataTemplates', async function testMetadataTemplates(): Promise { const templateKey: any = ''.concat('key', getUuid()) as string; - const template: any = - await client.metadataTemplates.createMetadataTemplateSchema({ - scope: 'enterprise', - displayName: templateKey, - templateKey: templateKey, - fields: [ - { - type: 'string' as CreateMetadataTemplateSchemaRequestBodyArgFieldsFieldTypeField, - key: 'testName', - displayName: 'testName', - } satisfies CreateMetadataTemplateSchemaRequestBodyArgFieldsField, - ], - } satisfies CreateMetadataTemplateSchemaRequestBodyArg); + const template: any = await client.metadataTemplates.createMetadataTemplate({ + scope: 'enterprise', + displayName: templateKey, + templateKey: templateKey, + fields: [ + { + type: 'string' as CreateMetadataTemplateRequestBodyArgFieldsFieldTypeField, + key: 'testName', + displayName: 'testName', + } satisfies CreateMetadataTemplateRequestBodyArgFieldsField, + ], + } satisfies CreateMetadataTemplateRequestBodyArg); if (!(template.templateKey == templateKey)) { throw 'Assertion failed'; } if (!(template.displayName == templateKey)) { throw 'Assertion failed'; } - if (!(template.fields.length == 1)) { + if (!(template.fields!.length == 1)) { throw 'Assertion failed'; } if (!(template.fields![0].key == 'testName')) { @@ -60,38 +82,105 @@ test('testMetadataTemplates', async function testMetadataTemplates(): Promise 0)) { throw 'Assertion failed'; } const globalMetadataTemplates: any = - await client.metadataTemplates.getMetadataTemplateGlobal(); + await client.metadataTemplates.getGlobalMetadataTemplates(); if (!(globalMetadataTemplates.entries!.length > 0)) { throw 'Assertion failed'; } - await client.metadataTemplates.deleteMetadataTemplateSchema( - 'enterprise' as DeleteMetadataTemplateSchemaScopeArg, + await client.metadataTemplates.deleteMetadataTemplate( + 'enterprise' as DeleteMetadataTemplateScopeArg, template.templateKey! ); expect(async () => { - await client.metadataTemplates.deleteMetadataTemplateSchema( - 'enterprise' as DeleteMetadataTemplateSchemaScopeArg, + await client.metadataTemplates.deleteMetadataTemplate( + 'enterprise' as DeleteMetadataTemplateScopeArg, template.templateKey! ); }).rejects.toThrow(); }); +test('testGetMetadataTemplateByInstance', async function testGetMetadataTemplateByInstance(): Promise { + const file: any = await uploadNewFile(); + const templateKey: any = ''.concat('key', getUuid()) as string; + const template: any = await client.metadataTemplates.createMetadataTemplate({ + scope: 'enterprise', + displayName: templateKey, + templateKey: templateKey, + fields: [ + { + type: 'string' as CreateMetadataTemplateRequestBodyArgFieldsFieldTypeField, + key: 'testName', + displayName: 'testName', + } satisfies CreateMetadataTemplateRequestBodyArgFieldsField, + ], + } satisfies CreateMetadataTemplateRequestBodyArg); + const createdMetadataInstance: any = + await client.fileMetadata.createFileMetadataById( + file.id, + 'enterprise' as CreateFileMetadataByIdScopeArg, + templateKey, + { ['testName']: 'xyz' } + ); + const metadataTemplates: any = + await client.metadataTemplates.getMetadataTemplatesByInstanceId({ + metadataInstanceId: createdMetadataInstance.id!, + } satisfies GetMetadataTemplatesByInstanceIdQueryParamsArg); + if (!(metadataTemplates.entries!.length == 1)) { + throw 'Assertion failed'; + } + if (!(metadataTemplates.entries![0].displayName == templateKey)) { + throw 'Assertion failed'; + } + if (!(metadataTemplates.entries![0].templateKey == templateKey)) { + throw 'Assertion failed'; + } + await client.fileMetadata.deleteFileMetadataById( + file.id, + 'enterprise' as DeleteFileMetadataByIdScopeArg, + templateKey + ); + await client.metadataTemplates.deleteMetadataTemplate( + 'enterprise' as DeleteMetadataTemplateScopeArg, + template.templateKey! + ); + await client.files.deleteFileById(file.id); +}); export {}; diff --git a/src/test/search.generated.test.ts b/src/test/search.generated.test.ts index 49ac96c4..9a6834ad 100644 --- a/src/test/search.generated.test.ts +++ b/src/test/search.generated.test.ts @@ -1,11 +1,11 @@ import { serializeMetadataTemplate } from '../schemas.generated.js'; import { deserializeMetadataTemplate } from '../schemas.generated.js'; -import { serializeCreateMetadataTemplateSchemaRequestBodyArg } from '../managers/metadataTemplates.generated.js'; -import { deserializeCreateMetadataTemplateSchemaRequestBodyArg } from '../managers/metadataTemplates.generated.js'; -import { serializeCreateMetadataTemplateSchemaRequestBodyArgFieldsField } from '../managers/metadataTemplates.generated.js'; -import { deserializeCreateMetadataTemplateSchemaRequestBodyArgFieldsField } from '../managers/metadataTemplates.generated.js'; -import { serializeCreateMetadataTemplateSchemaRequestBodyArgFieldsFieldTypeField } from '../managers/metadataTemplates.generated.js'; -import { deserializeCreateMetadataTemplateSchemaRequestBodyArgFieldsFieldTypeField } from '../managers/metadataTemplates.generated.js'; +import { serializeCreateMetadataTemplateRequestBodyArg } from '../managers/metadataTemplates.generated.js'; +import { deserializeCreateMetadataTemplateRequestBodyArg } from '../managers/metadataTemplates.generated.js'; +import { serializeCreateMetadataTemplateRequestBodyArgFieldsField } from '../managers/metadataTemplates.generated.js'; +import { deserializeCreateMetadataTemplateRequestBodyArgFieldsField } from '../managers/metadataTemplates.generated.js'; +import { serializeCreateMetadataTemplateRequestBodyArgFieldsFieldTypeField } from '../managers/metadataTemplates.generated.js'; +import { deserializeCreateMetadataTemplateRequestBodyArgFieldsFieldTypeField } from '../managers/metadataTemplates.generated.js'; import { serializeFiles } from '../schemas.generated.js'; import { deserializeFiles } from '../schemas.generated.js'; import { serializeUploadFileRequestBodyArgAttributesField } from '../managers/uploads.generated.js'; @@ -22,8 +22,8 @@ import { serializeMetadataQueryResults } from '../schemas.generated.js'; import { deserializeMetadataQueryResults } from '../schemas.generated.js'; import { serializeMetadataQuery } from '../schemas.generated.js'; import { deserializeMetadataQuery } from '../schemas.generated.js'; -import { serializeDeleteMetadataTemplateSchemaScopeArg } from '../managers/metadataTemplates.generated.js'; -import { deserializeDeleteMetadataTemplateSchemaScopeArg } from '../managers/metadataTemplates.generated.js'; +import { serializeDeleteMetadataTemplateScopeArg } from '../managers/metadataTemplates.generated.js'; +import { deserializeDeleteMetadataTemplateScopeArg } from '../managers/metadataTemplates.generated.js'; import { serializeMetadataQueryIndices } from '../schemas.generated.js'; import { deserializeMetadataQueryIndices } from '../schemas.generated.js'; import { serializeGetMetadataQueryIndicesQueryParamsArgScopeField } from '../managers/search.generated.js'; @@ -34,9 +34,9 @@ import { serializeGetSearchQueryParamsArgTrashContentField } from '../managers/s import { deserializeGetSearchQueryParamsArgTrashContentField } from '../managers/search.generated.js'; import { BoxClient } from '../client.generated.js'; import { MetadataTemplate } from '../schemas.generated.js'; -import { CreateMetadataTemplateSchemaRequestBodyArg } from '../managers/metadataTemplates.generated.js'; -import { CreateMetadataTemplateSchemaRequestBodyArgFieldsField } from '../managers/metadataTemplates.generated.js'; -import { CreateMetadataTemplateSchemaRequestBodyArgFieldsFieldTypeField } from '../managers/metadataTemplates.generated.js'; +import { CreateMetadataTemplateRequestBodyArg } from '../managers/metadataTemplates.generated.js'; +import { CreateMetadataTemplateRequestBodyArgFieldsField } from '../managers/metadataTemplates.generated.js'; +import { CreateMetadataTemplateRequestBodyArgFieldsFieldTypeField } from '../managers/metadataTemplates.generated.js'; import { Files } from '../schemas.generated.js'; import { UploadFileRequestBodyArg } from '../managers/uploads.generated.js'; import { UploadFileRequestBodyArgAttributesField } from '../managers/uploads.generated.js'; @@ -46,7 +46,7 @@ import { MetadataFull } from '../schemas.generated.js'; import { CreateFileMetadataByIdScopeArg } from '../managers/fileMetadata.generated.js'; import { MetadataQueryResults } from '../schemas.generated.js'; import { MetadataQuery } from '../schemas.generated.js'; -import { DeleteMetadataTemplateSchemaScopeArg } from '../managers/metadataTemplates.generated.js'; +import { DeleteMetadataTemplateScopeArg } from '../managers/metadataTemplates.generated.js'; import { MetadataQueryIndices } from '../schemas.generated.js'; import { GetMetadataQueryIndicesQueryParamsArg } from '../managers/search.generated.js'; import { GetMetadataQueryIndicesQueryParamsArgScopeField } from '../managers/search.generated.js'; @@ -68,19 +68,18 @@ import { sdIsMap } from '../json.js'; const client: any = getDefaultClient(); test('testCreateMetaDataQueryExecuteRead', async function testCreateMetaDataQueryExecuteRead(): Promise { const templateKey: any = ''.concat('key', getUuid()) as string; - const template: any = - await client.metadataTemplates.createMetadataTemplateSchema({ - scope: 'enterprise', - displayName: templateKey, - templateKey: templateKey, - fields: [ - { - type: 'float' as CreateMetadataTemplateSchemaRequestBodyArgFieldsFieldTypeField, - key: 'testName', - displayName: 'testName', - } satisfies CreateMetadataTemplateSchemaRequestBodyArgFieldsField, - ], - } satisfies CreateMetadataTemplateSchemaRequestBodyArg); + const template: any = await client.metadataTemplates.createMetadataTemplate({ + scope: 'enterprise', + displayName: templateKey, + templateKey: templateKey, + fields: [ + { + type: 'float' as CreateMetadataTemplateRequestBodyArgFieldsFieldTypeField, + key: 'testName', + displayName: 'testName', + } satisfies CreateMetadataTemplateRequestBodyArgFieldsField, + ], + } satisfies CreateMetadataTemplateRequestBodyArg); if (!(template.templateKey == templateKey)) { throw 'Assertion failed'; } @@ -120,27 +119,26 @@ test('testCreateMetaDataQueryExecuteRead', async function testCreateMetaDataQuer if (!(query.entries!.length >= 0)) { throw 'Assertion failed'; } - await client.metadataTemplates.deleteMetadataTemplateSchema( - 'enterprise' as DeleteMetadataTemplateSchemaScopeArg, + await client.metadataTemplates.deleteMetadataTemplate( + 'enterprise' as DeleteMetadataTemplateScopeArg, template.templateKey ); await client.files.deleteFileById(file.id); }); test('testGetMetadataQueryIndices', async function testGetMetadataQueryIndices(): Promise { const templateKey: any = ''.concat('key', getUuid()) as string; - const template: any = - await client.metadataTemplates.createMetadataTemplateSchema({ - scope: 'enterprise', - displayName: templateKey, - templateKey: templateKey, - fields: [ - { - type: 'string' as CreateMetadataTemplateSchemaRequestBodyArgFieldsFieldTypeField, - key: 'testName', - displayName: 'testName', - } satisfies CreateMetadataTemplateSchemaRequestBodyArgFieldsField, - ], - } satisfies CreateMetadataTemplateSchemaRequestBodyArg); + const template: any = await client.metadataTemplates.createMetadataTemplate({ + scope: 'enterprise', + displayName: templateKey, + templateKey: templateKey, + fields: [ + { + type: 'string' as CreateMetadataTemplateRequestBodyArgFieldsFieldTypeField, + key: 'testName', + displayName: 'testName', + } satisfies CreateMetadataTemplateRequestBodyArgFieldsField, + ], + } satisfies CreateMetadataTemplateRequestBodyArg); if (!(template.templateKey == templateKey)) { throw 'Assertion failed'; } @@ -151,8 +149,8 @@ test('testGetMetadataQueryIndices', async function testGetMetadataQueryIndices() if (!(indices.entries!.length >= 0)) { throw 'Assertion failed'; } - await client.metadataTemplates.deleteMetadataTemplateSchema( - 'enterprise' as DeleteMetadataTemplateSchemaScopeArg, + await client.metadataTemplates.deleteMetadataTemplate( + 'enterprise' as DeleteMetadataTemplateScopeArg, template.templateKey ); }); diff --git a/src/test/shieldInformationBarriers.generated.test.ts b/src/test/shieldInformationBarriers.generated.test.ts new file mode 100644 index 00000000..b1d54144 --- /dev/null +++ b/src/test/shieldInformationBarriers.generated.test.ts @@ -0,0 +1,93 @@ +import { serializeShieldInformationBarriers } from '../schemas.generated.js'; +import { deserializeShieldInformationBarriers } from '../schemas.generated.js'; +import { serializeCreateShieldInformationBarrierRequestBodyArg } from '../managers/shieldInformationBarriers.generated.js'; +import { deserializeCreateShieldInformationBarrierRequestBodyArg } from '../managers/shieldInformationBarriers.generated.js'; +import { serializeEnterpriseBase } from '../schemas.generated.js'; +import { deserializeEnterpriseBase } from '../schemas.generated.js'; +import { serializeEnterpriseBaseTypeField } from '../schemas.generated.js'; +import { deserializeEnterpriseBaseTypeField } from '../schemas.generated.js'; +import { serializeCreateShieldInformationBarrierChangeStatusRequestBodyArg } from '../managers/shieldInformationBarriers.generated.js'; +import { deserializeCreateShieldInformationBarrierChangeStatusRequestBodyArg } from '../managers/shieldInformationBarriers.generated.js'; +import { serializeCreateShieldInformationBarrierChangeStatusRequestBodyArgStatusField } from '../managers/shieldInformationBarriers.generated.js'; +import { deserializeCreateShieldInformationBarrierChangeStatusRequestBodyArgStatusField } from '../managers/shieldInformationBarriers.generated.js'; +import { serializeShieldInformationBarrier } from '../schemas.generated.js'; +import { deserializeShieldInformationBarrier } from '../schemas.generated.js'; +import { ShieldInformationBarriers } from '../schemas.generated.js'; +import { CreateShieldInformationBarrierRequestBodyArg } from '../managers/shieldInformationBarriers.generated.js'; +import { EnterpriseBase } from '../schemas.generated.js'; +import { EnterpriseBaseTypeField } from '../schemas.generated.js'; +import { CreateShieldInformationBarrierChangeStatusRequestBodyArg } from '../managers/shieldInformationBarriers.generated.js'; +import { CreateShieldInformationBarrierChangeStatusRequestBodyArgStatusField } from '../managers/shieldInformationBarriers.generated.js'; +import { getEnvVar } from '../utils.js'; +import { getDefaultClientAsUser } from './commons.generated.js'; +import { ShieldInformationBarrier } from '../schemas.generated.js'; +import { BoxClient } from '../client.generated.js'; +import { toString } from '../utils.js'; +import { sdToJson } from '../json.js'; +import { SerializedData } from '../json.js'; +import { sdIsEmpty } from '../json.js'; +import { sdIsBoolean } from '../json.js'; +import { sdIsNumber } from '../json.js'; +import { sdIsString } from '../json.js'; +import { sdIsList } from '../json.js'; +import { sdIsMap } from '../json.js'; +export async function getOrCreateShieldInformationBarrier( + client: BoxClient, + enterpriseId: string +): Promise { + const barriers: ShieldInformationBarriers = + await client.shieldInformationBarriers.getShieldInformationBarriers(); + const numberOfBarriers: number = barriers.entries!.length; + if (numberOfBarriers == 0) { + return await client.shieldInformationBarriers.createShieldInformationBarrier( + { + enterprise: { + id: enterpriseId, + type: 'enterprise' as EnterpriseBaseTypeField, + } satisfies EnterpriseBase, + } satisfies CreateShieldInformationBarrierRequestBodyArg + ); + } + return barriers.entries![numberOfBarriers - 1]; +} +test('testShieldInformationBarriers', async function testShieldInformationBarriers(): Promise { + const client: BoxClient = await getDefaultClientAsUser(getEnvVar('USER_ID')); + const enterpriseId: string = getEnvVar('ENTERPRISE_ID'); + const barrier: ShieldInformationBarrier = + await getOrCreateShieldInformationBarrier(client, enterpriseId); + if (!((toString(barrier.status!) as string) == 'draft')) { + throw 'Assertion failed'; + } + if (!((toString(barrier.type!) as string) == 'shield_information_barrier')) { + throw 'Assertion failed'; + } + if (!(barrier.enterprise!.id == enterpriseId)) { + throw 'Assertion failed'; + } + if (!((toString(barrier.enterprise!.type) as string) == 'enterprise')) { + throw 'Assertion failed'; + } + const barrierId: string = barrier.id!; + const barrierFromApi: ShieldInformationBarrier = + await client.shieldInformationBarriers.getShieldInformationBarrierById( + barrierId + ); + if (!(barrierFromApi.id! == barrierId)) { + throw 'Assertion failed'; + } + const barriers: ShieldInformationBarriers = + await client.shieldInformationBarriers.getShieldInformationBarriers(); + if (!(barriers.entries!.length == 1)) { + throw 'Assertion failed'; + } + expect(async () => { + await client.shieldInformationBarriers.createShieldInformationBarrierChangeStatus( + { + id: barrierId, + status: + 'disabled' as CreateShieldInformationBarrierChangeStatusRequestBodyArgStatusField, + } satisfies CreateShieldInformationBarrierChangeStatusRequestBodyArg + ); + }).rejects.toThrow(); +}); +export {}; diff --git a/src/utils.ts b/src/utils.ts index 3b3c1baa..8d2dfaca 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,4 +1,5 @@ -import { Readable } from 'stream'; +import { Buffer } from 'buffer'; +import type { Readable } from 'stream'; import { v4 as uuidv4 } from 'uuid'; export function isBrowser() { @@ -51,9 +52,9 @@ export class Hash { this.#chunks = new Uint8Array(); if (isBrowser()) { this.#hash = undefined; - return; + } else { + this.#hash = eval('require')('crypto').createHash(algorithm); } - this.#hash = eval('require')('crypto').createHash(algorithm); } updateHash(data: Buffer) { @@ -106,12 +107,21 @@ export function generateByteBuffer(size: number): Buffer { return crypto.randomBytes(size); } -export function generateByteStreamFromBuffer(buffer: Buffer): Readable { - return Readable.from(buffer); +export function generateByteStreamFromBuffer( + buffer: Buffer | ArrayBuffer +): Readable { + return isBrowser() + ? new ReadableStream({ + start(controller) { + controller.enqueue(new Uint8Array(buffer)); + controller.close(); + }, + }) + : eval('require')('stream').Readable.from(Buffer.from(buffer)); } export function generateByteStream(size: number): Readable { - return Readable.from(generateByteBuffer(size)); + return generateByteStreamFromBuffer(generateByteBuffer(size)); } export function bufferEquals(buffer1: Buffer, buffer2: Buffer): boolean { @@ -123,7 +133,20 @@ export function bufferLength(buffer: Buffer): number { } export function decodeBase64ByteStream(data: string): Readable { - return Readable.from(Buffer.from(data, 'base64')); + return isBrowser() + ? new ReadableStream({ + start(controller) { + const decodedStr = atob(data); + const buffer = new ArrayBuffer(decodedStr.length); + const array = new Uint8Array(buffer); + for (let i = 0; i < decodedStr.length; i++) { + array[i] = decodedStr.charCodeAt(i); + } + controller.enqueue(array); + controller.close(); + }, + }) + : eval('require')('stream').Readable.from(Buffer.from(data, 'base64')); } export async function readByteStream(byteStream: Readable) { @@ -155,7 +178,9 @@ export async function* iterateChunks( let start = 0; while (totalSize >= chunkSize) { - yield Readable.from(buffer.subarray(start, start + chunkSize)); + yield generateByteStreamFromBuffer( + buffer.subarray(start, start + chunkSize) + ); start += chunkSize; totalSize -= chunkSize; } @@ -164,7 +189,7 @@ export async function* iterateChunks( } if (totalSize > 0) { - yield Readable.from(Buffer.concat(buffers)); + yield generateByteStreamFromBuffer(Buffer.concat(buffers)); } } diff --git a/tsconfig.rollup.json b/tsconfig.rollup.json new file mode 100644 index 00000000..b9d47a11 --- /dev/null +++ b/tsconfig.rollup.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "target": "es6", + "module": "ESNext", + "declaration": true, + "sourceMap": true, + "outDir": "lib", + "isolatedModules": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "src/__tests__"] +}