diff --git a/.stats.yml b/.stats.yml index e396c3c..99e9dfc 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,2 +1,2 @@ -configured_endpoints: 15 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/writerai%2Fwriter-e54b835d1d64d37343017f4919c60998496a1b2b5c8e0c67af82093efc613f2f.yml +configured_endpoints: 12 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/writerai%2Fwriter-eccf2e27a91b41489a70fdbe1253c1142da0f2f2d1e84267b037d6b6af0b26dd.yml diff --git a/api.md b/api.md index 6db6115..75a1a6c 100644 --- a/api.md +++ b/api.md @@ -55,12 +55,8 @@ Methods: Types: - File -- FileDeleteResponse Methods: -- client.files.retrieve(fileId) -> File - client.files.list({ ...params }) -> FilesCursorPage -- client.files.delete(fileId) -> FileDeleteResponse -- client.files.download(fileId) -> Response - client.files.upload({ ...params }) -> File diff --git a/package.json b/package.json index 8d5a514..a55fceb 100644 --- a/package.json +++ b/package.json @@ -26,11 +26,13 @@ "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", + "@types/qs": "^6.9.7", "abort-controller": "^3.0.0", "agentkeepalive": "^4.2.1", "form-data-encoder": "1.7.2", "formdata-node": "^4.3.2", "node-fetch": "^2.6.7", + "qs": "^6.10.3", "web-streams-polyfill": "^3.2.1" }, "devDependencies": { diff --git a/src/index.ts b/src/index.ts index b70c192..c3d2dc4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,6 +3,7 @@ import * as Errors from './error'; import * as Uploads from './uploads'; import { type Agent } from './_shims/index'; +import * as qs from 'qs'; import * as Core from './core'; import * as Pagination from './pagination'; import * as API from './resources/index'; @@ -141,6 +142,10 @@ export class Writer extends Core.APIClient { return { Authorization: `Bearer ${this.apiKey}` }; } + protected override stringifyQuery(query: Record): string { + return qs.stringify(query, { arrayFormat: 'comma' }); + } + static Writer = this; static WriterError = Errors.WriterError; @@ -218,7 +223,6 @@ export namespace Writer { export import Files = API.Files; export import File = API.File; - export import FileDeleteResponse = API.FileDeleteResponse; export import FilesCursorPage = API.FilesCursorPage; export import FileListParams = API.FileListParams; export import FileUploadParams = API.FileUploadParams; diff --git a/src/resources/files.ts b/src/resources/files.ts index bcc24d3..24bdfe0 100644 --- a/src/resources/files.ts +++ b/src/resources/files.ts @@ -5,19 +5,10 @@ import { isRequestOptions } from '../core'; import * as Core from '../core'; import * as FilesAPI from './files'; import { CursorPage, type CursorPageParams } from '../pagination'; -import { type BlobLike } from '../uploads'; -import { type Response } from '../_shims/index'; export class Files extends APIResource { /** - * Get metadata of a file - */ - retrieve(fileId: string, options?: Core.RequestOptions): Core.APIPromise { - return this._client.get(`/v1/files/${fileId}`, options); - } - - /** - * Get metadata of all files + * List files */ list(query?: FileListParams, options?: Core.RequestOptions): Core.PagePromise; list(options?: Core.RequestOptions): Core.PagePromise; @@ -31,20 +22,6 @@ export class Files extends APIResource { return this._client.getAPIList('/v1/files', FilesCursorPage, { query, ...options }); } - /** - * Delete file - */ - delete(fileId: string, options?: Core.RequestOptions): Core.APIPromise { - return this._client.delete(`/v1/files/${fileId}`, options); - } - - /** - * Download a file - */ - download(fileId: string, options?: Core.RequestOptions): Core.APIPromise { - return this._client.get(`/v1/files/${fileId}/download`, { ...options, __binaryResponse: true }); - } - /** * Upload file */ @@ -72,26 +49,43 @@ export class Files extends APIResource { export class FilesCursorPage extends CursorPage {} export interface File { + /** + * A unique identifier of the graph. + */ id: string; + /** + * The timestamp when the graph was created. + */ created_at: string; + /** + * A list of graph IDs that the file is associated with. + */ graph_ids: Array; + /** + * The name of the graph. + */ name: string; } -export interface FileDeleteResponse { - id: string; - - deleted: boolean; -} - export interface FileListParams extends CursorPageParams { - graph_id?: string; + /** + * The unique identifier of the graph to which the files belong. + */ + graph_id?: Array; + /** + * Specifies the maximum number of objects returned in a page. The default value + * is 50. The minimum value is 1, and the maximum value is 100. + */ limit?: number; + /** + * Specifies the order of the results. Valid values are asc for ascending and desc + * for descending. + */ order?: 'asc' | 'desc'; } @@ -99,27 +93,27 @@ export interface FileUploadParams { /** * Body param: */ - content: string | ArrayBufferView | ArrayBuffer | BlobLike; + content: Core.Uploadable; /** - * Header param: + * Header param: The disposition type of the file, typically used to indicate the + * form-data name. */ 'Content-Disposition': string; /** - * Header param: + * Header param: The size of the file in bytes. */ 'Content-Length': number; /** - * Header param: + * Header param: The MIME type of the file being uploaded. */ 'Content-Type': string; } export namespace Files { export import File = FilesAPI.File; - export import FileDeleteResponse = FilesAPI.FileDeleteResponse; export import FilesCursorPage = FilesAPI.FilesCursorPage; export import FileListParams = FilesAPI.FileListParams; export import FileUploadParams = FilesAPI.FileUploadParams; diff --git a/src/resources/graphs.ts b/src/resources/graphs.ts index 3a6caa8..ce5b5d5 100644 --- a/src/resources/graphs.ts +++ b/src/resources/graphs.ts @@ -8,14 +8,23 @@ import * as FilesAPI from './files'; import { CursorPage, type CursorPageParams } from '../pagination'; export class Graphs extends APIResource { + /** + * Create graph + */ create(body: GraphCreateParams, options?: Core.RequestOptions): Core.APIPromise { return this._client.post('/v1/graphs', { body, ...options }); } + /** + * Retrieve graph + */ retrieve(graphId: string, options?: Core.RequestOptions): Core.APIPromise { return this._client.get(`/v1/graphs/${graphId}`, options); } + /** + * Update graph + */ update( graphId: string, body: GraphUpdateParams, @@ -24,6 +33,9 @@ export class Graphs extends APIResource { return this._client.put(`/v1/graphs/${graphId}`, { body, ...options }); } + /** + * List graphs + */ list(query?: GraphListParams, options?: Core.RequestOptions): Core.PagePromise; list(options?: Core.RequestOptions): Core.PagePromise; list( @@ -36,10 +48,16 @@ export class Graphs extends APIResource { return this._client.getAPIList('/v1/graphs', GraphsCursorPage, { query, ...options }); } + /** + * Delete graph + */ delete(graphId: string, options?: Core.RequestOptions): Core.APIPromise { return this._client.delete(`/v1/graphs/${graphId}`, options); } + /** + * Add file to graph + */ addFileToGraph( graphId: string, body: GraphAddFileToGraphParams, @@ -48,6 +66,9 @@ export class Graphs extends APIResource { return this._client.post(`/v1/graphs/${graphId}/file`, { body, ...options }); } + /** + * Remove file from graph + */ removeFileFromGraph( graphId: string, fileId: string, @@ -60,80 +81,163 @@ export class Graphs extends APIResource { export class GraphsCursorPage extends CursorPage {} export interface Graph { + /** + * A unique identifier of the file. + */ id: string; + /** + * The timestamp when the file was created. + */ created_at: string; file_status: Graph.FileStatus; + /** + * The name of the file. + */ name: string; + /** + * A description of the graph. + */ description?: string; } export namespace Graph { export interface FileStatus { + /** + * The number of files that have been successfully processed. + */ completed: number; + /** + * The number of files that failed to process. + */ failed: number; + /** + * The number of files currently being processed. + */ in_progress: number; + /** + * The total number of files associated with the graph. + */ total: number; } } export interface GraphCreateResponse { + /** + * A unique identifier of the graph. + */ id: string; + /** + * The timestamp when the graph was created. + */ created_at: string; + /** + * The name of the graph. + */ name: string; + /** + * A description of the graph. + */ description?: string; } export interface GraphUpdateResponse { + /** + * A unique identifier of the graph. + */ id: string; + /** + * The timestamp when the graph was created. + */ created_at: string; + /** + * The name of the graph. + */ name: string; + /** + * A description of the graph. + */ description?: string; } export interface GraphDeleteResponse { + /** + * A unique identifier of the deleted file. + */ id: string; + /** + * Indicates whether the file was successfully deleted. + */ deleted: boolean; } export interface GraphRemoveFileFromGraphResponse { + /** + * A unique identifier of the deleted graph. + */ id: string; + /** + * Indicates whether the graph was successfully deleted. + */ deleted: boolean; } export interface GraphCreateParams { + /** + * The name of the graph. + */ name: string; + /** + * A description of the graph. + */ description?: string; } export interface GraphUpdateParams { + /** + * The name of the graph. + */ name: string; + /** + * A description of the graph. + */ description?: string; } export interface GraphListParams extends CursorPageParams { + /** + * Specifies the maximum number of objects returned in a page. The default value + * is 50. The minimum value is 1, and the maximum value is 100. + */ limit?: number; + /** + * Specifies the order of the results. Valid values are asc for ascending and desc + * for descending. + */ order?: 'asc' | 'desc'; } export interface GraphAddFileToGraphParams { + /** + * The unique identifier of the file. + */ file_id: string; } diff --git a/src/resources/index.ts b/src/resources/index.ts index facce82..fe07bfe 100644 --- a/src/resources/index.ts +++ b/src/resources/index.ts @@ -16,7 +16,7 @@ export { CompletionCreateParamsStreaming, Completions, } from './completions'; -export { File, FileDeleteResponse, FileListParams, FileUploadParams, FilesCursorPage, Files } from './files'; +export { File, FileListParams, FileUploadParams, FilesCursorPage, Files } from './files'; export { Graph, GraphCreateResponse, diff --git a/tests/api-resources/files.test.ts b/tests/api-resources/files.test.ts index 8801283..1c9dc36 100644 --- a/tests/api-resources/files.test.ts +++ b/tests/api-resources/files.test.ts @@ -9,24 +9,6 @@ const writer = new Writer({ }); describe('resource files', () => { - test('retrieve', async () => { - const responsePromise = writer.files.retrieve('fileId'); - const rawResponse = await responsePromise.asResponse(); - expect(rawResponse).toBeInstanceOf(Response); - const response = await responsePromise; - expect(response).not.toBeInstanceOf(Response); - const dataAndResponse = await responsePromise.withResponse(); - expect(dataAndResponse.data).toBe(response); - expect(dataAndResponse.response).toBe(rawResponse); - }); - - test('retrieve: request options instead of params are passed correctly', async () => { - // ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error - await expect(writer.files.retrieve('fileId', { path: '/_stainless_unknown_path' })).rejects.toThrow( - Writer.NotFoundError, - ); - }); - test('list', async () => { const responsePromise = writer.files.list(); const rawResponse = await responsePromise.asResponse(); @@ -52,7 +34,11 @@ describe('resource files', () => { { after: 'after', before: 'before', - graph_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', + graph_id: [ + '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', + '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', + '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', + ], limit: 0, order: 'asc', }, @@ -61,32 +47,6 @@ describe('resource files', () => { ).rejects.toThrow(Writer.NotFoundError); }); - test('delete', async () => { - const responsePromise = writer.files.delete('fileId'); - const rawResponse = await responsePromise.asResponse(); - expect(rawResponse).toBeInstanceOf(Response); - const response = await responsePromise; - expect(response).not.toBeInstanceOf(Response); - const dataAndResponse = await responsePromise.withResponse(); - expect(dataAndResponse.data).toBe(response); - expect(dataAndResponse.response).toBe(rawResponse); - }); - - test('delete: request options instead of params are passed correctly', async () => { - // ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error - await expect(writer.files.delete('fileId', { path: '/_stainless_unknown_path' })).rejects.toThrow( - Writer.NotFoundError, - ); - }); - - // requests with binary data not yet supported in test environment - test.skip('download: request options instead of params are passed correctly', async () => { - // ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error - await expect(writer.files.download('fileId', { path: '/_stainless_unknown_path' })).rejects.toThrow( - Writer.NotFoundError, - ); - }); - // requests with binary data not yet supported in test environment test.skip('upload: only required params', async () => { const responsePromise = writer.files.upload({ diff --git a/tests/stringifyQuery.test.ts b/tests/stringifyQuery.test.ts index 3bfbae8..4bf687f 100644 --- a/tests/stringifyQuery.test.ts +++ b/tests/stringifyQuery.test.ts @@ -20,10 +20,4 @@ describe(stringifyQuery, () => { expect(stringifyQuery(input)).toEqual(expected); }); } - - for (const value of [[], {}, new Date()]) { - it(`${JSON.stringify(value)} -> `, () => { - expect(() => stringifyQuery({ value })).toThrow(`Cannot stringify type ${typeof value}`); - }); - } }); diff --git a/yarn.lock b/yarn.lock index dda4d2e..648fb3c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -881,6 +881,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f" integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== +"@types/qs@^6.9.7": + version "6.9.15" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" + integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== + "@types/semver@^7.5.0": version "7.5.3" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" @@ -1243,6 +1248,17 @@ bundle-name@^3.0.0: dependencies: run-applescript "^5.0.0" +call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -1432,6 +1448,15 @@ default-browser@^4.0.0: execa "^7.1.1" titleize "^3.0.0" +define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + define-lazy-prop@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" @@ -1498,6 +1523,18 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -1845,6 +1882,17 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -1910,6 +1958,13 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" @@ -1930,6 +1985,23 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + hasown@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" @@ -2747,6 +2819,11 @@ npm-run-path@^5.1.0: dependencies: path-key "^4.0.0" +object-inspect@^1.13.1: + version "1.13.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" + integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== + once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -2955,6 +3032,13 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.4.tgz#50b737f6a925468679bff00ad20eade53f37d5c7" integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== +qs@^6.10.3: + version "6.12.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.3.tgz#e43ce03c8521b9c7fd7f1f13e514e5ca37727754" + integrity sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ== + dependencies: + side-channel "^1.0.6" + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -3053,6 +3137,18 @@ semver@^7.5.3, semver@^7.5.4: dependencies: lru-cache "^6.0.0" +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -3065,6 +3161,16 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"