From ab70560879a5e6e2c594a90f5484c2ad54d6ea9c Mon Sep 17 00:00:00 2001 From: Mendy Man Date: Mon, 17 Feb 2025 11:39:50 -0500 Subject: [PATCH 01/14] js: Remove openapi-generator --- .github/workflows/javascript-lint.yml | 5 - .github/workflows/javascript-release.yml | 5 - javascript/.lintignore | 1 - javascript/openapi-generator-config.json | 5 - .../src/openapi/.openapi-generator-ignore | 29 -- javascript/templates/api/api.mustache | 273 --------------- javascript/templates/http/http.mustache | 320 ------------------ .../templates/http/isomorphic-fetch.mustache | 75 ---- regen_openapi.sh | 2 - 9 files changed, 715 deletions(-) delete mode 100644 javascript/.lintignore delete mode 100644 javascript/openapi-generator-config.json delete mode 100644 javascript/src/openapi/.openapi-generator-ignore delete mode 100644 javascript/templates/api/api.mustache delete mode 100644 javascript/templates/http/http.mustache delete mode 100644 javascript/templates/http/isomorphic-fetch.mustache diff --git a/.github/workflows/javascript-lint.yml b/.github/workflows/javascript-lint.yml index 64ed2634b..6fc1d9927 100644 --- a/.github/workflows/javascript-lint.yml +++ b/.github/workflows/javascript-lint.yml @@ -18,11 +18,6 @@ jobs: node-version: 'latest' registry-url: 'https://registry.npmjs.org' - - name: Regen openapi libs - run: | - yarn - ./regen_openapi.sh - - name: Install modules run: | cd javascript diff --git a/.github/workflows/javascript-release.yml b/.github/workflows/javascript-release.yml index c1e89ef18..825a00c16 100644 --- a/.github/workflows/javascript-release.yml +++ b/.github/workflows/javascript-release.yml @@ -28,11 +28,6 @@ jobs: node-version: 'latest' registry-url: 'https://registry.npmjs.org' - - name: Regen openapi libs - run: | - yarn - ./regen_openapi.sh - - name: Install modules run: | cd javascript diff --git a/javascript/.lintignore b/javascript/.lintignore deleted file mode 100644 index 655bb5661..000000000 --- a/javascript/.lintignore +++ /dev/null @@ -1 +0,0 @@ -/src/openapi diff --git a/javascript/openapi-generator-config.json b/javascript/openapi-generator-config.json deleted file mode 100644 index 3384452c3..000000000 --- a/javascript/openapi-generator-config.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "npmName": "svix", - "useObjectParameters": true, - "supportsES6": true -} diff --git a/javascript/src/openapi/.openapi-generator-ignore b/javascript/src/openapi/.openapi-generator-ignore deleted file mode 100644 index 3f28a36b8..000000000 --- a/javascript/src/openapi/.openapi-generator-ignore +++ /dev/null @@ -1,29 +0,0 @@ -# OpenAPI Generator Ignore -# Generated by openapi-generator https://github.com/openapitools/openapi-generator - -# Use this file to prevent files from being overwritten by the generator. -# The patterns follow closely to .gitignore or .dockerignore. - -# As an example, the C# client generator defines ApiClient.cs. -# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: -#ApiClient.cs - -# You can match any string of characters against a directory, file or extension with a single asterisk (*): -#foo/*/qux -# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux - -# You can recursively match patterns against a directory, file or extension with a double asterisk (**): -#foo/**/qux -# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux - -# You can also negate patterns with an exclamation (!). -# For example, you can ignore all files in a docs folder with the file extension .md: -#docs/*.md -# Then explicitly reverse the ignore rule for a single file: -#!docs/README.md - -/README.md -/package.json -/tsconfig.json -/.gitignore -/git_push.sh diff --git a/javascript/templates/api/api.mustache b/javascript/templates/api/api.mustache deleted file mode 100644 index 58cd6a482..000000000 --- a/javascript/templates/api/api.mustache +++ /dev/null @@ -1,273 +0,0 @@ -// TODO: better import syntax? -import {BaseAPIRequestFactory, RequiredError, COLLECTION_FORMATS} from './baseapi{{importFileExtension}}'; -import {Configuration} from '../configuration{{importFileExtension}}'; -import {RequestContext, HttpMethod, ResponseContext, HttpFile, HttpInfo} from '../http/http{{importFileExtension}}'; -{{#platforms}} -{{#node}} -import {{^supportsES6}}* as{{/supportsES6}} FormData from "form-data"; -import { URLSearchParams } from 'url'; -{{/node}} -{{/platforms}} -import {ObjectSerializer} from '../models/ObjectSerializer{{importFileExtension}}'; -import {ApiException} from './exception{{importFileExtension}}'; -import {canConsumeForm, isCodeInRange} from '../util{{importFileExtension}}'; -import {SecurityAuthentication} from '../auth/auth{{importFileExtension}}'; - -{{#useInversify}} -import { injectable } from "inversify"; -{{/useInversify}} - -{{#imports}} -import { {{classname}} } from '{{filename}}{{importFileExtension}}'; -{{/imports}} -{{#operations}} - -/** - * {{{description}}}{{^description}}no description{{/description}} - */ -{{#useInversify}} -@injectable() -{{/useInversify}} -export class {{classname}}RequestFactory extends BaseAPIRequestFactory { - - {{#operation}} - /** - {{#notes}} - * {{¬es}} - {{/notes}} - {{#summary}} - * {{&summary}} - {{/summary}} - {{#allParams}} - * @param {{paramName}} {{description}} - {{/allParams}} - */ - public async {{nickname}}({{#allParams}}{{paramName}}{{^required}}?{{/required}}: {{{dataType}}}, {{/allParams}}_options?: Configuration): Promise { - let _config = _options || this.configuration; - {{#allParams}} - - {{#required}} - // verify required parameter '{{paramName}}' is not null or undefined - if ({{paramName}} === null || {{paramName}} === undefined) { - throw new RequiredError("{{classname}}", "{{nickname}}", "{{paramName}}"); - } - - {{/required}} - {{/allParams}} - - // Path Params - const localVarPath = '{{{path}}}'{{#pathParams}} - .replace('{' + '{{baseName}}' + '}', encodeURIComponent(String({{paramName}}))){{/pathParams}}; - - // Make Request Context - const requestContext = _config.baseServer.makeRequestContext(localVarPath, HttpMethod.{{httpMethod}}); - requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") - const randomId = Math.floor(Math.random() * Math.pow(2, 32)) - requestContext.setHeaderParam("svix-req-id", randomId.toString()) - - {{#queryParams}} - - // Query Params - if ({{paramName}} !== undefined) { - {{#isPrimitiveType}} - requestContext.setQueryParam("{{baseName}}", ObjectSerializer.serialize({{paramName}}, "{{{dataType}}}", "{{dataFormat}}")); - {{/isPrimitiveType}} - {{^isPrimitiveType}} - {{#isExplode}} - const serializedParams = ObjectSerializer.serialize({{paramName}}, "{{{dataType}}}", "{{dataFormat}}"); - {{#isArray}} - for (const serializedParam of serializedParams) { - requestContext.appendQueryParam("{{baseName}}", serializedParam); - } - {{/isArray}} - {{^isArray}} - for (const key of Object.keys(serializedParams)) { - requestContext.setQueryParam(key, serializedParams[key]); - } - {{/isArray}} - {{/isExplode}} - {{^isExplode}} - requestContext.setQueryParam("{{baseName}}", ObjectSerializer.serialize({{paramName}}, "{{{dataType}}}", "{{dataFormat}}")); - {{/isExplode}} - {{/isPrimitiveType}} - } - {{/queryParams}} - {{#headerParams}} - - // Header Params - if ({{paramName}} !== undefined) { - requestContext.setHeaderParam("{{baseName}}", ObjectSerializer.serialize({{paramName}}, "{{{dataType}}}", "{{dataFormat}}")); - } - {{/headerParams}} - {{#hasFormParams}} - - // Form Params - const useForm = canConsumeForm([ - {{#consumes}} - '{{{mediaType}}}', - {{/consumes}} - ]); - - let localVarFormParams - if (useForm) { - localVarFormParams = new FormData(); - } else { - localVarFormParams = new URLSearchParams(); - } - {{/hasFormParams}} - - {{#formParams}} - {{#isArray}} - if ({{paramName}}) { - {{#isCollectionFormatMulti}} - {{paramName}}.forEach((element) => { - localVarFormParams.append('{{baseName}}', element as any); - }) - {{/isCollectionFormatMulti}} - {{^isCollectionFormatMulti}} - // TODO: replace .append with .set - localVarFormParams.append('{{baseName}}', {{paramName}}.join(COLLECTION_FORMATS["{{collectionFormat}}"])); - {{/isCollectionFormatMulti}} - } - {{/isArray}} - {{^isArray}} - if ({{paramName}} !== undefined) { - // TODO: replace .append with .set - {{^isFile}} - localVarFormParams.append('{{baseName}}', {{paramName}} as any); - {{/isFile}} - {{#isFile}} - if (localVarFormParams instanceof FormData) { - {{#platforms}} - {{#node}} - localVarFormParams.append('{{baseName}}', {{paramName}}.data, {{paramName}}.name); - {{/node}} - {{^node}} - localVarFormParams.append('{{baseName}}', {{paramName}}, {{paramName}}.name); - {{/node}} - {{/platforms}} - } - {{/isFile}} - } - {{/isArray}} - {{/formParams}} - {{#hasFormParams}} - - requestContext.setBody(localVarFormParams); - - if(!useForm) { - const contentType = ObjectSerializer.getPreferredMediaType([{{#consumes}} - "{{{mediaType}}}"{{^-last}},{{/-last}} - {{/consumes}}]); - requestContext.setHeaderParam("Content-Type", contentType); - } - {{/hasFormParams}} - {{#bodyParam}} - - // Body Params - const contentType = ObjectSerializer.getPreferredMediaType([{{#consumes}} - "{{{mediaType}}}"{{^-last}},{{/-last}} - {{/consumes}}]); - requestContext.setHeaderParam("Content-Type", contentType); - const serializedBody = ObjectSerializer.stringify( - ObjectSerializer.serialize({{paramName}}, "{{{dataType}}}", "{{dataFormat}}"), - contentType - ); - requestContext.setBody(serializedBody); - {{/bodyParam}} - - {{#hasAuthMethods}} - let authMethod: SecurityAuthentication | undefined; - {{/hasAuthMethods}} - {{#authMethods}} - // Apply auth methods - authMethod = _config.authMethods["{{name}}"] - if (authMethod?.applySecurityAuthentication) { - await authMethod?.applySecurityAuthentication(requestContext); - } - {{/authMethods}} - - {{^useInversify}} - const defaultAuth: SecurityAuthentication | undefined = _options?.authMethods?.default || this.configuration?.authMethods?.default - if (defaultAuth?.applySecurityAuthentication) { - await defaultAuth?.applySecurityAuthentication(requestContext); - } - {{/useInversify}} - - return requestContext; - } - - {{/operation}} -} -{{/operations}} -{{#operations}} - -{{#useInversify}} -@injectable() -{{/useInversify}} -export class {{classname}}ResponseProcessor { - - {{#operation}} - /** - * Unwraps the actual response sent by the server from the response context and deserializes the response content - * to the expected objects - * - * @params response Response returned by the server for a request to {{nickname}} - * @throws ApiException if the response code was not in [200, 299] - */ - public async {{nickname}}WithHttpInfo(response: ResponseContext): Promise> { - const contentType = ObjectSerializer.normalizeMediaType(response.headers["content-type"]); - {{#responses}} - if (isCodeInRange("{{code}}", response.httpStatusCode)) { - {{#dataType}} - {{#isBinary}} - const body: {{{dataType}}} = await response.getBodyAsFile() as any as {{{returnType}}}; - {{/isBinary}} - {{^isBinary}} - const body: {{{dataType}}} = ObjectSerializer.deserialize( - ObjectSerializer.parse(await response.body.text(), contentType), - "{{{dataType}}}", "{{returnFormat}}" - ) as {{{dataType}}}; - {{/isBinary}} - {{#is2xx}} - return new HttpInfo(response.httpStatusCode, response.headers, response.body, body); - {{/is2xx}} - {{^is2xx}} - throw new ApiException<{{{dataType}}}>(response.httpStatusCode, "{{message}}", body, response.headers); - {{/is2xx}} - {{/dataType}} - {{^dataType}} - {{#is2xx}} - return new HttpInfo(response.httpStatusCode, response.headers, response.body, undefined); - {{/is2xx}} - {{^is2xx}} - throw new ApiException(response.httpStatusCode, "{{message}}", undefined, response.headers); - {{/is2xx}} - {{/dataType}} - } - {{/responses}} - - // Work around for missing responses in specification, e.g. for petstore.yaml - if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { - {{#returnType}} - {{#isBinary}} - const body: {{{returnType}}} = await response.getBodyAsFile() as any as {{{returnType}}}; - {{/isBinary}} - {{^isBinary}} - const body: {{{returnType}}} = ObjectSerializer.deserialize( - ObjectSerializer.parse(await response.body.text(), contentType), - "{{{returnType}}}", "{{returnFormat}}" - ) as {{{returnType}}}; - {{/isBinary}} - return new HttpInfo(response.httpStatusCode, response.headers, response.body, body); - {{/returnType}} - {{^returnType}} - return new HttpInfo(response.httpStatusCode, response.headers, response.body, undefined); - {{/returnType}} - } - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!", await response.getBodyAsAny(), response.headers); - } - - {{/operation}} -} -{{/operations}} diff --git a/javascript/templates/http/http.mustache b/javascript/templates/http/http.mustache deleted file mode 100644 index 6feca75eb..000000000 --- a/javascript/templates/http/http.mustache +++ /dev/null @@ -1,320 +0,0 @@ -{{#platforms}} -{{#node}} -// TODO: evaluate if we can easily get rid of this library -import {{^supportsES6}}* as{{/supportsES6}} FormData from "form-data{{importFileExtension}}"; -import { URL, URLSearchParams } from 'url{{importFileExtension}}'; -import * as http from 'http{{importFileExtension}}'; -import * as https from 'https{{importFileExtension}}'; -{{/node}} -{{/platforms}} -import { Observable, from } from {{#useRxJS}}'rxjs'{{/useRxJS}}{{^useRxJS}}'../rxjsStub{{importFileExtension}}'{{/useRxJS}}; - -{{#platforms}} -{{^deno}} -{{#frameworks}} -{{#fetch-api}} -export * from './isomorphic-fetch{{importFileExtension}}'; -{{/fetch-api}} -{{#jquery}} -export * from './jquery{{importFileExtension}}'; -{{/jquery}} -{{/frameworks}} -{{/deno}} -{{/platforms}} - -/** - * Represents an HTTP method. - */ -export enum HttpMethod { - GET = "GET", - HEAD = "HEAD", - POST = "POST", - PUT = "PUT", - DELETE = "DELETE", - CONNECT = "CONNECT", - OPTIONS = "OPTIONS", - TRACE = "TRACE", - PATCH = "PATCH" -} - -/** - * Represents an HTTP file which will be transferred from or to a server. - */ -{{#platforms}} -{{#node}} -export type HttpFile = { - data: {{{fileContentDataType}}}, - name: string -}; -{{/node}} -{{^node}} -export type HttpFile = {{{fileContentDataType}}} & { readonly name: string }; -{{/node}} -{{/platforms}} - -export class HttpException extends Error { - public constructor(msg: string) { - super(msg); - } -} - -/** - * Represents the body of an outgoing HTTP request. - */ -export type RequestBody = undefined | string | FormData | URLSearchParams; - -type Headers = Record; - -function ensureAbsoluteUrl(url: string) { - if (url.startsWith("http://") || url.startsWith("https://")) { - return url; - } - throw new Error("You need to define an absolute base url for the server."); -} - -/** - * Represents an HTTP request context - */ -export class RequestContext { - private headers: Headers = {}; - private body: RequestBody = undefined; - private url: URL; - {{#platforms}} - {{#node}} - private agent: http.Agent | https.Agent | undefined = undefined; - {{/node}} - {{/platforms}} - - /** - * Creates the request context using a http method and request resource url - * - * @param url url of the requested resource - * @param httpMethod http method - */ - public constructor(url: string, private httpMethod: HttpMethod) { - this.url = new URL(ensureAbsoluteUrl(url)); - } - - /* - * Returns the url set in the constructor including the query string - * - */ - public getUrl(): string { - return this.url.toString().endsWith("/") ? - this.url.toString().slice(0, -1) - : this.url.toString(); - } - - /** - * Replaces the url set in the constructor with this url. - * - */ - public setUrl(url: string) { - this.url = new URL(ensureAbsoluteUrl(url)); - } - - /** - * Sets the body of the http request either as a string or FormData - * - * Note that setting a body on a HTTP GET, HEAD, DELETE, CONNECT or TRACE - * request is discouraged. - * https://httpwg.org/http-core/draft-ietf-httpbis-semantics-latest.html#rfc.section.7.3.1 - * - * @param body the body of the request - */ - public setBody(body: RequestBody) { - this.body = body; - } - - public getHttpMethod(): HttpMethod { - return this.httpMethod; - } - - public getHeaders(): Headers { - return this.headers; - } - - public getBody(): RequestBody { - return this.body; - } - - public setQueryParam(name: string, value: string) { - this.url.searchParams.set(name, value); - } - - public appendQueryParam(name: string, value: string) { - this.url.searchParams.append(name, value); - } - - /** - * Sets a cookie with the name and value. NO check for duplicate cookies is performed - * - */ - public addCookie(name: string, value: string): void { - if (!this.headers["Cookie"]) { - this.headers["Cookie"] = ""; - } - this.headers["Cookie"] += name + "=" + value + "; "; - } - - public setHeaderParam(key: string, value: string): void { - this.headers[key] = value; - } - {{#platforms}} - {{#node}} - - public setAgent(agent: http.Agent | https.Agent) { - this.agent = agent; - } - - public getAgent(): http.Agent | https.Agent | undefined { - return this.agent; - } - {{/node}} - {{/platforms}} -} - -export interface ResponseBody { - text(): Promise; - binary(): Promise<{{{fileContentDataType}}}>; -} - -/** - * Helper class to generate a `ResponseBody` from binary data - */ -export class SelfDecodingBody implements ResponseBody { - constructor(private dataSource: Promise<{{{fileContentDataType}}}>) {} - - binary(): Promise<{{{fileContentDataType}}}> { - return this.dataSource; - } - - async text(): Promise { - const data: {{{fileContentDataType}}} = await this.dataSource; - {{#platforms}} - {{#node}} - return data.toString(); - {{/node}} - {{#browser}} - // @ts-ignore - if (data.text) { - // @ts-ignore - return data.text(); - } - - return new Promise((resolve, reject) => { - const reader = new FileReader(); - reader.addEventListener("load", () => resolve(reader.result as string)); - reader.addEventListener("error", () => reject(reader.error)); - reader.readAsText(data); - }); - {{/browser}} - {{#deno}} - return data.text(); - {{/deno}} - {{/platforms}} - } -} - -export class ResponseContext { - public constructor( - public httpStatusCode: number, - public headers: Headers, - public body: ResponseBody - ) {} - - /** - * Parse header value in the form `value; param1="value1"` - * - * E.g. for Content-Type or Content-Disposition - * Parameter names are converted to lower case - * The first parameter is returned with the key `""` - */ - public getParsedHeader(headerName: string): Headers { - const result: Headers = {}; - if (!this.headers[headerName]) { - return result; - } - - const parameters = this.headers[headerName].split(";"); - for (const parameter of parameters) { - let [key, value] = parameter.split("=", 2); - key = key.toLowerCase().trim(); - if (value === undefined) { - result[""] = key; - } else { - value = value.trim(); - if (value.startsWith('"') && value.endsWith('"')) { - value = value.substring(1, value.length - 1); - } - result[key] = value; - } - } - return result; - } - - public async getBodyAsFile(): Promise { - const data = await this.body.binary(); - const fileName = this.getParsedHeader("content-disposition")["filename"] || ""; - {{#platforms}} - {{#node}} - return { data, name: fileName }; - {{/node}} - {{^node}} - const contentType = this.headers["content-type"] || ""; - try { - return new File([data], fileName, { type: contentType }); - } catch (error) { - /** Fallback for when the File constructor is not available */ - return Object.assign(data, { - name: fileName, - type: contentType - }); - } - {{/node}} - {{/platforms}} - } - - /** - * Use a heuristic to get a body of unknown data structure. - * Return as string if possible, otherwise as binary. - */ - public getBodyAsAny(): Promise { - try { - return this.body.text(); - } catch {} - - try { - return this.body.binary(); - } catch {} - - return Promise.resolve(undefined); - } -} - -export interface HttpLibrary { - send(request: RequestContext): Observable; -} - -export interface PromiseHttpLibrary { - send(request: RequestContext): Promise; -} - -export function wrapHttpLibrary(promiseHttpLibrary: PromiseHttpLibrary): HttpLibrary { - return { - send(request: RequestContext): Observable { - return from(promiseHttpLibrary.send(request)); - } - } -} - -export class HttpInfo extends ResponseContext { - public constructor( - public httpStatusCode: number, - public headers: Headers, - public body: ResponseBody, - public data: T, - ) { - super(httpStatusCode, headers, body); - } -} diff --git a/javascript/templates/http/isomorphic-fetch.mustache b/javascript/templates/http/isomorphic-fetch.mustache deleted file mode 100644 index f2b69b878..000000000 --- a/javascript/templates/http/isomorphic-fetch.mustache +++ /dev/null @@ -1,75 +0,0 @@ -import {HttpLibrary, RequestContext, ResponseContext} from './http{{importFileExtension}}'; -import { from, Observable } from {{#useRxJS}}'rxjs'{{/useRxJS}}{{^useRxJS}}'../rxjsStub{{importFileExtension}}'{{/useRxJS}}; -import "svix-fetch"; - -const numRetries = 2; -const sleep = (interval: number) => new Promise(resolve => setTimeout(resolve, interval)); - -export class IsomorphicFetchHttpLibrary implements HttpLibrary { - public send(request: RequestContext): Observable { - const resultPromise = this.sendWithRetry(request, numRetries, 50, 1); - return from>(resultPromise); - } - - private async sendWithRetry(request: RequestContext, triesLeft: number, nextInterval: number, retryCount: number): Promise { - try { - const response = await this.sendOnce(request); - if (triesLeft <= 0 || response.httpStatusCode < 500) { - return response; - } - } catch (e) { - if (triesLeft <= 0) { - throw e; - } - }; - await sleep(nextInterval); - const headers = request.getHeaders(); - headers['svix-retry-count'] = retryCount.toString() - return await this.sendWithRetry(request, --triesLeft, nextInterval * 2, ++retryCount); - } - - private sendOnce(request: RequestContext): Promise { - let method = request.getHttpMethod().toString(); - let body = request.getBody(); - - // Cloudflare Workers fail if the credentials option is used in a fetch call. - // This work around that. Source: - // https://github.com/cloudflare/workers-sdk/issues/2514#issuecomment-2178070014 - const isCredentialsSupported = "credentials" in Request.prototype; - - return fetch(request.getUrl(), { - method: method, - body: body as any, - headers: request.getHeaders(), - {{#platforms}} - {{#node}} - agent: request.getAgent(), - {{/node}} - {{#browser}} - credentials: isCredentialsSupported ? "same-origin" : undefined - {{/browser}} - {{/platforms}} - }).then((resp: any) => { - const headers: { [name: string]: string } = {}; - resp.headers.forEach((value: string, name: string) => { - headers[name] = value; - }); - - {{#platforms}} - {{#node}} - const body = { - text: () => resp.text(), - binary: () => resp.buffer() - }; - {{/node}} - {{^node}} - const body = { - text: () => resp.text(), - binary: () => resp.blob() - }; - {{/node}} - {{/platforms}} - return new ResponseContext(resp.status, headers, body); - }); - } -} diff --git a/regen_openapi.sh b/regen_openapi.sh index ad9138670..e4367a2c3 100755 --- a/regen_openapi.sh +++ b/regen_openapi.sh @@ -53,8 +53,6 @@ jq --indent 4 '.components.schemas |= with_entries( < .codegen-tmp/openapi.json \ > .codegen-tmp/openapi-less-null.json -yarn openapi-generator-cli generate -i .codegen-tmp/openapi.json -g typescript -o javascript/src/openapi -c javascript/openapi-generator-config.json --type-mappings=set=Array -t javascript/templates - yarn openapi-generator-cli generate -i .codegen-tmp/openapi.json -g java -o java/lib/generated/openapi -c java/openapi-generator-config.json -t java/templates yarn openapi-generator-cli generate -i .codegen-tmp/openapi.json -g kotlin -o kotlin/lib/generated/openapi -c kotlin/openapi-generator-config.json -t kotlin/templates From ff814bbefb115fd8b5515f5934db1d90842d6b3b Mon Sep 17 00:00:00 2001 From: Mendy Man Date: Mon, 17 Feb 2025 11:41:28 -0500 Subject: [PATCH 02/14] js: Migrate to eslint 9 Also add dependency on mockttp --- javascript/.eslintrc.cjs | 87 -- javascript/eslint.config.mjs | 13 + javascript/package.json | 17 +- javascript/yarn.lock | 1843 +++++++++++++++++++++++++++------- 4 files changed, 1505 insertions(+), 455 deletions(-) delete mode 100644 javascript/.eslintrc.cjs create mode 100644 javascript/eslint.config.mjs diff --git a/javascript/.eslintrc.cjs b/javascript/.eslintrc.cjs deleted file mode 100644 index 8292c6260..000000000 --- a/javascript/.eslintrc.cjs +++ /dev/null @@ -1,87 +0,0 @@ -module.exports = { - "env": { - "shared-node-browser": true, - "es6": true, - }, - "parser": "@typescript-eslint/parser", - "parserOptions": { - "sourceType": "module", - }, - "settings": { - }, - "plugins": [ - "@typescript-eslint", - ], - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended" - ], - "rules": { - "@typescript-eslint/explicit-function-return-type": "off", - "@typescript-eslint/no-use-before-define": "off", - "@typescript-eslint/no-non-null-assertion": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/explicit-module-boundary-types": "off", - "@typescript-eslint/member-delimiter-style": ["error", { - "multiline": { - "delimiter": "semi", - "requireLast": true - }, - "singleline": { - "delimiter": "semi", - "requireLast": false - } - }], - "@typescript-eslint/no-unused-vars": ["warn", { - "vars": "all", - "args": "all", - "ignoreRestSiblings": true, - "argsIgnorePattern": "^_", - }], - - "quotes": "off", - "@typescript-eslint/quotes": ["error", "double", { "allowTemplateLiterals": true, "avoidEscape": true }], - "semi": "off", - "@typescript-eslint/semi": ["error", "always", { "omitLastInOneLineBlock": true }], - "comma-dangle": ["error", { - "arrays": "always-multiline", - "objects": "always-multiline", - "imports": "always-multiline", - "exports": "always-multiline", - "functions": "never" - }], - "comma-spacing": ["error"], - "eqeqeq": ["error", "smart"], - "indent": "off", - "@typescript-eslint/indent": 0, - "no-multi-spaces": "error", - "object-curly-spacing": ["error", "always"], - "arrow-parens": "error", - "arrow-spacing": "error", - "key-spacing": "error", - "keyword-spacing": "error", - "func-call-spacing": "off", - "@typescript-eslint/func-call-spacing": ["error"], - "space-before-function-paren": ["error", { - "anonymous": "always", - "named": "never", - "asyncArrow": "always" - }], - "space-in-parens": ["error", "never"], - "space-before-blocks": "error", - "curly": ["error", "all"], - "space-infix-ops": "error", - "consistent-return": "error", - "jsx-quotes": ["error"], - "array-bracket-spacing": "error", - "brace-style": "off", - "@typescript-eslint/brace-style": [ - "error", - "1tbs", - { allowSingleLine: true }, - ], - "no-useless-constructor": "off", - "@typescript-eslint/no-useless-constructor": "warn", - } -}; diff --git a/javascript/eslint.config.mjs b/javascript/eslint.config.mjs new file mode 100644 index 000000000..80e503804 --- /dev/null +++ b/javascript/eslint.config.mjs @@ -0,0 +1,13 @@ +import globals from "globals"; +import pluginJs from "@eslint/js"; +import tseslint from "typescript-eslint"; + +/** @type {import('eslint').Linter.Config[]} */ +export default [ + { + files: ["**/*.{js,mjs,cjs,ts}"], + languageOptions: { globals: { ...globals.browser, ...globals.node } }, + }, + pluginJs.configs.recommended, + ...tseslint.configs.recommended, +]; diff --git a/javascript/package.json b/javascript/package.json index 3f6536654..67053b2e9 100644 --- a/javascript/package.json +++ b/javascript/package.json @@ -23,10 +23,10 @@ "prepare": "yarn run build", "test": "jest", "prepublishOnly": "yarn lint", - "lint:eslint": "eslint --ignore-path .lintignore --ext .js,.jsx,.ts,.tsx src", - "lint:prettier": "prettier --ignore-path .lintignore src", + "lint:eslint": "eslint src", + "lint:prettier": "prettier src", "lint": "yarn run lint:prettier --check && yarn run lint:eslint --max-warnings=0", - "lint:fix": "yarn run lint:prettier --write && yarn run lint:eslint --fix" + "lint:fix": "yarn run lint:eslint --fix && yarn run lint:prettier --write" }, "dependencies": { "@stablelib/base64": "^1.0.0", @@ -37,16 +37,17 @@ "url-parse": "^1.5.10" }, "devDependencies": { + "@eslint/js": "^9.20.0", "@stablelib/utf8": "^2.0.0", "@types/jest": "^29.5.13", "@types/url-parse": "1.4.11", - "@typescript-eslint/eslint-plugin": "^4.15.2", - "@typescript-eslint/parser": "^4.15.2", - "@typescript-eslint/typescript-estree": "^4.15.2", - "eslint": "^7.20.0", + "eslint": "^9.20.1", + "globals": "^15.15.0", "jest": "^29.7.0", + "mockttp": "^3.15.5", "prettier": "^3.3.3", "ts-jest": "^29.2.5", - "typescript": "^4.0" + "typescript": "^4.0", + "typescript-eslint": "^8.24.0" } } diff --git a/javascript/yarn.lock b/javascript/yarn.lock index a01d27b1f..5d0b53e59 100644 --- a/javascript/yarn.lock +++ b/javascript/yarn.lock @@ -10,13 +10,6 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.25.7.tgz#438f2c524071531d643c6f0188e1e28f130cebc7" @@ -147,7 +140,7 @@ "@babel/template" "^7.25.7" "@babel/types" "^7.25.7" -"@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5", "@babel/highlight@^7.25.7": +"@babel/highlight@^7.14.5", "@babel/highlight@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.25.7.tgz#20383b5f442aa606e7b5e3043b0b1aafe9f37de5" integrity sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw== @@ -320,34 +313,165 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" + integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + +"@eslint/config-array@^0.19.0": + version "0.19.2" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.2.tgz#3060b809e111abfc97adb0bb1172778b90cb46aa" + integrity sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w== + dependencies: + "@eslint/object-schema" "^2.1.6" + debug "^4.3.1" + minimatch "^3.1.2" + +"@eslint/core@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.10.0.tgz#23727063c21b335f752dbb3a16450f6f9cbc9091" + integrity sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw== + dependencies: + "@types/json-schema" "^7.0.15" + +"@eslint/core@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.11.0.tgz#7a9226e850922e42cbd2ba71361eacbe74352a12" + integrity sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA== + dependencies: + "@types/json-schema" "^7.0.15" + +"@eslint/eslintrc@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz#57470ac4e2e283a6bf76044d63281196e370542c" + integrity sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w== dependencies: ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" + debug "^4.3.2" + espree "^10.0.1" + globals "^14.0.0" + ignore "^5.2.0" import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" + js-yaml "^4.1.0" + minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== +"@eslint/js@9.20.0", "@eslint/js@^9.20.0": + version "9.20.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.20.0.tgz#7421bcbe74889fcd65d1be59f00130c289856eb4" + integrity sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ== + +"@eslint/object-schema@^2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f" + integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== + +"@eslint/plugin-kit@^0.2.5": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz#ee07372035539e7847ef834e3f5e7b79f09e3a81" + integrity sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A== dependencies: - "@humanwhocodes/object-schema" "^1.2.0" - debug "^4.1.1" - minimatch "^3.0.4" + "@eslint/core" "^0.10.0" + levn "^0.4.1" -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@graphql-tools/merge@8.3.1": + version "8.3.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.3.1.tgz#06121942ad28982a14635dbc87b5d488a041d722" + integrity sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg== + dependencies: + "@graphql-tools/utils" "8.9.0" + tslib "^2.4.0" + +"@graphql-tools/schema@^8.5.0": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-8.5.1.tgz#c2f2ff1448380919a330312399c9471db2580b58" + integrity sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg== + dependencies: + "@graphql-tools/merge" "8.3.1" + "@graphql-tools/utils" "8.9.0" + tslib "^2.4.0" + value-or-promise "1.0.11" + +"@graphql-tools/utils@8.9.0": + version "8.9.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.9.0.tgz#c6aa5f651c9c99e1aca55510af21b56ec296cdb7" + integrity sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg== + dependencies: + tslib "^2.4.0" + +"@graphql-tools/utils@^8.8.0": + version "8.13.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.13.1.tgz#b247607e400365c2cd87ff54654d4ad25a7ac491" + integrity sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw== + dependencies: + tslib "^2.4.0" + +"@httptoolkit/httpolyglot@^2.2.1": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@httptoolkit/httpolyglot/-/httpolyglot-2.2.2.tgz#e36bad48f530546984724c45bd01d89c1acc020e" + integrity sha512-Mm75bidN/jrUsuhBjHAMoQbmR52zQYi8xr/+0mQYGW+dQelg+sdJR/kGRKKZGeAoPgp/1rrZWJqdohZP0xm18g== + dependencies: + "@types/node" "*" + +"@httptoolkit/subscriptions-transport-ws@^0.11.2": + version "0.11.2" + resolved "https://registry.yarnpkg.com/@httptoolkit/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.2.tgz#514663c926264e2de7f6cd33d09f81675c35b9e3" + integrity sha512-YB+gYYVjgYUeJrGkfS91ABeNWCFU7EVcn9Cflf2UXjsIiPJEI6yPxujPcjKv9wIJpM+33KQW/qVEmc+BdIDK2w== + dependencies: + backo2 "^1.0.2" + eventemitter3 "^3.1.0" + iterall "^1.2.1" + symbol-observable "^1.0.4" + ws "^8.8.0" + +"@httptoolkit/websocket-stream@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@httptoolkit/websocket-stream/-/websocket-stream-6.0.1.tgz#8d732f1509860236276f6b0759db4cc9859bbb62" + integrity sha512-A0NOZI+Glp3Xgcz6Na7i7o09+/+xm2m0UCU8gdtM2nIv6/cjLmhMZMqehSpTlgbx9omtLmV8LVqOskPEyWnmZQ== + dependencies: + "@types/ws" "*" + duplexify "^3.5.1" + inherits "^2.0.1" + isomorphic-ws "^4.0.1" + readable-stream "^2.3.3" + safe-buffer "^5.1.2" + ws "*" + xtend "^4.0.0" + +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.6": + version "0.16.6" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" + integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== + dependencies: + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.3.0" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/retry@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" + integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== + +"@humanwhocodes/retry@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.1.tgz#9a96ce501bc62df46c4031fbd970e3cc6b10f07b" + integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -639,6 +763,11 @@ resolved "https://registry.yarnpkg.com/@stablelib/utf8/-/utf8-2.0.0.tgz#05725ef9d39ed10a017e1b6e01374bd998c83167" integrity sha512-bHaUduwFKYgj6rRvA5udyyg+ASx6gJZiQaXvfBHb7A2r+X9tRIKJ/VmpQKFQnEMInpBTh7jJLy+Gt99GH9YZ9g== +"@tootallnate/quickjs-emscripten@^0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" + integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA== + "@types/babel__core@^7.1.14": version "7.1.14" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.14.tgz#faaeefc4185ec71c389f4501ee5ec84b170cc402" @@ -672,6 +801,18 @@ dependencies: "@babel/types" "^7.3.0" +"@types/cors@^2.8.6": + version "2.8.17" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.17.tgz#5d718a5e494a8166f569d986794e49c48b216b2b" + integrity sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA== + dependencies: + "@types/node" "*" + +"@types/estree@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + "@types/graceful-fs@^4.1.3": version "4.1.9" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" @@ -711,7 +852,7 @@ expect "^29.0.0" pretty-format "^29.0.0" -"@types/json-schema@^7.0.7": +"@types/json-schema@^7.0.15": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -733,6 +874,13 @@ resolved "https://registry.yarnpkg.com/@types/url-parse/-/url-parse-1.4.11.tgz#01f8faa7b8bfd438e5f5efb8337a74513a15602b" integrity sha512-FKvKIqRaykZtd4n47LbK/W/5fhQQ1X7cxxzG9A48h0BGN+S04NH7ervcCjM8tyR0lyGru83FAHSmw2ObgKoESg== +"@types/ws@*": + version "8.5.14" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.14.tgz#93d44b268c9127d96026cf44353725dd9b6c3c21" + integrity sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw== + dependencies: + "@types/node" "*" + "@types/yargs-parser@*": version "21.0.3" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" @@ -745,87 +893,118 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^4.15.2": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" - integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== - dependencies: - "@typescript-eslint/experimental-utils" "4.33.0" - "@typescript-eslint/scope-manager" "4.33.0" - debug "^4.3.1" - functional-red-black-tree "^1.0.1" - ignore "^5.1.8" - regexpp "^3.1.0" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/experimental-utils@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" - integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/parser@^4.15.2": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" - integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== - dependencies: - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - debug "^4.3.1" - -"@typescript-eslint/scope-manager@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" - integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== - dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - -"@typescript-eslint/types@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" - integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== - -"@typescript-eslint/typescript-estree@4.33.0", "@typescript-eslint/typescript-estree@^4.15.2": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" - integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== - dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/visitor-keys@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" - integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== - dependencies: - "@typescript-eslint/types" "4.33.0" - eslint-visitor-keys "^2.0.0" - -acorn-jsx@^5.3.1: +"@typescript-eslint/eslint-plugin@8.24.0": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.0.tgz#574a95d67660a1e4544ae131d672867a5b40abb3" + integrity sha512-aFcXEJJCI4gUdXgoo/j9udUYIHgF23MFkg09LFz2dzEmU0+1Plk4rQWv/IYKvPHAtlkkGoB3m5e6oUp+JPsNaQ== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.24.0" + "@typescript-eslint/type-utils" "8.24.0" + "@typescript-eslint/utils" "8.24.0" + "@typescript-eslint/visitor-keys" "8.24.0" + graphemer "^1.4.0" + ignore "^5.3.1" + natural-compare "^1.4.0" + ts-api-utils "^2.0.1" + +"@typescript-eslint/parser@8.24.0": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.24.0.tgz#bba837f9ee125b78f459ad947ff9b61be8139085" + integrity sha512-MFDaO9CYiard9j9VepMNa9MTcqVvSny2N4hkY6roquzj8pdCBRENhErrteaQuu7Yjn1ppk0v1/ZF9CG3KIlrTA== + dependencies: + "@typescript-eslint/scope-manager" "8.24.0" + "@typescript-eslint/types" "8.24.0" + "@typescript-eslint/typescript-estree" "8.24.0" + "@typescript-eslint/visitor-keys" "8.24.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@8.24.0": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.24.0.tgz#2e34b3eb2ce768f2ffb109474174ced5417002b1" + integrity sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw== + dependencies: + "@typescript-eslint/types" "8.24.0" + "@typescript-eslint/visitor-keys" "8.24.0" + +"@typescript-eslint/type-utils@8.24.0": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.24.0.tgz#6ee3ec4db06f9e5e7b01ca6c2b5dd5843a9fd1e8" + integrity sha512-8fitJudrnY8aq0F1wMiPM1UUgiXQRJ5i8tFjq9kGfRajU+dbPyOuHbl0qRopLEidy0MwqgTHDt6CnSeXanNIwA== + dependencies: + "@typescript-eslint/typescript-estree" "8.24.0" + "@typescript-eslint/utils" "8.24.0" + debug "^4.3.4" + ts-api-utils "^2.0.1" + +"@typescript-eslint/types@8.24.0": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.24.0.tgz#694e7fb18d70506c317b816de9521300b0f72c8e" + integrity sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw== + +"@typescript-eslint/typescript-estree@8.24.0": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.0.tgz#0487349be174097bb329a58273100a9629e03c6c" + integrity sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ== + dependencies: + "@typescript-eslint/types" "8.24.0" + "@typescript-eslint/visitor-keys" "8.24.0" + debug "^4.3.4" + fast-glob "^3.3.2" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^2.0.1" + +"@typescript-eslint/utils@8.24.0": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.24.0.tgz#21cb1195ae79230af825bfeed59574f5cb70a749" + integrity sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "8.24.0" + "@typescript-eslint/types" "8.24.0" + "@typescript-eslint/typescript-estree" "8.24.0" + +"@typescript-eslint/visitor-keys@8.24.0": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.0.tgz#36ecf0b9b1d819ad88a3bd4157ab7d594cb797c9" + integrity sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg== + dependencies: + "@typescript-eslint/types" "8.24.0" + eslint-visitor-keys "^4.2.0" + +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.14.0: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== -ajv@^6.10.0, ajv@^6.12.4: +agent-base@6, agent-base@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +agent-base@^7.1.0, agent-base@^7.1.2: + version "7.1.3" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1" + integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== + +ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -835,21 +1014,6 @@ ajv@^6.10.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.1: - version "8.17.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" - integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== - dependencies: - fast-deep-equal "^3.1.3" - fast-uri "^3.0.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - -ansi-colors@^4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -896,15 +1060,36 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +ast-types@^0.13.4: + version "0.13.4" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" + integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== + dependencies: + tslib "^2.0.1" + +async-mutex@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.5.0.tgz#353c69a0b9e75250971a64ac203b0ebfddd75482" + integrity sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA== + dependencies: + tslib "^2.4.0" + +async@^2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" async@^3.2.3: version "3.2.6" @@ -971,11 +1156,44 @@ babel-preset-jest@^29.6.3: babel-plugin-jest-hoist "^29.6.3" babel-preset-current-node-syntax "^1.0.0" +backo2@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + integrity sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA== + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base64-arraybuffer@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + integrity sha512-437oANT9tP582zZMwSvZGy2nmSeAb8DW2me3y+Uv1Wp2Rulr8Mqlyrv3E7MLxmsiaPSMMDmiDVzgE+e8zlMx9g== + +basic-ftp@^5.0.2: + version "5.0.5" + resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.0.5.tgz#14a474f5fffecca1f4f406f1c26b18f800225ac0" + integrity sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg== + +body-parser@1.20.3, body-parser@^1.15.2: + version "1.20.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.13.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -998,6 +1216,11 @@ braces@^3.0.3: dependencies: fill-range "^7.1.1" +brotli-wasm@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/brotli-wasm/-/brotli-wasm-3.0.1.tgz#eefe20f7368fef20d53314cffeaa44733dc2b259" + integrity sha512-U3K72/JAi3jITpdhZBqzSUq+DUY697tLxOuFXB+FpAE/Ug+5C3VZrv4uA674EUZHxNAuQ9wETXNqQkxZD6oL4A== + browserslist@^4.24.0: version "4.24.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.0.tgz#a1325fe4bc80b64fda169629fc01b3d6cecd38d4" @@ -1027,6 +1250,32 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cacheable-lookup@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz#0330a543471c61faa4e9035db583aad753b36385" + integrity sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww== + +call-bind-apply-helpers@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +call-bound@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.3.tgz#41cfd032b593e39176a71533ab4f384aa04fd681" + integrity sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA== + dependencies: + call-bind-apply-helpers "^1.0.1" + get-intrinsic "^1.2.6" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -1122,16 +1371,71 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +common-tags@^1.8.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" + integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +connect@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + convert-source-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" + integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cors-gate@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/cors-gate/-/cors-gate-1.1.3.tgz#4ff964e958a94f78da2029f0f95842410d812d19" + integrity sha512-RFqvbbpj02lqKDhqasBEkgzmT3RseCH3DKy5sT2W9S1mhctABKQP3ktKcnKN0h8t4pJ2SneI3hPl3TGNi/VmZA== + +cors@^2.8.4: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + create-jest@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" @@ -1145,7 +1449,14 @@ create-jest@^29.7.0: jest-util "^29.7.0" prompts "^2.0.1" -cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-fetch@^3.1.5: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.2.0.tgz#34e9192f53bc757d6614304d9e5e6fb4edb782e3" + integrity sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q== + dependencies: + node-fetch "^2.7.0" + +cross-spawn@^7.0.3, cross-spawn@^7.0.6: version "7.0.6" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== @@ -1154,13 +1465,32 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -debug@^4.0.1, debug@^4.3.1: - version "4.3.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" - integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== +data-uri-to-buffer@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz#8a58bb67384b261a38ef18bea1810cb01badd28b" + integrity sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw== + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: + version "4.4.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== dependencies: ms "^2.1.3" +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + debug@^4.1.0, debug@^4.1.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" @@ -1168,6 +1498,13 @@ debug@^4.1.0, debug@^4.1.1: dependencies: ms "2.1.2" +debug@^4.3.1: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + dedent@^1.0.0: version "1.5.3" resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" @@ -1183,6 +1520,32 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +degenerator@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5" + integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ== + dependencies: + ast-types "^0.13.4" + escodegen "^2.1.0" + esprima "^4.0.1" + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +destroyable-server@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/destroyable-server/-/destroyable-server-1.0.2.tgz#5257867b2207b4ae45b1d23f816ee83e078290db" + integrity sha512-Ln7ZKRq+7kr/3e4FCI8+jAjRbqbdaET8/ZBoUVvn+sDSAD7zDZA5mykkPRcrjBcaGy+LOM4ntMlIp1NMj1kMxw== + dependencies: + "@types/node" "*" + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -1193,19 +1556,29 @@ diff-sequences@^29.6.3: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== dependencies: - path-type "^4.0.0" + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== +duplexify@^3.5.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== dependencies: - esutils "^2.0.2" + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== ejs@^3.1.10: version "3.1.10" @@ -1229,13 +1602,22 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -enquirer@^2.3.5: - version "2.4.1" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" - integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + +end-of-stream@^1.0.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: - ansi-colors "^4.1.1" - strip-ansi "^6.0.1" + once "^1.4.0" error-ex@^1.3.1: version "1.3.2" @@ -1244,6 +1626,23 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +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== + +es-object-atoms@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + es6-promise@^4.2.8: version "4.2.8" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" @@ -1259,6 +1658,11 @@ escalade@^3.2.0: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -1274,99 +1678,90 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^2.1.0: +escodegen@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== dependencies: - eslint-visitor-keys "^1.1.0" + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionalDependencies: + source-map "~0.6.1" -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== +eslint-scope@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442" + integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A== dependencies: - eslint-visitor-keys "^2.0.0" + esrecurse "^4.3.0" + estraverse "^5.2.0" -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== +eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint@^7.20.0: - version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - ajv "^6.10.0" +eslint-visitor-keys@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" + integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== + +eslint@^9.20.1: + version "9.20.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.20.1.tgz#923924c078f5226832449bac86662dd7e53c91d6" + integrity sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.19.0" + "@eslint/core" "^0.11.0" + "@eslint/eslintrc" "^3.2.0" + "@eslint/js" "9.20.0" + "@eslint/plugin-kit" "^0.2.5" + "@humanfs/node" "^0.16.6" + "@humanwhocodes/module-importer" "^1.0.1" + "@humanwhocodes/retry" "^0.4.1" + "@types/estree" "^1.0.6" + "@types/json-schema" "^7.0.15" + ajv "^6.12.4" chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" + cross-spawn "^7.0.6" + debug "^4.3.2" escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" + eslint-scope "^8.2.0" + eslint-visitor-keys "^4.2.0" + espree "^10.3.0" + esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" + file-entry-cache "^8.0.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" lodash.merge "^4.6.2" - minimatch "^3.0.4" + minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" + optionator "^0.9.3" -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== +espree@^10.0.1, espree@^10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" + integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" + acorn "^8.14.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.2.0" -esprima@^4.0.0: +esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0: +esquery@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== @@ -1380,11 +1775,6 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - estraverse@^5.1.0, estraverse@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" @@ -1395,6 +1785,16 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eventemitter3@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -1426,21 +1826,63 @@ expect@^29.0.0, expect@^29.7.0: jest-message-util "^29.7.0" jest-util "^29.7.0" +express@^4.14.0: + version "4.21.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.21.2.tgz#cf250e48362174ead6cea4a566abef0162c1ec32" + integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.3" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.7.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~2.0.0" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.3.1" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.3" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.12" + proxy-addr "~2.0.7" + qs "6.13.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.19.0" + serve-static "1.16.2" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.9: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== +fast-glob@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" glob-parent "^5.1.2" merge2 "^1.3.0" - micromatch "^4.0.4" + micromatch "^4.0.8" + +fast-json-patch@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-json-patch/-/fast-json-patch-3.1.1.tgz#85064ea1b1ebf97a3f7ad01e23f9337e72c66947" + integrity sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ== fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" @@ -1457,11 +1899,6 @@ fast-sha256@^1.3.0: resolved "https://registry.yarnpkg.com/fast-sha256/-/fast-sha256-1.3.0.tgz#7916ba2054eeb255982608cccd0f6660c79b7ae6" integrity sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ== -fast-uri@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.3.tgz#892a1c91802d5d7860de728f18608a0573142241" - integrity sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw== - fastq@^1.6.0: version "1.11.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" @@ -1476,12 +1913,12 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== dependencies: - flat-cache "^3.0.4" + flat-cache "^4.0.0" filelist@^1.0.4: version "1.0.4" @@ -1497,6 +1934,32 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" +finalhandler@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +finalhandler@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" + integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== + dependencies: + debug "2.6.9" + encodeurl "~2.0.0" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -1505,20 +1968,37 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== dependencies: flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" + keyv "^4.5.4" flatted@^3.2.9: version "3.3.1" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1534,10 +2014,10 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== gensync@^1.0.0-beta.2: version "1.0.0-beta.2" @@ -1549,16 +2029,49 @@ 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.2.5, get-intrinsic@^1.2.6: + version "1.2.7" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.7.tgz#dcfcb33d3272e15f445d15124bc0a216189b9044" + integrity sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + function-bind "^1.1.2" + get-proto "^1.0.0" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.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" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== +get-proto@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +get-uri@^6.0.1: + version "6.0.4" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.4.tgz#6daaee9e12f9759e19e55ba313956883ef50e0a7" + integrity sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ== + dependencies: + basic-ftp "^5.0.2" + data-uri-to-buffer "^6.0.2" + debug "^4.3.4" + glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -1566,6 +2079,13 @@ glob-parent@^5.1.2: dependencies: is-glob "^4.0.1" +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + glob@^7.1.3: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" @@ -1595,30 +2115,55 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.6.0, globals@^13.9.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== -globby@^11.0.3: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" +globals@^15.15.0: + version "15.15.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.15.0.tgz#7c4761299d41c32b075715a4ce1ede7897ff72a8" + integrity sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg== + +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +graphql-http@^1.22.0: + version "1.22.4" + resolved "https://registry.yarnpkg.com/graphql-http/-/graphql-http-1.22.4.tgz#47b52ef0ab1f412943aca33ecfcdf22de525d59b" + integrity sha512-OC3ucK988teMf+Ak/O+ZJ0N2ukcgrEurypp8ePyJFWq83VzwRAmHxxr+XxrMpxO/FIwI4a7m/Fzv3tWGJv0wPA== + +graphql-subscriptions@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/graphql-subscriptions/-/graphql-subscriptions-1.2.1.tgz#2142b2d729661ddf967b7388f7cf1dd4cf2e061d" + integrity sha512-95yD/tKi24q8xYa7Q9rhQN16AYj5wPbrb8tmHGM3WRc9EBmWrG/0kkMl+tQG8wcEuE9ibR4zyOM31p5Sdr2v4g== + dependencies: + iterall "^1.3.0" + +graphql-tag@^2.12.6: + version "2.12.6" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" + integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== + dependencies: + tslib "^2.1.0" + +"graphql@^14.0.2 || ^15.5": + version "15.10.1" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.10.1.tgz#e9ff3bb928749275477f748b14aa5c30dcad6f2f" + integrity sha512-BL/Xd/T9baO6NFzoMpiMD7YUZ62R6viR5tp/MULVEnbYJXZA//kRNW7J0j1w/wXArgL0sCxhDfK5dczSKn3+cg== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -1629,6 +2174,11 @@ 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-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -1636,27 +2186,88 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== +http-encoding@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/http-encoding/-/http-encoding-2.0.1.tgz#79549062c4caa4e1598442744f2e88e5a4aac921" + integrity sha512-vqe8NzlqqvDgcrwI2JTPAiB/6Zs1zTEVZNnTZBJeBhaejLGSpXQtNf87ifumq/P4X82G9E4WWfJMNmwb6vsuGw== + dependencies: + brotli-wasm "^3.0.0" + pify "^5.0.0" + zstd-codec "^0.1.5" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-proxy-agent@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + +http2-wrapper@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.1.tgz#310968153dcdedb160d8b72114363ef5fce1f64a" + integrity sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.2.0" + +https-proxy-agent@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +https-proxy-agent@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" + integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== + dependencies: + agent-base "^7.1.2" + debug "4" + human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" -ignore@^5.1.8, ignore@^5.2.0: +ignore@^5.2.0, ignore@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -1685,11 +2296,24 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -1724,6 +2348,13 @@ is-glob@^4.0.0, is-glob@^4.0.1: dependencies: is-extglob "^2.1.1" +is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -1734,11 +2365,21 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + istanbul-lib-coverage@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" @@ -1797,6 +2438,11 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +iterall@^1.2.1, iterall@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" + integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== + jake@^10.8.5: version "10.9.2" resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" @@ -2178,6 +2824,18 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -2203,11 +2861,6 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" @@ -2218,7 +2871,7 @@ json5@^2.2.3: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -keyv@^4.5.3: +keyv@^4.5.4: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== @@ -2255,6 +2908,13 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -2265,10 +2925,10 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== +lodash@^4.16.4, lodash@^4.17.14: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== lru-cache@^5.1.1: version "5.1.1" @@ -2277,6 +2937,11 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +lru-cache@^7.14.0: + version "7.18.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + make-dir@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -2296,17 +2961,37 @@ makeerror@1.0.12: dependencies: tmpl "1.0.5" +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0, merge2@^1.4.1: +merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -micromatch@^4.0.4: +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.4, micromatch@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== @@ -2314,6 +2999,23 @@ micromatch@^4.0.4: braces "^3.0.3" picomatch "^2.3.1" +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -2333,21 +3035,108 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp@^0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mockttp@^3.15.5: + version "3.15.5" + resolved "https://registry.yarnpkg.com/mockttp/-/mockttp-3.15.5.tgz#1f18b849fd0baf3c5b84d267c01e8b791a6b0b58" + integrity sha512-Efhz6RcAga1Zn93W5XWOwUSvIq9NNhJHig4gCCm6whemDKgt7aYalhrGIi7sdK7Cn7ipbG3x9n3ux+TljB+o6w== + dependencies: + "@graphql-tools/schema" "^8.5.0" + "@graphql-tools/utils" "^8.8.0" + "@httptoolkit/httpolyglot" "^2.2.1" + "@httptoolkit/subscriptions-transport-ws" "^0.11.2" + "@httptoolkit/websocket-stream" "^6.0.1" + "@types/cors" "^2.8.6" + "@types/node" "*" + async-mutex "^0.5.0" + base64-arraybuffer "^0.1.5" + body-parser "^1.15.2" + cacheable-lookup "^6.0.0" + common-tags "^1.8.0" + connect "^3.7.0" + cors "^2.8.4" + cors-gate "^1.1.3" + cross-fetch "^3.1.5" + destroyable-server "^1.0.2" + express "^4.14.0" + fast-json-patch "^3.1.1" + graphql "^14.0.2 || ^15.5" + graphql-http "^1.22.0" + graphql-subscriptions "^1.1.0" + graphql-tag "^2.12.6" + http-encoding "^2.0.1" + http2-wrapper "^2.2.1" + https-proxy-agent "^5.0.1" + isomorphic-ws "^4.0.1" + lodash "^4.16.4" + lru-cache "^7.14.0" + native-duplexpair "^1.0.0" + node-forge "^1.2.1" + pac-proxy-agent "^7.0.0" + parse-multipart-data "^1.4.0" + performance-now "^2.1.0" + portfinder "^1.0.32" + read-tls-client-hello "^1.0.0" + semver "^7.5.3" + socks-proxy-agent "^7.0.0" + typed-error "^3.0.2" + urlpattern-polyfill "^8.0.0" + uuid "^8.3.2" + ws "^8.8.0" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.1.3: +ms@2.1.3, ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +native-duplexpair@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/native-duplexpair/-/native-duplexpair-1.0.0.tgz#7899078e64bf3c8a3d732601b3d40ff05db58fa0" + integrity sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +netmask@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" + integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== + node-fetch@^2.6.1: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -2355,6 +3144,18 @@ node-fetch@^2.6.1: dependencies: whatwg-url "^5.0.0" +node-fetch@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-forge@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -2377,7 +3178,31 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -once@^1.3.0: +object-assign@^4: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.13.3: + version "1.13.4" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + +once@^1.3.0, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -2391,7 +3216,7 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -optionator@^0.9.1: +optionator@^0.9.3: version "0.9.4" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== @@ -2410,7 +3235,7 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.1.0: +p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -2424,11 +3249,40 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +pac-proxy-agent@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-7.1.0.tgz#da7c3b5c4cccc6655aaafb701ae140fb23f15df2" + integrity sha512-Z5FnLVVZSnX7WjBg0mhDtydeRZ1xMcATZThjySQUHqr+0ksP8kqaw23fNKkaaN/Z8gwLUs/W7xdl0I75eP2Xyw== + dependencies: + "@tootallnate/quickjs-emscripten" "^0.23.0" + agent-base "^7.1.2" + debug "^4.3.4" + get-uri "^6.0.1" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.6" + pac-resolver "^7.0.1" + socks-proxy-agent "^8.0.5" + +pac-resolver@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-7.0.1.tgz#54675558ea368b64d210fd9c92a640b5f3b8abb6" + integrity sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg== + dependencies: + degenerator "^5.0.0" + netmask "^2.0.2" + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -2446,6 +3300,16 @@ parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse-multipart-data@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/parse-multipart-data/-/parse-multipart-data-1.5.0.tgz#ab894cc6c40229d0a2042500e120df7562d94b87" + integrity sha512-ck5zaMF0ydjGfejNMnlo5YU2oJ+pT+80Jb1y4ybanT27j+zbVP/jkYmCrUGsEln0Ox/hZmuvgy8Ra7AxbXP2Mw== + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -2466,10 +3330,15 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +path-to-regexp@0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7" + integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== picocolors@^1.0.0, picocolors@^1.1.0: version "1.1.0" @@ -2486,6 +3355,11 @@ picomatch@^2.2.3, picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== + pirates@^4.0.4: version "4.0.6" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" @@ -2498,6 +3372,15 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +portfinder@^1.0.32: + version "1.0.32" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81" + integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg== + dependencies: + async "^2.6.4" + debug "^3.2.7" + mkdirp "^0.5.6" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -2517,10 +3400,10 @@ pretty-format@^29.0.0, pretty-format@^29.7.0: ansi-styles "^5.0.0" react-is "^18.0.0" -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== prompts@^2.0.1: version "2.4.1" @@ -2530,6 +3413,14 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -2540,6 +3431,13 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== +qs@6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== + dependencies: + side-channel "^1.0.6" + querystringify@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" @@ -2550,31 +3448,66 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.2.tgz#abf64491e6ecf0f38a6502403d4cda04f372dfd3" integrity sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg== +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + react-is@^18.0.0: version "18.3.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== -regexpp@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== +read-tls-client-hello@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-tls-client-hello/-/read-tls-client-hello-1.0.1.tgz#b4d37bc8751d3d8b86ff74cc60d878d25a1d3698" + integrity sha512-OvSzfVv6Y656ekUxB7aDhWkLW7y1ck16ChfLFNJhKNADFNweH2fvyiEZkGmmdtXbOtlNuH2zVXZoFCW349M+GA== + dependencies: + "@types/node" "*" + +readable-stream@^2.0.0, readable-stream@^2.3.3: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= +resolve-alpn@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -2610,13 +3543,6 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -2624,16 +3550,70 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +safe-buffer@5.2.1, safe-buffer@^5.1.2: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.2.1, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.6.3: +semver@^7.5.3, semver@^7.5.4, semver@^7.6.3: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== +semver@^7.6.0: + version "7.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" + integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== + +send@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serve-static@1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== + dependencies: + encodeurl "~2.0.0" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.19.0" + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -2646,6 +3626,46 @@ 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-list@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" + +side-channel@^1.0.6: + version "1.1.0" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + side-channel-list "^1.0.0" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" + signal-exit@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -2666,14 +3686,36 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +socks-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" + integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" + agent-base "^6.0.2" + debug "^4.3.3" + socks "^2.6.2" + +socks-proxy-agent@^8.0.5: + version "8.0.5" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz#b9cdb4e7e998509d7659d689ce7697ac21645bee" + integrity sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw== + dependencies: + agent-base "^7.1.2" + debug "^4.3.4" + socks "^2.8.3" + +socks@^2.6.2, socks@^2.8.3: + version "2.8.4" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.4.tgz#07109755cdd4da03269bda4725baa061ab56d5cc" + integrity sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ== + dependencies: + ip-address "^9.0.5" + smart-buffer "^4.2.0" source-map-support@0.5.13: version "0.5.13" @@ -2688,11 +3730,16 @@ source-map@^0.5.0: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.6.0, source-map@^0.6.1: +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -2705,6 +3752,21 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +stream-shift@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" + integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== + string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -2740,6 +3802,13 @@ string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + strip-ansi@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" @@ -2764,7 +3833,7 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -2798,16 +3867,10 @@ svix-fetch@^3.0.0: node-fetch "^2.6.1" whatwg-fetch "^3.4.1" -table@^6.0.9: - version "6.8.2" - resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" - integrity sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA== - dependencies: - ajv "^8.0.1" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" +symbol-observable@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== test-exclude@^6.0.0: version "6.0.0" @@ -2818,11 +3881,6 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" @@ -2840,11 +3898,21 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= +ts-api-utils@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.0.1.tgz#660729385b625b939aaa58054f45c058f33f10cd" + integrity sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w== + ts-jest@^29.2.5: version "29.2.5" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.2.5.tgz#591a3c108e1f5ebd013d3152142cb5472b399d63" @@ -2860,17 +3928,10 @@ ts-jest@^29.2.5: semver "^7.6.3" yargs-parser "^21.1.1" -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" +tslib@^2.0.1, tslib@^2.1.0, tslib@^2.4.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -2884,16 +3945,33 @@ type-detect@4.0.8: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - type-fest@^0.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typed-error@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/typed-error/-/typed-error-3.2.2.tgz#3c03a80bd724ddb12c86432a573d230250c1029a" + integrity sha512-Z48LU67/qJ+vyA7lh3ozELqpTp3pvQoY5RtLi5wQ/UGSrEidBhlVSqhjr8B3iqbGpjqAoJYrtSYXWMDtidWGkA== + +typescript-eslint@^8.24.0: + version "8.24.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.24.0.tgz#cc655e71885ecb8280342b422ad839a2e2e46a96" + integrity sha512-/lmv4366en/qbB32Vz5+kCNZEMf6xYHwh1z48suBwZvAtnXKbP+YhGe8OLE2BqC67LMqKkCNLtjejdwsdW6uOQ== + dependencies: + "@typescript-eslint/eslint-plugin" "8.24.0" + "@typescript-eslint/parser" "8.24.0" + "@typescript-eslint/utils" "8.24.0" + typescript@^4.0: version "4.9.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" @@ -2904,6 +3982,11 @@ undici-types@~6.19.2: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + update-browserslist-db@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" @@ -2927,10 +4010,25 @@ url-parse@^1.5.10: querystringify "^2.1.1" requires-port "^1.0.0" -v8-compile-cache@^2.0.3: - version "2.4.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz#cdada8bec61e15865f05d097c5f4fd30e94dc128" - integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== +urlpattern-polyfill@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz#99f096e35eff8bf4b5a2aa7d58a1523d6ebc7ce5" + integrity sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ== + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== v8-to-istanbul@^9.0.1: version "9.3.0" @@ -2941,6 +4039,16 @@ v8-to-istanbul@^9.0.1: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^2.0.0" +value-or-promise@1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.11.tgz#3e90299af31dd014fe843fe309cefa7c1d94b140" + integrity sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + walker@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" @@ -3000,6 +4108,16 @@ write-file-atomic@^4.0.2: imurmurhash "^0.1.4" signal-exit "^3.0.7" +ws@*, ws@^8.8.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" @@ -3032,3 +4150,8 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zstd-codec@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/zstd-codec/-/zstd-codec-0.1.5.tgz#c180193e4603ef74ddf704bcc835397d30a60e42" + integrity sha512-v3fyjpK8S/dpY/X5WxqTK3IoCnp/ZOLxn144GZVlNUjtwAchzrVo03h+oMATFhCIiJ5KTr4V3vDQQYz4RU684g== From 538a9dc77cb17204d7898ea8b2c720fa29bea512 Mon Sep 17 00:00:00 2001 From: Mendy Man Date: Mon, 17 Feb 2025 11:42:29 -0500 Subject: [PATCH 03/14] js: Pull changes from new codegen, and rename to camelCase --- javascript/src/api/application.ts | 34 +++-- javascript/src/api/authentication.ts | 22 ++- .../{background_task.ts => backgroundTask.ts} | 19 ++- javascript/src/api/endpoint.ts | 132 +++++++++--------- javascript/src/api/environment.ts | 41 ++++++ .../src/api/{event_type.ts => eventType.ts} | 47 ++++--- javascript/src/api/health.ts | 13 ++ javascript/src/api/integration.ts | 34 +++-- javascript/src/api/message.ts | 46 +++++- .../{message_attempt.ts => messageAttempt.ts} | 61 ++++---- ...point.ts => operationalWebhookEndpoint.ts} | 76 ++++++++-- javascript/src/api/statistics.ts | 16 ++- 12 files changed, 369 insertions(+), 172 deletions(-) rename javascript/src/api/{background_task.ts => backgroundTask.ts} (75%) create mode 100644 javascript/src/api/environment.ts rename javascript/src/api/{event_type.ts => eventType.ts} (74%) create mode 100644 javascript/src/api/health.ts rename javascript/src/api/{message_attempt.ts => messageAttempt.ts} (90%) rename javascript/src/api/{operational_webhook_endpoint.ts => operationalWebhookEndpoint.ts} (69%) diff --git a/javascript/src/api/application.ts b/javascript/src/api/application.ts index 867fbec69..7d30fbdfa 100644 --- a/javascript/src/api/application.ts +++ b/javascript/src/api/application.ts @@ -1,11 +1,12 @@ // this file is @generated +import { ApplicationIn, ApplicationInSerializer } from "../models/applicationIn"; +import { ApplicationOut, ApplicationOutSerializer } from "../models/applicationOut"; +import { ApplicationPatch, ApplicationPatchSerializer } from "../models/applicationPatch"; import { - ApplicationIn, - ApplicationOut, - ApplicationPatch, ListResponseApplicationOut, - Ordering, -} from "../openapi"; + ListResponseApplicationOutSerializer, +} from "../models/listResponseApplicationOut"; +import { Ordering } from "../models/ordering"; import { HttpMethod, SvixRequest, SvixRequestContext } from "../request"; export interface ApplicationListOptions { @@ -32,7 +33,10 @@ export class Application { request.setQueryParam("iterator", options?.iterator); request.setQueryParam("order", options?.order); - return request.send(this.requestCtx, "ListResponseApplicationOut"); + return request.send( + this.requestCtx, + ListResponseApplicationOutSerializer._fromJsonObject + ); } /** Create a new application. */ @@ -43,9 +47,9 @@ export class Application { const request = new SvixRequest(HttpMethod.POST, "/api/v1/app"); request.setHeaderParam("idempotency-key", options?.idempotencyKey); - request.setBody(applicationIn, "ApplicationIn"); + request.setBody(ApplicationInSerializer._toJsonObject(applicationIn)); - return request.send(this.requestCtx, "ApplicationOut"); + return request.send(this.requestCtx, ApplicationOutSerializer._fromJsonObject); } /** Get the application with the UID from `applicationIn`, or create it if it doesn't exist yet. */ @@ -57,9 +61,9 @@ export class Application { request.setQueryParam("get_if_exists", true); request.setHeaderParam("idempotency-key", options?.idempotencyKey); - request.setBody(applicationIn, "ApplicationIn"); + request.setBody(ApplicationInSerializer._toJsonObject(applicationIn)); - return request.send(this.requestCtx, "ApplicationOut"); + return request.send(this.requestCtx, ApplicationOutSerializer._fromJsonObject); } /** Get an application. */ @@ -68,7 +72,7 @@ export class Application { request.setPathParam("app_id", appId); - return request.send(this.requestCtx, "ApplicationOut"); + return request.send(this.requestCtx, ApplicationOutSerializer._fromJsonObject); } /** Update an application. */ @@ -76,9 +80,9 @@ export class Application { const request = new SvixRequest(HttpMethod.PUT, "/api/v1/app/{app_id}"); request.setPathParam("app_id", appId); - request.setBody(applicationIn, "ApplicationIn"); + request.setBody(ApplicationInSerializer._toJsonObject(applicationIn)); - return request.send(this.requestCtx, "ApplicationOut"); + return request.send(this.requestCtx, ApplicationOutSerializer._fromJsonObject); } /** Delete an application. */ @@ -98,8 +102,8 @@ export class Application { const request = new SvixRequest(HttpMethod.PATCH, "/api/v1/app/{app_id}"); request.setPathParam("app_id", appId); - request.setBody(applicationPatch, "ApplicationPatch"); + request.setBody(ApplicationPatchSerializer._toJsonObject(applicationPatch)); - return request.send(this.requestCtx, "ApplicationOut"); + return request.send(this.requestCtx, ApplicationOutSerializer._fromJsonObject); } } diff --git a/javascript/src/api/authentication.ts b/javascript/src/api/authentication.ts index 98f9f83d1..fc80b7e01 100644 --- a/javascript/src/api/authentication.ts +++ b/javascript/src/api/authentication.ts @@ -1,10 +1,20 @@ // this file is @generated import { AppPortalAccessIn, + AppPortalAccessInSerializer, +} from "../models/appPortalAccessIn"; +import { AppPortalAccessOut, + AppPortalAccessOutSerializer, +} from "../models/appPortalAccessOut"; +import { ApplicationTokenExpireIn, + ApplicationTokenExpireInSerializer, +} from "../models/applicationTokenExpireIn"; +import { DashboardAccessOut, -} from "../openapi"; + DashboardAccessOutSerializer, +} from "../models/dashboardAccessOut"; import { HttpMethod, SvixRequest, SvixRequestContext } from "../request"; export interface AuthenticationAppPortalAccessOptions { @@ -39,9 +49,9 @@ export class Authentication { request.setPathParam("app_id", appId); request.setHeaderParam("idempotency-key", options?.idempotencyKey); - request.setBody(appPortalAccessIn, "AppPortalAccessIn"); + request.setBody(AppPortalAccessInSerializer._toJsonObject(appPortalAccessIn)); - return request.send(this.requestCtx, "AppPortalAccessOut"); + return request.send(this.requestCtx, AppPortalAccessOutSerializer._fromJsonObject); } /** Expire all of the tokens associated with a specific application. */ @@ -57,7 +67,9 @@ export class Authentication { request.setPathParam("app_id", appId); request.setHeaderParam("idempotency-key", options?.idempotencyKey); - request.setBody(applicationTokenExpireIn, "ApplicationTokenExpireIn"); + request.setBody( + ApplicationTokenExpireInSerializer._toJsonObject(applicationTokenExpireIn) + ); return request.sendNoResponseBody(this.requestCtx); } @@ -81,7 +93,7 @@ export class Authentication { request.setPathParam("app_id", appId); request.setHeaderParam("idempotency-key", options?.idempotencyKey); - return request.send(this.requestCtx, "DashboardAccessOut"); + return request.send(this.requestCtx, DashboardAccessOutSerializer._fromJsonObject); } /** diff --git a/javascript/src/api/background_task.ts b/javascript/src/api/backgroundTask.ts similarity index 75% rename from javascript/src/api/background_task.ts rename to javascript/src/api/backgroundTask.ts index 7bf90d533..8a6f0d73a 100644 --- a/javascript/src/api/background_task.ts +++ b/javascript/src/api/backgroundTask.ts @@ -1,11 +1,15 @@ // this file is @generated import { BackgroundTaskOut, - BackgroundTaskStatus, - BackgroundTaskType, + BackgroundTaskOutSerializer, +} from "../models/backgroundTaskOut"; +import { BackgroundTaskStatus } from "../models/backgroundTaskStatus"; +import { BackgroundTaskType } from "../models/backgroundTaskType"; +import { ListResponseBackgroundTaskOut, - Ordering, -} from "../openapi"; + ListResponseBackgroundTaskOutSerializer, +} from "../models/listResponseBackgroundTaskOut"; +import { Ordering } from "../models/ordering"; import { HttpMethod, SvixRequest, SvixRequestContext } from "../request"; export interface BackgroundTaskListOptions { @@ -36,7 +40,10 @@ export class BackgroundTask { request.setQueryParam("iterator", options?.iterator); request.setQueryParam("order", options?.order); - return request.send(this.requestCtx, "ListResponseBackgroundTaskOut"); + return request.send( + this.requestCtx, + ListResponseBackgroundTaskOutSerializer._fromJsonObject + ); } /** @@ -56,6 +63,6 @@ export class BackgroundTask { request.setPathParam("task_id", taskId); - return request.send(this.requestCtx, "BackgroundTaskOut"); + return request.send(this.requestCtx, BackgroundTaskOutSerializer._fromJsonObject); } } diff --git a/javascript/src/api/endpoint.ts b/javascript/src/api/endpoint.ts index 17f8a19d6..13b263273 100644 --- a/javascript/src/api/endpoint.ts +++ b/javascript/src/api/endpoint.ts @@ -1,27 +1,48 @@ // this file is @generated import { EndpointHeadersIn, + EndpointHeadersInSerializer, +} from "../models/endpointHeadersIn"; +import { EndpointHeadersOut, + EndpointHeadersOutSerializer, +} from "../models/endpointHeadersOut"; +import { EndpointHeadersPatchIn, - EndpointIn, - EndpointOauthConfigIn, - EndpointOut, - EndpointPatch, + EndpointHeadersPatchInSerializer, +} from "../models/endpointHeadersPatchIn"; +import { EndpointIn, EndpointInSerializer } from "../models/endpointIn"; +import { EndpointOut, EndpointOutSerializer } from "../models/endpointOut"; +import { EndpointPatch, EndpointPatchSerializer } from "../models/endpointPatch"; +import { EndpointSecretOut, + EndpointSecretOutSerializer, +} from "../models/endpointSecretOut"; +import { EndpointSecretRotateIn, - EndpointStats, + EndpointSecretRotateInSerializer, +} from "../models/endpointSecretRotateIn"; +import { EndpointStats, EndpointStatsSerializer } from "../models/endpointStats"; +import { EndpointTransformationIn, + EndpointTransformationInSerializer, +} from "../models/endpointTransformationIn"; +import { EndpointTransformationOut, - EndpointUpdate, - EventExampleIn, + EndpointTransformationOutSerializer, +} from "../models/endpointTransformationOut"; +import { EndpointUpdate, EndpointUpdateSerializer } from "../models/endpointUpdate"; +import { EventExampleIn, EventExampleInSerializer } from "../models/eventExampleIn"; +import { ListResponseEndpointOut, - MessageOut, - Ordering, - RecoverIn, - RecoverOut, - ReplayIn, - ReplayOut, -} from "../openapi"; + ListResponseEndpointOutSerializer, +} from "../models/listResponseEndpointOut"; +import { MessageOut, MessageOutSerializer } from "../models/messageOut"; +import { Ordering } from "../models/ordering"; +import { RecoverIn, RecoverInSerializer } from "../models/recoverIn"; +import { RecoverOut, RecoverOutSerializer } from "../models/recoverOut"; +import { ReplayIn, ReplayInSerializer } from "../models/replayIn"; +import { ReplayOut, ReplayOutSerializer } from "../models/replayOut"; import { HttpMethod, SvixRequest, SvixRequestContext } from "../request"; export interface EndpointListOptions { @@ -75,7 +96,10 @@ export class Endpoint { request.setQueryParam("iterator", options?.iterator); request.setQueryParam("order", options?.order); - return request.send(this.requestCtx, "ListResponseEndpointOut"); + return request.send( + this.requestCtx, + ListResponseEndpointOutSerializer._fromJsonObject + ); } /** @@ -92,9 +116,9 @@ export class Endpoint { request.setPathParam("app_id", appId); request.setHeaderParam("idempotency-key", options?.idempotencyKey); - request.setBody(endpointIn, "EndpointIn"); + request.setBody(EndpointInSerializer._toJsonObject(endpointIn)); - return request.send(this.requestCtx, "EndpointOut"); + return request.send(this.requestCtx, EndpointOutSerializer._fromJsonObject); } /** Get an endpoint. */ @@ -107,7 +131,7 @@ export class Endpoint { request.setPathParam("app_id", appId); request.setPathParam("endpoint_id", endpointId); - return request.send(this.requestCtx, "EndpointOut"); + return request.send(this.requestCtx, EndpointOutSerializer._fromJsonObject); } /** Update an endpoint. */ @@ -123,9 +147,9 @@ export class Endpoint { request.setPathParam("app_id", appId); request.setPathParam("endpoint_id", endpointId); - request.setBody(endpointUpdate, "EndpointUpdate"); + request.setBody(EndpointUpdateSerializer._toJsonObject(endpointUpdate)); - return request.send(this.requestCtx, "EndpointOut"); + return request.send(this.requestCtx, EndpointOutSerializer._fromJsonObject); } /** Delete an endpoint. */ @@ -154,9 +178,9 @@ export class Endpoint { request.setPathParam("app_id", appId); request.setPathParam("endpoint_id", endpointId); - request.setBody(endpointPatch, "EndpointPatch"); + request.setBody(EndpointPatchSerializer._toJsonObject(endpointPatch)); - return request.send(this.requestCtx, "EndpointOut"); + return request.send(this.requestCtx, EndpointOutSerializer._fromJsonObject); } /** Get the additional headers to be sent with the webhook. */ @@ -169,7 +193,7 @@ export class Endpoint { request.setPathParam("app_id", appId); request.setPathParam("endpoint_id", endpointId); - return request.send(this.requestCtx, "EndpointHeadersOut"); + return request.send(this.requestCtx, EndpointHeadersOutSerializer._fromJsonObject); } /** Set the additional headers to be sent with the webhook. */ @@ -185,7 +209,7 @@ export class Endpoint { request.setPathParam("app_id", appId); request.setPathParam("endpoint_id", endpointId); - request.setBody(endpointHeadersIn, "EndpointHeadersIn"); + request.setBody(EndpointHeadersInSerializer._toJsonObject(endpointHeadersIn)); return request.sendNoResponseBody(this.requestCtx); } @@ -211,7 +235,9 @@ export class Endpoint { request.setPathParam("app_id", appId); request.setPathParam("endpoint_id", endpointId); - request.setBody(endpointHeadersPatchIn, "EndpointHeadersPatchIn"); + request.setBody( + EndpointHeadersPatchInSerializer._toJsonObject(endpointHeadersPatchIn) + ); return request.sendNoResponseBody(this.requestCtx); } @@ -243,9 +269,9 @@ export class Endpoint { request.setPathParam("app_id", appId); request.setPathParam("endpoint_id", endpointId); request.setHeaderParam("idempotency-key", options?.idempotencyKey); - request.setBody(recoverIn, "RecoverIn"); + request.setBody(RecoverInSerializer._toJsonObject(recoverIn)); - return request.send(this.requestCtx, "RecoverOut"); + return request.send(this.requestCtx, RecoverOutSerializer._fromJsonObject); } /** @@ -268,9 +294,9 @@ export class Endpoint { request.setPathParam("app_id", appId); request.setPathParam("endpoint_id", endpointId); request.setHeaderParam("idempotency-key", options?.idempotencyKey); - request.setBody(replayIn, "ReplayIn"); + request.setBody(ReplayInSerializer._toJsonObject(replayIn)); - return request.send(this.requestCtx, "ReplayOut"); + return request.send(this.requestCtx, ReplayOutSerializer._fromJsonObject); } /** @@ -288,7 +314,7 @@ export class Endpoint { request.setPathParam("app_id", appId); request.setPathParam("endpoint_id", endpointId); - return request.send(this.requestCtx, "EndpointSecretOut"); + return request.send(this.requestCtx, EndpointSecretOutSerializer._fromJsonObject); } /** @@ -310,7 +336,9 @@ export class Endpoint { request.setPathParam("app_id", appId); request.setPathParam("endpoint_id", endpointId); request.setHeaderParam("idempotency-key", options?.idempotencyKey); - request.setBody(endpointSecretRotateIn, "EndpointSecretRotateIn"); + request.setBody( + EndpointSecretRotateInSerializer._toJsonObject(endpointSecretRotateIn) + ); return request.sendNoResponseBody(this.requestCtx); } @@ -330,9 +358,9 @@ export class Endpoint { request.setPathParam("app_id", appId); request.setPathParam("endpoint_id", endpointId); request.setHeaderParam("idempotency-key", options?.idempotencyKey); - request.setBody(eventExampleIn, "EventExampleIn"); + request.setBody(EventExampleInSerializer._toJsonObject(eventExampleIn)); - return request.send(this.requestCtx, "MessageOut"); + return request.send(this.requestCtx, MessageOutSerializer._fromJsonObject); } /** Get basic statistics for the endpoint. */ @@ -351,7 +379,7 @@ export class Endpoint { request.setQueryParam("since", options?.since); request.setQueryParam("until", options?.until); - return request.send(this.requestCtx, "EndpointStats"); + return request.send(this.requestCtx, EndpointStatsSerializer._fromJsonObject); } /** Get the transformation code associated with this endpoint. */ @@ -367,7 +395,10 @@ export class Endpoint { request.setPathParam("app_id", appId); request.setPathParam("endpoint_id", endpointId); - return request.send(this.requestCtx, "EndpointTransformationOut"); + return request.send( + this.requestCtx, + EndpointTransformationOutSerializer._fromJsonObject + ); } /** Set or unset the transformation code associated with this endpoint. */ @@ -383,37 +414,10 @@ export class Endpoint { request.setPathParam("app_id", appId); request.setPathParam("endpoint_id", endpointId); - request.setBody(endpointTransformationIn, "EndpointTransformationIn"); - - return request.sendNoResponseBody(this.requestCtx); - } - - public oauthUpdate( - appId: string, - endpointId: string, - endpointOauthConfigIn: EndpointOauthConfigIn - ): Promise { - const request = new SvixRequest( - HttpMethod.PUT, - "/app/{app_id}/endpoint/{endpoint_id}/oauth" - ); - - request.setPathParam("app_id", appId); - request.setPathParam("endpoint_id", endpointId); - request.setBody(endpointOauthConfigIn, "EndpointOauthConfigIn"); - - return request.sendNoResponseBody(this.requestCtx); - } - - public oauthDelete(appId: string, endpointId: string): Promise { - const request = new SvixRequest( - HttpMethod.DELETE, - "/app/{app_id}/endpoint/{endpoint_id}/oauth" + request.setBody( + EndpointTransformationInSerializer._toJsonObject(endpointTransformationIn) ); - request.setPathParam("app_id", appId); - request.setPathParam("endpoint_id", endpointId); - return request.sendNoResponseBody(this.requestCtx); } } diff --git a/javascript/src/api/environment.ts b/javascript/src/api/environment.ts new file mode 100644 index 000000000..929e78007 --- /dev/null +++ b/javascript/src/api/environment.ts @@ -0,0 +1,41 @@ +// this file is @generated +import { EnvironmentIn, EnvironmentInSerializer } from "../models/environmentIn"; +import { EnvironmentOut, EnvironmentOutSerializer } from "../models/environmentOut"; +import { HttpMethod, SvixRequest, SvixRequestContext } from "../request"; + +export interface EnvironmentExportOptions { + idempotencyKey?: string; +} + +export interface EnvironmentImportOptions { + idempotencyKey?: string; +} + +export class Environment { + public constructor(private readonly requestCtx: SvixRequestContext) {} + + /** Download a JSON file containing all org-settings and event types. */ + public export(options?: EnvironmentExportOptions): Promise { + const request = new SvixRequest(HttpMethod.POST, "/api/v1/environment/export"); + + request.setHeaderParam("idempotency-key", options?.idempotencyKey); + + return request.send(this.requestCtx, EnvironmentOutSerializer._fromJsonObject); + } + + /** + * Import a configuration into the active organization. + * It doesn't delete anything, only adds/updates what was passed to it. + */ + public import( + environmentIn: EnvironmentIn, + options?: EnvironmentImportOptions + ): Promise { + const request = new SvixRequest(HttpMethod.POST, "/api/v1/environment/import"); + + request.setHeaderParam("idempotency-key", options?.idempotencyKey); + request.setBody(EnvironmentInSerializer._toJsonObject(environmentIn)); + + return request.sendNoResponseBody(this.requestCtx); + } +} diff --git a/javascript/src/api/event_type.ts b/javascript/src/api/eventType.ts similarity index 74% rename from javascript/src/api/event_type.ts rename to javascript/src/api/eventType.ts index 382ec5df3..7a37f2f1d 100644 --- a/javascript/src/api/event_type.ts +++ b/javascript/src/api/eventType.ts @@ -1,14 +1,21 @@ // this file is @generated import { EventTypeImportOpenApiIn, + EventTypeImportOpenApiInSerializer, +} from "../models/eventTypeImportOpenApiIn"; +import { EventTypeImportOpenApiOut, - EventTypeIn, - EventTypeOut, - EventTypePatch, - EventTypeUpdate, + EventTypeImportOpenApiOutSerializer, +} from "../models/eventTypeImportOpenApiOut"; +import { EventTypeIn, EventTypeInSerializer } from "../models/eventTypeIn"; +import { EventTypeOut, EventTypeOutSerializer } from "../models/eventTypeOut"; +import { EventTypePatch, EventTypePatchSerializer } from "../models/eventTypePatch"; +import { EventTypeUpdate, EventTypeUpdateSerializer } from "../models/eventTypeUpdate"; +import { ListResponseEventTypeOut, - Ordering, -} from "../openapi"; + ListResponseEventTypeOutSerializer, +} from "../models/listResponseEventTypeOut"; +import { Ordering } from "../models/ordering"; import { HttpMethod, SvixRequest, SvixRequestContext } from "../request"; export interface EventTypeListOptions { @@ -50,7 +57,10 @@ export class EventType { request.setQueryParam("include_archived", options?.includeArchived); request.setQueryParam("with_content", options?.withContent); - return request.send(this.requestCtx, "ListResponseEventTypeOut"); + return request.send( + this.requestCtx, + ListResponseEventTypeOutSerializer._fromJsonObject + ); } /** @@ -67,9 +77,9 @@ export class EventType { const request = new SvixRequest(HttpMethod.POST, "/api/v1/event-type"); request.setHeaderParam("idempotency-key", options?.idempotencyKey); - request.setBody(eventTypeIn, "EventTypeIn"); + request.setBody(EventTypeInSerializer._toJsonObject(eventTypeIn)); - return request.send(this.requestCtx, "EventTypeOut"); + return request.send(this.requestCtx, EventTypeOutSerializer._fromJsonObject); } /** @@ -86,9 +96,14 @@ export class EventType { const request = new SvixRequest(HttpMethod.POST, "/api/v1/event-type/import/openapi"); request.setHeaderParam("idempotency-key", options?.idempotencyKey); - request.setBody(eventTypeImportOpenApiIn, "EventTypeImportOpenApiIn"); + request.setBody( + EventTypeImportOpenApiInSerializer._toJsonObject(eventTypeImportOpenApiIn) + ); - return request.send(this.requestCtx, "EventTypeImportOpenApiOut"); + return request.send( + this.requestCtx, + EventTypeImportOpenApiOutSerializer._fromJsonObject + ); } /** Get an event type. */ @@ -100,7 +115,7 @@ export class EventType { request.setPathParam("event_type_name", eventTypeName); - return request.send(this.requestCtx, "EventTypeOut"); + return request.send(this.requestCtx, EventTypeOutSerializer._fromJsonObject); } /** Update an event type. */ @@ -114,9 +129,9 @@ export class EventType { ); request.setPathParam("event_type_name", eventTypeName); - request.setBody(eventTypeUpdate, "EventTypeUpdate"); + request.setBody(EventTypeUpdateSerializer._toJsonObject(eventTypeUpdate)); - return request.send(this.requestCtx, "EventTypeOut"); + return request.send(this.requestCtx, EventTypeOutSerializer._fromJsonObject); } /** @@ -150,8 +165,8 @@ export class EventType { ); request.setPathParam("event_type_name", eventTypeName); - request.setBody(eventTypePatch, "EventTypePatch"); + request.setBody(EventTypePatchSerializer._toJsonObject(eventTypePatch)); - return request.send(this.requestCtx, "EventTypeOut"); + return request.send(this.requestCtx, EventTypeOutSerializer._fromJsonObject); } } diff --git a/javascript/src/api/health.ts b/javascript/src/api/health.ts new file mode 100644 index 000000000..204ffc06a --- /dev/null +++ b/javascript/src/api/health.ts @@ -0,0 +1,13 @@ +// this file is @generated +import { HttpMethod, SvixRequest, SvixRequestContext } from "../request"; + +export class Health { + public constructor(private readonly requestCtx: SvixRequestContext) {} + + /** Verify the API server is up and running. */ + public get(): Promise { + const request = new SvixRequest(HttpMethod.GET, "/api/v1/health"); + + return request.sendNoResponseBody(this.requestCtx); + } +} diff --git a/javascript/src/api/integration.ts b/javascript/src/api/integration.ts index a008e2f37..179d914d8 100644 --- a/javascript/src/api/integration.ts +++ b/javascript/src/api/integration.ts @@ -1,12 +1,19 @@ // this file is @generated +import { IntegrationIn, IntegrationInSerializer } from "../models/integrationIn"; import { - IntegrationIn, IntegrationKeyOut, - IntegrationOut, + IntegrationKeyOutSerializer, +} from "../models/integrationKeyOut"; +import { IntegrationOut, IntegrationOutSerializer } from "../models/integrationOut"; +import { IntegrationUpdate, + IntegrationUpdateSerializer, +} from "../models/integrationUpdate"; +import { ListResponseIntegrationOut, - Ordering, -} from "../openapi"; + ListResponseIntegrationOutSerializer, +} from "../models/listResponseIntegrationOut"; +import { Ordering } from "../models/ordering"; import { HttpMethod, SvixRequest, SvixRequestContext } from "../request"; export interface IntegrationListOptions { @@ -41,7 +48,10 @@ export class Integration { request.setQueryParam("iterator", options?.iterator); request.setQueryParam("order", options?.order); - return request.send(this.requestCtx, "ListResponseIntegrationOut"); + return request.send( + this.requestCtx, + ListResponseIntegrationOutSerializer._fromJsonObject + ); } /** Create an integration. */ @@ -54,9 +64,9 @@ export class Integration { request.setPathParam("app_id", appId); request.setHeaderParam("idempotency-key", options?.idempotencyKey); - request.setBody(integrationIn, "IntegrationIn"); + request.setBody(IntegrationInSerializer._toJsonObject(integrationIn)); - return request.send(this.requestCtx, "IntegrationOut"); + return request.send(this.requestCtx, IntegrationOutSerializer._fromJsonObject); } /** Get an integration. */ @@ -69,7 +79,7 @@ export class Integration { request.setPathParam("app_id", appId); request.setPathParam("integ_id", integId); - return request.send(this.requestCtx, "IntegrationOut"); + return request.send(this.requestCtx, IntegrationOutSerializer._fromJsonObject); } /** Update an integration. */ @@ -85,9 +95,9 @@ export class Integration { request.setPathParam("app_id", appId); request.setPathParam("integ_id", integId); - request.setBody(integrationUpdate, "IntegrationUpdate"); + request.setBody(IntegrationUpdateSerializer._toJsonObject(integrationUpdate)); - return request.send(this.requestCtx, "IntegrationOut"); + return request.send(this.requestCtx, IntegrationOutSerializer._fromJsonObject); } /** Delete an integration. */ @@ -117,7 +127,7 @@ export class Integration { request.setPathParam("app_id", appId); request.setPathParam("integ_id", integId); - return request.send(this.requestCtx, "IntegrationKeyOut"); + return request.send(this.requestCtx, IntegrationKeyOutSerializer._fromJsonObject); } /** Rotate the integration's key. The previous key will be immediately revoked. */ @@ -135,6 +145,6 @@ export class Integration { request.setPathParam("integ_id", integId); request.setHeaderParam("idempotency-key", options?.idempotencyKey); - return request.send(this.requestCtx, "IntegrationKeyOut"); + return request.send(this.requestCtx, IntegrationKeyOutSerializer._fromJsonObject); } } diff --git a/javascript/src/api/message.ts b/javascript/src/api/message.ts index 579844324..3bee1b217 100644 --- a/javascript/src/api/message.ts +++ b/javascript/src/api/message.ts @@ -1,5 +1,14 @@ // this file is @generated -import { ListResponseMessageOut, MessageIn, MessageOut } from "../openapi"; +import { + ExpungAllContentsOut, + ExpungAllContentsOutSerializer, +} from "../models/expungAllContentsOut"; +import { + ListResponseMessageOut, + ListResponseMessageOutSerializer, +} from "../models/listResponseMessageOut"; +import { MessageIn, MessageInSerializer } from "../models/messageIn"; +import { MessageOut, MessageOutSerializer } from "../models/messageOut"; import { HttpMethod, SvixRequest, SvixRequestContext } from "../request"; export interface MessageListOptions { @@ -27,6 +36,10 @@ export interface MessageCreateOptions { idempotencyKey?: string; } +export interface MessageExpungeAllContentsOptions { + idempotencyKey?: string; +} + export interface MessageGetOptions { /** When `true` message payloads are included in the response. */ withContent?: boolean; @@ -62,7 +75,10 @@ export class Message { request.setQueryParam("tag", options?.tag); request.setQueryParam("event_types", options?.eventTypes); - return request.send(this.requestCtx, "ListResponseMessageOut"); + return request.send( + this.requestCtx, + ListResponseMessageOutSerializer._fromJsonObject + ); } /** @@ -86,9 +102,29 @@ export class Message { request.setPathParam("app_id", appId); request.setQueryParam("with_content", options?.withContent); request.setHeaderParam("idempotency-key", options?.idempotencyKey); - request.setBody(messageIn, "MessageIn"); + request.setBody(MessageInSerializer._toJsonObject(messageIn)); + + return request.send(this.requestCtx, MessageOutSerializer._fromJsonObject); + } + + /** + * Purge all message content for the application. + * + * Delete all message payloads for the application. + */ + public expungeAllContents( + appId: string, + options?: MessageExpungeAllContentsOptions + ): Promise { + const request = new SvixRequest( + HttpMethod.POST, + "/api/v1/app/{app_id}/msg/expunge-all-contents" + ); + + request.setPathParam("app_id", appId); + request.setHeaderParam("idempotency-key", options?.idempotencyKey); - return request.send(this.requestCtx, "MessageOut"); + return request.send(this.requestCtx, ExpungAllContentsOutSerializer._fromJsonObject); } /** Get a message by its ID or eventID. */ @@ -103,7 +139,7 @@ export class Message { request.setPathParam("msg_id", msgId); request.setQueryParam("with_content", options?.withContent); - return request.send(this.requestCtx, "MessageOut"); + return request.send(this.requestCtx, MessageOutSerializer._fromJsonObject); } /** diff --git a/javascript/src/api/message_attempt.ts b/javascript/src/api/messageAttempt.ts similarity index 90% rename from javascript/src/api/message_attempt.ts rename to javascript/src/api/messageAttempt.ts index 4d3be787f..a1bfcee23 100644 --- a/javascript/src/api/message_attempt.ts +++ b/javascript/src/api/messageAttempt.ts @@ -1,26 +1,24 @@ // this file is @generated import { ListResponseEndpointMessageOut, + ListResponseEndpointMessageOutSerializer, +} from "../models/listResponseEndpointMessageOut"; +import { ListResponseMessageAttemptOut, + ListResponseMessageAttemptOutSerializer, +} from "../models/listResponseMessageAttemptOut"; +import { ListResponseMessageEndpointOut, + ListResponseMessageEndpointOutSerializer, +} from "../models/listResponseMessageEndpointOut"; +import { MessageAttemptOut, - MessageStatus, - StatusCodeClass, -} from "../openapi"; + MessageAttemptOutSerializer, +} from "../models/messageAttemptOut"; +import { MessageStatus } from "../models/messageStatus"; +import { StatusCodeClass } from "../models/statusCodeClass"; import { HttpMethod, SvixRequest, SvixRequestContext } from "../request"; -export interface MessageAttemptListOptions { - iterator?: string | null; - limit?: number; - status?: MessageStatus; - eventTypes?: string[]; - before?: Date | null; - after?: Date | null; - statusCodeClass?: StatusCodeClass; - channel?: string; - withContent?: boolean; -} - export interface MessageAttemptListByEndpointOptions { /** Limit the number of returned items */ limit?: number; @@ -106,17 +104,6 @@ export interface MessageAttemptResendOptions { export class MessageAttempt { public constructor(private readonly requestCtx: SvixRequestContext) {} - /** - * @deprecated Since version 0.48.0. Use listByMsg or listByEndpoint instead. - */ - public list( - appId: string, - msgId: string, - options?: MessageAttemptListByMsgOptions - ): Promise { - return this.listByMsg(appId, msgId, options); - } - /** * List attempts by endpoint id * @@ -149,7 +136,10 @@ export class MessageAttempt { request.setQueryParam("with_msg", options?.withMsg); request.setQueryParam("event_types", options?.eventTypes); - return request.send(this.requestCtx, "ListResponseMessageAttemptOut"); + return request.send( + this.requestCtx, + ListResponseMessageAttemptOutSerializer._fromJsonObject + ); } /** @@ -184,7 +174,10 @@ export class MessageAttempt { request.setQueryParam("with_content", options?.withContent); request.setQueryParam("event_types", options?.eventTypes); - return request.send(this.requestCtx, "ListResponseMessageAttemptOut"); + return request.send( + this.requestCtx, + ListResponseMessageAttemptOutSerializer._fromJsonObject + ); } /** @@ -219,7 +212,10 @@ export class MessageAttempt { request.setQueryParam("with_content", options?.withContent); request.setQueryParam("event_types", options?.eventTypes); - return request.send(this.requestCtx, "ListResponseEndpointMessageOut"); + return request.send( + this.requestCtx, + ListResponseEndpointMessageOutSerializer._fromJsonObject + ); } /** `msg_id`: Use a message id or a message `eventId` */ @@ -237,7 +233,7 @@ export class MessageAttempt { request.setPathParam("msg_id", msgId); request.setPathParam("attempt_id", attemptId); - return request.send(this.requestCtx, "MessageAttemptOut"); + return request.send(this.requestCtx, MessageAttemptOutSerializer._fromJsonObject); } /** @@ -280,7 +276,10 @@ export class MessageAttempt { request.setQueryParam("limit", options?.limit); request.setQueryParam("iterator", options?.iterator); - return request.send(this.requestCtx, "ListResponseMessageEndpointOut"); + return request.send( + this.requestCtx, + ListResponseMessageEndpointOutSerializer._fromJsonObject + ); } /** Resend a message to the specified endpoint. */ diff --git a/javascript/src/api/operational_webhook_endpoint.ts b/javascript/src/api/operationalWebhookEndpoint.ts similarity index 69% rename from javascript/src/api/operational_webhook_endpoint.ts rename to javascript/src/api/operationalWebhookEndpoint.ts index a0d57287e..7e3c69904 100644 --- a/javascript/src/api/operational_webhook_endpoint.ts +++ b/javascript/src/api/operationalWebhookEndpoint.ts @@ -1,15 +1,37 @@ // this file is @generated import { ListResponseOperationalWebhookEndpointOut, + ListResponseOperationalWebhookEndpointOutSerializer, +} from "../models/listResponseOperationalWebhookEndpointOut"; +import { OperationalWebhookEndpointHeadersIn, + OperationalWebhookEndpointHeadersInSerializer, +} from "../models/operationalWebhookEndpointHeadersIn"; +import { OperationalWebhookEndpointHeadersOut, + OperationalWebhookEndpointHeadersOutSerializer, +} from "../models/operationalWebhookEndpointHeadersOut"; +import { OperationalWebhookEndpointIn, + OperationalWebhookEndpointInSerializer, +} from "../models/operationalWebhookEndpointIn"; +import { OperationalWebhookEndpointOut, + OperationalWebhookEndpointOutSerializer, +} from "../models/operationalWebhookEndpointOut"; +import { OperationalWebhookEndpointSecretIn, + OperationalWebhookEndpointSecretInSerializer, +} from "../models/operationalWebhookEndpointSecretIn"; +import { OperationalWebhookEndpointSecretOut, + OperationalWebhookEndpointSecretOutSerializer, +} from "../models/operationalWebhookEndpointSecretOut"; +import { OperationalWebhookEndpointUpdate, - Ordering, -} from "../openapi"; + OperationalWebhookEndpointUpdateSerializer, +} from "../models/operationalWebhookEndpointUpdate"; +import { Ordering } from "../models/ordering"; import { HttpMethod, SvixRequest, SvixRequestContext } from "../request"; export interface OperationalWebhookEndpointListOptions { @@ -45,7 +67,10 @@ export class OperationalWebhookEndpoint { request.setQueryParam("iterator", options?.iterator); request.setQueryParam("order", options?.order); - return request.send(this.requestCtx, "ListResponseOperationalWebhookEndpointOut"); + return request.send( + this.requestCtx, + ListResponseOperationalWebhookEndpointOutSerializer._fromJsonObject + ); } /** Create an operational webhook endpoint. */ @@ -59,9 +84,14 @@ export class OperationalWebhookEndpoint { ); request.setHeaderParam("idempotency-key", options?.idempotencyKey); - request.setBody(operationalWebhookEndpointIn, "OperationalWebhookEndpointIn"); + request.setBody( + OperationalWebhookEndpointInSerializer._toJsonObject(operationalWebhookEndpointIn) + ); - return request.send(this.requestCtx, "OperationalWebhookEndpointOut"); + return request.send( + this.requestCtx, + OperationalWebhookEndpointOutSerializer._fromJsonObject + ); } /** Get an operational webhook endpoint. */ @@ -73,7 +103,10 @@ export class OperationalWebhookEndpoint { request.setPathParam("endpoint_id", endpointId); - return request.send(this.requestCtx, "OperationalWebhookEndpointOut"); + return request.send( + this.requestCtx, + OperationalWebhookEndpointOutSerializer._fromJsonObject + ); } /** Update an operational webhook endpoint. */ @@ -87,9 +120,16 @@ export class OperationalWebhookEndpoint { ); request.setPathParam("endpoint_id", endpointId); - request.setBody(operationalWebhookEndpointUpdate, "OperationalWebhookEndpointUpdate"); + request.setBody( + OperationalWebhookEndpointUpdateSerializer._toJsonObject( + operationalWebhookEndpointUpdate + ) + ); - return request.send(this.requestCtx, "OperationalWebhookEndpointOut"); + return request.send( + this.requestCtx, + OperationalWebhookEndpointOutSerializer._fromJsonObject + ); } /** Delete an operational webhook endpoint. */ @@ -113,7 +153,10 @@ export class OperationalWebhookEndpoint { request.setPathParam("endpoint_id", endpointId); - return request.send(this.requestCtx, "OperationalWebhookEndpointHeadersOut"); + return request.send( + this.requestCtx, + OperationalWebhookEndpointHeadersOutSerializer._fromJsonObject + ); } /** Set the additional headers to be sent with the operational webhook. */ @@ -128,8 +171,9 @@ export class OperationalWebhookEndpoint { request.setPathParam("endpoint_id", endpointId); request.setBody( - operationalWebhookEndpointHeadersIn, - "OperationalWebhookEndpointHeadersIn" + OperationalWebhookEndpointHeadersInSerializer._toJsonObject( + operationalWebhookEndpointHeadersIn + ) ); return request.sendNoResponseBody(this.requestCtx); @@ -149,7 +193,10 @@ export class OperationalWebhookEndpoint { request.setPathParam("endpoint_id", endpointId); - return request.send(this.requestCtx, "OperationalWebhookEndpointSecretOut"); + return request.send( + this.requestCtx, + OperationalWebhookEndpointSecretOutSerializer._fromJsonObject + ); } /** @@ -170,8 +217,9 @@ export class OperationalWebhookEndpoint { request.setPathParam("endpoint_id", endpointId); request.setHeaderParam("idempotency-key", options?.idempotencyKey); request.setBody( - operationalWebhookEndpointSecretIn, - "OperationalWebhookEndpointSecretIn" + OperationalWebhookEndpointSecretInSerializer._toJsonObject( + operationalWebhookEndpointSecretIn + ) ); return request.sendNoResponseBody(this.requestCtx); diff --git a/javascript/src/api/statistics.ts b/javascript/src/api/statistics.ts index 175127143..858afbf9a 100644 --- a/javascript/src/api/statistics.ts +++ b/javascript/src/api/statistics.ts @@ -1,5 +1,10 @@ // this file is @generated -import { AggregateEventTypesOut, AppUsageStatsIn, AppUsageStatsOut } from "../openapi"; +import { + AggregateEventTypesOut, + AggregateEventTypesOutSerializer, +} from "../models/aggregateEventTypesOut"; +import { AppUsageStatsIn, AppUsageStatsInSerializer } from "../models/appUsageStatsIn"; +import { AppUsageStatsOut, AppUsageStatsOutSerializer } from "../models/appUsageStatsOut"; import { HttpMethod, SvixRequest, SvixRequestContext } from "../request"; export interface StatisticsAggregateAppStatsOptions { @@ -22,9 +27,9 @@ export class Statistics { const request = new SvixRequest(HttpMethod.POST, "/api/v1/stats/usage/app"); request.setHeaderParam("idempotency-key", options?.idempotencyKey); - request.setBody(appUsageStatsIn, "AppUsageStatsIn"); + request.setBody(AppUsageStatsInSerializer._toJsonObject(appUsageStatsIn)); - return request.send(this.requestCtx, "AppUsageStatsOut"); + return request.send(this.requestCtx, AppUsageStatsOutSerializer._fromJsonObject); } /** @@ -36,6 +41,9 @@ export class Statistics { public aggregateEventTypes(): Promise { const request = new SvixRequest(HttpMethod.PUT, "/api/v1/stats/usage/event-types"); - return request.send(this.requestCtx, "AggregateEventTypesOut"); + return request.send( + this.requestCtx, + AggregateEventTypesOutSerializer._fromJsonObject + ); } } From 55e3dd424afde02c8416e8e95cc1c3dde32709ad Mon Sep 17 00:00:00 2001 From: Mendy Man Date: Mon, 17 Feb 2025 11:42:54 -0500 Subject: [PATCH 04/14] js: Add newly generated models --- .../src/models/aggregateEventTypesOut.ts | 32 ++++++++++ javascript/src/models/appPortalAccessIn.ts | 44 +++++++++++++ javascript/src/models/appPortalAccessOut.ts | 23 +++++++ javascript/src/models/appUsageStatsIn.ts | 31 +++++++++ javascript/src/models/appUsageStatsOut.ts | 40 ++++++++++++ javascript/src/models/applicationIn.ts | 30 +++++++++ javascript/src/models/applicationOut.ts | 40 ++++++++++++ javascript/src/models/applicationPatch.ts | 30 +++++++++ .../src/models/applicationTokenExpireIn.ts | 21 ++++++ javascript/src/models/backgroundTaskOut.ts | 35 ++++++++++ javascript/src/models/backgroundTaskStatus.ts | 18 ++++++ javascript/src/models/backgroundTaskType.ts | 22 +++++++ javascript/src/models/connectorIn.ts | 45 +++++++++++++ javascript/src/models/connectorKind.ts | 27 ++++++++ javascript/src/models/dashboardAccessOut.ts | 23 +++++++ javascript/src/models/endpointHeadersIn.ts | 20 ++++++ javascript/src/models/endpointHeadersOut.ts | 27 ++++++++ .../src/models/endpointHeadersPatchIn.ts | 20 ++++++ javascript/src/models/endpointIn.ts | 55 ++++++++++++++++ javascript/src/models/endpointMessageOut.ts | 49 ++++++++++++++ javascript/src/models/endpointOut.ts | 57 +++++++++++++++++ javascript/src/models/endpointPatch.ts | 54 ++++++++++++++++ javascript/src/models/endpointSecretOut.ts | 26 ++++++++ .../src/models/endpointSecretRotateIn.ts | 26 ++++++++ javascript/src/models/endpointStats.ts | 29 +++++++++ .../src/models/endpointTransformationIn.ts | 23 +++++++ .../src/models/endpointTransformationOut.ts | 23 +++++++ javascript/src/models/endpointUpdate.ts | 46 +++++++++++++ javascript/src/models/environmentIn.ts | 36 +++++++++++ javascript/src/models/environmentOut.ts | 42 ++++++++++++ javascript/src/models/eventExampleIn.ts | 29 +++++++++ javascript/src/models/eventTypeFromOpenApi.ts | 37 +++++++++++ .../src/models/eventTypeImportOpenApiIn.ts | 37 +++++++++++ .../src/models/eventTypeImportOpenApiOut.ts | 24 +++++++ .../models/eventTypeImportOpenApiOutData.ts | 31 +++++++++ javascript/src/models/eventTypeIn.ts | 41 ++++++++++++ javascript/src/models/eventTypeOut.ts | 47 ++++++++++++++ javascript/src/models/eventTypePatch.ts | 36 +++++++++++ javascript/src/models/eventTypeUpdate.ts | 37 +++++++++++ javascript/src/models/expungAllContentsOut.ts | 32 ++++++++++ javascript/src/models/integrationIn.ts | 24 +++++++ javascript/src/models/integrationKeyOut.ts | 20 ++++++ javascript/src/models/integrationOut.ts | 34 ++++++++++ javascript/src/models/integrationUpdate.ts | 24 +++++++ .../src/models/listResponseApplicationOut.ts | 32 ++++++++++ .../models/listResponseBackgroundTaskOut.ts | 32 ++++++++++ .../models/listResponseEndpointMessageOut.ts | 32 ++++++++++ .../src/models/listResponseEndpointOut.ts | 32 ++++++++++ .../src/models/listResponseEventTypeOut.ts | 32 ++++++++++ .../src/models/listResponseIntegrationOut.ts | 32 ++++++++++ .../models/listResponseMessageAttemptOut.ts | 32 ++++++++++ .../models/listResponseMessageEndpointOut.ts | 32 ++++++++++ .../src/models/listResponseMessageOut.ts | 32 ++++++++++ ...stResponseOperationalWebhookEndpointOut.ts | 37 +++++++++++ javascript/src/models/messageAttemptOut.ts | 62 ++++++++++++++++++ .../src/models/messageAttemptTriggerType.ts | 21 ++++++ javascript/src/models/messageEndpointOut.ts | 61 ++++++++++++++++++ javascript/src/models/messageIn.ts | 64 +++++++++++++++++++ javascript/src/models/messageOut.ts | 42 ++++++++++++ javascript/src/models/messageStatus.ts | 25 ++++++++ .../operationalWebhookEndpointHeadersIn.ts | 20 ++++++ .../operationalWebhookEndpointHeadersOut.ts | 23 +++++++ .../models/operationalWebhookEndpointIn.ts | 48 ++++++++++++++ .../models/operationalWebhookEndpointOut.ts | 50 +++++++++++++++ .../operationalWebhookEndpointSecretIn.ts | 26 ++++++++ .../operationalWebhookEndpointSecretOut.ts | 26 ++++++++ .../operationalWebhookEndpointUpdate.ts | 39 +++++++++++ javascript/src/models/ordering.ts | 17 +++++ javascript/src/models/recoverIn.ts | 23 +++++++ javascript/src/models/recoverOut.ts | 32 ++++++++++ javascript/src/models/replayIn.ts | 23 +++++++ javascript/src/models/replayOut.ts | 32 ++++++++++ javascript/src/models/statusCodeClass.ts | 29 +++++++++ javascript/src/models/templateOut.ts | 59 +++++++++++++++++ 74 files changed, 2494 insertions(+) create mode 100644 javascript/src/models/aggregateEventTypesOut.ts create mode 100644 javascript/src/models/appPortalAccessIn.ts create mode 100644 javascript/src/models/appPortalAccessOut.ts create mode 100644 javascript/src/models/appUsageStatsIn.ts create mode 100644 javascript/src/models/appUsageStatsOut.ts create mode 100644 javascript/src/models/applicationIn.ts create mode 100644 javascript/src/models/applicationOut.ts create mode 100644 javascript/src/models/applicationPatch.ts create mode 100644 javascript/src/models/applicationTokenExpireIn.ts create mode 100644 javascript/src/models/backgroundTaskOut.ts create mode 100644 javascript/src/models/backgroundTaskStatus.ts create mode 100644 javascript/src/models/backgroundTaskType.ts create mode 100644 javascript/src/models/connectorIn.ts create mode 100644 javascript/src/models/connectorKind.ts create mode 100644 javascript/src/models/dashboardAccessOut.ts create mode 100644 javascript/src/models/endpointHeadersIn.ts create mode 100644 javascript/src/models/endpointHeadersOut.ts create mode 100644 javascript/src/models/endpointHeadersPatchIn.ts create mode 100644 javascript/src/models/endpointIn.ts create mode 100644 javascript/src/models/endpointMessageOut.ts create mode 100644 javascript/src/models/endpointOut.ts create mode 100644 javascript/src/models/endpointPatch.ts create mode 100644 javascript/src/models/endpointSecretOut.ts create mode 100644 javascript/src/models/endpointSecretRotateIn.ts create mode 100644 javascript/src/models/endpointStats.ts create mode 100644 javascript/src/models/endpointTransformationIn.ts create mode 100644 javascript/src/models/endpointTransformationOut.ts create mode 100644 javascript/src/models/endpointUpdate.ts create mode 100644 javascript/src/models/environmentIn.ts create mode 100644 javascript/src/models/environmentOut.ts create mode 100644 javascript/src/models/eventExampleIn.ts create mode 100644 javascript/src/models/eventTypeFromOpenApi.ts create mode 100644 javascript/src/models/eventTypeImportOpenApiIn.ts create mode 100644 javascript/src/models/eventTypeImportOpenApiOut.ts create mode 100644 javascript/src/models/eventTypeImportOpenApiOutData.ts create mode 100644 javascript/src/models/eventTypeIn.ts create mode 100644 javascript/src/models/eventTypeOut.ts create mode 100644 javascript/src/models/eventTypePatch.ts create mode 100644 javascript/src/models/eventTypeUpdate.ts create mode 100644 javascript/src/models/expungAllContentsOut.ts create mode 100644 javascript/src/models/integrationIn.ts create mode 100644 javascript/src/models/integrationKeyOut.ts create mode 100644 javascript/src/models/integrationOut.ts create mode 100644 javascript/src/models/integrationUpdate.ts create mode 100644 javascript/src/models/listResponseApplicationOut.ts create mode 100644 javascript/src/models/listResponseBackgroundTaskOut.ts create mode 100644 javascript/src/models/listResponseEndpointMessageOut.ts create mode 100644 javascript/src/models/listResponseEndpointOut.ts create mode 100644 javascript/src/models/listResponseEventTypeOut.ts create mode 100644 javascript/src/models/listResponseIntegrationOut.ts create mode 100644 javascript/src/models/listResponseMessageAttemptOut.ts create mode 100644 javascript/src/models/listResponseMessageEndpointOut.ts create mode 100644 javascript/src/models/listResponseMessageOut.ts create mode 100644 javascript/src/models/listResponseOperationalWebhookEndpointOut.ts create mode 100644 javascript/src/models/messageAttemptOut.ts create mode 100644 javascript/src/models/messageAttemptTriggerType.ts create mode 100644 javascript/src/models/messageEndpointOut.ts create mode 100644 javascript/src/models/messageIn.ts create mode 100644 javascript/src/models/messageOut.ts create mode 100644 javascript/src/models/messageStatus.ts create mode 100644 javascript/src/models/operationalWebhookEndpointHeadersIn.ts create mode 100644 javascript/src/models/operationalWebhookEndpointHeadersOut.ts create mode 100644 javascript/src/models/operationalWebhookEndpointIn.ts create mode 100644 javascript/src/models/operationalWebhookEndpointOut.ts create mode 100644 javascript/src/models/operationalWebhookEndpointSecretIn.ts create mode 100644 javascript/src/models/operationalWebhookEndpointSecretOut.ts create mode 100644 javascript/src/models/operationalWebhookEndpointUpdate.ts create mode 100644 javascript/src/models/ordering.ts create mode 100644 javascript/src/models/recoverIn.ts create mode 100644 javascript/src/models/recoverOut.ts create mode 100644 javascript/src/models/replayIn.ts create mode 100644 javascript/src/models/replayOut.ts create mode 100644 javascript/src/models/statusCodeClass.ts create mode 100644 javascript/src/models/templateOut.ts diff --git a/javascript/src/models/aggregateEventTypesOut.ts b/javascript/src/models/aggregateEventTypesOut.ts new file mode 100644 index 000000000..2bb8bcd9e --- /dev/null +++ b/javascript/src/models/aggregateEventTypesOut.ts @@ -0,0 +1,32 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { + BackgroundTaskStatus, + BackgroundTaskStatusSerializer, +} from "./backgroundTaskStatus"; +import { BackgroundTaskType, BackgroundTaskTypeSerializer } from "./backgroundTaskType"; + +export interface AggregateEventTypesOut { + /** The QueueBackgroundTask's ID. */ + id: string; + status: BackgroundTaskStatus; + task: BackgroundTaskType; +} + +export const AggregateEventTypesOutSerializer = { + _fromJsonObject(object: any): AggregateEventTypesOut { + return { + id: object["id"], + status: BackgroundTaskStatusSerializer._fromJsonObject(object["status"]), + task: BackgroundTaskTypeSerializer._fromJsonObject(object["task"]), + }; + }, + + _toJsonObject(self: AggregateEventTypesOut): any { + return { + id: self.id, + status: BackgroundTaskStatusSerializer._toJsonObject(self.status), + task: BackgroundTaskTypeSerializer._toJsonObject(self.task), + }; + }, +}; diff --git a/javascript/src/models/appPortalAccessIn.ts b/javascript/src/models/appPortalAccessIn.ts new file mode 100644 index 000000000..ee25e0fc6 --- /dev/null +++ b/javascript/src/models/appPortalAccessIn.ts @@ -0,0 +1,44 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { ApplicationIn, ApplicationInSerializer } from "./applicationIn"; + +export interface AppPortalAccessIn { + /** + * Optionally creates a new application while generating the access link. + * + * If the application id or uid that is used in the path already exists, this argument is ignored. + */ + application?: ApplicationIn | null; + /** + * How long the token will be valid for, in seconds. + * + * Valid values are between 1 hour and 7 days. The default is 7 days. + */ + expiry?: number | null; + /** The set of feature flags the created token will have access to. */ + featureFlags?: string[]; + /** Whether the app portal should be in read-only mode. */ + readOnly?: boolean | null; +} + +export const AppPortalAccessInSerializer = { + _fromJsonObject(object: any): AppPortalAccessIn { + return { + application: ApplicationInSerializer._fromJsonObject(object["application"]), + expiry: object["expiry"], + featureFlags: object["featureFlags"], + readOnly: object["readOnly"], + }; + }, + + _toJsonObject(self: AppPortalAccessIn): any { + return { + application: self.application + ? ApplicationInSerializer._toJsonObject(self.application) + : undefined, + expiry: self.expiry, + featureFlags: self.featureFlags, + readOnly: self.readOnly, + }; + }, +}; diff --git a/javascript/src/models/appPortalAccessOut.ts b/javascript/src/models/appPortalAccessOut.ts new file mode 100644 index 000000000..ede9b2bdb --- /dev/null +++ b/javascript/src/models/appPortalAccessOut.ts @@ -0,0 +1,23 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface AppPortalAccessOut { + token: string; + url: string; +} + +export const AppPortalAccessOutSerializer = { + _fromJsonObject(object: any): AppPortalAccessOut { + return { + token: object["token"], + url: object["url"], + }; + }, + + _toJsonObject(self: AppPortalAccessOut): any { + return { + token: self.token, + url: self.url, + }; + }, +}; diff --git a/javascript/src/models/appUsageStatsIn.ts b/javascript/src/models/appUsageStatsIn.ts new file mode 100644 index 000000000..53ecf33c0 --- /dev/null +++ b/javascript/src/models/appUsageStatsIn.ts @@ -0,0 +1,31 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface AppUsageStatsIn { + /** + * Specific app IDs or UIDs to aggregate stats for. + * + * Note that if none of the given IDs or UIDs are resolved, a 422 response will be given. + */ + appIds?: string[] | null; + since: Date | null; + until: Date | null; +} + +export const AppUsageStatsInSerializer = { + _fromJsonObject(object: any): AppUsageStatsIn { + return { + appIds: object["appIds"], + since: new Date(object["since"]), + until: new Date(object["until"]), + }; + }, + + _toJsonObject(self: AppUsageStatsIn): any { + return { + appIds: self.appIds, + since: self.since, + until: self.until, + }; + }, +}; diff --git a/javascript/src/models/appUsageStatsOut.ts b/javascript/src/models/appUsageStatsOut.ts new file mode 100644 index 000000000..8a1405296 --- /dev/null +++ b/javascript/src/models/appUsageStatsOut.ts @@ -0,0 +1,40 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { + BackgroundTaskStatus, + BackgroundTaskStatusSerializer, +} from "./backgroundTaskStatus"; +import { BackgroundTaskType, BackgroundTaskTypeSerializer } from "./backgroundTaskType"; + +export interface AppUsageStatsOut { + /** The QueueBackgroundTask's ID. */ + id: string; + status: BackgroundTaskStatus; + task: BackgroundTaskType; + /** + * Any app IDs or UIDs received in the request that weren't found. + * + * Stats will be produced for all the others. + */ + unresolvedAppIds: string[]; +} + +export const AppUsageStatsOutSerializer = { + _fromJsonObject(object: any): AppUsageStatsOut { + return { + id: object["id"], + status: BackgroundTaskStatusSerializer._fromJsonObject(object["status"]), + task: BackgroundTaskTypeSerializer._fromJsonObject(object["task"]), + unresolvedAppIds: object["unresolvedAppIds"], + }; + }, + + _toJsonObject(self: AppUsageStatsOut): any { + return { + id: self.id, + status: BackgroundTaskStatusSerializer._toJsonObject(self.status), + task: BackgroundTaskTypeSerializer._toJsonObject(self.task), + unresolvedAppIds: self.unresolvedAppIds, + }; + }, +}; diff --git a/javascript/src/models/applicationIn.ts b/javascript/src/models/applicationIn.ts new file mode 100644 index 000000000..1ffb4003b --- /dev/null +++ b/javascript/src/models/applicationIn.ts @@ -0,0 +1,30 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface ApplicationIn { + metadata?: { [key: string]: string }; + name: string; + rateLimit?: number | null; + /** Optional unique identifier for the application. */ + uid?: string | null; +} + +export const ApplicationInSerializer = { + _fromJsonObject(object: any): ApplicationIn { + return { + metadata: object["metadata"], + name: object["name"], + rateLimit: object["rateLimit"], + uid: object["uid"], + }; + }, + + _toJsonObject(self: ApplicationIn): any { + return { + metadata: self.metadata, + name: self.name, + rateLimit: self.rateLimit, + uid: self.uid, + }; + }, +}; diff --git a/javascript/src/models/applicationOut.ts b/javascript/src/models/applicationOut.ts new file mode 100644 index 000000000..41b517cc7 --- /dev/null +++ b/javascript/src/models/applicationOut.ts @@ -0,0 +1,40 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface ApplicationOut { + createdAt: Date | null; + /** The Application's ID. */ + id: string; + metadata: { [key: string]: string }; + name: string; + rateLimit?: number | null; + /** The Application's UID. */ + uid?: string | null; + updatedAt: Date | null; +} + +export const ApplicationOutSerializer = { + _fromJsonObject(object: any): ApplicationOut { + return { + createdAt: new Date(object["createdAt"]), + id: object["id"], + metadata: object["metadata"], + name: object["name"], + rateLimit: object["rateLimit"], + uid: object["uid"], + updatedAt: new Date(object["updatedAt"]), + }; + }, + + _toJsonObject(self: ApplicationOut): any { + return { + createdAt: self.createdAt, + id: self.id, + metadata: self.metadata, + name: self.name, + rateLimit: self.rateLimit, + uid: self.uid, + updatedAt: self.updatedAt, + }; + }, +}; diff --git a/javascript/src/models/applicationPatch.ts b/javascript/src/models/applicationPatch.ts new file mode 100644 index 000000000..81601a010 --- /dev/null +++ b/javascript/src/models/applicationPatch.ts @@ -0,0 +1,30 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface ApplicationPatch { + metadata?: { [key: string]: string }; + name?: string; + rateLimit?: number | null; + /** The Application's UID. */ + uid?: string | null; +} + +export const ApplicationPatchSerializer = { + _fromJsonObject(object: any): ApplicationPatch { + return { + metadata: object["metadata"], + name: object["name"], + rateLimit: object["rateLimit"], + uid: object["uid"], + }; + }, + + _toJsonObject(self: ApplicationPatch): any { + return { + metadata: self.metadata, + name: self.name, + rateLimit: self.rateLimit, + uid: self.uid, + }; + }, +}; diff --git a/javascript/src/models/applicationTokenExpireIn.ts b/javascript/src/models/applicationTokenExpireIn.ts new file mode 100644 index 000000000..79972ce45 --- /dev/null +++ b/javascript/src/models/applicationTokenExpireIn.ts @@ -0,0 +1,21 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface ApplicationTokenExpireIn { + /** How many seconds until the old key is expired. */ + expiry?: number | null; +} + +export const ApplicationTokenExpireInSerializer = { + _fromJsonObject(object: any): ApplicationTokenExpireIn { + return { + expiry: object["expiry"], + }; + }, + + _toJsonObject(self: ApplicationTokenExpireIn): any { + return { + expiry: self.expiry, + }; + }, +}; diff --git a/javascript/src/models/backgroundTaskOut.ts b/javascript/src/models/backgroundTaskOut.ts new file mode 100644 index 000000000..2bc1e8394 --- /dev/null +++ b/javascript/src/models/backgroundTaskOut.ts @@ -0,0 +1,35 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { + BackgroundTaskStatus, + BackgroundTaskStatusSerializer, +} from "./backgroundTaskStatus"; +import { BackgroundTaskType, BackgroundTaskTypeSerializer } from "./backgroundTaskType"; + +export interface BackgroundTaskOut { + data: any; + /** The QueueBackgroundTask's ID. */ + id: string; + status: BackgroundTaskStatus; + task: BackgroundTaskType; +} + +export const BackgroundTaskOutSerializer = { + _fromJsonObject(object: any): BackgroundTaskOut { + return { + data: object["data"], + id: object["id"], + status: BackgroundTaskStatusSerializer._fromJsonObject(object["status"]), + task: BackgroundTaskTypeSerializer._fromJsonObject(object["task"]), + }; + }, + + _toJsonObject(self: BackgroundTaskOut): any { + return { + data: self.data, + id: self.id, + status: BackgroundTaskStatusSerializer._toJsonObject(self.status), + task: BackgroundTaskTypeSerializer._toJsonObject(self.task), + }; + }, +}; diff --git a/javascript/src/models/backgroundTaskStatus.ts b/javascript/src/models/backgroundTaskStatus.ts new file mode 100644 index 000000000..56bbf5a8a --- /dev/null +++ b/javascript/src/models/backgroundTaskStatus.ts @@ -0,0 +1,18 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export enum BackgroundTaskStatus { + Running = "running", + Finished = "finished", + Failed = "failed", +} + +export const BackgroundTaskStatusSerializer = { + _fromJsonObject(object: any): BackgroundTaskStatus { + return object; + }, + + _toJsonObject(self: BackgroundTaskStatus): any { + return self; + }, +}; diff --git a/javascript/src/models/backgroundTaskType.ts b/javascript/src/models/backgroundTaskType.ts new file mode 100644 index 000000000..28d753084 --- /dev/null +++ b/javascript/src/models/backgroundTaskType.ts @@ -0,0 +1,22 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export enum BackgroundTaskType { + EndpointReplay = "endpoint.replay", + EndpointRecover = "endpoint.recover", + ApplicationStats = "application.stats", + MessageBroadcast = "message.broadcast", + SdkGenerate = "sdk.generate", + EventTypeAggregate = "event-type.aggregate", + ApplicationPurgeContent = "application.purge_content", +} + +export const BackgroundTaskTypeSerializer = { + _fromJsonObject(object: any): BackgroundTaskType { + return object; + }, + + _toJsonObject(self: BackgroundTaskType): any { + return self; + }, +}; diff --git a/javascript/src/models/connectorIn.ts b/javascript/src/models/connectorIn.ts new file mode 100644 index 000000000..4972b9dd6 --- /dev/null +++ b/javascript/src/models/connectorIn.ts @@ -0,0 +1,45 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { ConnectorKind, ConnectorKindSerializer } from "./connectorKind"; + +export interface ConnectorIn { + description?: string; + featureFlag?: string | null; + filterTypes?: string[] | null; + instructions?: string; + instructionsLink?: string | null; + kind?: ConnectorKind; + logo: string; + name: string; + transformation: string; +} + +export const ConnectorInSerializer = { + _fromJsonObject(object: any): ConnectorIn { + return { + description: object["description"], + featureFlag: object["featureFlag"], + filterTypes: object["filterTypes"], + instructions: object["instructions"], + instructionsLink: object["instructionsLink"], + kind: ConnectorKindSerializer._fromJsonObject(object["kind"]), + logo: object["logo"], + name: object["name"], + transformation: object["transformation"], + }; + }, + + _toJsonObject(self: ConnectorIn): any { + return { + description: self.description, + featureFlag: self.featureFlag, + filterTypes: self.filterTypes, + instructions: self.instructions, + instructionsLink: self.instructionsLink, + kind: self.kind ? ConnectorKindSerializer._toJsonObject(self.kind) : undefined, + logo: self.logo, + name: self.name, + transformation: self.transformation, + }; + }, +}; diff --git a/javascript/src/models/connectorKind.ts b/javascript/src/models/connectorKind.ts new file mode 100644 index 000000000..0791cbcf2 --- /dev/null +++ b/javascript/src/models/connectorKind.ts @@ -0,0 +1,27 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export enum ConnectorKind { + Custom = "Custom", + CustomerIo = "CustomerIO", + Discord = "Discord", + Hubspot = "Hubspot", + Inngest = "Inngest", + Salesforce = "Salesforce", + Segment = "Segment", + Slack = "Slack", + Teams = "Teams", + TriggerDev = "TriggerDev", + Windmill = "Windmill", + Zapier = "Zapier", +} + +export const ConnectorKindSerializer = { + _fromJsonObject(object: any): ConnectorKind { + return object; + }, + + _toJsonObject(self: ConnectorKind): any { + return self; + }, +}; diff --git a/javascript/src/models/dashboardAccessOut.ts b/javascript/src/models/dashboardAccessOut.ts new file mode 100644 index 000000000..3da5970b7 --- /dev/null +++ b/javascript/src/models/dashboardAccessOut.ts @@ -0,0 +1,23 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface DashboardAccessOut { + token: string; + url: string; +} + +export const DashboardAccessOutSerializer = { + _fromJsonObject(object: any): DashboardAccessOut { + return { + token: object["token"], + url: object["url"], + }; + }, + + _toJsonObject(self: DashboardAccessOut): any { + return { + token: self.token, + url: self.url, + }; + }, +}; diff --git a/javascript/src/models/endpointHeadersIn.ts b/javascript/src/models/endpointHeadersIn.ts new file mode 100644 index 000000000..2fc13007d --- /dev/null +++ b/javascript/src/models/endpointHeadersIn.ts @@ -0,0 +1,20 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface EndpointHeadersIn { + headers: { [key: string]: string }; +} + +export const EndpointHeadersInSerializer = { + _fromJsonObject(object: any): EndpointHeadersIn { + return { + headers: object["headers"], + }; + }, + + _toJsonObject(self: EndpointHeadersIn): any { + return { + headers: self.headers, + }; + }, +}; diff --git a/javascript/src/models/endpointHeadersOut.ts b/javascript/src/models/endpointHeadersOut.ts new file mode 100644 index 000000000..f92c7dca2 --- /dev/null +++ b/javascript/src/models/endpointHeadersOut.ts @@ -0,0 +1,27 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +/** + * The value of the headers is returned in the `headers` field. + * + * Sensitive headers that have been redacted are returned in the sensitive field. + */ +export interface EndpointHeadersOut { + headers: { [key: string]: string }; + sensitive: string[]; +} + +export const EndpointHeadersOutSerializer = { + _fromJsonObject(object: any): EndpointHeadersOut { + return { + headers: object["headers"], + sensitive: object["sensitive"], + }; + }, + + _toJsonObject(self: EndpointHeadersOut): any { + return { + headers: self.headers, + sensitive: self.sensitive, + }; + }, +}; diff --git a/javascript/src/models/endpointHeadersPatchIn.ts b/javascript/src/models/endpointHeadersPatchIn.ts new file mode 100644 index 000000000..3347d3b84 --- /dev/null +++ b/javascript/src/models/endpointHeadersPatchIn.ts @@ -0,0 +1,20 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface EndpointHeadersPatchIn { + headers: { [key: string]: string }; +} + +export const EndpointHeadersPatchInSerializer = { + _fromJsonObject(object: any): EndpointHeadersPatchIn { + return { + headers: object["headers"], + }; + }, + + _toJsonObject(self: EndpointHeadersPatchIn): any { + return { + headers: self.headers, + }; + }, +}; diff --git a/javascript/src/models/endpointIn.ts b/javascript/src/models/endpointIn.ts new file mode 100644 index 000000000..f8268621d --- /dev/null +++ b/javascript/src/models/endpointIn.ts @@ -0,0 +1,55 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface EndpointIn { + /** List of message channels this endpoint listens to (omit for all). */ + channels?: string[] | null; + description?: string; + disabled?: boolean; + filterTypes?: string[] | null; + metadata?: { [key: string]: string }; + rateLimit?: number | null; + /** + * The endpoint's verification secret. + * + * Format: `base64` encoded random bytes optionally prefixed with `whsec_`. + * It is recommended to not set this and let the server generate the secret. + */ + secret?: string | null; + /** Optional unique identifier for the endpoint. */ + uid?: string | null; + url: string; + version?: number | null; +} + +export const EndpointInSerializer = { + _fromJsonObject(object: any): EndpointIn { + return { + channels: object["channels"], + description: object["description"], + disabled: object["disabled"], + filterTypes: object["filterTypes"], + metadata: object["metadata"], + rateLimit: object["rateLimit"], + secret: object["secret"], + uid: object["uid"], + url: object["url"], + version: object["version"], + }; + }, + + _toJsonObject(self: EndpointIn): any { + return { + channels: self.channels, + description: self.description, + disabled: self.disabled, + filterTypes: self.filterTypes, + metadata: self.metadata, + rateLimit: self.rateLimit, + secret: self.secret, + uid: self.uid, + url: self.url, + version: self.version, + }; + }, +}; diff --git a/javascript/src/models/endpointMessageOut.ts b/javascript/src/models/endpointMessageOut.ts new file mode 100644 index 000000000..f351cff08 --- /dev/null +++ b/javascript/src/models/endpointMessageOut.ts @@ -0,0 +1,49 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { MessageStatus, MessageStatusSerializer } from "./messageStatus"; +/** A model containing information on a given message plus additional fields on the last attempt for that message. */ +export interface EndpointMessageOut { + /** List of free-form identifiers that endpoints can filter by */ + channels?: string[] | null; + /** Optional unique identifier for the message */ + eventId?: string | null; + /** The event type's name */ + eventType: string; + /** The Message's ID. */ + id: string; + nextAttempt?: Date | null | null; + payload: any; + status: MessageStatus; + tags?: string[] | null; + timestamp: Date | null; +} + +export const EndpointMessageOutSerializer = { + _fromJsonObject(object: any): EndpointMessageOut { + return { + channels: object["channels"], + eventId: object["eventId"], + eventType: object["eventType"], + id: object["id"], + nextAttempt: new Date(object["nextAttempt"]), + payload: object["payload"], + status: MessageStatusSerializer._fromJsonObject(object["status"]), + tags: object["tags"], + timestamp: new Date(object["timestamp"]), + }; + }, + + _toJsonObject(self: EndpointMessageOut): any { + return { + channels: self.channels, + eventId: self.eventId, + eventType: self.eventType, + id: self.id, + nextAttempt: self.nextAttempt, + payload: self.payload, + status: MessageStatusSerializer._toJsonObject(self.status), + tags: self.tags, + timestamp: self.timestamp, + }; + }, +}; diff --git a/javascript/src/models/endpointOut.ts b/javascript/src/models/endpointOut.ts new file mode 100644 index 000000000..134d096df --- /dev/null +++ b/javascript/src/models/endpointOut.ts @@ -0,0 +1,57 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface EndpointOut { + /** List of message channels this endpoint listens to (omit for all). */ + channels?: string[] | null; + createdAt: Date | null; + /** An example endpoint name. */ + description: string; + disabled?: boolean; + filterTypes?: string[] | null; + /** The Endpoint's ID. */ + id: string; + metadata: { [key: string]: string }; + rateLimit?: number | null; + /** Optional unique identifier for the endpoint. */ + uid?: string | null; + updatedAt: Date | null; + url: string; + version: number; +} + +export const EndpointOutSerializer = { + _fromJsonObject(object: any): EndpointOut { + return { + channels: object["channels"], + createdAt: new Date(object["createdAt"]), + description: object["description"], + disabled: object["disabled"], + filterTypes: object["filterTypes"], + id: object["id"], + metadata: object["metadata"], + rateLimit: object["rateLimit"], + uid: object["uid"], + updatedAt: new Date(object["updatedAt"]), + url: object["url"], + version: object["version"], + }; + }, + + _toJsonObject(self: EndpointOut): any { + return { + channels: self.channels, + createdAt: self.createdAt, + description: self.description, + disabled: self.disabled, + filterTypes: self.filterTypes, + id: self.id, + metadata: self.metadata, + rateLimit: self.rateLimit, + uid: self.uid, + updatedAt: self.updatedAt, + url: self.url, + version: self.version, + }; + }, +}; diff --git a/javascript/src/models/endpointPatch.ts b/javascript/src/models/endpointPatch.ts new file mode 100644 index 000000000..b1cc67019 --- /dev/null +++ b/javascript/src/models/endpointPatch.ts @@ -0,0 +1,54 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface EndpointPatch { + channels?: string[] | null; + description?: string; + disabled?: boolean; + filterTypes?: string[] | null; + metadata?: { [key: string]: string }; + rateLimit?: number | null; + /** + * The endpoint's verification secret. + * + * Format: `base64` encoded random bytes optionally prefixed with `whsec_`. + * It is recommended to not set this and let the server generate the secret. + */ + secret?: string | null; + /** The Endpoint's UID. */ + uid?: string | null; + url?: string; + version?: number; +} + +export const EndpointPatchSerializer = { + _fromJsonObject(object: any): EndpointPatch { + return { + channels: object["channels"], + description: object["description"], + disabled: object["disabled"], + filterTypes: object["filterTypes"], + metadata: object["metadata"], + rateLimit: object["rateLimit"], + secret: object["secret"], + uid: object["uid"], + url: object["url"], + version: object["version"], + }; + }, + + _toJsonObject(self: EndpointPatch): any { + return { + channels: self.channels, + description: self.description, + disabled: self.disabled, + filterTypes: self.filterTypes, + metadata: self.metadata, + rateLimit: self.rateLimit, + secret: self.secret, + uid: self.uid, + url: self.url, + version: self.version, + }; + }, +}; diff --git a/javascript/src/models/endpointSecretOut.ts b/javascript/src/models/endpointSecretOut.ts new file mode 100644 index 000000000..897240d15 --- /dev/null +++ b/javascript/src/models/endpointSecretOut.ts @@ -0,0 +1,26 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface EndpointSecretOut { + /** + * The endpoint's verification secret. + * + * Format: `base64` encoded random bytes optionally prefixed with `whsec_`. + * It is recommended to not set this and let the server generate the secret. + */ + key: string; +} + +export const EndpointSecretOutSerializer = { + _fromJsonObject(object: any): EndpointSecretOut { + return { + key: object["key"], + }; + }, + + _toJsonObject(self: EndpointSecretOut): any { + return { + key: self.key, + }; + }, +}; diff --git a/javascript/src/models/endpointSecretRotateIn.ts b/javascript/src/models/endpointSecretRotateIn.ts new file mode 100644 index 000000000..18ccaa512 --- /dev/null +++ b/javascript/src/models/endpointSecretRotateIn.ts @@ -0,0 +1,26 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface EndpointSecretRotateIn { + /** + * The endpoint's verification secret. + * + * Format: `base64` encoded random bytes optionally prefixed with `whsec_`. + * It is recommended to not set this and let the server generate the secret. + */ + key?: string | null; +} + +export const EndpointSecretRotateInSerializer = { + _fromJsonObject(object: any): EndpointSecretRotateIn { + return { + key: object["key"], + }; + }, + + _toJsonObject(self: EndpointSecretRotateIn): any { + return { + key: self.key, + }; + }, +}; diff --git a/javascript/src/models/endpointStats.ts b/javascript/src/models/endpointStats.ts new file mode 100644 index 000000000..659654b46 --- /dev/null +++ b/javascript/src/models/endpointStats.ts @@ -0,0 +1,29 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface EndpointStats { + fail: number; + pending: number; + sending: number; + success: number; +} + +export const EndpointStatsSerializer = { + _fromJsonObject(object: any): EndpointStats { + return { + fail: object["fail"], + pending: object["pending"], + sending: object["sending"], + success: object["success"], + }; + }, + + _toJsonObject(self: EndpointStats): any { + return { + fail: self.fail, + pending: self.pending, + sending: self.sending, + success: self.success, + }; + }, +}; diff --git a/javascript/src/models/endpointTransformationIn.ts b/javascript/src/models/endpointTransformationIn.ts new file mode 100644 index 000000000..895d0b8b9 --- /dev/null +++ b/javascript/src/models/endpointTransformationIn.ts @@ -0,0 +1,23 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface EndpointTransformationIn { + code?: string | null; + enabled?: boolean; +} + +export const EndpointTransformationInSerializer = { + _fromJsonObject(object: any): EndpointTransformationIn { + return { + code: object["code"], + enabled: object["enabled"], + }; + }, + + _toJsonObject(self: EndpointTransformationIn): any { + return { + code: self.code, + enabled: self.enabled, + }; + }, +}; diff --git a/javascript/src/models/endpointTransformationOut.ts b/javascript/src/models/endpointTransformationOut.ts new file mode 100644 index 000000000..3a5c75da6 --- /dev/null +++ b/javascript/src/models/endpointTransformationOut.ts @@ -0,0 +1,23 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface EndpointTransformationOut { + code?: string | null; + enabled?: boolean; +} + +export const EndpointTransformationOutSerializer = { + _fromJsonObject(object: any): EndpointTransformationOut { + return { + code: object["code"], + enabled: object["enabled"], + }; + }, + + _toJsonObject(self: EndpointTransformationOut): any { + return { + code: self.code, + enabled: self.enabled, + }; + }, +}; diff --git a/javascript/src/models/endpointUpdate.ts b/javascript/src/models/endpointUpdate.ts new file mode 100644 index 000000000..df155430a --- /dev/null +++ b/javascript/src/models/endpointUpdate.ts @@ -0,0 +1,46 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface EndpointUpdate { + /** List of message channels this endpoint listens to (omit for all). */ + channels?: string[] | null; + description?: string; + disabled?: boolean; + filterTypes?: string[] | null; + metadata?: { [key: string]: string }; + rateLimit?: number | null; + /** Optional unique identifier for the endpoint. */ + uid?: string | null; + url: string; + version?: number | null; +} + +export const EndpointUpdateSerializer = { + _fromJsonObject(object: any): EndpointUpdate { + return { + channels: object["channels"], + description: object["description"], + disabled: object["disabled"], + filterTypes: object["filterTypes"], + metadata: object["metadata"], + rateLimit: object["rateLimit"], + uid: object["uid"], + url: object["url"], + version: object["version"], + }; + }, + + _toJsonObject(self: EndpointUpdate): any { + return { + channels: self.channels, + description: self.description, + disabled: self.disabled, + filterTypes: self.filterTypes, + metadata: self.metadata, + rateLimit: self.rateLimit, + uid: self.uid, + url: self.url, + version: self.version, + }; + }, +}; diff --git a/javascript/src/models/environmentIn.ts b/javascript/src/models/environmentIn.ts new file mode 100644 index 000000000..655748d70 --- /dev/null +++ b/javascript/src/models/environmentIn.ts @@ -0,0 +1,36 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { ConnectorIn, ConnectorInSerializer } from "./connectorIn"; +import { EventTypeIn, EventTypeInSerializer } from "./eventTypeIn"; + +export interface EnvironmentIn { + connectors?: ConnectorIn[] | null; + eventTypes?: EventTypeIn[] | null; + settings?: any | null; +} + +export const EnvironmentInSerializer = { + _fromJsonObject(object: any): EnvironmentIn { + return { + connectors: object["connectors"].map((item: ConnectorIn) => + ConnectorInSerializer._fromJsonObject(item) + ), + eventTypes: object["eventTypes"].map((item: EventTypeIn) => + EventTypeInSerializer._fromJsonObject(item) + ), + settings: object["settings"], + }; + }, + + _toJsonObject(self: EnvironmentIn): any { + return { + connectors: self.connectors?.map((item) => + ConnectorInSerializer._toJsonObject(item) + ), + eventTypes: self.eventTypes?.map((item) => + EventTypeInSerializer._toJsonObject(item) + ), + settings: self.settings, + }; + }, +}; diff --git a/javascript/src/models/environmentOut.ts b/javascript/src/models/environmentOut.ts new file mode 100644 index 000000000..22fcfab21 --- /dev/null +++ b/javascript/src/models/environmentOut.ts @@ -0,0 +1,42 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { EventTypeOut, EventTypeOutSerializer } from "./eventTypeOut"; +import { TemplateOut, TemplateOutSerializer } from "./templateOut"; + +export interface EnvironmentOut { + createdAt: Date | null; + eventTypes: EventTypeOut[]; + settings: any | null; + transformationTemplates: TemplateOut[]; + version?: number; +} + +export const EnvironmentOutSerializer = { + _fromJsonObject(object: any): EnvironmentOut { + return { + createdAt: new Date(object["createdAt"]), + eventTypes: object["eventTypes"].map((item: EventTypeOut) => + EventTypeOutSerializer._fromJsonObject(item) + ), + settings: object["settings"], + transformationTemplates: object["transformationTemplates"].map( + (item: TemplateOut) => TemplateOutSerializer._fromJsonObject(item) + ), + version: object["version"], + }; + }, + + _toJsonObject(self: EnvironmentOut): any { + return { + createdAt: self.createdAt, + eventTypes: self.eventTypes.map((item) => + EventTypeOutSerializer._toJsonObject(item) + ), + settings: self.settings, + transformationTemplates: self.transformationTemplates.map((item) => + TemplateOutSerializer._toJsonObject(item) + ), + version: self.version, + }; + }, +}; diff --git a/javascript/src/models/eventExampleIn.ts b/javascript/src/models/eventExampleIn.ts new file mode 100644 index 000000000..4e6df5ceb --- /dev/null +++ b/javascript/src/models/eventExampleIn.ts @@ -0,0 +1,29 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface EventExampleIn { + /** The event type's name */ + eventType: string; + /** + * If the event type schema contains an array of examples, chooses which one to send. + * + * Defaults to the first example. Ignored if the schema doesn't contain an array of examples. + */ + exampleIndex?: number; +} + +export const EventExampleInSerializer = { + _fromJsonObject(object: any): EventExampleIn { + return { + eventType: object["eventType"], + exampleIndex: object["exampleIndex"], + }; + }, + + _toJsonObject(self: EventExampleIn): any { + return { + eventType: self.eventType, + exampleIndex: self.exampleIndex, + }; + }, +}; diff --git a/javascript/src/models/eventTypeFromOpenApi.ts b/javascript/src/models/eventTypeFromOpenApi.ts new file mode 100644 index 000000000..057fef1eb --- /dev/null +++ b/javascript/src/models/eventTypeFromOpenApi.ts @@ -0,0 +1,37 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface EventTypeFromOpenApi { + deprecated: boolean; + description: string; + featureFlag?: string | null; + /** The event type group's name */ + groupName?: string | null; + /** The event type's name */ + name: string; + schemas?: any | null; +} + +export const EventTypeFromOpenApiSerializer = { + _fromJsonObject(object: any): EventTypeFromOpenApi { + return { + deprecated: object["deprecated"], + description: object["description"], + featureFlag: object["featureFlag"], + groupName: object["groupName"], + name: object["name"], + schemas: object["schemas"], + }; + }, + + _toJsonObject(self: EventTypeFromOpenApi): any { + return { + deprecated: self.deprecated, + description: self.description, + featureFlag: self.featureFlag, + groupName: self.groupName, + name: self.name, + schemas: self.schemas, + }; + }, +}; diff --git a/javascript/src/models/eventTypeImportOpenApiIn.ts b/javascript/src/models/eventTypeImportOpenApiIn.ts new file mode 100644 index 000000000..73ed87cf5 --- /dev/null +++ b/javascript/src/models/eventTypeImportOpenApiIn.ts @@ -0,0 +1,37 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +/** + * Import a list of event types from webhooks defined in an OpenAPI spec. + * + * The OpenAPI spec can be specified as either `spec` given the spec as a JSON object, or as `specRaw` (a `string`) which will be parsed as YAML or JSON by the server. Sending neither or both is invalid, resulting in a `400` **Bad Request**. + */ +export interface EventTypeImportOpenApiIn { + /** If `true`, return the event types that would be modified without actually modifying them. */ + dryRun?: boolean; + /** If `true`, all existing event types that are not in the spec will be archived. */ + replaceAll?: boolean; + /** A pre-parsed JSON spec. */ + spec?: any | null; + /** A string, parsed by the server as YAML or JSON. */ + specRaw?: string | null; +} + +export const EventTypeImportOpenApiInSerializer = { + _fromJsonObject(object: any): EventTypeImportOpenApiIn { + return { + dryRun: object["dryRun"], + replaceAll: object["replaceAll"], + spec: object["spec"], + specRaw: object["specRaw"], + }; + }, + + _toJsonObject(self: EventTypeImportOpenApiIn): any { + return { + dryRun: self.dryRun, + replaceAll: self.replaceAll, + spec: self.spec, + specRaw: self.specRaw, + }; + }, +}; diff --git a/javascript/src/models/eventTypeImportOpenApiOut.ts b/javascript/src/models/eventTypeImportOpenApiOut.ts new file mode 100644 index 000000000..25a97b070 --- /dev/null +++ b/javascript/src/models/eventTypeImportOpenApiOut.ts @@ -0,0 +1,24 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { + EventTypeImportOpenApiOutData, + EventTypeImportOpenApiOutDataSerializer, +} from "./eventTypeImportOpenApiOutData"; + +export interface EventTypeImportOpenApiOut { + data: EventTypeImportOpenApiOutData; +} + +export const EventTypeImportOpenApiOutSerializer = { + _fromJsonObject(object: any): EventTypeImportOpenApiOut { + return { + data: EventTypeImportOpenApiOutDataSerializer._fromJsonObject(object["data"]), + }; + }, + + _toJsonObject(self: EventTypeImportOpenApiOut): any { + return { + data: EventTypeImportOpenApiOutDataSerializer._toJsonObject(self.data), + }; + }, +}; diff --git a/javascript/src/models/eventTypeImportOpenApiOutData.ts b/javascript/src/models/eventTypeImportOpenApiOutData.ts new file mode 100644 index 000000000..1542fa255 --- /dev/null +++ b/javascript/src/models/eventTypeImportOpenApiOutData.ts @@ -0,0 +1,31 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { + EventTypeFromOpenApi, + EventTypeFromOpenApiSerializer, +} from "./eventTypeFromOpenApi"; + +export interface EventTypeImportOpenApiOutData { + modified: string[]; + toModify?: EventTypeFromOpenApi[] | null; +} + +export const EventTypeImportOpenApiOutDataSerializer = { + _fromJsonObject(object: any): EventTypeImportOpenApiOutData { + return { + modified: object["modified"], + toModify: object["to_modify"].map((item: EventTypeFromOpenApi) => + EventTypeFromOpenApiSerializer._fromJsonObject(item) + ), + }; + }, + + _toJsonObject(self: EventTypeImportOpenApiOutData): any { + return { + modified: self.modified, + to_modify: self.toModify?.map((item) => + EventTypeFromOpenApiSerializer._toJsonObject(item) + ), + }; + }, +}; diff --git a/javascript/src/models/eventTypeIn.ts b/javascript/src/models/eventTypeIn.ts new file mode 100644 index 000000000..ef4395f86 --- /dev/null +++ b/javascript/src/models/eventTypeIn.ts @@ -0,0 +1,41 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface EventTypeIn { + archived?: boolean; + deprecated?: boolean; + description: string; + featureFlag?: string | null; + /** The event type group's name */ + groupName?: string | null; + /** The event type's name */ + name: string; + /** The schema for the event type for a specific version as a JSON schema. */ + schemas?: any | null; +} + +export const EventTypeInSerializer = { + _fromJsonObject(object: any): EventTypeIn { + return { + archived: object["archived"], + deprecated: object["deprecated"], + description: object["description"], + featureFlag: object["featureFlag"], + groupName: object["groupName"], + name: object["name"], + schemas: object["schemas"], + }; + }, + + _toJsonObject(self: EventTypeIn): any { + return { + archived: self.archived, + deprecated: self.deprecated, + description: self.description, + featureFlag: self.featureFlag, + groupName: self.groupName, + name: self.name, + schemas: self.schemas, + }; + }, +}; diff --git a/javascript/src/models/eventTypeOut.ts b/javascript/src/models/eventTypeOut.ts new file mode 100644 index 000000000..8755d8937 --- /dev/null +++ b/javascript/src/models/eventTypeOut.ts @@ -0,0 +1,47 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface EventTypeOut { + archived?: boolean; + createdAt: Date | null; + deprecated: boolean; + description: string; + featureFlag?: string | null; + /** The event type group's name */ + groupName?: string | null; + /** The event type's name */ + name: string; + /** The schema for the event type for a specific version as a JSON schema. */ + schemas?: any | null; + updatedAt: Date | null; +} + +export const EventTypeOutSerializer = { + _fromJsonObject(object: any): EventTypeOut { + return { + archived: object["archived"], + createdAt: new Date(object["createdAt"]), + deprecated: object["deprecated"], + description: object["description"], + featureFlag: object["featureFlag"], + groupName: object["groupName"], + name: object["name"], + schemas: object["schemas"], + updatedAt: new Date(object["updatedAt"]), + }; + }, + + _toJsonObject(self: EventTypeOut): any { + return { + archived: self.archived, + createdAt: self.createdAt, + deprecated: self.deprecated, + description: self.description, + featureFlag: self.featureFlag, + groupName: self.groupName, + name: self.name, + schemas: self.schemas, + updatedAt: self.updatedAt, + }; + }, +}; diff --git a/javascript/src/models/eventTypePatch.ts b/javascript/src/models/eventTypePatch.ts new file mode 100644 index 000000000..f04787a65 --- /dev/null +++ b/javascript/src/models/eventTypePatch.ts @@ -0,0 +1,36 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface EventTypePatch { + archived?: boolean; + deprecated?: boolean; + description?: string; + featureFlag?: string | null; + /** The event type group's name */ + groupName?: string | null; + schemas?: any | null; +} + +export const EventTypePatchSerializer = { + _fromJsonObject(object: any): EventTypePatch { + return { + archived: object["archived"], + deprecated: object["deprecated"], + description: object["description"], + featureFlag: object["featureFlag"], + groupName: object["groupName"], + schemas: object["schemas"], + }; + }, + + _toJsonObject(self: EventTypePatch): any { + return { + archived: self.archived, + deprecated: self.deprecated, + description: self.description, + featureFlag: self.featureFlag, + groupName: self.groupName, + schemas: self.schemas, + }; + }, +}; diff --git a/javascript/src/models/eventTypeUpdate.ts b/javascript/src/models/eventTypeUpdate.ts new file mode 100644 index 000000000..8e5862e16 --- /dev/null +++ b/javascript/src/models/eventTypeUpdate.ts @@ -0,0 +1,37 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface EventTypeUpdate { + archived?: boolean; + deprecated?: boolean; + description: string; + featureFlag?: string | null; + /** The event type group's name */ + groupName?: string | null; + /** The schema for the event type for a specific version as a JSON schema. */ + schemas?: any | null; +} + +export const EventTypeUpdateSerializer = { + _fromJsonObject(object: any): EventTypeUpdate { + return { + archived: object["archived"], + deprecated: object["deprecated"], + description: object["description"], + featureFlag: object["featureFlag"], + groupName: object["groupName"], + schemas: object["schemas"], + }; + }, + + _toJsonObject(self: EventTypeUpdate): any { + return { + archived: self.archived, + deprecated: self.deprecated, + description: self.description, + featureFlag: self.featureFlag, + groupName: self.groupName, + schemas: self.schemas, + }; + }, +}; diff --git a/javascript/src/models/expungAllContentsOut.ts b/javascript/src/models/expungAllContentsOut.ts new file mode 100644 index 000000000..24900b595 --- /dev/null +++ b/javascript/src/models/expungAllContentsOut.ts @@ -0,0 +1,32 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { + BackgroundTaskStatus, + BackgroundTaskStatusSerializer, +} from "./backgroundTaskStatus"; +import { BackgroundTaskType, BackgroundTaskTypeSerializer } from "./backgroundTaskType"; + +export interface ExpungAllContentsOut { + /** The QueueBackgroundTask's ID. */ + id: string; + status: BackgroundTaskStatus; + task: BackgroundTaskType; +} + +export const ExpungAllContentsOutSerializer = { + _fromJsonObject(object: any): ExpungAllContentsOut { + return { + id: object["id"], + status: BackgroundTaskStatusSerializer._fromJsonObject(object["status"]), + task: BackgroundTaskTypeSerializer._fromJsonObject(object["task"]), + }; + }, + + _toJsonObject(self: ExpungAllContentsOut): any { + return { + id: self.id, + status: BackgroundTaskStatusSerializer._toJsonObject(self.status), + task: BackgroundTaskTypeSerializer._toJsonObject(self.task), + }; + }, +}; diff --git a/javascript/src/models/integrationIn.ts b/javascript/src/models/integrationIn.ts new file mode 100644 index 000000000..a8175d51e --- /dev/null +++ b/javascript/src/models/integrationIn.ts @@ -0,0 +1,24 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface IntegrationIn { + /** The set of feature flags the integration will have access to. */ + featureFlags?: string[]; + name: string; +} + +export const IntegrationInSerializer = { + _fromJsonObject(object: any): IntegrationIn { + return { + featureFlags: object["featureFlags"], + name: object["name"], + }; + }, + + _toJsonObject(self: IntegrationIn): any { + return { + featureFlags: self.featureFlags, + name: self.name, + }; + }, +}; diff --git a/javascript/src/models/integrationKeyOut.ts b/javascript/src/models/integrationKeyOut.ts new file mode 100644 index 000000000..d57a35e58 --- /dev/null +++ b/javascript/src/models/integrationKeyOut.ts @@ -0,0 +1,20 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface IntegrationKeyOut { + key: string; +} + +export const IntegrationKeyOutSerializer = { + _fromJsonObject(object: any): IntegrationKeyOut { + return { + key: object["key"], + }; + }, + + _toJsonObject(self: IntegrationKeyOut): any { + return { + key: self.key, + }; + }, +}; diff --git a/javascript/src/models/integrationOut.ts b/javascript/src/models/integrationOut.ts new file mode 100644 index 000000000..a96b1b476 --- /dev/null +++ b/javascript/src/models/integrationOut.ts @@ -0,0 +1,34 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface IntegrationOut { + createdAt: Date | null; + /** The set of feature flags the integration has access to. */ + featureFlags?: string[]; + /** The Integration's ID. */ + id: string; + name: string; + updatedAt: Date | null; +} + +export const IntegrationOutSerializer = { + _fromJsonObject(object: any): IntegrationOut { + return { + createdAt: new Date(object["createdAt"]), + featureFlags: object["featureFlags"], + id: object["id"], + name: object["name"], + updatedAt: new Date(object["updatedAt"]), + }; + }, + + _toJsonObject(self: IntegrationOut): any { + return { + createdAt: self.createdAt, + featureFlags: self.featureFlags, + id: self.id, + name: self.name, + updatedAt: self.updatedAt, + }; + }, +}; diff --git a/javascript/src/models/integrationUpdate.ts b/javascript/src/models/integrationUpdate.ts new file mode 100644 index 000000000..d10024938 --- /dev/null +++ b/javascript/src/models/integrationUpdate.ts @@ -0,0 +1,24 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface IntegrationUpdate { + /** The set of feature flags the integration will have access to. */ + featureFlags?: string[]; + name: string; +} + +export const IntegrationUpdateSerializer = { + _fromJsonObject(object: any): IntegrationUpdate { + return { + featureFlags: object["featureFlags"], + name: object["name"], + }; + }, + + _toJsonObject(self: IntegrationUpdate): any { + return { + featureFlags: self.featureFlags, + name: self.name, + }; + }, +}; diff --git a/javascript/src/models/listResponseApplicationOut.ts b/javascript/src/models/listResponseApplicationOut.ts new file mode 100644 index 000000000..a866e4716 --- /dev/null +++ b/javascript/src/models/listResponseApplicationOut.ts @@ -0,0 +1,32 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { ApplicationOut, ApplicationOutSerializer } from "./applicationOut"; + +export interface ListResponseApplicationOut { + data: ApplicationOut[]; + done: boolean; + iterator: string | null; + prevIterator?: string | null; +} + +export const ListResponseApplicationOutSerializer = { + _fromJsonObject(object: any): ListResponseApplicationOut { + return { + data: object["data"].map((item: ApplicationOut) => + ApplicationOutSerializer._fromJsonObject(item) + ), + done: object["done"], + iterator: object["iterator"], + prevIterator: object["prevIterator"], + }; + }, + + _toJsonObject(self: ListResponseApplicationOut): any { + return { + data: self.data.map((item) => ApplicationOutSerializer._toJsonObject(item)), + done: self.done, + iterator: self.iterator, + prevIterator: self.prevIterator, + }; + }, +}; diff --git a/javascript/src/models/listResponseBackgroundTaskOut.ts b/javascript/src/models/listResponseBackgroundTaskOut.ts new file mode 100644 index 000000000..80f795b28 --- /dev/null +++ b/javascript/src/models/listResponseBackgroundTaskOut.ts @@ -0,0 +1,32 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { BackgroundTaskOut, BackgroundTaskOutSerializer } from "./backgroundTaskOut"; + +export interface ListResponseBackgroundTaskOut { + data: BackgroundTaskOut[]; + done: boolean; + iterator: string | null; + prevIterator?: string | null; +} + +export const ListResponseBackgroundTaskOutSerializer = { + _fromJsonObject(object: any): ListResponseBackgroundTaskOut { + return { + data: object["data"].map((item: BackgroundTaskOut) => + BackgroundTaskOutSerializer._fromJsonObject(item) + ), + done: object["done"], + iterator: object["iterator"], + prevIterator: object["prevIterator"], + }; + }, + + _toJsonObject(self: ListResponseBackgroundTaskOut): any { + return { + data: self.data.map((item) => BackgroundTaskOutSerializer._toJsonObject(item)), + done: self.done, + iterator: self.iterator, + prevIterator: self.prevIterator, + }; + }, +}; diff --git a/javascript/src/models/listResponseEndpointMessageOut.ts b/javascript/src/models/listResponseEndpointMessageOut.ts new file mode 100644 index 000000000..f35c20e77 --- /dev/null +++ b/javascript/src/models/listResponseEndpointMessageOut.ts @@ -0,0 +1,32 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { EndpointMessageOut, EndpointMessageOutSerializer } from "./endpointMessageOut"; + +export interface ListResponseEndpointMessageOut { + data: EndpointMessageOut[]; + done: boolean; + iterator: string | null; + prevIterator?: string | null; +} + +export const ListResponseEndpointMessageOutSerializer = { + _fromJsonObject(object: any): ListResponseEndpointMessageOut { + return { + data: object["data"].map((item: EndpointMessageOut) => + EndpointMessageOutSerializer._fromJsonObject(item) + ), + done: object["done"], + iterator: object["iterator"], + prevIterator: object["prevIterator"], + }; + }, + + _toJsonObject(self: ListResponseEndpointMessageOut): any { + return { + data: self.data.map((item) => EndpointMessageOutSerializer._toJsonObject(item)), + done: self.done, + iterator: self.iterator, + prevIterator: self.prevIterator, + }; + }, +}; diff --git a/javascript/src/models/listResponseEndpointOut.ts b/javascript/src/models/listResponseEndpointOut.ts new file mode 100644 index 000000000..73a3f7907 --- /dev/null +++ b/javascript/src/models/listResponseEndpointOut.ts @@ -0,0 +1,32 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { EndpointOut, EndpointOutSerializer } from "./endpointOut"; + +export interface ListResponseEndpointOut { + data: EndpointOut[]; + done: boolean; + iterator: string | null; + prevIterator?: string | null; +} + +export const ListResponseEndpointOutSerializer = { + _fromJsonObject(object: any): ListResponseEndpointOut { + return { + data: object["data"].map((item: EndpointOut) => + EndpointOutSerializer._fromJsonObject(item) + ), + done: object["done"], + iterator: object["iterator"], + prevIterator: object["prevIterator"], + }; + }, + + _toJsonObject(self: ListResponseEndpointOut): any { + return { + data: self.data.map((item) => EndpointOutSerializer._toJsonObject(item)), + done: self.done, + iterator: self.iterator, + prevIterator: self.prevIterator, + }; + }, +}; diff --git a/javascript/src/models/listResponseEventTypeOut.ts b/javascript/src/models/listResponseEventTypeOut.ts new file mode 100644 index 000000000..2019b9ea0 --- /dev/null +++ b/javascript/src/models/listResponseEventTypeOut.ts @@ -0,0 +1,32 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { EventTypeOut, EventTypeOutSerializer } from "./eventTypeOut"; + +export interface ListResponseEventTypeOut { + data: EventTypeOut[]; + done: boolean; + iterator: string | null; + prevIterator?: string | null; +} + +export const ListResponseEventTypeOutSerializer = { + _fromJsonObject(object: any): ListResponseEventTypeOut { + return { + data: object["data"].map((item: EventTypeOut) => + EventTypeOutSerializer._fromJsonObject(item) + ), + done: object["done"], + iterator: object["iterator"], + prevIterator: object["prevIterator"], + }; + }, + + _toJsonObject(self: ListResponseEventTypeOut): any { + return { + data: self.data.map((item) => EventTypeOutSerializer._toJsonObject(item)), + done: self.done, + iterator: self.iterator, + prevIterator: self.prevIterator, + }; + }, +}; diff --git a/javascript/src/models/listResponseIntegrationOut.ts b/javascript/src/models/listResponseIntegrationOut.ts new file mode 100644 index 000000000..79451b551 --- /dev/null +++ b/javascript/src/models/listResponseIntegrationOut.ts @@ -0,0 +1,32 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { IntegrationOut, IntegrationOutSerializer } from "./integrationOut"; + +export interface ListResponseIntegrationOut { + data: IntegrationOut[]; + done: boolean; + iterator: string | null; + prevIterator?: string | null; +} + +export const ListResponseIntegrationOutSerializer = { + _fromJsonObject(object: any): ListResponseIntegrationOut { + return { + data: object["data"].map((item: IntegrationOut) => + IntegrationOutSerializer._fromJsonObject(item) + ), + done: object["done"], + iterator: object["iterator"], + prevIterator: object["prevIterator"], + }; + }, + + _toJsonObject(self: ListResponseIntegrationOut): any { + return { + data: self.data.map((item) => IntegrationOutSerializer._toJsonObject(item)), + done: self.done, + iterator: self.iterator, + prevIterator: self.prevIterator, + }; + }, +}; diff --git a/javascript/src/models/listResponseMessageAttemptOut.ts b/javascript/src/models/listResponseMessageAttemptOut.ts new file mode 100644 index 000000000..19e93271c --- /dev/null +++ b/javascript/src/models/listResponseMessageAttemptOut.ts @@ -0,0 +1,32 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { MessageAttemptOut, MessageAttemptOutSerializer } from "./messageAttemptOut"; + +export interface ListResponseMessageAttemptOut { + data: MessageAttemptOut[]; + done: boolean; + iterator: string | null; + prevIterator?: string | null; +} + +export const ListResponseMessageAttemptOutSerializer = { + _fromJsonObject(object: any): ListResponseMessageAttemptOut { + return { + data: object["data"].map((item: MessageAttemptOut) => + MessageAttemptOutSerializer._fromJsonObject(item) + ), + done: object["done"], + iterator: object["iterator"], + prevIterator: object["prevIterator"], + }; + }, + + _toJsonObject(self: ListResponseMessageAttemptOut): any { + return { + data: self.data.map((item) => MessageAttemptOutSerializer._toJsonObject(item)), + done: self.done, + iterator: self.iterator, + prevIterator: self.prevIterator, + }; + }, +}; diff --git a/javascript/src/models/listResponseMessageEndpointOut.ts b/javascript/src/models/listResponseMessageEndpointOut.ts new file mode 100644 index 000000000..b1b9ad327 --- /dev/null +++ b/javascript/src/models/listResponseMessageEndpointOut.ts @@ -0,0 +1,32 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { MessageEndpointOut, MessageEndpointOutSerializer } from "./messageEndpointOut"; + +export interface ListResponseMessageEndpointOut { + data: MessageEndpointOut[]; + done: boolean; + iterator: string | null; + prevIterator?: string | null; +} + +export const ListResponseMessageEndpointOutSerializer = { + _fromJsonObject(object: any): ListResponseMessageEndpointOut { + return { + data: object["data"].map((item: MessageEndpointOut) => + MessageEndpointOutSerializer._fromJsonObject(item) + ), + done: object["done"], + iterator: object["iterator"], + prevIterator: object["prevIterator"], + }; + }, + + _toJsonObject(self: ListResponseMessageEndpointOut): any { + return { + data: self.data.map((item) => MessageEndpointOutSerializer._toJsonObject(item)), + done: self.done, + iterator: self.iterator, + prevIterator: self.prevIterator, + }; + }, +}; diff --git a/javascript/src/models/listResponseMessageOut.ts b/javascript/src/models/listResponseMessageOut.ts new file mode 100644 index 000000000..6d5629f5f --- /dev/null +++ b/javascript/src/models/listResponseMessageOut.ts @@ -0,0 +1,32 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { MessageOut, MessageOutSerializer } from "./messageOut"; + +export interface ListResponseMessageOut { + data: MessageOut[]; + done: boolean; + iterator: string | null; + prevIterator?: string | null; +} + +export const ListResponseMessageOutSerializer = { + _fromJsonObject(object: any): ListResponseMessageOut { + return { + data: object["data"].map((item: MessageOut) => + MessageOutSerializer._fromJsonObject(item) + ), + done: object["done"], + iterator: object["iterator"], + prevIterator: object["prevIterator"], + }; + }, + + _toJsonObject(self: ListResponseMessageOut): any { + return { + data: self.data.map((item) => MessageOutSerializer._toJsonObject(item)), + done: self.done, + iterator: self.iterator, + prevIterator: self.prevIterator, + }; + }, +}; diff --git a/javascript/src/models/listResponseOperationalWebhookEndpointOut.ts b/javascript/src/models/listResponseOperationalWebhookEndpointOut.ts new file mode 100644 index 000000000..c3d32db14 --- /dev/null +++ b/javascript/src/models/listResponseOperationalWebhookEndpointOut.ts @@ -0,0 +1,37 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { + OperationalWebhookEndpointOut, + OperationalWebhookEndpointOutSerializer, +} from "./operationalWebhookEndpointOut"; + +export interface ListResponseOperationalWebhookEndpointOut { + data: OperationalWebhookEndpointOut[]; + done: boolean; + iterator: string | null; + prevIterator?: string | null; +} + +export const ListResponseOperationalWebhookEndpointOutSerializer = { + _fromJsonObject(object: any): ListResponseOperationalWebhookEndpointOut { + return { + data: object["data"].map((item: OperationalWebhookEndpointOut) => + OperationalWebhookEndpointOutSerializer._fromJsonObject(item) + ), + done: object["done"], + iterator: object["iterator"], + prevIterator: object["prevIterator"], + }; + }, + + _toJsonObject(self: ListResponseOperationalWebhookEndpointOut): any { + return { + data: self.data.map((item) => + OperationalWebhookEndpointOutSerializer._toJsonObject(item) + ), + done: self.done, + iterator: self.iterator, + prevIterator: self.prevIterator, + }; + }, +}; diff --git a/javascript/src/models/messageAttemptOut.ts b/javascript/src/models/messageAttemptOut.ts new file mode 100644 index 000000000..f9c7062dd --- /dev/null +++ b/javascript/src/models/messageAttemptOut.ts @@ -0,0 +1,62 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { + MessageAttemptTriggerType, + MessageAttemptTriggerTypeSerializer, +} from "./messageAttemptTriggerType"; +import { MessageOut, MessageOutSerializer } from "./messageOut"; +import { MessageStatus, MessageStatusSerializer } from "./messageStatus"; + +export interface MessageAttemptOut { + /** The Endpoint's ID. */ + endpointId: string; + /** The MessageAttempt's ID. */ + id: string; + msg?: MessageOut | null; + /** The Message's ID. */ + msgId: string; + response: string; + /** Response duration in milliseconds. */ + responseDurationMs: number; + responseStatusCode: number; + status: MessageStatus; + timestamp: Date | null; + triggerType: MessageAttemptTriggerType; + url: string; +} + +export const MessageAttemptOutSerializer = { + _fromJsonObject(object: any): MessageAttemptOut { + return { + endpointId: object["endpointId"], + id: object["id"], + msg: MessageOutSerializer._fromJsonObject(object["msg"]), + msgId: object["msgId"], + response: object["response"], + responseDurationMs: object["responseDurationMs"], + responseStatusCode: object["responseStatusCode"], + status: MessageStatusSerializer._fromJsonObject(object["status"]), + timestamp: new Date(object["timestamp"]), + triggerType: MessageAttemptTriggerTypeSerializer._fromJsonObject( + object["triggerType"] + ), + url: object["url"], + }; + }, + + _toJsonObject(self: MessageAttemptOut): any { + return { + endpointId: self.endpointId, + id: self.id, + msg: self.msg ? MessageOutSerializer._toJsonObject(self.msg) : undefined, + msgId: self.msgId, + response: self.response, + responseDurationMs: self.responseDurationMs, + responseStatusCode: self.responseStatusCode, + status: MessageStatusSerializer._toJsonObject(self.status), + timestamp: self.timestamp, + triggerType: MessageAttemptTriggerTypeSerializer._toJsonObject(self.triggerType), + url: self.url, + }; + }, +}; diff --git a/javascript/src/models/messageAttemptTriggerType.ts b/javascript/src/models/messageAttemptTriggerType.ts new file mode 100644 index 000000000..106de58d0 --- /dev/null +++ b/javascript/src/models/messageAttemptTriggerType.ts @@ -0,0 +1,21 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +/** + * The reason an attempt was made: + * - Scheduled = 0 + * - Manual = 1 + */ +export enum MessageAttemptTriggerType { + Scheduled = 0, + Manual = 1, +} + +export const MessageAttemptTriggerTypeSerializer = { + _fromJsonObject(object: any): MessageAttemptTriggerType { + return object; + }, + + _toJsonObject(self: MessageAttemptTriggerType): any { + return self; + }, +}; diff --git a/javascript/src/models/messageEndpointOut.ts b/javascript/src/models/messageEndpointOut.ts new file mode 100644 index 000000000..0336eacdf --- /dev/null +++ b/javascript/src/models/messageEndpointOut.ts @@ -0,0 +1,61 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { MessageStatus, MessageStatusSerializer } from "./messageStatus"; + +export interface MessageEndpointOut { + /** List of message channels this endpoint listens to (omit for all). */ + channels?: string[] | null; + createdAt: Date | null; + /** An example endpoint name. */ + description: string; + disabled?: boolean; + filterTypes?: string[] | null; + /** The Endpoint's ID. */ + id: string; + nextAttempt?: Date | null | null; + rateLimit?: number | null; + status: MessageStatus; + /** Optional unique identifier for the endpoint. */ + uid?: string | null; + updatedAt: Date | null; + url: string; + version: number; +} + +export const MessageEndpointOutSerializer = { + _fromJsonObject(object: any): MessageEndpointOut { + return { + channels: object["channels"], + createdAt: new Date(object["createdAt"]), + description: object["description"], + disabled: object["disabled"], + filterTypes: object["filterTypes"], + id: object["id"], + nextAttempt: new Date(object["nextAttempt"]), + rateLimit: object["rateLimit"], + status: MessageStatusSerializer._fromJsonObject(object["status"]), + uid: object["uid"], + updatedAt: new Date(object["updatedAt"]), + url: object["url"], + version: object["version"], + }; + }, + + _toJsonObject(self: MessageEndpointOut): any { + return { + channels: self.channels, + createdAt: self.createdAt, + description: self.description, + disabled: self.disabled, + filterTypes: self.filterTypes, + id: self.id, + nextAttempt: self.nextAttempt, + rateLimit: self.rateLimit, + status: MessageStatusSerializer._toJsonObject(self.status), + uid: self.uid, + updatedAt: self.updatedAt, + url: self.url, + version: self.version, + }; + }, +}; diff --git a/javascript/src/models/messageIn.ts b/javascript/src/models/messageIn.ts new file mode 100644 index 000000000..14f1c161c --- /dev/null +++ b/javascript/src/models/messageIn.ts @@ -0,0 +1,64 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { ApplicationIn, ApplicationInSerializer } from "./applicationIn"; + +export interface MessageIn { + /** + * Optionally creates a new application alongside the message. + * + * If the application id or uid that is used in the path already exists, this argument is ignored. + */ + application?: ApplicationIn | null; + /** List of free-form identifiers that endpoints can filter by */ + channels?: string[] | null; + /** Optional unique identifier for the message */ + eventId?: string | null; + /** The event type's name */ + eventType: string; + /** + * JSON payload to send as the request body of the webhook. + * + * We also support sending non-JSON payloads. Please contact us for more information. + */ + payload: any; + /** Optional number of hours to retain the message payload. Note that this is mutually exclusive with `payloadRetentionPeriod`. */ + payloadRetentionHours?: number | null; + /** Optional number of days to retain the message payload. Defaults to 90. Note that this is mutually exclusive with `payloadRetentionHours`. */ + payloadRetentionPeriod?: number | null; + /** List of free-form tags that can be filtered by when listing messages */ + tags?: string[] | null; + /** Extra parameters to pass to Transformations (for future use) */ + transformationsParams?: any | null; +} + +export const MessageInSerializer = { + _fromJsonObject(object: any): MessageIn { + return { + application: ApplicationInSerializer._fromJsonObject(object["application"]), + channels: object["channels"], + eventId: object["eventId"], + eventType: object["eventType"], + payload: object["payload"], + payloadRetentionHours: object["payloadRetentionHours"], + payloadRetentionPeriod: object["payloadRetentionPeriod"], + tags: object["tags"], + transformationsParams: object["transformationsParams"], + }; + }, + + _toJsonObject(self: MessageIn): any { + return { + application: self.application + ? ApplicationInSerializer._toJsonObject(self.application) + : undefined, + channels: self.channels, + eventId: self.eventId, + eventType: self.eventType, + payload: self.payload, + payloadRetentionHours: self.payloadRetentionHours, + payloadRetentionPeriod: self.payloadRetentionPeriod, + tags: self.tags, + transformationsParams: self.transformationsParams, + }; + }, +}; diff --git a/javascript/src/models/messageOut.ts b/javascript/src/models/messageOut.ts new file mode 100644 index 000000000..a2912d727 --- /dev/null +++ b/javascript/src/models/messageOut.ts @@ -0,0 +1,42 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface MessageOut { + /** List of free-form identifiers that endpoints can filter by */ + channels?: string[] | null; + /** Optional unique identifier for the message */ + eventId?: string | null; + /** The event type's name */ + eventType: string; + /** The Message's ID. */ + id: string; + payload: any; + tags?: string[] | null; + timestamp: Date | null; +} + +export const MessageOutSerializer = { + _fromJsonObject(object: any): MessageOut { + return { + channels: object["channels"], + eventId: object["eventId"], + eventType: object["eventType"], + id: object["id"], + payload: object["payload"], + tags: object["tags"], + timestamp: new Date(object["timestamp"]), + }; + }, + + _toJsonObject(self: MessageOut): any { + return { + channels: self.channels, + eventId: self.eventId, + eventType: self.eventType, + id: self.id, + payload: self.payload, + tags: self.tags, + timestamp: self.timestamp, + }; + }, +}; diff --git a/javascript/src/models/messageStatus.ts b/javascript/src/models/messageStatus.ts new file mode 100644 index 000000000..347d91244 --- /dev/null +++ b/javascript/src/models/messageStatus.ts @@ -0,0 +1,25 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +/** + * The sending status of the message: + * - Success = 0 + * - Pending = 1 + * - Fail = 2 + * - Sending = 3 + */ +export enum MessageStatus { + Success = 0, + Pending = 1, + Fail = 2, + Sending = 3, +} + +export const MessageStatusSerializer = { + _fromJsonObject(object: any): MessageStatus { + return object; + }, + + _toJsonObject(self: MessageStatus): any { + return self; + }, +}; diff --git a/javascript/src/models/operationalWebhookEndpointHeadersIn.ts b/javascript/src/models/operationalWebhookEndpointHeadersIn.ts new file mode 100644 index 000000000..2d2db4b1b --- /dev/null +++ b/javascript/src/models/operationalWebhookEndpointHeadersIn.ts @@ -0,0 +1,20 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface OperationalWebhookEndpointHeadersIn { + headers: { [key: string]: string }; +} + +export const OperationalWebhookEndpointHeadersInSerializer = { + _fromJsonObject(object: any): OperationalWebhookEndpointHeadersIn { + return { + headers: object["headers"], + }; + }, + + _toJsonObject(self: OperationalWebhookEndpointHeadersIn): any { + return { + headers: self.headers, + }; + }, +}; diff --git a/javascript/src/models/operationalWebhookEndpointHeadersOut.ts b/javascript/src/models/operationalWebhookEndpointHeadersOut.ts new file mode 100644 index 000000000..6b0b25348 --- /dev/null +++ b/javascript/src/models/operationalWebhookEndpointHeadersOut.ts @@ -0,0 +1,23 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface OperationalWebhookEndpointHeadersOut { + headers: { [key: string]: string }; + sensitive: string[]; +} + +export const OperationalWebhookEndpointHeadersOutSerializer = { + _fromJsonObject(object: any): OperationalWebhookEndpointHeadersOut { + return { + headers: object["headers"], + sensitive: object["sensitive"], + }; + }, + + _toJsonObject(self: OperationalWebhookEndpointHeadersOut): any { + return { + headers: self.headers, + sensitive: self.sensitive, + }; + }, +}; diff --git a/javascript/src/models/operationalWebhookEndpointIn.ts b/javascript/src/models/operationalWebhookEndpointIn.ts new file mode 100644 index 000000000..fe5ef70f1 --- /dev/null +++ b/javascript/src/models/operationalWebhookEndpointIn.ts @@ -0,0 +1,48 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface OperationalWebhookEndpointIn { + description?: string; + disabled?: boolean; + filterTypes?: string[] | null; + metadata?: { [key: string]: string }; + rateLimit?: number | null; + /** + * The endpoint's verification secret. + * + * Format: `base64` encoded random bytes optionally prefixed with `whsec_`. + * It is recommended to not set this and let the server generate the secret. + */ + secret?: string | null; + /** Optional unique identifier for the endpoint. */ + uid?: string | null; + url: string; +} + +export const OperationalWebhookEndpointInSerializer = { + _fromJsonObject(object: any): OperationalWebhookEndpointIn { + return { + description: object["description"], + disabled: object["disabled"], + filterTypes: object["filterTypes"], + metadata: object["metadata"], + rateLimit: object["rateLimit"], + secret: object["secret"], + uid: object["uid"], + url: object["url"], + }; + }, + + _toJsonObject(self: OperationalWebhookEndpointIn): any { + return { + description: self.description, + disabled: self.disabled, + filterTypes: self.filterTypes, + metadata: self.metadata, + rateLimit: self.rateLimit, + secret: self.secret, + uid: self.uid, + url: self.url, + }; + }, +}; diff --git a/javascript/src/models/operationalWebhookEndpointOut.ts b/javascript/src/models/operationalWebhookEndpointOut.ts new file mode 100644 index 000000000..e0317c528 --- /dev/null +++ b/javascript/src/models/operationalWebhookEndpointOut.ts @@ -0,0 +1,50 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface OperationalWebhookEndpointOut { + createdAt: Date | null; + /** An example endpoint name. */ + description: string; + disabled?: boolean; + filterTypes?: string[] | null; + /** The Endpoint's ID. */ + id: string; + metadata: { [key: string]: string }; + rateLimit?: number | null; + /** Optional unique identifier for the endpoint. */ + uid?: string | null; + updatedAt: Date | null; + url: string; +} + +export const OperationalWebhookEndpointOutSerializer = { + _fromJsonObject(object: any): OperationalWebhookEndpointOut { + return { + createdAt: new Date(object["createdAt"]), + description: object["description"], + disabled: object["disabled"], + filterTypes: object["filterTypes"], + id: object["id"], + metadata: object["metadata"], + rateLimit: object["rateLimit"], + uid: object["uid"], + updatedAt: new Date(object["updatedAt"]), + url: object["url"], + }; + }, + + _toJsonObject(self: OperationalWebhookEndpointOut): any { + return { + createdAt: self.createdAt, + description: self.description, + disabled: self.disabled, + filterTypes: self.filterTypes, + id: self.id, + metadata: self.metadata, + rateLimit: self.rateLimit, + uid: self.uid, + updatedAt: self.updatedAt, + url: self.url, + }; + }, +}; diff --git a/javascript/src/models/operationalWebhookEndpointSecretIn.ts b/javascript/src/models/operationalWebhookEndpointSecretIn.ts new file mode 100644 index 000000000..332e366d6 --- /dev/null +++ b/javascript/src/models/operationalWebhookEndpointSecretIn.ts @@ -0,0 +1,26 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface OperationalWebhookEndpointSecretIn { + /** + * The endpoint's verification secret. + * + * Format: `base64` encoded random bytes optionally prefixed with `whsec_`. + * It is recommended to not set this and let the server generate the secret. + */ + key?: string | null; +} + +export const OperationalWebhookEndpointSecretInSerializer = { + _fromJsonObject(object: any): OperationalWebhookEndpointSecretIn { + return { + key: object["key"], + }; + }, + + _toJsonObject(self: OperationalWebhookEndpointSecretIn): any { + return { + key: self.key, + }; + }, +}; diff --git a/javascript/src/models/operationalWebhookEndpointSecretOut.ts b/javascript/src/models/operationalWebhookEndpointSecretOut.ts new file mode 100644 index 000000000..6a78634c2 --- /dev/null +++ b/javascript/src/models/operationalWebhookEndpointSecretOut.ts @@ -0,0 +1,26 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface OperationalWebhookEndpointSecretOut { + /** + * The endpoint's verification secret. + * + * Format: `base64` encoded random bytes optionally prefixed with `whsec_`. + * It is recommended to not set this and let the server generate the secret. + */ + key: string; +} + +export const OperationalWebhookEndpointSecretOutSerializer = { + _fromJsonObject(object: any): OperationalWebhookEndpointSecretOut { + return { + key: object["key"], + }; + }, + + _toJsonObject(self: OperationalWebhookEndpointSecretOut): any { + return { + key: self.key, + }; + }, +}; diff --git a/javascript/src/models/operationalWebhookEndpointUpdate.ts b/javascript/src/models/operationalWebhookEndpointUpdate.ts new file mode 100644 index 000000000..4f364d407 --- /dev/null +++ b/javascript/src/models/operationalWebhookEndpointUpdate.ts @@ -0,0 +1,39 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface OperationalWebhookEndpointUpdate { + description?: string; + disabled?: boolean; + filterTypes?: string[] | null; + metadata?: { [key: string]: string }; + rateLimit?: number | null; + /** Optional unique identifier for the endpoint. */ + uid?: string | null; + url: string; +} + +export const OperationalWebhookEndpointUpdateSerializer = { + _fromJsonObject(object: any): OperationalWebhookEndpointUpdate { + return { + description: object["description"], + disabled: object["disabled"], + filterTypes: object["filterTypes"], + metadata: object["metadata"], + rateLimit: object["rateLimit"], + uid: object["uid"], + url: object["url"], + }; + }, + + _toJsonObject(self: OperationalWebhookEndpointUpdate): any { + return { + description: self.description, + disabled: self.disabled, + filterTypes: self.filterTypes, + metadata: self.metadata, + rateLimit: self.rateLimit, + uid: self.uid, + url: self.url, + }; + }, +}; diff --git a/javascript/src/models/ordering.ts b/javascript/src/models/ordering.ts new file mode 100644 index 000000000..72ad68d57 --- /dev/null +++ b/javascript/src/models/ordering.ts @@ -0,0 +1,17 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +/** Defines the ordering in a listing of results. */ +export enum Ordering { + Ascending = "ascending", + Descending = "descending", +} + +export const OrderingSerializer = { + _fromJsonObject(object: any): Ordering { + return object; + }, + + _toJsonObject(self: Ordering): any { + return self; + }, +}; diff --git a/javascript/src/models/recoverIn.ts b/javascript/src/models/recoverIn.ts new file mode 100644 index 000000000..820e099b8 --- /dev/null +++ b/javascript/src/models/recoverIn.ts @@ -0,0 +1,23 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface RecoverIn { + since: Date | null; + until?: Date | null | null; +} + +export const RecoverInSerializer = { + _fromJsonObject(object: any): RecoverIn { + return { + since: new Date(object["since"]), + until: new Date(object["until"]), + }; + }, + + _toJsonObject(self: RecoverIn): any { + return { + since: self.since, + until: self.until, + }; + }, +}; diff --git a/javascript/src/models/recoverOut.ts b/javascript/src/models/recoverOut.ts new file mode 100644 index 000000000..6a74c14cd --- /dev/null +++ b/javascript/src/models/recoverOut.ts @@ -0,0 +1,32 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { + BackgroundTaskStatus, + BackgroundTaskStatusSerializer, +} from "./backgroundTaskStatus"; +import { BackgroundTaskType, BackgroundTaskTypeSerializer } from "./backgroundTaskType"; + +export interface RecoverOut { + /** The QueueBackgroundTask's ID. */ + id: string; + status: BackgroundTaskStatus; + task: BackgroundTaskType; +} + +export const RecoverOutSerializer = { + _fromJsonObject(object: any): RecoverOut { + return { + id: object["id"], + status: BackgroundTaskStatusSerializer._fromJsonObject(object["status"]), + task: BackgroundTaskTypeSerializer._fromJsonObject(object["task"]), + }; + }, + + _toJsonObject(self: RecoverOut): any { + return { + id: self.id, + status: BackgroundTaskStatusSerializer._toJsonObject(self.status), + task: BackgroundTaskTypeSerializer._toJsonObject(self.task), + }; + }, +}; diff --git a/javascript/src/models/replayIn.ts b/javascript/src/models/replayIn.ts new file mode 100644 index 000000000..c5bb4935e --- /dev/null +++ b/javascript/src/models/replayIn.ts @@ -0,0 +1,23 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ + +export interface ReplayIn { + since: Date | null; + until?: Date | null | null; +} + +export const ReplayInSerializer = { + _fromJsonObject(object: any): ReplayIn { + return { + since: new Date(object["since"]), + until: new Date(object["until"]), + }; + }, + + _toJsonObject(self: ReplayIn): any { + return { + since: self.since, + until: self.until, + }; + }, +}; diff --git a/javascript/src/models/replayOut.ts b/javascript/src/models/replayOut.ts new file mode 100644 index 000000000..fcf96bcff --- /dev/null +++ b/javascript/src/models/replayOut.ts @@ -0,0 +1,32 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { + BackgroundTaskStatus, + BackgroundTaskStatusSerializer, +} from "./backgroundTaskStatus"; +import { BackgroundTaskType, BackgroundTaskTypeSerializer } from "./backgroundTaskType"; + +export interface ReplayOut { + /** The QueueBackgroundTask's ID. */ + id: string; + status: BackgroundTaskStatus; + task: BackgroundTaskType; +} + +export const ReplayOutSerializer = { + _fromJsonObject(object: any): ReplayOut { + return { + id: object["id"], + status: BackgroundTaskStatusSerializer._fromJsonObject(object["status"]), + task: BackgroundTaskTypeSerializer._fromJsonObject(object["task"]), + }; + }, + + _toJsonObject(self: ReplayOut): any { + return { + id: self.id, + status: BackgroundTaskStatusSerializer._toJsonObject(self.status), + task: BackgroundTaskTypeSerializer._toJsonObject(self.task), + }; + }, +}; diff --git a/javascript/src/models/statusCodeClass.ts b/javascript/src/models/statusCodeClass.ts new file mode 100644 index 000000000..29307cb45 --- /dev/null +++ b/javascript/src/models/statusCodeClass.ts @@ -0,0 +1,29 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +/** + * The different classes of HTTP status codes: + * - CodeNone = 0 + * - Code1xx = 100 + * - Code2xx = 200 + * - Code3xx = 300 + * - Code4xx = 400 + * - Code5xx = 500 + */ +export enum StatusCodeClass { + CodeNone = 0, + Code1xx = 100, + Code2xx = 200, + Code3xx = 300, + Code4xx = 400, + Code5xx = 500, +} + +export const StatusCodeClassSerializer = { + _fromJsonObject(object: any): StatusCodeClass { + return object; + }, + + _toJsonObject(self: StatusCodeClass): any { + return self; + }, +}; diff --git a/javascript/src/models/templateOut.ts b/javascript/src/models/templateOut.ts new file mode 100644 index 000000000..cff2e623f --- /dev/null +++ b/javascript/src/models/templateOut.ts @@ -0,0 +1,59 @@ +// this file is @generated +/* eslint @typescript-eslint/no-explicit-any: 0 */ +import { ConnectorKind, ConnectorKindSerializer } from "./connectorKind"; + +export interface TemplateOut { + createdAt: Date | null; + description: string; + featureFlag?: string | null; + filterTypes?: string[] | null; + /** The TransformationTemplate's ID. */ + id: string; + instructions: string; + instructionsLink?: string | null; + kind: ConnectorKind; + logo: string; + name: string; + /** The Organization's ID. */ + orgId: string; + transformation: string; + updatedAt: Date | null; +} + +export const TemplateOutSerializer = { + _fromJsonObject(object: any): TemplateOut { + return { + createdAt: new Date(object["createdAt"]), + description: object["description"], + featureFlag: object["featureFlag"], + filterTypes: object["filterTypes"], + id: object["id"], + instructions: object["instructions"], + instructionsLink: object["instructionsLink"], + kind: ConnectorKindSerializer._fromJsonObject(object["kind"]), + logo: object["logo"], + name: object["name"], + orgId: object["orgId"], + transformation: object["transformation"], + updatedAt: new Date(object["updatedAt"]), + }; + }, + + _toJsonObject(self: TemplateOut): any { + return { + createdAt: self.createdAt, + description: self.description, + featureFlag: self.featureFlag, + filterTypes: self.filterTypes, + id: self.id, + instructions: self.instructions, + instructionsLink: self.instructionsLink, + kind: ConnectorKindSerializer._toJsonObject(self.kind), + logo: self.logo, + name: self.name, + orgId: self.orgId, + transformation: self.transformation, + updatedAt: self.updatedAt, + }; + }, +}; From 29029490ddff76f681ae6c602d609e697e0da4fc Mon Sep 17 00:00:00 2001 From: Mendy Man Date: Mon, 17 Feb 2025 11:44:08 -0500 Subject: [PATCH 05/14] js: Refactor to new use old openapi --- javascript/src/index.ts | 49 +++++++--------------------------- javascript/src/webhook.test.ts | 2 ++ javascript/src/webhook.ts | 3 +-- 3 files changed, 12 insertions(+), 42 deletions(-) diff --git a/javascript/src/index.ts b/javascript/src/index.ts index 877e6cbf4..7c620e222 100644 --- a/javascript/src/index.ts +++ b/javascript/src/index.ts @@ -1,33 +1,26 @@ import { Authentication } from "./api/authentication"; import { Application } from "./api/application"; -import { BackgroundTask } from "./api/background_task"; +import { BackgroundTask } from "./api/backgroundTask"; import { Endpoint } from "./api/endpoint"; -import { EventType } from "./api/event_type"; +import { EventType } from "./api/eventType"; import { Integration } from "./api/integration"; import { Message } from "./api/message"; -import { MessageAttempt } from "./api/message_attempt"; -import { OperationalWebhookEndpoint } from "./api/operational_webhook_endpoint"; +import { MessageAttempt } from "./api/messageAttempt"; +import { OperationalWebhookEndpoint } from "./api/operationalWebhookEndpoint"; import { Statistics } from "./api/statistics"; -import { LIB_VERSION, SvixRequestContext } from "./request"; -import * as openapi from "./openapi"; - -export * from "./openapi/models/all"; -export * from "./openapi/apis/exception"; +import { SvixRequestContext } from "./request"; export { PostOptions } from "./util"; export * from "./webhook"; export { ApplicationListOptions } from "./api/application"; -export { BackgroundTaskListOptions } from "./api/background_task"; +export { BackgroundTaskListOptions } from "./api/backgroundTask"; export { EndpointListOptions, EndpointGetStatsOptions } from "./api/endpoint"; -export { EventTypeListOptions } from "./api/event_type"; +export { EventTypeListOptions } from "./api/eventType"; export { IntegrationListOptions } from "./api/integration"; export { MessageListOptions, messageInRaw } from "./api/message"; -export { - MessageAttemptListByEndpointOptions, - MessageAttemptListOptions, -} from "./api/message_attempt"; -export { OperationalWebhookEndpointListOptions } from "./api/operational_webhook_endpoint"; +export { MessageAttemptListByEndpointOptions } from "./api/messageAttempt"; +export { OperationalWebhookEndpointListOptions } from "./api/operationalWebhookEndpoint"; export interface SvixOptions { debug?: boolean; @@ -42,38 +35,14 @@ const REGIONS = [ { region: "in", url: "https://api.in.svix.com" }, ]; -class UserAgentMiddleware implements openapi.Middleware { - public pre(context: openapi.RequestContext): Promise { - context.setHeaderParam("User-Agent", `svix-libs/${LIB_VERSION}/javascript`); - return Promise.resolve(context); - } - - public post(context: openapi.ResponseContext): Promise { - return Promise.resolve(context); - } -} - export class Svix { private readonly requestCtx: SvixRequestContext; - public readonly _configuration: openapi.Configuration; public constructor(token: string, options: SvixOptions = {}) { const regionalUrl = REGIONS.find((x) => x.region === token.split(".")[1])?.url; const baseUrl: string = options.serverUrl ?? regionalUrl ?? "https://api.svix.com"; this.requestCtx = { baseUrl, token, timeout: options.requestTimeout }; - - this._configuration = openapi.createConfiguration({ - baseServer: new openapi.ServerConfiguration(baseUrl, {}), - promiseMiddleware: [new UserAgentMiddleware()], - authMethods: { - HTTPBearer: { - tokenProvider: { - getToken: () => token, - }, - }, - }, - }); } public get authentication() { diff --git a/javascript/src/webhook.test.ts b/javascript/src/webhook.test.ts index 58c5410c8..416263736 100644 --- a/javascript/src/webhook.test.ts +++ b/javascript/src/webhook.test.ts @@ -41,9 +41,11 @@ test("empty key raises error", () => { new Webhook(""); }).toThrowError(Error); expect(() => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any new Webhook(undefined as any); }).toThrowError(Error); expect(() => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any new Webhook(null as any); }).toThrowError(Error); }); diff --git a/javascript/src/webhook.ts b/javascript/src/webhook.ts index 6c9af133c..f9bed187a 100644 --- a/javascript/src/webhook.ts +++ b/javascript/src/webhook.ts @@ -1,5 +1,3 @@ -export * from "./openapi/models/all"; -export * from "./openapi/apis/exception"; import { timingSafeEqual } from "./timing_safe_equal"; import * as base64 from "@stablelib/base64"; import * as sha256 from "fast-sha256"; @@ -7,6 +5,7 @@ import * as sha256 from "fast-sha256"; const WEBHOOK_TOLERANCE_IN_SECONDS = 5 * 60; // 5 minutes class ExtendableError extends Error { + // eslint-disable-next-line @typescript-eslint/no-explicit-any constructor(message: any) { super(message); Object.setPrototypeOf(this, ExtendableError.prototype); From 202eaf2a8dd7f889d4f63f418279788e21ac0000 Mon Sep 17 00:00:00 2001 From: Mendy Man Date: Mon, 17 Feb 2025 11:44:23 -0500 Subject: [PATCH 06/14] js: Pull in old errors --- javascript/src/HttpErrors.ts | 110 +++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 javascript/src/HttpErrors.ts diff --git a/javascript/src/HttpErrors.ts b/javascript/src/HttpErrors.ts new file mode 100644 index 000000000..362b5fc4f --- /dev/null +++ b/javascript/src/HttpErrors.ts @@ -0,0 +1,110 @@ +export class HttpErrorOut { + "code": string; + "detail": string; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: { [index: string]: string } | undefined = undefined; + + static readonly attributeTypeMap: Array<{ + name: string; + baseName: string; + type: string; + format: string; + }> = [ + { + name: "code", + baseName: "code", + type: "string", + format: "", + }, + { + name: "detail", + baseName: "detail", + type: "string", + format: "", + }, + ]; + + static getAttributeTypeMap() { + return HttpErrorOut.attributeTypeMap; + } +} + +/** + * Validation errors have their own schema to provide context for invalid requests eg. mismatched types and out of bounds values. There may be any number of these per 422 UNPROCESSABLE ENTITY error. + */ +export class ValidationError { + /** + * The location as a [`Vec`] of [`String`]s -- often in the form `[\"body\", \"field_name\"]`, `[\"query\", \"field_name\"]`, etc. They may, however, be arbitrarily deep. + */ + "loc": Array; + /** + * The message accompanying the validation error item. + */ + "msg": string; + /** + * The type of error, often \"type_error\" or \"value_error\", but sometimes with more context like as \"value_error.number.not_ge\" + */ + "type": string; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: { [index: string]: string } | undefined = undefined; + + static readonly attributeTypeMap: Array<{ + name: string; + baseName: string; + type: string; + format: string; + }> = [ + { + name: "loc", + baseName: "loc", + type: "Array", + format: "", + }, + { + name: "msg", + baseName: "msg", + type: "string", + format: "", + }, + { + name: "type", + baseName: "type", + type: "string", + format: "", + }, + ]; + + static getAttributeTypeMap() { + return ValidationError.attributeTypeMap; + } +} + +export class HTTPValidationError { + "detail": Array; + + static readonly discriminator: string | undefined = undefined; + + static readonly mapping: { [index: string]: string } | undefined = undefined; + + static readonly attributeTypeMap: Array<{ + name: string; + baseName: string; + type: string; + format: string; + }> = [ + { + name: "detail", + baseName: "detail", + type: "Array", + format: "", + }, + ]; + + static getAttributeTypeMap() { + return HTTPValidationError.attributeTypeMap; + } +} From 8e87de465f31cb9983c87c176371edcacf58588e Mon Sep 17 00:00:00 2001 From: Mendy Man Date: Mon, 17 Feb 2025 11:44:57 -0500 Subject: [PATCH 07/14] js: Refactor for new release --- javascript/src/KitchenSink.test.ts | 4 +++- javascript/src/request.ts | 21 ++++++++++++--------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/javascript/src/KitchenSink.test.ts b/javascript/src/KitchenSink.test.ts index 3e46df31f..515fd81b1 100644 --- a/javascript/src/KitchenSink.test.ts +++ b/javascript/src/KitchenSink.test.ts @@ -1,4 +1,6 @@ -import { ApiException, HttpErrorOut, Svix } from "."; +import { Svix } from "."; +import { HttpErrorOut } from "./HttpErrors"; +import { ApiException } from "./util"; function getTestClient(): Svix | null { const token = process.env.SVIX_TOKEN; diff --git a/javascript/src/request.ts b/javascript/src/request.ts index 1964e2f29..212638f47 100644 --- a/javascript/src/request.ts +++ b/javascript/src/request.ts @@ -1,7 +1,6 @@ import "svix-fetch"; import { ApiException } from "./util"; -import { HttpErrorOut, HTTPValidationError } from "./openapi"; -import { ObjectSerializer } from "./openapi/models/ObjectSerializer"; +import { HttpErrorOut, HTTPValidationError } from "./HttpErrors"; export const LIB_VERSION = "1.58.1"; const USER_AGENT = `svix-libs/${LIB_VERSION}/javascript`; @@ -76,9 +75,9 @@ export class SvixRequest { this.headerParams[name] = value; } - - public setBody(value: any, type: string) { - this.body = JSON.stringify(ObjectSerializer.serialize(value, type, "")); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + public setBody(value: any) { + this.body = JSON.stringify(value); } /** @@ -90,9 +89,13 @@ export class SvixRequest { * If the server returns a 5xx error, the request is retried up to two times with exponential backoff. * If retries are exhausted, an `ApiException` is thrown. */ - public async send(ctx: SvixRequestContext, responseType: string): Promise { + public async send( + ctx: SvixRequestContext, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + parseResponseBody: (jsonObject: any) => R + ): Promise { const responseBody = await this.sendInner(ctx); - return ObjectSerializer.deserialize(JSON.parse(responseBody), responseType, ""); + return parseResponseBody(JSON.parse(responseBody)); } /** Same as `send`, but the response body is discarded, not parsed. */ @@ -106,7 +109,7 @@ export class SvixRequest { url.searchParams.set(name, value); } - const randomId = Math.floor(Math.random() * Math.pow(2, 32)); + const randomId = Math.floor(Math.random() * Number.MAX_SAFE_INTEGER); // Cloudflare Workers fail if the credentials option is used in a fetch call. // This work around that. Source: @@ -139,7 +142,7 @@ export class SvixRequest { body as HTTPValidationError, response.headers ); - } else if (response.status >= 400) { + } else if (response.status >= 400 && response.status <= 499) { const body = JSON.parse(responseBody); throw new ApiException( response.status, From 19ea155478739da90f625043cb99591dbade0c35 Mon Sep 17 00:00:00 2001 From: Mendy Man Date: Mon, 17 Feb 2025 11:45:13 -0500 Subject: [PATCH 08/14] js: Add some tests --- javascript/src/mockttp.test.ts | 134 +++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 javascript/src/mockttp.test.ts diff --git a/javascript/src/mockttp.test.ts b/javascript/src/mockttp.test.ts new file mode 100644 index 000000000..966ec6bd9 --- /dev/null +++ b/javascript/src/mockttp.test.ts @@ -0,0 +1,134 @@ +import { Svix } from "."; +import { expect, test } from "@jest/globals"; +import * as mockttp from "mockttp"; +import { ApiException } from "./util"; +import { Ordering } from "./models/ordering"; + +const ApplicationOut = `{"uid":"unique-identifier","name":"My first application","rateLimit":0,"id":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z","metadata":{"property1":"string","property2":"string"}}`; +const ListResponseMessageOut = `{"data":[{"eventId":"unique-identifier","eventType":"user.signup","payload":{"email":"test@example.com","type":"user.created","username":"test_user"},"channels":["project_123","group_2"],"id":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","timestamp":"2019-08-24T14:15:22Z","tags":["project_1337"]}],"iterator":"iterator","prevIterator":"-iterator","done":true}`; +const ListResponseApplicationOut = `{"data":[{"uid":"unique-identifier","name":"My first application","rateLimit":0,"id":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z","metadata":{"property1":"string","property2":"string"}}],"iterator":"iterator","prevIterator":"-iterator","done":true}`; +const ListResponseMessageAttemptOut = `{"data":[{"url":"https://example.com/webhook/","response":"{}","responseStatusCode":200,"responseDurationMs":0,"status":0,"triggerType":0,"msgId":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","endpointId":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2","id":"atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2","timestamp":"2025-02-16T21:38:21.977Z","msg":{"eventId":"unique-identifier","eventType":"user.signup","payload":{"email":"test@example.com","type":"user.created","username":"test_user"},"channels":["project_123","group_2"],"id":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","timestamp":"2025-02-16T21:38:21.977Z","tags":["project_1337"]}}],"iterator":"iterator","prevIterator":"-iterator","done":true}`; +const ReplayOut = `{"id":"qtask_1srOrx2ZWZBpBUvZwXKQmoEYga2","status":"running","task":"endpoint.replay"}`; +const mockServer = mockttp.getLocal(); + +describe("mockttp tests", () => { + beforeEach(async () => await mockServer.start(0)); + afterEach(async () => await mockServer.stop()); + + test("test Date in query param", async () => { + const endpointMock = await mockServer + .forGet(/\/api\/v1\/app\/app1\/attempt\/endpoint\/ep1.*/) + .thenReply(200, ListResponseMessageAttemptOut); + const svx = new Svix("token", { serverUrl: mockServer.url }); + + await svx.messageAttempt.listByEndpoint("app1", "ep1", { + before: new Date(1739741901977), + }); + const requests = await endpointMock.getSeenRequests(); + expect(requests.length).toBe(1); + expect(requests[0].url.endsWith("before=2025-02-16T21%3A38%3A21.977Z")).toBe(true); + }); + + test("test Date request body", async () => { + const endpointMock = await mockServer + .forPost("/api/v1/app/app1/endpoint/ep1/replay-missing") + .thenReply(200, ReplayOut); + const svx = new Svix("token", { serverUrl: mockServer.url }); + + await svx.endpoint.replayMissing("app1", "ep1", { since: new Date(1739741901977) }); + const requests = await endpointMock.getSeenRequests(); + expect(requests.length).toBe(1); + expect(await requests[0].body.getText()).toBe(`{"since":"2025-02-16T21:38:21.977Z"}`); + }); + + test("test Date response body", async () => { + const endpointMock = await mockServer + .forGet("/api/v1/app/app1/attempt/endpoint/ep1") + .thenReply(200, ListResponseMessageAttemptOut); + const svx = new Svix("token", { serverUrl: mockServer.url }); + + const res = await svx.messageAttempt.listByEndpoint("app1", "ep1"); + const requests = await endpointMock.getSeenRequests(); + expect(requests.length).toBe(1); + expect(res.data[0].timestamp?.getTime()).toBe(1739741901977); + }); + + test("test listResponseOut deserializes correctly", async () => { + const endpointMock = await mockServer + .forGet("/api/v1/app/app1/attempt/endpoint/ep1") + .thenReply(200, `{"data":[],"iterator":null,"prevIterator":null,"done":true}`); + const svx = new Svix("token", { serverUrl: mockServer.url }); + + const res = await svx.messageAttempt.listByEndpoint("app1", "ep1"); + const requests = await endpointMock.getSeenRequests(); + expect(requests.length).toBe(1); + expect(res.iterator).toBeNull(); + expect(res.prevIterator).toBeNull(); + }); + + test("test enum as query param", async () => { + const endpointMock = await mockServer + .forGet(/\/api\/v1\/app.*/) + .thenReply(200, ListResponseApplicationOut); + const svx = new Svix("token", { serverUrl: mockServer.url }); + + await svx.application.list({ order: Ordering.Ascending }); + const requests = await endpointMock.getSeenRequests(); + expect(requests.length).toBe(1); + expect(requests[0].url.endsWith("order=ascending")).toBe(true); + }); + + test("test list as query param", async () => { + const endpointMock = await mockServer + .forGet(/\/api\/v1\/app\/app1\/msg.*/) + .thenReply(200, ListResponseMessageOut); + const svx = new Svix("token", { serverUrl: mockServer.url }); + + await svx.message.list("app1", { eventTypes: ["val8", "val1", "val5"] }); + const requests = await endpointMock.getSeenRequests(); + expect(requests.length).toBe(1); + console.log(requests[0].url); + expect( + requests[0].url.endsWith("/api/v1/app/app1/msg?event_types=val8%2Cval1%2Cval5") + ).toBe(true); + }); + + test("test header param sent", async () => { + const endpointMock = await mockServer + .forPost(/\/api\/v1\/app.*/) + .thenReply(200, ApplicationOut); + const svx = new Svix("token", { serverUrl: mockServer.url }); + + await svx.application.create({ name: "test" }, { idempotencyKey: "random-key" }); + const requests = await endpointMock.getSeenRequests(); + expect(requests.length).toBe(1); + expect(requests[0].headers["idempotency-key"]).toBe("random-key"); + }); + + test("test retry for status => 500", async () => { + const endpointMock = await mockServer + .forGet("/api/v1/app") + .thenReply(500, `{"code":"500","detail":"asd"}`); + const svx = new Svix("token", { serverUrl: mockServer.url }); + await svx.application + .list() + .catch((error) => expect(error).toBeInstanceOf(ApiException)); + + const requests = await endpointMock.getSeenRequests(); + expect(requests.length).toBe(3); + + // same svix-req-id for each retry + const req_id = requests[0].headers["svix-req-id"]; + expect(req_id).toBeDefined(); + expect(typeof req_id).toBe("string"); + for (let i = 0; i < requests.length; i++) { + expect(requests[i].headers["svix-req-id"]).toBe(req_id); + if (i == 0) { + // first request does not set svix-retry-count + expect(requests[i].headers["svix-retry-count"]).toBeUndefined(); + } else { + expect(requests[i].headers["svix-retry-count"]).toBe(i.toString()); + } + } + }); +}); From f48c73b0b384ee55e6e8c036fa12ea564dab7e6b Mon Sep 17 00:00:00 2001 From: Mendy Man Date: Mon, 17 Feb 2025 11:52:32 -0500 Subject: [PATCH 09/14] js: Add tests in ci --- .github/workflows/javascript-lint.yml | 5 +++++ javascript/src/mockttp.test.ts | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/javascript-lint.yml b/.github/workflows/javascript-lint.yml index 6fc1d9927..36cf31d40 100644 --- a/.github/workflows/javascript-lint.yml +++ b/.github/workflows/javascript-lint.yml @@ -27,3 +27,8 @@ jobs: run: | cd javascript yarn run lint + + - name: Test + run: | + cd javascript + yarn run test diff --git a/javascript/src/mockttp.test.ts b/javascript/src/mockttp.test.ts index 966ec6bd9..b8470c3b3 100644 --- a/javascript/src/mockttp.test.ts +++ b/javascript/src/mockttp.test.ts @@ -87,7 +87,6 @@ describe("mockttp tests", () => { await svx.message.list("app1", { eventTypes: ["val8", "val1", "val5"] }); const requests = await endpointMock.getSeenRequests(); expect(requests.length).toBe(1); - console.log(requests[0].url); expect( requests[0].url.endsWith("/api/v1/app/app1/msg?event_types=val8%2Cval1%2Cval5") ).toBe(true); From 18346fda74870061013e17a115187e02a12b5e39 Mon Sep 17 00:00:00 2001 From: Mendy Man Date: Wed, 19 Feb 2025 13:52:56 -0500 Subject: [PATCH 10/14] js: Correctly handle response with no body --- javascript/src/mockttp.test.ts | 58 ++++++++++++++++++++++++++++++++-- javascript/src/request.ts | 53 +++++++++++++++++-------------- 2 files changed, 85 insertions(+), 26 deletions(-) diff --git a/javascript/src/mockttp.test.ts b/javascript/src/mockttp.test.ts index b8470c3b3..d79d3d78d 100644 --- a/javascript/src/mockttp.test.ts +++ b/javascript/src/mockttp.test.ts @@ -3,12 +3,15 @@ import { expect, test } from "@jest/globals"; import * as mockttp from "mockttp"; import { ApiException } from "./util"; import { Ordering } from "./models/ordering"; +import { ValidationError, HttpErrorOut } from "./HttpErrors"; const ApplicationOut = `{"uid":"unique-identifier","name":"My first application","rateLimit":0,"id":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z","metadata":{"property1":"string","property2":"string"}}`; const ListResponseMessageOut = `{"data":[{"eventId":"unique-identifier","eventType":"user.signup","payload":{"email":"test@example.com","type":"user.created","username":"test_user"},"channels":["project_123","group_2"],"id":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","timestamp":"2019-08-24T14:15:22Z","tags":["project_1337"]}],"iterator":"iterator","prevIterator":"-iterator","done":true}`; const ListResponseApplicationOut = `{"data":[{"uid":"unique-identifier","name":"My first application","rateLimit":0,"id":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z","metadata":{"property1":"string","property2":"string"}}],"iterator":"iterator","prevIterator":"-iterator","done":true}`; const ListResponseMessageAttemptOut = `{"data":[{"url":"https://example.com/webhook/","response":"{}","responseStatusCode":200,"responseDurationMs":0,"status":0,"triggerType":0,"msgId":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","endpointId":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2","id":"atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2","timestamp":"2025-02-16T21:38:21.977Z","msg":{"eventId":"unique-identifier","eventType":"user.signup","payload":{"email":"test@example.com","type":"user.created","username":"test_user"},"channels":["project_123","group_2"],"id":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","timestamp":"2025-02-16T21:38:21.977Z","tags":["project_1337"]}}],"iterator":"iterator","prevIterator":"-iterator","done":true}`; const ReplayOut = `{"id":"qtask_1srOrx2ZWZBpBUvZwXKQmoEYga2","status":"running","task":"endpoint.replay"}`; +const ValidationErrorOut = `{"detail":[{"loc":["string"],"msg":"string","type":"string"}]}`; + const mockServer = mockttp.getLocal(); describe("mockttp tests", () => { @@ -109,9 +112,8 @@ describe("mockttp tests", () => { .forGet("/api/v1/app") .thenReply(500, `{"code":"500","detail":"asd"}`); const svx = new Svix("token", { serverUrl: mockServer.url }); - await svx.application - .list() - .catch((error) => expect(error).toBeInstanceOf(ApiException)); + + await expect(svx.application.list()).rejects.toThrow(ApiException); const requests = await endpointMock.getSeenRequests(); expect(requests.length).toBe(3); @@ -130,4 +132,54 @@ describe("mockttp tests", () => { } } }); + + test("no body in response does not return anything", async () => { + const endpointMock = await mockServer + .forDelete("/api/v1/app/app1") + .thenReply(204, ""); + const svx = new Svix("token", { serverUrl: mockServer.url }); + + await svx.application.delete("app1"); + + const requests = await endpointMock.getSeenRequests(); + expect(requests.length).toBe(1); + }); + + test("422 returns validation error", async () => { + const endpointMock = await mockServer + .forGet("/api/v1/app") + .thenReply(422, ValidationErrorOut); + const svx = new Svix("token", { serverUrl: mockServer.url }); + + await expect(svx.application.list()).rejects.toThrow(ApiException); + try { + await svx.application.list(); + } catch (e) { + expect(e).toHaveProperty("code", 422); + expect(e).toHaveProperty("body", { + detail: [{ loc: ["string"], msg: "string", type: "string" }], + }); + } + + const requests = await endpointMock.getSeenRequests(); + expect(requests.length).toBe(2); + }); + + test("400 returns ApiException", async () => { + const endpointMock = await mockServer + .forGet("/api/v1/app") + .thenReply(400, `{"code":"400","detail":"text"}`); + const svx = new Svix("token", { serverUrl: mockServer.url }); + + await expect(svx.application.list()).rejects.toThrow(ApiException); + try { + await svx.application.list(); + } catch (e) { + expect(e).toHaveProperty("code", 400); + expect(e).toHaveProperty("body", { code: "400", detail: "text" }); + } + + const requests = await endpointMock.getSeenRequests(); + expect(requests.length).toBe(2); + }); }); diff --git a/javascript/src/request.ts b/javascript/src/request.ts index 212638f47..3324e2745 100644 --- a/javascript/src/request.ts +++ b/javascript/src/request.ts @@ -94,7 +94,11 @@ export class SvixRequest { // eslint-disable-next-line @typescript-eslint/no-explicit-any parseResponseBody: (jsonObject: any) => R ): Promise { - const responseBody = await this.sendInner(ctx); + const response = await this.sendInner(ctx); + if (response.status == 204) { + return null; + } + const responseBody = await response.text(); return parseResponseBody(JSON.parse(responseBody)); } @@ -103,7 +107,7 @@ export class SvixRequest { await this.sendInner(ctx); } - private async sendInner(ctx: SvixRequestContext): Promise { + private async sendInner(ctx: SvixRequestContext): Promise { const url = new URL(ctx.baseUrl + this.path); for (const [name, value] of Object.entries(this.queryParams)) { url.searchParams.set(name, value); @@ -129,30 +133,33 @@ export class SvixRequest { credentials: isCredentialsSupported ? "same-origin" : undefined, signal: ctx.timeout !== undefined ? AbortSignal.timeout(ctx.timeout) : undefined, }); + return filterResponseForErrors(response); + } +} - const responseBody = await response.text(); +async function filterResponseForErrors(response: Response): Promise { + if (response.status < 300) { + return response; + } - if (response.status < 300) { - // success case - return responseBody; - } else if (response.status === 422) { - const body = JSON.parse(responseBody); - throw new ApiException( - response.status, - body as HTTPValidationError, - response.headers - ); - } else if (response.status >= 400 && response.status <= 499) { - const body = JSON.parse(responseBody); - throw new ApiException( - response.status, - body as HttpErrorOut, - response.headers - ); - } else { - throw new ApiException(response.status, responseBody, response.headers); - } + const responseBody = await response.text(); + + if (response.status === 422) { + throw new ApiException( + response.status, + JSON.parse(responseBody) as HTTPValidationError, + response.headers + ); + } + + if (response.status >= 400 && response.status <= 499) { + throw new ApiException( + response.status, + JSON.parse(responseBody) as HttpErrorOut, + response.headers + ); } + throw new ApiException(response.status, responseBody, response.headers); } type SvixRequestInit = RequestInit & { From 69302222694eee9ebd06aa87a01253df8796498a Mon Sep 17 00:00:00 2001 From: Mendy Man Date: Wed, 19 Feb 2025 13:59:31 -0500 Subject: [PATCH 11/14] js: Export models from `src/index.ts` --- javascript/src/index.ts | 1 + javascript/src/models/index.ts | 75 ++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 javascript/src/models/index.ts diff --git a/javascript/src/index.ts b/javascript/src/index.ts index 7c620e222..aa913f432 100644 --- a/javascript/src/index.ts +++ b/javascript/src/index.ts @@ -12,6 +12,7 @@ import { SvixRequestContext } from "./request"; export { PostOptions } from "./util"; export * from "./webhook"; +export * from "./models/index"; export { ApplicationListOptions } from "./api/application"; export { BackgroundTaskListOptions } from "./api/backgroundTask"; diff --git a/javascript/src/models/index.ts b/javascript/src/models/index.ts new file mode 100644 index 000000000..a42e3612c --- /dev/null +++ b/javascript/src/models/index.ts @@ -0,0 +1,75 @@ +// this file is @generated +export { AggregateEventTypesOut } from "./aggregateEventTypesOut"; +export { AppPortalAccessIn } from "./appPortalAccessIn"; +export { AppPortalAccessOut } from "./appPortalAccessOut"; +export { AppUsageStatsIn } from "./appUsageStatsIn"; +export { AppUsageStatsOut } from "./appUsageStatsOut"; +export { ApplicationIn } from "./applicationIn"; +export { ApplicationOut } from "./applicationOut"; +export { ApplicationPatch } from "./applicationPatch"; +export { ApplicationTokenExpireIn } from "./applicationTokenExpireIn"; +export { BackgroundTaskOut } from "./backgroundTaskOut"; +export { BackgroundTaskStatus } from "./backgroundTaskStatus"; +export { BackgroundTaskType } from "./backgroundTaskType"; +export { ConnectorIn } from "./connectorIn"; +export { ConnectorKind } from "./connectorKind"; +export { DashboardAccessOut } from "./dashboardAccessOut"; +export { EndpointHeadersIn } from "./endpointHeadersIn"; +export { EndpointHeadersOut } from "./endpointHeadersOut"; +export { EndpointHeadersPatchIn } from "./endpointHeadersPatchIn"; +export { EndpointIn } from "./endpointIn"; +export { EndpointMessageOut } from "./endpointMessageOut"; +export { EndpointOut } from "./endpointOut"; +export { EndpointPatch } from "./endpointPatch"; +export { EndpointSecretOut } from "./endpointSecretOut"; +export { EndpointSecretRotateIn } from "./endpointSecretRotateIn"; +export { EndpointStats } from "./endpointStats"; +export { EndpointTransformationIn } from "./endpointTransformationIn"; +export { EndpointTransformationOut } from "./endpointTransformationOut"; +export { EndpointUpdate } from "./endpointUpdate"; +export { EnvironmentIn } from "./environmentIn"; +export { EnvironmentOut } from "./environmentOut"; +export { EventExampleIn } from "./eventExampleIn"; +export { EventTypeFromOpenApi } from "./eventTypeFromOpenApi"; +export { EventTypeImportOpenApiIn } from "./eventTypeImportOpenApiIn"; +export { EventTypeImportOpenApiOut } from "./eventTypeImportOpenApiOut"; +export { EventTypeImportOpenApiOutData } from "./eventTypeImportOpenApiOutData"; +export { EventTypeIn } from "./eventTypeIn"; +export { EventTypeOut } from "./eventTypeOut"; +export { EventTypePatch } from "./eventTypePatch"; +export { EventTypeUpdate } from "./eventTypeUpdate"; +export { ExpungAllContentsOut } from "./expungAllContentsOut"; +export { IntegrationIn } from "./integrationIn"; +export { IntegrationKeyOut } from "./integrationKeyOut"; +export { IntegrationOut } from "./integrationOut"; +export { IntegrationUpdate } from "./integrationUpdate"; +export { ListResponseApplicationOut } from "./listResponseApplicationOut"; +export { ListResponseBackgroundTaskOut } from "./listResponseBackgroundTaskOut"; +export { ListResponseEndpointMessageOut } from "./listResponseEndpointMessageOut"; +export { ListResponseEndpointOut } from "./listResponseEndpointOut"; +export { ListResponseEventTypeOut } from "./listResponseEventTypeOut"; +export { ListResponseIntegrationOut } from "./listResponseIntegrationOut"; +export { ListResponseMessageAttemptOut } from "./listResponseMessageAttemptOut"; +export { ListResponseMessageEndpointOut } from "./listResponseMessageEndpointOut"; +export { ListResponseMessageOut } from "./listResponseMessageOut"; +export { ListResponseOperationalWebhookEndpointOut } from "./listResponseOperationalWebhookEndpointOut"; +export { MessageAttemptOut } from "./messageAttemptOut"; +export { MessageAttemptTriggerType } from "./messageAttemptTriggerType"; +export { MessageEndpointOut } from "./messageEndpointOut"; +export { MessageIn } from "./messageIn"; +export { MessageOut } from "./messageOut"; +export { MessageStatus } from "./messageStatus"; +export { OperationalWebhookEndpointHeadersIn } from "./operationalWebhookEndpointHeadersIn"; +export { OperationalWebhookEndpointHeadersOut } from "./operationalWebhookEndpointHeadersOut"; +export { OperationalWebhookEndpointIn } from "./operationalWebhookEndpointIn"; +export { OperationalWebhookEndpointOut } from "./operationalWebhookEndpointOut"; +export { OperationalWebhookEndpointSecretIn } from "./operationalWebhookEndpointSecretIn"; +export { OperationalWebhookEndpointSecretOut } from "./operationalWebhookEndpointSecretOut"; +export { OperationalWebhookEndpointUpdate } from "./operationalWebhookEndpointUpdate"; +export { Ordering } from "./ordering"; +export { RecoverIn } from "./recoverIn"; +export { RecoverOut } from "./recoverOut"; +export { ReplayIn } from "./replayIn"; +export { ReplayOut } from "./replayOut"; +export { StatusCodeClass } from "./statusCodeClass"; +export { TemplateOut } from "./templateOut"; From e2cfdbfc57c4c5bdffdfb00221f46af91f51cfee Mon Sep 17 00:00:00 2001 From: Mendy Man Date: Wed, 19 Feb 2025 15:01:48 -0500 Subject: [PATCH 12/14] js: Add more tests --- javascript/src/mockttp.test.ts | 111 ++++++++++++++++++++++++++++++++- 1 file changed, 109 insertions(+), 2 deletions(-) diff --git a/javascript/src/mockttp.test.ts b/javascript/src/mockttp.test.ts index d79d3d78d..7a0191916 100644 --- a/javascript/src/mockttp.test.ts +++ b/javascript/src/mockttp.test.ts @@ -1,4 +1,4 @@ -import { Svix } from "."; +import { BackgroundTaskType, MessageAttemptTriggerType, Svix } from "."; import { expect, test } from "@jest/globals"; import * as mockttp from "mockttp"; import { ApiException } from "./util"; @@ -9,9 +9,12 @@ const ApplicationOut = `{"uid":"unique-identifier","name":"My first application" const ListResponseMessageOut = `{"data":[{"eventId":"unique-identifier","eventType":"user.signup","payload":{"email":"test@example.com","type":"user.created","username":"test_user"},"channels":["project_123","group_2"],"id":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","timestamp":"2019-08-24T14:15:22Z","tags":["project_1337"]}],"iterator":"iterator","prevIterator":"-iterator","done":true}`; const ListResponseApplicationOut = `{"data":[{"uid":"unique-identifier","name":"My first application","rateLimit":0,"id":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z","metadata":{"property1":"string","property2":"string"}}],"iterator":"iterator","prevIterator":"-iterator","done":true}`; const ListResponseMessageAttemptOut = `{"data":[{"url":"https://example.com/webhook/","response":"{}","responseStatusCode":200,"responseDurationMs":0,"status":0,"triggerType":0,"msgId":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","endpointId":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2","id":"atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2","timestamp":"2025-02-16T21:38:21.977Z","msg":{"eventId":"unique-identifier","eventType":"user.signup","payload":{"email":"test@example.com","type":"user.created","username":"test_user"},"channels":["project_123","group_2"],"id":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","timestamp":"2025-02-16T21:38:21.977Z","tags":["project_1337"]}}],"iterator":"iterator","prevIterator":"-iterator","done":true}`; +const ListResponseOperationalWebhookEndpointOut = `{"data":[{"id":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2","description":"string","rateLimit":0,"uid":"unique-identifier","url":"https://example.com/webhook/","disabled":false,"filterTypes":["message.attempt.failing"],"createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z","metadata":{"property1":"string","property2":"string"}}],"iterator":"iterator","prevIterator":"-iterator","done":true}`; +const ListResponseBackgroundTaskOut = `{"data":[{"data":{},"id":"qtask_1srOrx2ZWZBpBUvZwXKQmoEYga2","status":"running","task":"endpoint.replay"}],"iterator":"iterator","prevIterator":"-iterator","done":true}`; +const EventTypeImportOpenApiOut = `{"data":{"modified":["user.signup"],"to_modify":[{"name":"user.signup","description":"string","schemas":{},"deprecated":true,"featureFlag":"cool-new-feature","groupName":"user"}]}}`; const ReplayOut = `{"id":"qtask_1srOrx2ZWZBpBUvZwXKQmoEYga2","status":"running","task":"endpoint.replay"}`; +const EndpointOut = `{"description":"string","rateLimit":0,"uid":"unique-identifier","url":"http://example.com","version":1,"disabled":true,"filterTypes":["user.signup"],"channels":["project_1337"],"secret":"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD","metadata":{"property1":"string","property2":"string"}}`; const ValidationErrorOut = `{"detail":[{"loc":["string"],"msg":"string","type":"string"}]}`; - const mockServer = mockttp.getLocal(); describe("mockttp tests", () => { @@ -182,4 +185,108 @@ describe("mockttp tests", () => { const requests = await endpointMock.getSeenRequests(); expect(requests.length).toBe(2); }); + + test("sub-resource works", async () => { + const endpointMock = await mockServer + .forGet("/api/v1/operational-webhook/endpoint") + .thenReply(200, ListResponseOperationalWebhookEndpointOut); + const svx = new Svix("token", { serverUrl: mockServer.url }); + + await svx.operationalWebhookEndpoint.list(); + + const requests = await endpointMock.getSeenRequests(); + expect(requests.length).toBe(1); + }); + + test("integer enum serialization", async () => { + const endpointMock = await mockServer + .forGet("/api/v1/app/app1/attempt/endpoint/endp1") + .thenReply(200, ListResponseMessageAttemptOut); + const svx = new Svix("token", { serverUrl: mockServer.url }); + + const res = await svx.messageAttempt.listByEndpoint("app1", "endp1"); + expect(res.data[0].triggerType).toBe(MessageAttemptTriggerType.Scheduled); + + const requests = await endpointMock.getSeenRequests(); + expect(requests.length).toBe(1); + }); + + test("string enum de/serialization", async () => { + const endpointMock = await mockServer + .forGet("/api/v1/background-task") + .thenReply(200, ListResponseBackgroundTaskOut); + const svx = new Svix("token", { serverUrl: mockServer.url }); + + const res = await svx.backgroundTask.list({ + task: BackgroundTaskType.EndpointReplay, + }); + expect(res.data[0].task).toBe(BackgroundTaskType.EndpointReplay); + + const requests = await endpointMock.getSeenRequests(); + expect(requests.length).toBe(1); + expect(requests[0].url.endsWith("api/v1/background-task?task=endpoint.replay")).toBe( + true + ); + }); + + test("non-camelCase field name", async () => { + const endpointMock = await mockServer + .forPost("/api/v1/event-type/import/openapi") + .thenReply(200, EventTypeImportOpenApiOut); + const svx = new Svix("token", { serverUrl: mockServer.url }); + + const res = await svx.eventType.importOpenapi({ dryRun: true }); + expect(res.data.toModify).toStrictEqual([ + { + name: "user.signup", + description: "string", + schemas: {}, + deprecated: true, + featureFlag: "cool-new-feature", + groupName: "user", + }, + ]); + + const requests = await endpointMock.getSeenRequests(); + expect(requests.length).toBe(1); + }); + + test("patch request body", async () => { + const endpointMock = await mockServer + .forPatch("/api/v1/app/app1/endpoint/endp1") + .thenReply(200, EndpointOut); + const svx = new Svix("token", { serverUrl: mockServer.url }); + + await svx.endpoint.patch("app1", "endp1", { filterTypes: ["ty1"] }); + await svx.endpoint.patch("app1", "endp1", { filterTypes: null }); + await svx.endpoint.patch("app1", "endp1", { description: "text" }); + + const requests = await endpointMock.getSeenRequests(); + expect(requests.length).toBe(3); + + // nullable field is sent + expect(await requests[0].body.getText()).toBe(`{"filterTypes":["ty1"]}`); + // nullable field is null + expect(await requests[1].body.getText()).toBe(`{"filterTypes":null}`); + // undefined field is omitted + expect(await requests[2].body.getText()).toBe(`{"description":"text"}`); + }); + + test("arbitrary json object body", async () => { + const endpointMock = await mockServer + .forPost("/api/v1/app/app1/msg") + .thenReply(200, EndpointOut); + const svx = new Svix("token", { serverUrl: mockServer.url }); + + await svx.message.create("app1", { + eventType: "asd", + payload: { key1: "val", list: ["val1"], obj: { key: "val2" } }, + }); + + const requests = await endpointMock.getSeenRequests(); + expect(requests.length).toBe(1); + expect(await requests[0].body.getText()).toBe( + `{"eventType":"asd","payload":{"key1":"val","list":["val1"],"obj":{"key":"val2"}}}` + ); + }); }); From a33d3e3978e711c2bc362b09c42184accbdaf2c7 Mon Sep 17 00:00:00 2001 From: Mendy Man Date: Wed, 19 Feb 2025 16:10:50 -0500 Subject: [PATCH 13/14] js: Add test to ensure we are sending token/user-agent --- javascript/src/mockttp.test.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/javascript/src/mockttp.test.ts b/javascript/src/mockttp.test.ts index 7a0191916..ab06c8efc 100644 --- a/javascript/src/mockttp.test.ts +++ b/javascript/src/mockttp.test.ts @@ -4,6 +4,7 @@ import * as mockttp from "mockttp"; import { ApiException } from "./util"; import { Ordering } from "./models/ordering"; import { ValidationError, HttpErrorOut } from "./HttpErrors"; +import { LIB_VERSION } from "./request"; const ApplicationOut = `{"uid":"unique-identifier","name":"My first application","rateLimit":0,"id":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z","metadata":{"property1":"string","property2":"string"}}`; const ListResponseMessageOut = `{"data":[{"eventId":"unique-identifier","eventType":"user.signup","payload":{"email":"test@example.com","type":"user.created","username":"test_user"},"channels":["project_123","group_2"],"id":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","timestamp":"2019-08-24T14:15:22Z","tags":["project_1337"]}],"iterator":"iterator","prevIterator":"-iterator","done":true}`; @@ -289,4 +290,18 @@ describe("mockttp tests", () => { `{"eventType":"asd","payload":{"key1":"val","list":["val1"],"obj":{"key":"val2"}}}` ); }); + + test("token/user-agent is sent", async () => { + const endpointMock = await mockServer + .forDelete("/api/v1/app/app1") + .thenReply(200, EndpointOut); + const svx = new Svix("token.eu", { serverUrl: mockServer.url }); + + await svx.application.delete("app1"); + + const requests = await endpointMock.getSeenRequests(); + expect(requests.length).toBe(1); + expect(requests[0].headers["authorization"]).toBe("Bearer token.eu"); + expect(requests[0].headers["user-agent"]).toBe(`svix-libs/${LIB_VERSION}/javascript`); + }); }); From fd7b38fdb1afb1d90a79000451647f29ee8b655f Mon Sep 17 00:00:00 2001 From: Mendy Man Date: Wed, 19 Feb 2025 16:14:52 -0500 Subject: [PATCH 14/14] js: Fix Date types. For some reason Date was hard-coded to always be `Date | null` And since I have tests for Date de/serialization, I am confident I can remove this --- javascript/src/models/appUsageStatsIn.ts | 4 ++-- javascript/src/models/applicationOut.ts | 4 ++-- javascript/src/models/endpointMessageOut.ts | 4 ++-- javascript/src/models/endpointOut.ts | 4 ++-- javascript/src/models/environmentOut.ts | 2 +- javascript/src/models/eventTypeOut.ts | 4 ++-- javascript/src/models/integrationOut.ts | 4 ++-- javascript/src/models/messageAttemptOut.ts | 2 +- javascript/src/models/messageEndpointOut.ts | 6 +++--- javascript/src/models/messageOut.ts | 2 +- javascript/src/models/operationalWebhookEndpointOut.ts | 4 ++-- javascript/src/models/recoverIn.ts | 4 ++-- javascript/src/models/replayIn.ts | 4 ++-- javascript/src/models/templateOut.ts | 4 ++-- 14 files changed, 26 insertions(+), 26 deletions(-) diff --git a/javascript/src/models/appUsageStatsIn.ts b/javascript/src/models/appUsageStatsIn.ts index 53ecf33c0..e2fe054bb 100644 --- a/javascript/src/models/appUsageStatsIn.ts +++ b/javascript/src/models/appUsageStatsIn.ts @@ -8,8 +8,8 @@ export interface AppUsageStatsIn { * Note that if none of the given IDs or UIDs are resolved, a 422 response will be given. */ appIds?: string[] | null; - since: Date | null; - until: Date | null; + since: Date; + until: Date; } export const AppUsageStatsInSerializer = { diff --git a/javascript/src/models/applicationOut.ts b/javascript/src/models/applicationOut.ts index 41b517cc7..72c2dc711 100644 --- a/javascript/src/models/applicationOut.ts +++ b/javascript/src/models/applicationOut.ts @@ -2,7 +2,7 @@ /* eslint @typescript-eslint/no-explicit-any: 0 */ export interface ApplicationOut { - createdAt: Date | null; + createdAt: Date; /** The Application's ID. */ id: string; metadata: { [key: string]: string }; @@ -10,7 +10,7 @@ export interface ApplicationOut { rateLimit?: number | null; /** The Application's UID. */ uid?: string | null; - updatedAt: Date | null; + updatedAt: Date; } export const ApplicationOutSerializer = { diff --git a/javascript/src/models/endpointMessageOut.ts b/javascript/src/models/endpointMessageOut.ts index f351cff08..a08ff1096 100644 --- a/javascript/src/models/endpointMessageOut.ts +++ b/javascript/src/models/endpointMessageOut.ts @@ -11,11 +11,11 @@ export interface EndpointMessageOut { eventType: string; /** The Message's ID. */ id: string; - nextAttempt?: Date | null | null; + nextAttempt?: Date | null; payload: any; status: MessageStatus; tags?: string[] | null; - timestamp: Date | null; + timestamp: Date; } export const EndpointMessageOutSerializer = { diff --git a/javascript/src/models/endpointOut.ts b/javascript/src/models/endpointOut.ts index 134d096df..0b3f1ccb3 100644 --- a/javascript/src/models/endpointOut.ts +++ b/javascript/src/models/endpointOut.ts @@ -4,7 +4,7 @@ export interface EndpointOut { /** List of message channels this endpoint listens to (omit for all). */ channels?: string[] | null; - createdAt: Date | null; + createdAt: Date; /** An example endpoint name. */ description: string; disabled?: boolean; @@ -15,7 +15,7 @@ export interface EndpointOut { rateLimit?: number | null; /** Optional unique identifier for the endpoint. */ uid?: string | null; - updatedAt: Date | null; + updatedAt: Date; url: string; version: number; } diff --git a/javascript/src/models/environmentOut.ts b/javascript/src/models/environmentOut.ts index 22fcfab21..474bf9cbd 100644 --- a/javascript/src/models/environmentOut.ts +++ b/javascript/src/models/environmentOut.ts @@ -4,7 +4,7 @@ import { EventTypeOut, EventTypeOutSerializer } from "./eventTypeOut"; import { TemplateOut, TemplateOutSerializer } from "./templateOut"; export interface EnvironmentOut { - createdAt: Date | null; + createdAt: Date; eventTypes: EventTypeOut[]; settings: any | null; transformationTemplates: TemplateOut[]; diff --git a/javascript/src/models/eventTypeOut.ts b/javascript/src/models/eventTypeOut.ts index 8755d8937..b85c3f8e4 100644 --- a/javascript/src/models/eventTypeOut.ts +++ b/javascript/src/models/eventTypeOut.ts @@ -3,7 +3,7 @@ export interface EventTypeOut { archived?: boolean; - createdAt: Date | null; + createdAt: Date; deprecated: boolean; description: string; featureFlag?: string | null; @@ -13,7 +13,7 @@ export interface EventTypeOut { name: string; /** The schema for the event type for a specific version as a JSON schema. */ schemas?: any | null; - updatedAt: Date | null; + updatedAt: Date; } export const EventTypeOutSerializer = { diff --git a/javascript/src/models/integrationOut.ts b/javascript/src/models/integrationOut.ts index a96b1b476..0369a84b8 100644 --- a/javascript/src/models/integrationOut.ts +++ b/javascript/src/models/integrationOut.ts @@ -2,13 +2,13 @@ /* eslint @typescript-eslint/no-explicit-any: 0 */ export interface IntegrationOut { - createdAt: Date | null; + createdAt: Date; /** The set of feature flags the integration has access to. */ featureFlags?: string[]; /** The Integration's ID. */ id: string; name: string; - updatedAt: Date | null; + updatedAt: Date; } export const IntegrationOutSerializer = { diff --git a/javascript/src/models/messageAttemptOut.ts b/javascript/src/models/messageAttemptOut.ts index f9c7062dd..2c0f2ce23 100644 --- a/javascript/src/models/messageAttemptOut.ts +++ b/javascript/src/models/messageAttemptOut.ts @@ -20,7 +20,7 @@ export interface MessageAttemptOut { responseDurationMs: number; responseStatusCode: number; status: MessageStatus; - timestamp: Date | null; + timestamp: Date; triggerType: MessageAttemptTriggerType; url: string; } diff --git a/javascript/src/models/messageEndpointOut.ts b/javascript/src/models/messageEndpointOut.ts index 0336eacdf..a40cd2c16 100644 --- a/javascript/src/models/messageEndpointOut.ts +++ b/javascript/src/models/messageEndpointOut.ts @@ -5,19 +5,19 @@ import { MessageStatus, MessageStatusSerializer } from "./messageStatus"; export interface MessageEndpointOut { /** List of message channels this endpoint listens to (omit for all). */ channels?: string[] | null; - createdAt: Date | null; + createdAt: Date; /** An example endpoint name. */ description: string; disabled?: boolean; filterTypes?: string[] | null; /** The Endpoint's ID. */ id: string; - nextAttempt?: Date | null | null; + nextAttempt?: Date | null; rateLimit?: number | null; status: MessageStatus; /** Optional unique identifier for the endpoint. */ uid?: string | null; - updatedAt: Date | null; + updatedAt: Date; url: string; version: number; } diff --git a/javascript/src/models/messageOut.ts b/javascript/src/models/messageOut.ts index a2912d727..95bb6dbd2 100644 --- a/javascript/src/models/messageOut.ts +++ b/javascript/src/models/messageOut.ts @@ -12,7 +12,7 @@ export interface MessageOut { id: string; payload: any; tags?: string[] | null; - timestamp: Date | null; + timestamp: Date; } export const MessageOutSerializer = { diff --git a/javascript/src/models/operationalWebhookEndpointOut.ts b/javascript/src/models/operationalWebhookEndpointOut.ts index e0317c528..c1b03ea6c 100644 --- a/javascript/src/models/operationalWebhookEndpointOut.ts +++ b/javascript/src/models/operationalWebhookEndpointOut.ts @@ -2,7 +2,7 @@ /* eslint @typescript-eslint/no-explicit-any: 0 */ export interface OperationalWebhookEndpointOut { - createdAt: Date | null; + createdAt: Date; /** An example endpoint name. */ description: string; disabled?: boolean; @@ -13,7 +13,7 @@ export interface OperationalWebhookEndpointOut { rateLimit?: number | null; /** Optional unique identifier for the endpoint. */ uid?: string | null; - updatedAt: Date | null; + updatedAt: Date; url: string; } diff --git a/javascript/src/models/recoverIn.ts b/javascript/src/models/recoverIn.ts index 820e099b8..7b6772bf8 100644 --- a/javascript/src/models/recoverIn.ts +++ b/javascript/src/models/recoverIn.ts @@ -2,8 +2,8 @@ /* eslint @typescript-eslint/no-explicit-any: 0 */ export interface RecoverIn { - since: Date | null; - until?: Date | null | null; + since: Date; + until?: Date | null; } export const RecoverInSerializer = { diff --git a/javascript/src/models/replayIn.ts b/javascript/src/models/replayIn.ts index c5bb4935e..39ea6d4be 100644 --- a/javascript/src/models/replayIn.ts +++ b/javascript/src/models/replayIn.ts @@ -2,8 +2,8 @@ /* eslint @typescript-eslint/no-explicit-any: 0 */ export interface ReplayIn { - since: Date | null; - until?: Date | null | null; + since: Date; + until?: Date | null; } export const ReplayInSerializer = { diff --git a/javascript/src/models/templateOut.ts b/javascript/src/models/templateOut.ts index cff2e623f..d037c605b 100644 --- a/javascript/src/models/templateOut.ts +++ b/javascript/src/models/templateOut.ts @@ -3,7 +3,7 @@ import { ConnectorKind, ConnectorKindSerializer } from "./connectorKind"; export interface TemplateOut { - createdAt: Date | null; + createdAt: Date; description: string; featureFlag?: string | null; filterTypes?: string[] | null; @@ -17,7 +17,7 @@ export interface TemplateOut { /** The Organization's ID. */ orgId: string; transformation: string; - updatedAt: Date | null; + updatedAt: Date; } export const TemplateOutSerializer = {