diff --git a/packages/next/src/request-handler.ts b/packages/next/src/request-handler.ts index 8ab725f9..8e0d17bd 100644 --- a/packages/next/src/request-handler.ts +++ b/packages/next/src/request-handler.ts @@ -168,7 +168,8 @@ async function handleRequest( message: err.message, }); } else { - logError(options, undefined, (err as Error).message); + const _err = err as Error; + logError(options, undefined, _err.message + (_err.stack ? '\n' + _err.stack : '')); res.status(500).send({ message: (err as Error).message, }); diff --git a/packages/runtime/src/enhancements/index.ts b/packages/runtime/src/enhancements/index.ts index df26a1a7..4f223bc6 100644 --- a/packages/runtime/src/enhancements/index.ts +++ b/packages/runtime/src/enhancements/index.ts @@ -2,3 +2,4 @@ export * from './omit'; export * from './password'; export * from './policy'; export * from './preset'; +export * from './utils'; diff --git a/packages/runtime/src/enhancements/policy/policy-utils.ts b/packages/runtime/src/enhancements/policy/policy-utils.ts index 6f944b53..4891b238 100644 --- a/packages/runtime/src/enhancements/policy/policy-utils.ts +++ b/packages/runtime/src/enhancements/policy/policy-utils.ts @@ -18,7 +18,13 @@ import { getVersion } from '../../version'; import { resolveField } from '../model-meta'; import { NestedWriteVisitor, VisitorContext } from '../nested-write-vistor'; import { ModelMeta, PolicyDef, PolicyFunc } from '../types'; -import { enumerate, getModelFields, prismaClientKnownRequestError, prismaClientUnknownRequestError } from '../utils'; +import { + enumerate, + getIdFields, + getModelFields, + prismaClientKnownRequestError, + prismaClientUnknownRequestError, +} from '../utils'; import { Logger } from './logger'; /** @@ -858,15 +864,7 @@ export class PolicyUtil { * Gets "id" field for a given model. */ getIdFields(model: string) { - const fields = this.modelMeta.fields[lowerCaseFirst(model)]; - if (!fields) { - throw this.unknownError(`Unable to load fields for ${model}`); - } - const result = Object.values(fields).filter((f) => f.isId); - if (result.length === 0) { - throw this.unknownError(`model ${model} does not have an id field`); - } - return result; + return getIdFields(this.modelMeta, model); } /** diff --git a/packages/runtime/src/enhancements/utils.ts b/packages/runtime/src/enhancements/utils.ts index bfe92c78..c5b62c71 100644 --- a/packages/runtime/src/enhancements/utils.ts +++ b/packages/runtime/src/enhancements/utils.ts @@ -1,9 +1,11 @@ /* eslint-disable @typescript-eslint/no-var-requires */ import { AUXILIARY_FIELDS } from '@zenstackhq/sdk'; +import { lowerCaseFirst } from 'lower-case-first'; import path from 'path'; import * as util from 'util'; import { DbClientContract } from '../types'; +import { ModelMeta } from './types'; /** * Wraps a value into array if it's not already one @@ -19,6 +21,21 @@ export function getModelFields(data: object) { return data ? Object.keys(data).filter((f) => !AUXILIARY_FIELDS.includes(f)) : []; } +/** + * Gets id fields for the given model. + */ +export function getIdFields(modelMeta: ModelMeta, model: string) { + const fields = modelMeta.fields[lowerCaseFirst(model)]; + if (!fields) { + throw new Error(`Unable to load fields for ${model}`); + } + const result = Object.values(fields).filter((f) => f.isId); + if (result.length === 0) { + throw new Error(`model ${model} does not have an id field`); + } + return result; +} + /** * Array or scalar */ @@ -35,6 +52,9 @@ export function enumerate(x: Enumerable) { } } +/** + * Formats an object for pretty printing. + */ export function formatObject(value: unknown) { return util.formatWithOptions({ depth: 10 }, value); } diff --git a/packages/server/package.json b/packages/server/package.json index 849b6189..2605e9b9 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -27,14 +27,19 @@ "@zenstackhq/runtime": "workspace:*", "@zenstackhq/sdk": "workspace:*", "change-case": "^4.1.2", + "lower-case-first": "^2.0.2", "tiny-invariant": "^1.3.1", + "ts-japi": "^1.8.0", "upper-case-first": "^2.0.2", + "url-pattern": "^1.0.3", + "zod": "3.21.1", "zod-validation-error": "^0.2.1" }, "devDependencies": { "@types/body-parser": "^1.19.2", "@types/express": "^4.17.17", "@types/jest": "^29.5.0", + "@types/lower-case-first": "^1.0.1", "@types/supertest": "^2.0.12", "@types/upper-case-first": "^1.1.2", "@zenstackhq/testtools": "workspace:*", diff --git a/packages/server/src/api/rest/index.ts b/packages/server/src/api/rest/index.ts new file mode 100644 index 00000000..4f5908de --- /dev/null +++ b/packages/server/src/api/rest/index.ts @@ -0,0 +1,1506 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { + DbClientContract, + FieldInfo, + enumerate, + getIdFields, + isPrismaClientKnownRequestError, +} from '@zenstackhq/runtime'; +import { getDefaultModelMeta } from '@zenstackhq/runtime/enhancements/model-meta'; +import type { ModelMeta } from '@zenstackhq/runtime/enhancements/types'; +import { ModelZodSchema } from '@zenstackhq/runtime/zod'; +import { paramCase } from 'change-case'; +import { lowerCaseFirst } from 'lower-case-first'; +import { DataDocument, Linker, Paginator, Relator, Serializer, SerializerOptions } from 'ts-japi'; +import UrlPattern from 'url-pattern'; +import z from 'zod'; +import { fromZodError } from 'zod-validation-error'; +import { LoggerConfig, RequestContext, Response } from '../types'; +import { getZodSchema, logWarning, stripAuxFields } from '../utils'; + +const urlPatterns = { + // collection operations + collection: new UrlPattern('/:type'), + // single resource operations + single: new UrlPattern('/:type/:id'), + // related entity fetching + fetchRelationship: new UrlPattern('/:type/:id/:relationship'), + // relationship operations + relationship: new UrlPattern('/:type/:id/relationships/:relationship'), +}; + +/** + * Request handler options + */ +export type Options = { + /** + * The base endpoint of the RESTful API, must be a valid URL + */ + endpoint: string; + + /** + * Logging configuration. Set to `null` to disable logging. + * If unset or set to `undefined`, log will be output to console. + */ + logger?: LoggerConfig | null; + + /** + * Zod schemas for validating create and update payloads. By default + * loaded from the standard output location of the `@zenstackhq/zod` + * plugin. You can pass it in explicitly if you configured the plugin + * to output to a different location. + */ + zodSchemas?: ModelZodSchema; + + /** + * Model metadata. By default loaded from the standard output location + * of the `@zenstackhq/model-meta` plugin. You can pass it in explicitly + * if you configured the plugin to output to a different location. + */ + modelMeta?: ModelMeta; + + /** + * The default page size for limiting the number of results returned + * from collection queries, including resource collection, related data + * of collection types, and relashionship of collection types. + * + * Defaults to 100. Set to Infinity to disable pagination. + */ + pageSize?: number; +}; + +type RelationshipInfo = { + type: string; + idField: string; + idFieldType: string; + isCollection: boolean; + isOptional: boolean; +}; + +type ModelInfo = { + idField: string; + idFieldType: string; + fields: Record; + relationships: Record; +}; + +class InvalidValueError extends Error { + constructor(public readonly message: string) { + super(message); + } +} + +const DEFAULT_PAGE_SIZE = 100; + +/** + * RESTful style API request handler (compliant with JSON:API) + */ +class RequestHandler { + // resource serializers + private serializers = new Map(); + + // error responses + private readonly errors: Record = { + unsupportedModel: { + status: 400, + title: 'Unsupported model type', + detail: 'The model type is not supported', + }, + unsupportedRelationship: { + status: 400, + title: 'Unsupported relationship', + detail: 'The relationship is not supported', + }, + invalidPath: { + status: 400, + title: 'The request path is invalid', + }, + invalidVerb: { + status: 400, + title: 'The HTTP verb is not supported', + }, + notFound: { + status: 404, + title: 'Resource not found', + }, + noId: { + status: 400, + title: 'Model without an ID field is not supported', + }, + multiId: { + status: 400, + title: 'Model with multiple ID fields is not supported', + }, + invalidId: { + status: 400, + title: 'Resource ID is invalid', + }, + invalidPayload: { + status: 400, + title: 'Invalid payload', + }, + invalidRelationData: { + status: 400, + title: 'Invalid payload', + detail: 'Invalid relationship data', + }, + invalidRelation: { + status: 400, + title: 'Invalid payload', + detail: 'Invalid relationship', + }, + invalidFilter: { + status: 400, + title: 'Invalid filter', + }, + invalidSort: { + status: 400, + title: 'Invalid sort', + }, + invalidValue: { + status: 400, + title: 'Invalid value for type', + }, + unknownError: { + status: 400, + title: 'Unknown error', + }, + }; + + private modelMeta: ModelMeta; + + private filterParamPattern = new RegExp(/^filter(?(\[[^[\]]+\])+)$/); + + // zod schema for payload of creating and updating a resource + private createUpdatePayloadSchema = z.object({ + data: z.object({ + type: z.string(), + attributes: z.object({}).passthrough(), + relationships: z + .record( + z.object({ + data: z.union([ + z.object({ type: z.string(), id: z.union([z.string(), z.number()]) }), + z.array(z.object({ type: z.string(), id: z.union([z.string(), z.number()]) })), + ]), + }) + ) + .optional(), + }), + }); + + // zod schema for updating a single relationship + private updateSingleRelationSchema = z.object({ + data: z.object({ type: z.string(), id: z.union([z.string(), z.number()]) }).nullable(), + }); + + // zod schema for updating collection relationship + private updateCollectionRelationSchema = z.object({ + data: z.array(z.object({ type: z.string(), id: z.union([z.string(), z.number()]) })), + }); + + // all known types and their metadata + private readonly typeMap: Record = {}; + + constructor(private readonly options: Options) { + this.modelMeta = this.options.modelMeta || getDefaultModelMeta(); + this.buildTypeMap(); + this.buildSerializers(); + } + + async handleRequest({ prisma, method, path, query, requestBody }: RequestContext): Promise { + method = method.toUpperCase(); + + try { + switch (method) { + case 'GET': { + let match = urlPatterns.single.match(path); + if (match) { + // single resource read + return await this.processSingleRead(prisma, match.type, match.id, query); + } + + match = urlPatterns.fetchRelationship.match(path); + if (match) { + // fetch related resource(s) + return await this.processFetchRelated(prisma, match.type, match.id, match.relationship, query); + } + + match = urlPatterns.relationship.match(path); + if (match) { + // read relationship + return await this.processReadRelationship( + prisma, + match.type, + match.id, + match.relationship, + query + ); + } + + match = urlPatterns.collection.match(path); + if (match) { + // collection read + return await this.processCollectionRead(prisma, match.type, query); + } + + return this.makeError('invalidPath'); + } + + case 'POST': { + let match = urlPatterns.collection.match(path); + if (match) { + // resource creation + return await this.processCreate(prisma, match.type, query, requestBody); + } + + match = urlPatterns.relationship.match(path); + if (match) { + // relationship creation (collection relationship only) + return await this.processRelationshipCRUD( + prisma, + 'create', + match.type, + match.id, + match.relationship, + query, + requestBody + ); + } + + return this.makeError('invalidPath'); + } + + // TODO: PUT for full update + case 'PUT': + case 'PATCH': { + let match = urlPatterns.single.match(path); + if (match) { + // resource update + return await this.processUpdate(prisma, match.type, match.id, query, requestBody); + } + + match = urlPatterns.relationship.match(path); + if (match) { + // relationship update + return await this.processRelationshipCRUD( + prisma, + 'update', + match.type, + match.id, + match.relationship as string, + query, + requestBody + ); + } + + return this.makeError('invalidPath'); + } + + case 'DELETE': { + let match = urlPatterns.single.match(path); + if (match) { + // resource deletion + return await this.processDelete(prisma, match.type, match.id, query); + } + + match = urlPatterns.relationship.match(path); + if (match) { + // relationship deletion (collection relationship only) + return await this.processRelationshipCRUD( + prisma, + 'delete', + match.type, + match.id, + match.relationship as string, + query, + requestBody + ); + } + + return this.makeError('invalidPath'); + } + + default: + return this.makeError('invalidPath'); + } + } catch (err) { + if (err instanceof InvalidValueError) { + return this.makeError('invalidValue', err.message); + } else { + const _err = err as Error; + return this.makeError('unknownError', `${_err.message}\n${_err.stack}`); + } + } + } + + private async processSingleRead( + prisma: DbClientContract, + type: string, + resourceId: string, + query: Record | undefined + ): Promise { + const typeInfo = this.typeMap[type]; + if (!typeInfo) { + return this.makeUnsupportedModelError(type); + } + + const args: any = { where: this.makeIdFilter(typeInfo.idField, typeInfo.idFieldType, resourceId) }; + + // include IDs of relation fields so that they can be serialized + this.includeRelationshipIds(type, args, 'include'); + + // handle "include" query parameter + let include: string[] | undefined; + if (query?.include) { + const { select, error, allIncludes } = this.buildRelationSelect(type, query.include); + if (error) { + return error; + } + if (select) { + args.include = { ...args.include, ...select }; + } + include = allIncludes; + } + + const entity = await prisma[type].findUnique(args); + if (entity) { + return { + status: 200, + body: await this.serializeItems(type, entity, { include }), + }; + } else { + return this.makeError('notFound'); + } + } + + private async processFetchRelated( + prisma: DbClientContract, + type: string, + resourceId: string, + relationship: string, + query: Record | undefined + ): Promise { + const typeInfo = this.typeMap[type]; + if (!typeInfo) { + return this.makeUnsupportedModelError(type); + } + + const relationInfo = typeInfo.relationships[relationship]; + if (!relationInfo) { + return this.makeUnsupportedRelationshipError(type, relationship); + } + + let select: any; + + // handle "include" query parameter + let include: string[] | undefined; + if (query?.include) { + const { select: relationSelect, error, allIncludes } = this.buildRelationSelect(type, query.include); + if (error) { + return error; + } + // trim the leading `$relationship.` from the include paths + include = allIncludes + .filter((i) => i.startsWith(`${relationship}.`)) + .map((i) => i.substring(`${relationship}.`.length)); + select = relationSelect; + } + + select = select ?? { [relationship]: true }; + const args: any = { + where: this.makeIdFilter(typeInfo.idField, typeInfo.idFieldType, resourceId), + select, + }; + + if (relationInfo.isCollection) { + // if related data is a collection, it can be filtered, sorted, and paginated + const error = this.injectRelationQuery(relationInfo.type, select, relationship, query); + if (error) { + return error; + } + } + + const entity: any = await prisma[type].findUnique(args); + + let paginator: Paginator | undefined; + + if (entity?._count?.[relationship] !== undefined) { + // build up paginator + const total = entity?._count?.[relationship] as number; + const url = this.makeNormalizedUrl(`/${type}/${resourceId}/${relationship}`, query); + const { offset, limit } = this.getPagination(query); + paginator = this.makePaginator(url, offset, limit, total); + } + + if (entity?.[relationship]) { + return { + status: 200, + body: await this.serializeItems(relationInfo.type, entity[relationship], { + linkers: { + document: new Linker(() => this.makeLinkUrl(`/${type}/${resourceId}/${relationship}`)), + paginator, + }, + include, + }), + }; + } else { + return this.makeError('notFound'); + } + } + + private async processReadRelationship( + prisma: DbClientContract, + type: string, + resourceId: string, + relationship: string, + query: Record | undefined + ): Promise { + const typeInfo = this.typeMap[type]; + if (!typeInfo) { + return this.makeUnsupportedModelError(type); + } + + const relationInfo = typeInfo.relationships[relationship]; + if (!relationInfo) { + return this.makeUnsupportedRelationshipError(type, relationship); + } + + const args: any = { + where: this.makeIdFilter(typeInfo.idField, typeInfo.idFieldType, resourceId), + select: this.makeIdSelect(type), + }; + + // include IDs of relation fields so that they can be serialized + // this.includeRelationshipIds(type, args, 'select'); + args.select = { ...args.select, [relationship]: { select: this.makeIdSelect(relationInfo.type) } }; + + let paginator: Paginator | undefined; + + if (relationInfo.isCollection) { + // if related data is a collection, it can be filtered, sorted, and paginated + const error = this.injectRelationQuery(relationInfo.type, args.select, relationship, query); + if (error) { + return error; + } + } + + const entity: any = await prisma[type].findUnique(args); + + if (entity?._count?.[relationship] !== undefined) { + // build up paginator + const total = entity?._count?.[relationship] as number; + const url = this.makeNormalizedUrl(`/${type}/${resourceId}/relationships/${relationship}`, query); + const { offset, limit } = this.getPagination(query); + paginator = this.makePaginator(url, offset, limit, total); + } + + if (entity?.[relationship]) { + const serialized: any = await this.serializeItems(relationInfo.type, entity[relationship], { + linkers: { + document: new Linker(() => + this.makeLinkUrl(`/${type}/${resourceId}/relationships/${relationship}`) + ), + paginator, + }, + onlyIdentifier: true, + }); + + return { + status: 200, + body: serialized, + }; + } else { + return this.makeError('notFound'); + } + } + + private async processCollectionRead( + prisma: DbClientContract, + type: string, + query: Record | undefined + ): Promise { + const typeInfo = this.typeMap[type]; + if (!typeInfo) { + return this.makeUnsupportedModelError(type); + } + + const args: any = {}; + + // add filter + const { filter, error: filterError } = this.buildFilter(type, query); + if (filterError) { + return filterError; + } + if (filter) { + args.where = filter; + } + + const { sort, error: sortError } = this.buildSort(type, query); + if (sortError) { + return sortError; + } + if (sort) { + args.orderBy = sort; + } + + // include IDs of relation fields so that they can be serialized + this.includeRelationshipIds(type, args, 'include'); + + // handle "include" query parameter + let include: string[] | undefined; + if (query?.include) { + const { select, error, allIncludes } = this.buildRelationSelect(type, query.include); + if (error) { + return error; + } + if (select) { + args.include = { ...args.include, ...select }; + } + include = allIncludes; + } + + const { offset, limit } = this.getPagination(query); + if (offset > 0) { + args.skip = offset; + } + + if (limit === Infinity) { + const entities = await prisma[type].findMany(args); + return { + status: 200, + body: await this.serializeItems(type, entities, { include }), + }; + } else { + args.take = limit; + const [entities, count] = await Promise.all([ + prisma[type].findMany(args), + prisma[type].count({ where: args.where }), + ]); + const total = count as number; + + const url = this.makeNormalizedUrl(`/${type}`, query); + const options: Partial = { + include, + linkers: { + paginator: this.makePaginator(url, offset, limit, total), + }, + }; + + return { + status: 200, + body: await this.serializeItems(type, entities, options), + }; + } + } + + private makePaginator(baseUrl: string, offset: number, limit: number, total: number) { + if (limit === Infinity) { + return undefined; + } + + const totalPages = Math.ceil(total / limit); + + return new Paginator(() => ({ + first: this.replaceURLSearchParams(baseUrl, { 'page[limit]': limit }), + last: this.replaceURLSearchParams(baseUrl, { + 'page[offset]': (totalPages - 1) * limit, + }), + prev: + offset - limit >= 0 && offset - limit <= total - 1 + ? this.replaceURLSearchParams(baseUrl, { + 'page[offset]': offset - limit, + 'page[limit]': limit, + }) + : null, + next: + offset + limit <= total - 1 + ? this.replaceURLSearchParams(baseUrl, { + 'page[offset]': offset + limit, + 'page[limit]': limit, + }) + : null, + })); + } + + private async processCreate( + prisma: DbClientContract, + type: string, + _query: Record | undefined, + requestBody: unknown + ): Promise { + const typeInfo = this.typeMap[type]; + if (!typeInfo) { + return this.makeUnsupportedModelError(type); + } + + // zod-parse payload + const parsed = this.createUpdatePayloadSchema.safeParse(requestBody); + if (!parsed.success) { + return this.makeError('invalidPayload', fromZodError(parsed.error).message); + } + + const parsedPayload = parsed.data; + + const attributes = parsedPayload.data?.attributes; + if (!attributes) { + return this.makeError('invalidPayload'); + } + + const createPayload: any = { data: { ...attributes } }; + + // zod-parse attributes if a schema is provided + const dataSchema = this.options.zodSchemas ? getZodSchema(this.options.zodSchemas, type, 'create') : undefined; + if (dataSchema) { + const dataParsed = dataSchema.safeParse(createPayload); + if (!dataParsed.success) { + return this.makeError('invalidPayload', fromZodError(dataParsed.error).message); + } + } + + // turn relashionship payload into Prisma connect objects + const relationships = parsedPayload.data?.relationships; + if (relationships) { + for (const [key, data] of Object.entries(relationships)) { + if (!data?.data) { + return this.makeError('invalidRelationData'); + } + + const relationInfo = typeInfo.relationships[key]; + if (!relationInfo) { + return this.makeUnsupportedRelationshipError(type, key); + } + + if (relationInfo.isCollection) { + createPayload.data[key] = { + connect: enumerate(data.data).map((item: any) => ({ + [relationInfo.idField]: this.coerce(relationInfo.idFieldType, item.id), + })), + }; + } else { + if (typeof data.data !== 'object') { + return this.makeError('invalidRelationData'); + } + createPayload.data[key] = { + connect: { [relationInfo.idField]: this.coerce(relationInfo.idFieldType, data.data.id) }, + }; + } + + // make sure ID fields are included for result serialization + createPayload.include = { + ...createPayload.include, + [key]: { select: { [relationInfo.idField]: true } }, + }; + } + } + + const entity = await prisma[type].create(createPayload); + return { + status: 201, + body: await this.serializeItems(type, entity), + }; + } + + private async processRelationshipCRUD( + prisma: DbClientContract, + mode: 'create' | 'update' | 'delete', + type: string, + resourceId: string, + relationship: string, + query: Record | undefined, + requestBody: unknown + ): Promise { + const typeInfo = this.typeMap[type]; + if (!typeInfo) { + return this.makeUnsupportedModelError(type); + } + + const relationInfo = typeInfo.relationships[relationship]; + if (!relationInfo) { + return this.makeUnsupportedRelationshipError(type, relationship); + } + + if (!relationInfo.isCollection && mode !== 'update') { + // to-one relation can only be updated + return this.makeError('invalidVerb'); + } + + const updateArgs: any = { + where: this.makeIdFilter(typeInfo.idField, typeInfo.idFieldType, resourceId), + select: { [typeInfo.idField]: true, [relationship]: { select: { [relationInfo.idField]: true } } }, + }; + let entity: any; + + if (!relationInfo.isCollection) { + // zod-parse payload + const parsed = this.updateSingleRelationSchema.safeParse(requestBody); + if (!parsed.success) { + return this.makeError('invalidPayload', fromZodError(parsed.error).message); + } + + if (parsed.data.data === null) { + if (!relationInfo.isOptional) { + // cannot disconnect a required relation + return this.makeError('invalidPayload'); + } + // set null -> disconnect + updateArgs.data = { + [relationship]: { + disconnect: true, + }, + }; + } else { + updateArgs.data = { + [relationship]: { + connect: { + [relationInfo.idField]: this.coerce(relationInfo.idFieldType, parsed.data.data.id), + }, + }, + }; + } + } else { + // zod-parse payload + const parsed = this.updateCollectionRelationSchema.safeParse(requestBody); + if (!parsed.success) { + return this.makeError('invalidPayload', fromZodError(parsed.error).message); + } + + // create -> connect, delete -> disconnect, update -> set + const relationVerb = mode === 'create' ? 'connect' : mode === 'delete' ? 'disconnect' : 'set'; + + updateArgs.data = { + [relationship]: { + [relationVerb]: enumerate(parsed.data.data).map((item: any) => ({ + [relationInfo.idField]: this.coerce(relationInfo.idFieldType, item.id), + })), + }, + }; + } + + try { + entity = await prisma[type].update(updateArgs); + } catch (err) { + return this.handlePrismaError(err); + } + + const serialized: any = await this.serializeItems(relationInfo.type, entity[relationship], { + linkers: { + document: new Linker(() => this.makeLinkUrl(`/${type}/${resourceId}/relationships/${relationship}`)), + }, + onlyIdentifier: true, + }); + + return { + status: 200, + body: serialized, + }; + } + + private async processUpdate( + prisma: DbClientContract, + type: any, + resourceId: string, + query: Record | undefined, + requestBody: unknown + ): Promise { + const typeInfo = this.typeMap[type]; + if (!typeInfo) { + return this.makeUnsupportedModelError(type); + } + + // zod-parse payload + const parsed = this.createUpdatePayloadSchema.safeParse(requestBody); + if (!parsed.success) { + return this.makeError('invalidPayload', fromZodError(parsed.error).message); + } + + const parsedPayload = parsed.data; + + const attributes = parsedPayload.data?.attributes; + if (!attributes) { + return this.makeError('invalidPayload'); + } + + const updatePayload: any = { + where: this.makeIdFilter(typeInfo.idField, typeInfo.idFieldType, resourceId), + data: { ...attributes }, + }; + + // zod-parse attributes if a schema is provided + const dataSchema = this.options.zodSchemas ? getZodSchema(this.options.zodSchemas, type, 'update') : undefined; + if (dataSchema) { + const dataParsed = dataSchema.safeParse(updatePayload); + if (!dataParsed.success) { + return this.makeError('invalidPayload', fromZodError(dataParsed.error).message); + } + } + + // turn relationships into prisma payload + const relationships = parsedPayload.data?.relationships; + if (relationships) { + for (const [key, data] of Object.entries(relationships)) { + if (!data?.data) { + return this.makeError('invalidRelationData'); + } + + const relationInfo = typeInfo.relationships[key]; + if (!relationInfo) { + return this.makeUnsupportedRelationshipError(type, key); + } + + if (relationInfo.isCollection) { + updatePayload.data[key] = { + set: enumerate(data.data).map((item: any) => ({ + [relationInfo.idField]: this.coerce(relationInfo.idFieldType, item.id), + })), + }; + } else { + if (typeof data.data !== 'object') { + return this.makeError('invalidRelationData'); + } + updatePayload.data[key] = { + set: { [relationInfo.idField]: this.coerce(relationInfo.idFieldType, data.data.id) }, + }; + } + updatePayload.include = { + ...updatePayload.include, + [key]: { select: { [relationInfo.idField]: true } }, + }; + } + } + + try { + const entity = await prisma[type].update(updatePayload); + return { + status: 200, + body: await this.serializeItems(type, entity), + }; + } catch (err) { + return this.handlePrismaError(err); + } + } + + private async processDelete( + prisma: DbClientContract, + type: any, + resourceId: string, + query: Record | undefined + ): Promise { + const typeInfo = this.typeMap[type]; + if (!typeInfo) { + return this.makeUnsupportedModelError(type); + } + + try { + await prisma[type].delete({ + where: this.makeIdFilter(typeInfo.idField, typeInfo.idFieldType, resourceId), + }); + return { + status: 204, + body: undefined, + }; + } catch (err) { + return this.handlePrismaError(err); + } + } + + //#region utilities + + private buildTypeMap() { + for (const [model, fields] of Object.entries(this.modelMeta.fields)) { + const idFields = getIdFields(this.modelMeta, model); + if (idFields.length === 0) { + logWarning(this.options.logger, `Not including model ${model} in the API because it has no ID field`); + continue; + } + if (idFields.length > 1) { + logWarning( + this.options.logger, + `Not including model ${model} in the API because it has multiple ID fields` + ); + continue; + } + + this.typeMap[model] = { + idField: idFields[0].name, + idFieldType: idFields[0].type, + relationships: {}, + fields, + }; + + for (const [field, fieldInfo] of Object.entries(fields)) { + if (!fieldInfo.isDataModel) { + continue; + } + const fieldTypeIdFields = getIdFields(this.modelMeta, fieldInfo.type); + if (fieldTypeIdFields.length === 0) { + logWarning( + this.options.logger, + `Not including relation ${model}.${field} in the API because it has no ID field` + ); + continue; + } + if (fieldTypeIdFields.length > 1) { + logWarning( + this.options.logger, + `Not including relation ${model}.${field} in the API because it has multiple ID fields` + ); + continue; + } + + this.typeMap[model].relationships[field] = { + type: fieldInfo.type, + idField: fieldTypeIdFields[0].name, + idFieldType: fieldTypeIdFields[0].type, + isCollection: fieldInfo.isArray, + isOptional: fieldInfo.isOptional, + }; + } + } + } + + private makeLinkUrl(path: string) { + return `${this.options.endpoint}${path}`; + } + + private buildSerializers() { + const linkers: Record> = {}; + + for (const model of Object.keys(this.modelMeta.fields)) { + const ids = getIdFields(this.modelMeta, model); + if (ids.length !== 1) { + continue; + } + + const linker = new Linker((items) => + Array.isArray(items) + ? this.makeLinkUrl(`/${model}`) + : this.makeLinkUrl(`/${model}/${this.getId(model, items)}`) + ); + linkers[model] = linker; + + let projection: Record | null = {}; + for (const [field, fieldMeta] of Object.entries(this.modelMeta.fields[model])) { + if (fieldMeta.isDataModel) { + projection[field] = 0; + } + } + if (Object.keys(projection).length === 0) { + projection = null; + } + + const serializer = new Serializer(model, { + idKey: ids[0].name, + linkers: { + resource: linker, + document: linker, + }, + projection, + }); + this.serializers.set(model, serializer); + } + + // set relators + for (const model of Object.keys(this.modelMeta.fields)) { + const serializer = this.serializers.get(model); + if (!serializer) { + continue; + } + + const relators: Record> = {}; + for (const [field, fieldMeta] of Object.entries(this.modelMeta.fields[model])) { + if (!fieldMeta.isDataModel) { + continue; + } + const fieldSerializer = this.serializers.get(lowerCaseFirst(fieldMeta.type)); + if (!fieldSerializer) { + continue; + } + const fieldIds = getIdFields(this.modelMeta, fieldMeta.type); + if (fieldIds.length === 1) { + const relator = new Relator( + async (data) => { + return (data as any)[field]; + }, + fieldSerializer, + { + relatedName: field, + linkers: { + related: new Linker((primary, related) => + !related || Array.isArray(related) + ? this.makeLinkUrl( + `/${lowerCaseFirst(model)}/${this.getId(model, primary)}/${field}` + ) + : this.makeLinkUrl( + `/${lowerCaseFirst(model)}/${this.getId( + model, + primary + )}/${field}/${this.getId(fieldMeta.type, related)}` + ) + ), + relationship: new Linker((primary, related) => + !related || Array.isArray(related) + ? this.makeLinkUrl( + `/${lowerCaseFirst(model)}/${this.getId( + model, + primary + )}/relationships/${field}` + ) + : this.makeLinkUrl( + `/${lowerCaseFirst(model)}/${this.getId( + model, + primary + )}/relationships/${field}/${this.getId(fieldMeta.type, related)}` + ) + ), + }, + } + ); + relators[field] = relator; + } + } + serializer.setRelators(relators); + } + } + + private getId(model: string, data: any) { + if (!data) { + return undefined; + } + const ids = getIdFields(this.modelMeta, model); + if (ids.length === 1) { + return data[ids[0].name]; + } else { + return undefined; + } + } + + private async serializeItems( + model: string, + items: unknown, + options?: Partial> + ): Promise>> { + model = lowerCaseFirst(model); + const serializer = this.serializers.get(model); + if (!serializer) { + throw new Error(`serializer not found for model ${model}`); + } + + stripAuxFields(items); + + return JSON.parse(JSON.stringify(await serializer.serialize(items, options))); + } + + private replaceURLSearchParams(url: string, params: Record) { + const r = new URL(url); + for (const [key, value] of Object.entries(params)) { + r.searchParams.set(key, value.toString()); + } + return r.toString(); + } + + private makeIdFilter(idField: string, idFieldType: string, resourceId: string) { + return { [idField]: this.coerce(idFieldType, resourceId) }; + } + + private makeIdSelect(model: string) { + const idFields = getIdFields(this.modelMeta, model); + if (idFields.length === 0) { + throw this.errors.noId; + } else if (idFields.length > 1) { + throw this.errors.multiId; + } + return { [idFields[0].name]: true }; + } + + private includeRelationshipIds(model: string, args: any, mode: 'select' | 'include') { + const typeInfo = this.typeMap[model]; + if (!typeInfo) { + return; + } + for (const [relation, relationInfo] of Object.entries(typeInfo.relationships)) { + args[mode] = { ...args[mode], [relation]: { select: { [relationInfo.idField]: true } } }; + } + } + + private coerce(type: string, value: any) { + if (typeof value === 'string') { + if (type === 'Int' || type === 'BigInt') { + const parsed = parseInt(value); + if (isNaN(parsed)) { + throw new InvalidValueError(`invalid ${type} value: ${value}`); + } + return parsed; + } else if (type === 'Float' || type === 'Decimal') { + const parsed = parseFloat(value); + if (isNaN(parsed)) { + throw new InvalidValueError(`invalid ${type} value: ${value}`); + } + return parsed; + } else if (type === 'Boolean') { + if (value === 'true') { + return true; + } else if (value === 'false') { + return false; + } else { + throw new InvalidValueError(`invalid ${type} value: ${value}`); + } + } + } + return value; + } + + private makeNormalizedUrl(path: string, query: Record | undefined) { + const url = new URL(this.makeLinkUrl(path)); + for (const [key, value] of Object.entries(query ?? {})) { + if ( + key.startsWith('filter[') || + key.startsWith('sort[') || + key.startsWith('include[') || + key.startsWith('fields[') + ) { + for (const v of enumerate(value)) { + url.searchParams.append(key, v); + } + } + } + return url.toString(); + } + + private getPagination(query: Record | undefined) { + if (!query) { + return { offset: 0, limit: this.options.pageSize ?? DEFAULT_PAGE_SIZE }; + } + + let offset = 0; + if (query['page[offset]']) { + const value = query['page[offset]']; + const offsetText = Array.isArray(value) ? value[value.length - 1] : value; + offset = parseInt(offsetText); + if (isNaN(offset) || offset < 0) { + offset = 0; + } + } + + let pageSizeOption = this.options.pageSize ?? DEFAULT_PAGE_SIZE; + if (pageSizeOption <= 0) { + pageSizeOption = DEFAULT_PAGE_SIZE; + } + + let limit = pageSizeOption; + if (query['page[limit]']) { + const value = query['page[limit]']; + const limitText = Array.isArray(value) ? value[value.length - 1] : value; + limit = parseInt(limitText); + if (isNaN(limit) || limit <= 0) { + limit = pageSizeOption; + } + limit = Math.min(pageSizeOption, limit); + } + + return { offset, limit }; + } + + private buildFilter( + type: string, + query: Record | undefined + ): { filter: any; error: any } { + if (!query) { + return { filter: undefined, error: undefined }; + } + + const typeInfo = this.typeMap[lowerCaseFirst(type)]; + if (!typeInfo) { + return { filter: undefined, error: this.makeUnsupportedModelError(type) }; + } + + const items: any[] = []; + + for (const [key, value] of Object.entries(query)) { + if (!value) { + continue; + } + + // try matching query parameter key as "filter[x][y]..." + const match = key.match(this.filterParamPattern); + if (!match || !match.groups) { + continue; + } + const filterKeys = match.groups.match + .replaceAll(/[[\]]/g, ' ') + .split(' ') + .filter((i) => i); + + if (!filterKeys.length) { + continue; + } + + // turn filter into a nested Prisma query object + + const item: any = {}; + let curr = item; + + for (const filterValue of enumerate(value)) { + for (let i = 0; i < filterKeys.length; i++) { + const filterKey = filterKeys[i]; + + const fieldInfo = + filterKey === 'id' + ? Object.values(typeInfo.fields).find((f) => f.isId) + : typeInfo.fields[filterKey]; + if (!fieldInfo) { + return { filter: undefined, error: this.makeError('invalidFilter') }; + } + + if (!fieldInfo.isDataModel) { + // regular field + if (i !== filterKeys.length - 1) { + // must be the last segment of a filter + return { filter: undefined, error: this.makeError('invalidFilter') }; + } + curr[fieldInfo.name] = this.makeFilterValue(fieldInfo, filterValue); + } else { + // relation field + if (i === filterKeys.length - 1) { + curr[fieldInfo.name] = this.makeFilterValue(fieldInfo, filterValue); + } else { + // keep going + curr = curr[fieldInfo.name] = {}; + } + } + } + items.push(item); + } + } + + if (items.length === 0) { + return { filter: undefined, error: undefined }; + } else { + // combine filters with AND + return { filter: items.length === 1 ? items[0] : { AND: items }, error: undefined }; + } + } + + private buildSort(type: string, query: Record | undefined) { + if (!query?.['sort']) { + return { sort: undefined, error: undefined }; + } + + const typeInfo = this.typeMap[lowerCaseFirst(type)]; + if (!typeInfo) { + return { sort: undefined, error: this.makeUnsupportedModelError(type) }; + } + + const result: any[] = []; + + for (const sortSpec of enumerate(query['sort'])) { + const sortFields = sortSpec.split(',').filter((i) => i); + + for (const sortField of sortFields) { + const dir = sortField.startsWith('-') ? 'desc' : 'asc'; + const cleanedSortField = sortField.startsWith('-') ? sortField.substring(1) : sortField; + const parts = cleanedSortField.split('.').filter((i) => i); + + const sortItem: any = {}; + let curr = sortItem; + let currType = typeInfo; + + for (let i = 0; i < parts.length; i++) { + const part = parts[i]; + + const fieldInfo = currType.fields[part]; + if (!fieldInfo || fieldInfo.isArray) { + return { + sort: undefined, + error: this.makeError('invalidSort', 'sorting by array field is not supported'), + }; + } + + if (i === parts.length - 1) { + if (fieldInfo.isDataModel) { + // relation field: sort by id + const relationType = this.typeMap[lowerCaseFirst(fieldInfo.type)]; + if (!relationType) { + return { sort: undefined, error: this.makeUnsupportedModelError(fieldInfo.type) }; + } + curr[fieldInfo.name] = { [relationType.idField]: dir }; + } else { + // regular field + curr[fieldInfo.name] = dir; + } + } else { + if (!fieldInfo.isDataModel) { + // must be a relation field + return { + sort: undefined, + error: this.makeError( + 'invalidSort', + 'intermediate sort segments must be relationships' + ), + }; + } + // keep going + curr = curr[fieldInfo.name] = {}; + currType = this.typeMap[lowerCaseFirst(fieldInfo.type)]; + if (!currType) { + return { sort: undefined, error: this.makeUnsupportedModelError(fieldInfo.type) }; + } + } + + result.push(sortItem); + } + } + } + + return { sort: result, error: undefined }; + } + + private buildRelationSelect(type: string, include: string | string[]) { + const typeInfo = this.typeMap[lowerCaseFirst(type)]; + if (!typeInfo) { + return { select: undefined, error: this.makeUnsupportedModelError(type) }; + } + + const result: any = {}; + const allIncludes: string[] = []; + + for (const includeItem of enumerate(include)) { + const inclusions = includeItem.split(',').filter((i) => i); + for (const inclusion of inclusions) { + allIncludes.push(inclusion); + + const parts = inclusion.split('.'); + let currPayload = result; + let currType = typeInfo; + + for (let i = 0; i < parts.length; i++) { + const relation = parts[i]; + const relationInfo = currType.relationships[relation]; + if (!relationInfo) { + return { select: undefined, error: this.makeUnsupportedRelationshipError(type, relation) }; + } + + currType = this.typeMap[lowerCaseFirst(relationInfo.type)]; + if (!currType) { + return { select: undefined, error: this.makeUnsupportedModelError(relationInfo.type) }; + } + + if (i !== parts.length - 1) { + currPayload[relation] = { include: { ...currPayload[relation]?.include } }; + currPayload = currPayload[relation].include; + } else { + currPayload[relation] = true; + } + } + } + } + + return { select: result, error: undefined, allIncludes }; + } + + private makeFilterValue(fieldInfo: FieldInfo, value: string): any { + if (fieldInfo.isDataModel) { + // relation filter is converted to an ID filter + const info = this.typeMap[lowerCaseFirst(fieldInfo.type)]; + if (fieldInfo.isArray) { + // filtering a to-many relation, imply 'some' operator + return { some: this.makeIdFilter(info.idField, info.idFieldType, value) }; + } else { + return { is: this.makeIdFilter(info.idField, info.idFieldType, value) }; + } + } else { + return this.coerce(fieldInfo.type, value); + } + } + + private injectRelationQuery( + type: string, + injectTarget: any, + injectKey: string, + query: Record | undefined + ) { + const { filter, error: filterError } = this.buildFilter(type, query); + if (filterError) { + return filterError; + } + + if (filter) { + injectTarget[injectKey] = { ...injectTarget[injectKey], where: filter }; + } + + const { sort, error: sortError } = this.buildSort(type, query); + if (sortError) { + return sortError; + } + if (sort) { + injectTarget[injectKey] = { ...injectTarget[injectKey], orderBy: sort }; + } + + const pagination = this.getPagination(query); + const offset = pagination.offset; + if (offset > 0) { + // inject skip + injectTarget[injectKey] = { ...injectTarget[injectKey], skip: offset }; + } + const limit = pagination.limit; + if (limit !== Infinity) { + // inject take + injectTarget[injectKey] = { ...injectTarget[injectKey], take: limit }; + + // include a count query for the relationship + injectTarget._count = { select: { [injectKey]: true } }; + } + } + + private handlePrismaError(err: unknown) { + if (isPrismaClientKnownRequestError(err)) { + if (err.code === 'P2025' || err.code === 'P2018') { + return this.makeError('notFound'); + } else { + return { + status: 400, + body: { + errors: [{ status: 400, code: 'prisma-error', title: 'Prisma error', detail: err.message }], + }, + }; + } + } else { + throw err; + } + } + + private makeError(code: keyof typeof this.errors, detail?: string) { + return { + status: this.errors[code].status, + body: { + errors: [ + { + status: this.errors[code].status, + code: paramCase(code), + title: this.errors[code].title, + detail: detail || this.errors[code].detail, + }, + ], + }, + }; + } + + private makeUnsupportedModelError(model: string) { + return this.makeError('unsupportedModel', `Model ${model} doesn't exist or doesn't have a single ID field`); + } + + private makeUnsupportedRelationshipError(model: string, relationship: string) { + return this.makeError( + 'unsupportedRelationship', + `Relationship ${model}.${relationship} doesn't exist or its type doesn't have a single ID field` + ); + } + + //#endregion +} + +export default function makeHandler(options: Options) { + const handler = new RequestHandler(options); + return handler.handleRequest.bind(handler); +} diff --git a/packages/server/src/api/rpc/index.ts b/packages/server/src/api/rpc/index.ts new file mode 100644 index 00000000..fb18d4a5 --- /dev/null +++ b/packages/server/src/api/rpc/index.ts @@ -0,0 +1,186 @@ +import { + DbOperations, + isPrismaClientKnownRequestError, + isPrismaClientUnknownRequestError, + isPrismaClientValidationError, +} from '@zenstackhq/runtime'; +import { ModelZodSchema } from '@zenstackhq/runtime/zod'; +import { LoggerConfig, RequestContext, Response } from '../types'; +import { logError, stripAuxFields, zodValidate } from '../utils'; + +/** + * Request handler options + */ +export type Options = { + /** + * Logging configuration. Set to `null` to disable logging. + * If unset or set to `undefined`, log will be output to console. + */ + logger?: LoggerConfig | null; + + /** + * Zod schemas for validating create and update payloads. By default + * loaded from the standard output location of the `@zenstackhq/zod` + * plugin. You can pass it in explicitly if you configured the plugin + * to output to a different location. + */ + zodSchemas?: ModelZodSchema; +}; + +/** + * Prisma RPC style API request handler that mirrors the Prisma Client API + */ +class RequestHandler { + constructor(private readonly options: Options = {}) {} + + async handleRequest({ prisma, method, path, query, requestBody }: RequestContext): Promise { + const parts = path.split('/').filter((p) => !!p); + const op = parts.pop(); + const model = parts.pop(); + + if (parts.length !== 0 || !op || !model) { + return { status: 400, body: { message: 'invalid request path' } }; + } + + method = method.toUpperCase(); + const dbOp = op as keyof DbOperations; + let args: unknown; + let resCode = 200; + + switch (dbOp) { + case 'create': + case 'createMany': + case 'upsert': + if (method !== 'POST') { + return { status: 400, body: { message: 'invalid request method, only POST is supported' } }; + } + if (!requestBody) { + return { status: 400, body: { message: 'missing request body' } }; + } + + args = requestBody; + + // TODO: upsert's status code should be conditional + resCode = 201; + break; + + case 'findFirst': + case 'findUnique': + case 'findMany': + case 'aggregate': + case 'groupBy': + case 'count': + if (method !== 'GET') { + return { status: 400, body: { message: 'invalid request method, only GET is supported' } }; + } + try { + args = query?.q ? this.unmarshal(query.q as string) : {}; + } catch { + return { status: 400, body: { message: 'query param must contain valid JSON' } }; + } + break; + + case 'update': + case 'updateMany': + if (method !== 'PUT' && method !== 'PATCH') { + return { + status: 400, + body: { message: 'invalid request method, only PUT AND PATCH are supported' }, + }; + } + if (!requestBody) { + return { status: 400, body: { message: 'missing request body' } }; + } + + args = requestBody; + break; + + case 'delete': + case 'deleteMany': + if (method !== 'DELETE') { + return { status: 400, body: { message: 'invalid request method, only DELETE is supported' } }; + } + try { + args = query?.q ? this.unmarshal(query.q as string) : {}; + } catch { + return { status: 400, body: { message: 'query param must contain valid JSON' } }; + } + break; + + default: + return { status: 400, body: { message: 'invalid operation: ' + op } }; + } + + if (this.options.zodSchemas) { + const { data, error } = zodValidate(this.options.zodSchemas, model, dbOp, args); + if (error) { + return { status: 400, body: { message: error } }; + } else { + args = data; + } + } + + try { + if (!prisma[model]) { + return { status: 400, body: { message: `unknown model name: ${model}` } }; + } + const result = await prisma[model][dbOp](args); + stripAuxFields(result); + return { status: resCode, body: result }; + } catch (err) { + if (isPrismaClientKnownRequestError(err)) { + logError(this.options.logger, err.code, err.message); + if (err.code === 'P2004') { + // rejected by policy + return { + status: 403, + body: { + prisma: true, + rejectedByPolicy: true, + code: err.code, + message: err.message, + reason: err.meta?.reason, + }, + }; + } else { + return { + status: 400, + body: { + prisma: true, + code: err.code, + message: err.message, + reason: err.meta?.reason, + }, + }; + } + } else if (isPrismaClientUnknownRequestError(err) || isPrismaClientValidationError(err)) { + logError(this.options.logger, err.message); + return { + status: 400, + body: { + prisma: true, + message: err.message, + }, + }; + } else { + const _err = err as Error; + logError(this.options.logger, _err.message + (_err.stack ? '\n' + _err.stack : '')); + return { + status: 400, + body: { + message: (err as Error).message, + }, + }; + } + } + } + + private unmarshal(value: string) { + return JSON.parse(value); + } +} + +export default function makeHandler(options?: Options) { + const handler = new RequestHandler(options); + return handler.handleRequest.bind(handler); +} diff --git a/packages/server/src/api/types.ts b/packages/server/src/api/types.ts new file mode 100644 index 00000000..dd053102 --- /dev/null +++ b/packages/server/src/api/types.ts @@ -0,0 +1,48 @@ +import { DbClientContract } from '@zenstackhq/runtime'; + +type LoggerMethod = (message: string, code?: string) => void; + +/** + * Logger config. + */ +export type LoggerConfig = { + debug?: LoggerMethod; + info?: LoggerMethod; + warn?: LoggerMethod; + error?: LoggerMethod; +}; + +/** + * Options for initializing an API endpoint request handler. + * @see requestHandler + */ +export type RequestHandlerOptions = { + /** + * Logger configuration. By default log to console. Set to null to turn off logging. + */ + logger?: LoggerConfig | null; +}; + +/** + * API request context + */ +export type RequestContext = { + prisma: DbClientContract; + method: string; + path: string; + query?: Record; + requestBody?: unknown; +}; + +/** + * API response + */ +export type Response = { + status: number; + body: unknown; +}; + +/** + * API request handler function + */ +export type HandleRequestFn = (req: RequestContext) => Promise; diff --git a/packages/server/src/api/utils.ts b/packages/server/src/api/utils.ts new file mode 100644 index 00000000..eb1828ad --- /dev/null +++ b/packages/server/src/api/utils.ts @@ -0,0 +1,69 @@ +import { DbOperations } from '@zenstackhq/runtime'; +import type { ModelZodSchema } from '@zenstackhq/runtime/zod'; +import { upperCaseFirst } from 'upper-case-first'; +import { fromZodError } from 'zod-validation-error'; +import { AUXILIARY_FIELDS } from '@zenstackhq/sdk'; +import { LoggerConfig } from './types'; + +export function getZodSchema(zodSchemas: ModelZodSchema, model: string, operation: keyof DbOperations) { + if (zodSchemas[model]) { + return zodSchemas[model][operation]; + } else if (zodSchemas[upperCaseFirst(model)]) { + return zodSchemas[upperCaseFirst(model)][operation]; + } else { + return undefined; + } +} + +export function zodValidate( + zodSchemas: ModelZodSchema | undefined, + model: string, + operation: keyof DbOperations, + args: unknown +) { + const zodSchema = zodSchemas && getZodSchema(zodSchemas, model, operation); + if (zodSchema) { + const parseResult = zodSchema.safeParse(args); + if (parseResult.success) { + return { data: parseResult.data, error: undefined }; + } else { + return { data: undefined, error: fromZodError(parseResult.error).message }; + } + } else { + return { data: args, error: undefined }; + } +} + +export function logError(logger: LoggerConfig | undefined | null, message: string, code?: string) { + if (logger === undefined) { + console.error(`@zenstackhq/server: error ${code ? '[' + code + ']' : ''}, ${message}`); + } else if (logger?.error) { + logger.error(message, code); + } +} + +export function logWarning(logger: LoggerConfig | undefined | null, message: string, code?: string) { + if (logger === undefined) { + console.warn(`@zenstackhq/server: error ${code ? '[' + code + ']' : ''}, ${message}`); + } else if (logger?.warn) { + logger.warn(message, code); + } +} + +/** + * Recursively strip auxiliary fields from the given data. + */ +export function stripAuxFields(data: unknown) { + if (Array.isArray(data)) { + return data.forEach(stripAuxFields); + } else if (data && typeof data === 'object') { + for (const [key, value] of Object.entries(data)) { + if (AUXILIARY_FIELDS.includes(key)) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + delete (data as any)[key]; + } else { + stripAuxFields(value); + } + } + } +} diff --git a/packages/server/src/express/middleware.ts b/packages/server/src/express/middleware.ts index 214b30b6..76029cd8 100644 --- a/packages/server/src/express/middleware.ts +++ b/packages/server/src/express/middleware.ts @@ -2,7 +2,8 @@ import { DbClientContract } from '@zenstackhq/runtime'; import { getModelZodSchemas, ModelZodSchema } from '@zenstackhq/runtime/zod'; import type { Handler, Request, Response } from 'express'; -import { handleRequest, LoggerConfig } from '../openapi'; +import RPCAPIHandler from '../api/rpc'; +import { HandleRequestFn, LoggerConfig } from '../api/types'; /** * Express middleware options @@ -23,33 +24,38 @@ export interface MiddlewareOptions { * (need to enable `@core/zod` plugin in schema.zmodel) or omit to disable input validation. */ zodSchemas?: ModelZodSchema | boolean; + + /** + * Api request handler function + */ + handler?: HandleRequestFn; } /** * Creates an Express middleware for handling CRUD requests. */ const factory = (options: MiddlewareOptions): Handler => { - let schemas: ModelZodSchema | undefined; + let zodSchemas: ModelZodSchema | undefined; if (typeof options.zodSchemas === 'object') { - schemas = options.zodSchemas; + zodSchemas = options.zodSchemas; } else if (options.zodSchemas === true) { - schemas = getModelZodSchemas(); + zodSchemas = getModelZodSchemas(); } + const requestHandler = options.handler || RPCAPIHandler({ logger: options.logger, zodSchemas }); + return async (request, response) => { const prisma = (await options.getPrisma(request, response)) as DbClientContract; if (!prisma) { throw new Error('unable to get prisma from request context'); } - const r = await handleRequest({ + const r = await requestHandler({ method: request.method, path: request.path, - query: request.query as Record, + query: request.query as Record, requestBody: request.body, prisma, - logger: options.logger, - zodSchemas: schemas, }); response.status(r.status).json(r.body); diff --git a/packages/server/src/fastify/plugin.ts b/packages/server/src/fastify/plugin.ts index c22d64a2..be6ac3a9 100644 --- a/packages/server/src/fastify/plugin.ts +++ b/packages/server/src/fastify/plugin.ts @@ -3,7 +3,8 @@ import { DbClientContract } from '@zenstackhq/runtime'; import { getModelZodSchemas, ModelZodSchema } from '@zenstackhq/runtime/zod'; import { FastifyPluginCallback, FastifyReply, FastifyRequest } from 'fastify'; import fp from 'fastify-plugin'; -import { handleRequest, LoggerConfig } from '../openapi'; +import RPCApiHandler from '../api/rpc'; +import { HandleRequestFn, LoggerConfig } from '../api/types'; /** * Fastify plugin options @@ -29,6 +30,11 @@ export interface PluginOptions { * (need to enable `@core/zod` plugin in schema.zmodel) or omit to disable input validation. */ zodSchemas?: ModelZodSchema | boolean; + + /** + * Api request handler function + */ + api: HandleRequestFn; } /** @@ -50,6 +56,8 @@ const pluginHandler: FastifyPluginCallback = (fastify, options, d schemas = getModelZodSchemas(); } + const requestHanler = options.api ?? RPCApiHandler({ logger: options.logger, zodSchemas: schemas }); + fastify.all(`${prefix}/*`, async (request, reply) => { const prisma = (await options.getPrisma(request, reply)) as DbClientContract; if (!prisma) { @@ -57,14 +65,12 @@ const pluginHandler: FastifyPluginCallback = (fastify, options, d } const query = request.query as Record; - const response = await handleRequest({ + const response = await requestHanler({ method: request.method, path: (request.params as any)['*'], query, requestBody: request.body, prisma, - logger: options.logger, - zodSchemas: schemas, }); reply.status(response.status).send(response.body); diff --git a/packages/server/src/openapi/index.ts b/packages/server/src/openapi/index.ts deleted file mode 100644 index c4636f88..00000000 --- a/packages/server/src/openapi/index.ts +++ /dev/null @@ -1,246 +0,0 @@ -import { - DbClientContract, - DbOperations, - isPrismaClientKnownRequestError, - isPrismaClientUnknownRequestError, - isPrismaClientValidationError, -} from '@zenstackhq/runtime'; -import type { ModelZodSchema } from '@zenstackhq/runtime/zod'; -import { upperCaseFirst } from 'upper-case-first'; -import { fromZodError } from 'zod-validation-error'; -import { stripAuxFields } from './utils'; - -type LoggerMethod = (message: string, code?: string) => void; - -/** - * Logger config. - */ -export type LoggerConfig = { - debug?: LoggerMethod; - info?: LoggerMethod; - warn?: LoggerMethod; - error?: LoggerMethod; -}; - -/** - * Options for initializing a Next.js API endpoint request handler. - * @see requestHandler - */ -export type RequestHandlerOptions = { - /** - * Logger configuration. By default log to console. Set to null to turn off logging. - */ - logger?: LoggerConfig | null; -}; - -/** - * OpenApi request context. - */ -export type RequestContext = { - method: string; - path: string; - query?: Record; - requestBody?: unknown; - prisma: DbClientContract; - logger?: LoggerConfig; - zodSchemas?: ModelZodSchema; -}; - -/** - * OpenApi response. - */ -export type Response = { - status: number; - body: unknown; -}; - -function getZodSchema(zodSchemas: ModelZodSchema, model: string, operation: keyof DbOperations) { - if (zodSchemas[model]) { - return zodSchemas[model][operation]; - } else if (zodSchemas[upperCaseFirst(model)]) { - return zodSchemas[upperCaseFirst(model)][operation]; - } else { - return undefined; - } -} - -function zodValidate( - zodSchemas: ModelZodSchema | undefined, - model: string, - operation: keyof DbOperations, - args: unknown -) { - const zodSchema = zodSchemas && getZodSchema(zodSchemas, model, operation); - if (zodSchema) { - const parseResult = zodSchema.safeParse(args); - if (parseResult.success) { - return { data: parseResult.data, error: undefined }; - } else { - return { data: undefined, error: fromZodError(parseResult.error).message }; - } - } else { - return { data: args, error: undefined }; - } -} - -/** - * Handles OpenApi requests - */ -export async function handleRequest({ - method, - path, - query, - requestBody, - prisma, - logger, - zodSchemas, -}: RequestContext): Promise { - const parts = path.split('/').filter((p) => !!p); - const op = parts.pop(); - const model = parts.pop(); - - if (parts.length !== 0 || !op || !model) { - return { status: 400, body: { message: 'invalid request path' } }; - } - - method = method.toUpperCase(); - const dbOp = op as keyof DbOperations; - let args: unknown; - let resCode = 200; - - switch (dbOp) { - case 'create': - case 'createMany': - case 'upsert': - if (method !== 'POST') { - return { status: 400, body: { message: 'invalid request method, only POST is supported' } }; - } - if (!requestBody) { - return { status: 400, body: { message: 'missing request body' } }; - } - - args = requestBody; - - // TODO: upsert's status code should be conditional - resCode = 201; - break; - - case 'findFirst': - case 'findUnique': - case 'findMany': - case 'aggregate': - case 'groupBy': - case 'count': - if (method !== 'GET') { - return { status: 400, body: { message: 'invalid request method, only GET is supported' } }; - } - try { - args = query?.q ? unmarshal(query.q as string) : {}; - } catch { - return { status: 400, body: { message: 'query param must contain valid JSON' } }; - } - break; - - case 'update': - case 'updateMany': - if (method !== 'PUT' && method !== 'PATCH') { - return { status: 400, body: { message: 'invalid request method, only PUT AND PATCH are supported' } }; - } - if (!requestBody) { - return { status: 400, body: { message: 'missing request body' } }; - } - - args = requestBody; - break; - - case 'delete': - case 'deleteMany': - if (method !== 'DELETE') { - return { status: 400, body: { message: 'invalid request method, only DELETE is supported' } }; - } - try { - args = query?.q ? unmarshal(query.q as string) : {}; - } catch { - return { status: 400, body: { message: 'query param must contain valid JSON' } }; - } - break; - - default: - return { status: 400, body: { message: 'invalid operation: ' + op } }; - } - - if (zodSchemas) { - const { data, error } = zodValidate(zodSchemas, model, dbOp, args); - if (error) { - return { status: 400, body: { message: error } }; - } else { - args = data; - } - } - - try { - if (!prisma[model]) { - return { status: 400, body: { message: `unknown model name: ${model}` } }; - } - const result = await prisma[model][dbOp](args); - stripAuxFields(result); - return { status: resCode, body: result }; - } catch (err) { - if (isPrismaClientKnownRequestError(err)) { - logError(logger, err.code, err.message); - if (err.code === 'P2004') { - // rejected by policy - return { - status: 403, - body: { - prisma: true, - rejectedByPolicy: true, - code: err.code, - message: err.message, - reason: err.meta?.reason, - }, - }; - } else { - return { - status: 400, - body: { - prisma: true, - code: err.code, - message: err.message, - reason: err.meta?.reason, - }, - }; - } - } else if (isPrismaClientUnknownRequestError(err) || isPrismaClientValidationError(err)) { - logError(logger, err.message); - return { - status: 400, - body: { - prisma: true, - message: err.message, - }, - }; - } else { - const _err = err as Error; - logError(logger, _err.message + (_err.stack ? '\n' + _err.stack : '')); - return { - status: 400, - body: { - message: (err as Error).message, - }, - }; - } - } -} - -function unmarshal(value: string) { - return JSON.parse(value); -} - -function logError(logger: LoggerConfig | undefined | null, message: string, code?: string) { - if (logger === undefined) { - console.error(`@zenstackhq/server: error ${code ? '[' + code + ']' : ''}, ${message}`); - } else if (logger?.error) { - logger.error(message, code); - } -} diff --git a/packages/server/src/openapi/utils.ts b/packages/server/src/openapi/utils.ts deleted file mode 100644 index 9680ead3..00000000 --- a/packages/server/src/openapi/utils.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { AUXILIARY_FIELDS } from '@zenstackhq/sdk'; - -/** - * Recursively strip auxiliary fields from the given data. - */ -export function stripAuxFields(data: unknown) { - if (Array.isArray(data)) { - return data.forEach(stripAuxFields); - } else if (data && typeof data === 'object') { - for (const [key, value] of Object.entries(data)) { - if (AUXILIARY_FIELDS.includes(key)) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - delete (data as any)[key]; - } else { - stripAuxFields(value); - } - } - } -} diff --git a/packages/server/tests/api/rest/express-adapter.test.ts b/packages/server/tests/api/rest/express-adapter.test.ts new file mode 100644 index 00000000..20c84399 --- /dev/null +++ b/packages/server/tests/api/rest/express-adapter.test.ts @@ -0,0 +1,56 @@ +/// + +import { loadSchema } from '@zenstackhq/testtools'; +import bodyParser from 'body-parser'; +import express from 'express'; +import request from 'supertest'; +import { ZenStackMiddleware } from '../../../src/express'; +import { makeUrl, schema } from '../../utils'; +import RESTAPIHandler from '../../../src/api/rest'; + +describe('Express adapter tests', () => { + it('run middleware', async () => { + const { prisma, zodSchemas, modelMeta } = await loadSchema(schema); + + const app = express(); + app.use(bodyParser.json()); + app.use( + '/api', + ZenStackMiddleware({ + getPrisma: () => prisma, + zodSchemas, + handler: RESTAPIHandler({ endpoint: 'http://localhost/api', modelMeta }), + }) + ); + + let r = await request(app).get(makeUrl('/api/post/1')); + expect(r.status).toBe(404); + + r = await request(app) + .post('/api/user') + .send({ + data: { + type: 'user', + attributes: { + id: 'user1', + email: 'user1@abc.com', + }, + }, + }); + + expect(r.status).toBe(201); + expect(r.body).toMatchObject({ + jsonapi: { version: '1.0' }, + data: { type: 'user', id: 'user1', attributes: { email: 'user1@abc.com' } }, + }); + + r = await request(app) + .put('/api/user/user1') + .send({ data: { type: 'user', attributes: { email: 'user1@def.com' } } }); + expect(r.status).toBe(200); + expect(r.body.data.attributes.email).toBe('user1@def.com'); + + r = await request(app).delete(makeUrl('/api/user/user1', { where: { id: 'user1' } })); + expect(r.status).toBe(204); + }); +}); diff --git a/packages/server/tests/api/rest/rest.test.ts b/packages/server/tests/api/rest/rest.test.ts new file mode 100644 index 00000000..5bcee813 --- /dev/null +++ b/packages/server/tests/api/rest/rest.test.ts @@ -0,0 +1,1664 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/// + +import { loadSchema, run } from '@zenstackhq/testtools'; +import { ModelMeta } from '@zenstackhq/runtime/enhancements/types'; +import makeHandler from '../../../src/api/rest'; +import { HandleRequestFn } from '../../../src/api/types'; + +let prisma: any; +let zodSchemas: any; +let modelMeta: ModelMeta; +let handler: HandleRequestFn; + +export const schema = ` +model User { + myId String @id @default(cuid()) + createdAt DateTime @default (now()) + updatedAt DateTime @updatedAt + email String @unique + posts Post[] + profile Profile? +} + +model Profile { + id Int @id @default(autoincrement()) + gender String + user User @relation(fields: [userId], references: [myId]) + userId String @unique +} + +model Post { + id Int @id @default(autoincrement()) + createdAt DateTime @default (now()) + updatedAt DateTime @updatedAt + title String + author User? @relation(fields: [authorId], references: [myId]) + authorId String? + published Boolean @default(false) + viewCount Int @default(0) + comments Comment[] + setting Setting? +} + +model Comment { + id Int @id @default(autoincrement()) + post Post @relation(fields: [postId], references: [id]) + postId Int + content String +} + +model Setting { + id Int @id @default(autoincrement()) + boost Int + post Post @relation(fields: [postId], references: [id]) + postId Int @unique +} +`; + +describe('REST server tests', () => { + beforeAll(async () => { + const params = await loadSchema(schema); + + prisma = params.prisma; + zodSchemas = params.zodSchemas; + modelMeta = params.modelMeta; + handler = makeHandler({ zodSchemas, modelMeta, endpoint: 'http://localhost/api', pageSize: 5 }); + }); + + beforeEach(async () => { + run('npx prisma migrate reset --force'); + run('npx prisma db push'); + }); + + describe('CRUD', () => { + describe('GET', () => { + it('returns an empty array when no item exists', async () => { + const r = await handler({ + method: 'get', + path: '/user', + prisma, + }); + expect(r.status).toBe(200); + expect(r.body).toMatchObject({ + data: [], + links: { + self: 'http://localhost/api/user', + }, + }); + }); + + it('returns all items when there are some in the database', async () => { + // Create users first + await prisma.user.create({ + data: { + myId: 'user1', + email: 'user1@abc.com', + posts: { + create: { title: 'Post1' }, + }, + }, + }); + await prisma.user.create({ + data: { + myId: 'user2', + email: 'user2@abc.com', + posts: { + create: { title: 'Post2' }, + }, + }, + }); + + const r = await handler({ + method: 'get', + path: '/user', + prisma, + }); + + expect(r.status).toBe(200); + expect(r.body).toMatchObject({ + links: { + self: 'http://localhost/api/user', + }, + data: [ + { + type: 'user', + id: 'user1', + attributes: { email: 'user1@abc.com' }, + links: { + self: 'http://localhost/api/user/user1', + }, + relationships: { + posts: { + links: { + self: 'http://localhost/api/user/user1/relationships/posts', + related: 'http://localhost/api/user/user1/posts', + }, + data: [{ type: 'post', id: 1 }], + }, + }, + }, + { + type: 'user', + id: 'user2', + attributes: { email: 'user2@abc.com' }, + links: { + self: 'http://localhost/api/user/user2', + }, + relationships: { + posts: { + links: { + self: 'http://localhost/api/user/user2/relationships/posts', + related: 'http://localhost/api/user/user2/posts', + }, + data: [{ type: 'post', id: 2 }], + }, + }, + }, + ], + }); + }); + + it('returns a single item when the ID is specified', async () => { + // Create a user first + await prisma.user.create({ + data: { myId: 'user1', email: 'user1@abc.com', posts: { create: { title: 'Post1' } } }, + }); + + const r = await handler({ + method: 'get', + path: '/user/user1', + prisma, + }); + + expect(r.status).toBe(200); + expect(r.body).toMatchObject({ + data: { + type: 'user', + id: 'user1', + attributes: { email: 'user1@abc.com' }, + links: { + self: 'http://localhost/api/user/user1', + }, + relationships: { + posts: { + links: { + self: 'http://localhost/api/user/user1/relationships/posts', + related: 'http://localhost/api/user/user1/posts', + }, + data: [{ type: 'post', id: 1 }], + }, + }, + }, + }); + }); + + it('fetch a related resource', async () => { + // Create a user first + await prisma.user.create({ + data: { + myId: 'user1', + email: 'user1@abc.com', + posts: { + create: { id: 1, title: 'Post1' }, + }, + }, + }); + + const r = await handler({ + method: 'get', + path: '/user/user1/posts', + prisma, + }); + + expect(r.status).toBe(200); + expect(r.body).toMatchObject({ + links: { + self: 'http://localhost/api/user/user1/posts', + }, + data: [ + { + type: 'post', + id: 1, + attributes: { + title: 'Post1', + authorId: 'user1', + published: false, + viewCount: 0, + }, + links: { + self: 'http://localhost/api/post/1', + }, + relationships: { + author: { + links: { + self: 'http://localhost/api/post/1/relationships/author', + related: 'http://localhost/api/post/1/author', + }, + }, + }, + }, + ], + }); + }); + + it('fetch a relationship', async () => { + // Create a user first + await prisma.user.create({ + data: { + myId: 'user1', + email: 'user1@abc.com', + posts: { + create: { id: 1, title: 'Post1' }, + }, + }, + }); + + const r = await handler({ + method: 'get', + path: '/user/user1/relationships/posts', + prisma, + }); + + expect(r.status).toBe(200); + expect(r.body).toMatchObject({ + links: { + self: 'http://localhost/api/user/user1/relationships/posts', + }, + data: [{ type: 'post', id: 1 }], + }); + }); + + it('returns 404 if the specified ID does not exist', async () => { + const r = await handler({ + method: 'get', + path: '/user/nonexistentuser', + prisma, + }); + + expect(r.status).toBe(404); + expect(r.body).toEqual({ + errors: [ + { + code: 'not-found', + status: 404, + title: 'Resource not found', + }, + ], + }); + }); + + it('toplevel filtering', async () => { + await prisma.user.create({ + data: { + myId: 'user1', + email: 'user1@abc.com', + posts: { + create: { id: 1, title: 'Post1' }, + }, + }, + }); + await prisma.user.create({ + data: { + myId: 'user2', + email: 'user2@abc.com', + posts: { + create: { id: 2, title: 'Post2', viewCount: 1, published: true }, + }, + }, + }); + + // id filter + let r = await handler({ + method: 'get', + path: '/user', + query: { ['filter[id]']: 'user2' }, + prisma, + }); + expect(r.status).toBe(200); + expect((r.body as any).data).toHaveLength(1); + expect((r.body as any).data[0]).toMatchObject({ id: 'user2' }); + + // attribute filter + r = await handler({ + method: 'get', + path: '/user', + query: { ['filter[email]']: 'user1@abc.com' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(1); + expect((r.body as any).data[0]).toMatchObject({ id: 'user1' }); + + // filter to empty + r = await handler({ + method: 'get', + path: '/user', + query: { ['filter[id]']: 'user3' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(0); + + // to-many relation collection filter + r = await handler({ + method: 'get', + path: '/user', + query: { ['filter[posts]']: '2' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(1); + expect((r.body as any).data[0]).toMatchObject({ id: 'user2' }); + + // multi filter + r = await handler({ + method: 'get', + path: '/user', + query: { ['filter[id]']: 'user1', ['filter[posts]']: '2' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(0); + + // Int filter + r = await handler({ + method: 'get', + path: '/post', + query: { ['filter[viewCount]']: '1' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(1); + expect((r.body as any).data[0]).toMatchObject({ id: 2 }); + + // Boolean filter + r = await handler({ + method: 'get', + path: '/post', + query: { ['filter[published]']: 'true' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(1); + expect((r.body as any).data[0]).toMatchObject({ id: 2 }); + + // to-one relation filter + r = await handler({ + method: 'get', + path: '/post', + query: { ['filter[author]']: 'user1' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(1); + expect((r.body as any).data[0]).toMatchObject({ id: 1 }); + + // invalid filter field + r = await handler({ + method: 'get', + path: '/user', + query: { ['filter[foo]']: '1' }, + prisma, + }); + expect(r.body).toMatchObject({ + errors: [ + { + status: 400, + code: 'invalid-filter', + title: 'Invalid filter', + }, + ], + }); + + // invalid filter value + r = await handler({ + method: 'get', + path: '/post', + query: { ['filter[viewCount]']: 'a' }, + prisma, + }); + expect(r.body).toMatchObject({ + errors: [ + { + status: 400, + code: 'invalid-value', + title: 'Invalid value for type', + }, + ], + }); + }); + + it('related data filtering', async () => { + await prisma.user.create({ + data: { + myId: 'user1', + email: 'user1@abc.com', + posts: { + create: { id: 1, title: 'Post1' }, + }, + }, + }); + await prisma.user.create({ + data: { + myId: 'user2', + email: 'user2@abc.com', + posts: { + create: { id: 2, title: 'Post2', viewCount: 1, published: true }, + }, + }, + }); + + let r = await handler({ + method: 'get', + path: '/user/user1/posts', + query: { ['filter[viewCount]']: '1' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(0); + + r = await handler({ + method: 'get', + path: '/user/user2/posts', + query: { ['filter[viewCount]']: '1' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(1); + }); + + it('relationship filtering', async () => { + await prisma.user.create({ + data: { + myId: 'user1', + email: 'user1@abc.com', + posts: { + create: { id: 1, title: 'Post1' }, + }, + }, + }); + await prisma.user.create({ + data: { + myId: 'user2', + email: 'user2@abc.com', + posts: { + create: { id: 2, title: 'Post2', viewCount: 1, published: true }, + }, + }, + }); + + let r = await handler({ + method: 'get', + path: '/user/user1/relationships/posts', + query: { ['filter[viewCount]']: '1' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(0); + + r = await handler({ + method: 'get', + path: '/user/user2/relationships/posts', + query: { ['filter[viewCount]']: '1' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(1); + }); + + it('toplevel sorting', async () => { + await prisma.user.create({ + data: { + myId: 'user1', + email: 'user1@abc.com', + posts: { + create: { id: 1, title: 'Post1', viewCount: 1, published: true }, + }, + }, + }); + await prisma.user.create({ + data: { + myId: 'user2', + email: 'user2@abc.com', + posts: { + create: { id: 2, title: 'Post2', viewCount: 2, published: false }, + }, + }, + }); + + // basic sorting + let r = await handler({ + method: 'get', + path: '/post', + query: { sort: 'viewCount' }, + prisma, + }); + expect(r.status).toBe(200); + expect((r.body as any).data[0]).toMatchObject({ id: 1 }); + + // basic sorting desc + r = await handler({ + method: 'get', + path: '/post', + query: { sort: '-viewCount' }, + prisma, + }); + expect(r.status).toBe(200); + expect((r.body as any).data[0]).toMatchObject({ id: 2 }); + + // by relation id + r = await handler({ + method: 'get', + path: '/post', + query: { sort: '-author' }, + prisma, + }); + expect(r.status).toBe(200); + expect((r.body as any).data[0]).toMatchObject({ id: 2 }); + + // by relation field + r = await handler({ + method: 'get', + path: '/post', + query: { sort: '-author.email' }, + prisma, + }); + expect(r.status).toBe(200); + expect((r.body as any).data[0]).toMatchObject({ id: 2 }); + + // multi-field sorting + r = await handler({ + method: 'get', + path: '/post', + query: { sort: 'published,viewCount' }, + prisma, + }); + expect(r.status).toBe(200); + expect((r.body as any).data[0]).toMatchObject({ id: 2 }); + + r = await handler({ + method: 'get', + path: '/post', + query: { sort: 'viewCount,published' }, + prisma, + }); + expect(r.status).toBe(200); + expect((r.body as any).data[0]).toMatchObject({ id: 1 }); + + r = await handler({ + method: 'get', + path: '/post', + query: { sort: '-viewCount,-published' }, + prisma, + }); + expect(r.status).toBe(200); + expect((r.body as any).data[0]).toMatchObject({ id: 2 }); + + // invalid field + r = await handler({ + method: 'get', + path: '/post', + query: { sort: 'foo' }, + prisma, + }); + expect(r.status).toBe(400); + expect(r.body).toMatchObject({ + errors: [ + { + status: 400, + code: 'invalid-sort', + }, + ], + }); + + // sort with collection + r = await handler({ + method: 'get', + path: '/post', + query: { sort: 'comments' }, + prisma, + }); + expect(r.status).toBe(400); + expect(r.body).toMatchObject({ + errors: [ + { + status: 400, + code: 'invalid-sort', + }, + ], + }); + + // sort with regular field in the middle + r = await handler({ + method: 'get', + path: '/post', + query: { sort: 'viewCount.foo' }, + prisma, + }); + expect(r.status).toBe(400); + expect(r.body).toMatchObject({ + errors: [ + { + status: 400, + code: 'invalid-sort', + }, + ], + }); + }); + + it('related data sorting', async () => { + await prisma.user.create({ + data: { + myId: 'user1', + email: 'user1@abc.com', + posts: { + create: [ + { + id: 1, + title: 'Post1', + viewCount: 1, + published: true, + setting: { create: { boost: 1 } }, + }, + { + id: 2, + title: 'Post2', + viewCount: 2, + published: false, + setting: { create: { boost: 2 } }, + }, + ], + }, + }, + }); + + // asc + let r = await handler({ + method: 'get', + path: '/user/user1/posts', + query: { sort: 'viewCount' }, + prisma, + }); + expect(r.status).toBe(200); + expect((r.body as any).data[0]).toMatchObject({ id: 1 }); + + // desc + r = await handler({ + method: 'get', + path: '/user/user1/posts', + query: { sort: '-viewCount' }, + prisma, + }); + expect(r.status).toBe(200); + expect((r.body as any).data[0]).toMatchObject({ id: 2 }); + + // relation field + r = await handler({ + method: 'get', + path: '/user/user1/posts', + query: { sort: '-setting.boost' }, + prisma, + }); + expect(r.status).toBe(200); + expect((r.body as any).data[0]).toMatchObject({ id: 2 }); + }); + + it('relationship sorting', async () => { + await prisma.user.create({ + data: { + myId: 'user1', + email: 'user1@abc.com', + posts: { + create: [ + { + id: 1, + title: 'Post1', + viewCount: 1, + published: true, + setting: { create: { boost: 1 } }, + }, + { + id: 2, + title: 'Post2', + viewCount: 2, + published: false, + setting: { create: { boost: 2 } }, + }, + ], + }, + }, + }); + + // asc + let r = await handler({ + method: 'get', + path: '/user/user1/relationships/posts', + query: { sort: 'viewCount' }, + prisma, + }); + expect(r.status).toBe(200); + expect((r.body as any).data[0]).toMatchObject({ id: 1 }); + + // desc + r = await handler({ + method: 'get', + path: '/user/user1/relationships/posts', + query: { sort: '-viewCount' }, + prisma, + }); + expect(r.status).toBe(200); + expect((r.body as any).data[0]).toMatchObject({ id: 2 }); + + // relation field + r = await handler({ + method: 'get', + path: '/user/user1/relationships/posts', + query: { sort: '-setting.boost' }, + prisma, + }); + expect(r.status).toBe(200); + expect((r.body as any).data[0]).toMatchObject({ id: 2 }); + }); + + it('including', async () => { + await prisma.user.create({ + data: { + myId: 'user1', + email: 'user1@abc.com', + posts: { + create: { id: 1, title: 'Post1', comments: { create: { content: 'Comment1' } } }, + }, + profile: { + create: { gender: 'male' }, + }, + }, + }); + await prisma.user.create({ + data: { + myId: 'user2', + email: 'user2@abc.com', + posts: { + create: { + id: 2, + title: 'Post2', + viewCount: 1, + published: true, + comments: { create: { content: 'Comment2' } }, + }, + }, + }, + }); + + // collection query include + let r = await handler({ + method: 'get', + path: '/user', + query: { include: 'posts' }, + prisma, + }); + expect((r.body as any).included).toHaveLength(2); + expect((r.body as any).included[0]).toMatchObject({ + type: 'post', + id: 1, + attributes: { title: 'Post1' }, + }); + + // single query include + r = await handler({ + method: 'get', + path: '/user/user1', + query: { include: 'posts' }, + prisma, + }); + expect((r.body as any).included).toHaveLength(1); + expect((r.body as any).included[0]).toMatchObject({ + type: 'post', + id: 1, + attributes: { title: 'Post1' }, + }); + + // related query include + r = await handler({ + method: 'get', + path: '/user/user1/posts', + query: { include: 'posts.comments' }, + prisma, + }); + expect((r.body as any).included).toHaveLength(1); + expect((r.body as any).included[0]).toMatchObject({ + type: 'comment', + attributes: { content: 'Comment1' }, + }); + + // related query include with filter + r = await handler({ + method: 'get', + path: '/user/user1/posts', + query: { include: 'posts.comments', ['filter[published]']: 'true' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(0); + + // deep include + r = await handler({ + method: 'get', + path: '/user', + query: { include: 'posts.comments' }, + prisma, + }); + expect((r.body as any).included).toHaveLength(3); + expect((r.body as any).included[2]).toMatchObject({ + type: 'comment', + attributes: { content: 'Comment1' }, + }); + + // multiple include + r = await handler({ + method: 'get', + path: '/user', + query: { include: 'posts.comments,profile' }, + prisma, + }); + expect((r.body as any).included).toHaveLength(4); + const profile = (r.body as any).included.find((item: any) => item.type === 'profile'); + expect(profile).toMatchObject({ + type: 'profile', + attributes: { gender: 'male' }, + }); + + // invalid include + r = await handler({ + method: 'get', + path: '/user', + query: { include: 'foo' }, + prisma, + }); + expect(r.status).toBe(400); + expect(r.body).toMatchObject({ + errors: [{ status: 400, code: 'unsupported-relationship' }], + }); + }); + + it('toplevel pagination', async () => { + for (const i of Array(5).keys()) { + await prisma.user.create({ + data: { + myId: `user${i}`, + email: `user${i}@abc.com`, + }, + }); + } + + // limit only + let r = await handler({ + method: 'get', + path: '/user', + query: { ['page[limit]']: '3' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(3); + expect((r.body as any).links).toMatchObject({ + first: 'http://localhost/api/user?page%5Blimit%5D=3', + last: 'http://localhost/api/user?page%5Boffset%5D=3', + prev: null, + next: 'http://localhost/api/user?page%5Boffset%5D=3&page%5Blimit%5D=3', + }); + + // limit & offset + r = await handler({ + method: 'get', + path: '/user', + query: { ['page[limit]']: '3', ['page[offset]']: '3' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(2); + expect((r.body as any).links).toMatchObject({ + first: 'http://localhost/api/user?page%5Blimit%5D=3', + last: 'http://localhost/api/user?page%5Boffset%5D=3', + prev: 'http://localhost/api/user?page%5Boffset%5D=0&page%5Blimit%5D=3', + next: null, + }); + + // limit trimmed + r = await handler({ + method: 'get', + path: '/user', + query: { ['page[limit]']: '10' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(5); + expect((r.body as any).links).toMatchObject({ + first: 'http://localhost/api/user?page%5Blimit%5D=5', + last: 'http://localhost/api/user?page%5Boffset%5D=0', + prev: null, + next: null, + }); + + // offset overflow + r = await handler({ + method: 'get', + path: '/user', + query: { ['page[offset]']: '10' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(0); + expect((r.body as any).links).toMatchObject({ + first: 'http://localhost/api/user?page%5Blimit%5D=5', + last: 'http://localhost/api/user?page%5Boffset%5D=0', + prev: null, + next: null, + }); + + // minus offset + r = await handler({ + method: 'get', + path: '/user', + query: { ['page[offset]']: '-1' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(5); + expect((r.body as any).links).toMatchObject({ + first: 'http://localhost/api/user?page%5Blimit%5D=5', + last: 'http://localhost/api/user?page%5Boffset%5D=0', + prev: null, + next: null, + }); + + // zero limit + r = await handler({ + method: 'get', + path: '/user', + query: { ['page[limit]']: '0' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(5); + expect((r.body as any).links).toMatchObject({ + first: 'http://localhost/api/user?page%5Blimit%5D=5', + last: 'http://localhost/api/user?page%5Boffset%5D=0', + prev: null, + next: null, + }); + }); + + it('related data pagination', async () => { + await prisma.user.create({ + data: { + myId: `user1`, + email: `user1@abc.com`, + posts: { + create: [...Array(10).keys()].map((i) => ({ + id: i, + title: `Post${i}`, + })), + }, + }, + }); + + // default limiting + let r = await handler({ + method: 'get', + path: '/user/user1/posts', + prisma, + }); + expect((r.body as any).data).toHaveLength(5); + expect((r.body as any).links).toMatchObject({ + self: 'http://localhost/api/user/user1/posts', + first: 'http://localhost/api/user/user1/posts?page%5Blimit%5D=5', + last: 'http://localhost/api/user/user1/posts?page%5Boffset%5D=5', + prev: null, + next: 'http://localhost/api/user/user1/posts?page%5Boffset%5D=5&page%5Blimit%5D=5', + }); + + // explicit limiting + r = await handler({ + method: 'get', + path: '/user/user1/posts', + query: { ['page[limit]']: '3' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(3); + expect((r.body as any).links).toMatchObject({ + self: 'http://localhost/api/user/user1/posts', + first: 'http://localhost/api/user/user1/posts?page%5Blimit%5D=3', + last: 'http://localhost/api/user/user1/posts?page%5Boffset%5D=9', + prev: null, + next: 'http://localhost/api/user/user1/posts?page%5Boffset%5D=3&page%5Blimit%5D=3', + }); + + // offset + r = await handler({ + method: 'get', + path: '/user/user1/posts', + query: { ['page[limit]']: '3', ['page[offset]']: '8' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(2); + expect((r.body as any).links).toMatchObject({ + self: 'http://localhost/api/user/user1/posts', + first: 'http://localhost/api/user/user1/posts?page%5Blimit%5D=3', + last: 'http://localhost/api/user/user1/posts?page%5Boffset%5D=9', + prev: 'http://localhost/api/user/user1/posts?page%5Boffset%5D=5&page%5Blimit%5D=3', + next: null, + }); + }); + + it('relationship pagination', async () => { + await prisma.user.create({ + data: { + myId: `user1`, + email: `user1@abc.com`, + posts: { + create: [...Array(10).keys()].map((i) => ({ + id: i, + title: `Post${i}`, + })), + }, + }, + }); + + // default limiting + let r = await handler({ + method: 'get', + path: '/user/user1/relationships/posts', + prisma, + }); + expect((r.body as any).data).toHaveLength(5); + expect((r.body as any).links).toMatchObject({ + self: 'http://localhost/api/user/user1/relationships/posts', + first: 'http://localhost/api/user/user1/relationships/posts?page%5Blimit%5D=5', + last: 'http://localhost/api/user/user1/relationships/posts?page%5Boffset%5D=5', + prev: null, + next: 'http://localhost/api/user/user1/relationships/posts?page%5Boffset%5D=5&page%5Blimit%5D=5', + }); + + // explicit limiting + r = await handler({ + method: 'get', + path: '/user/user1/relationships/posts', + query: { ['page[limit]']: '3' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(3); + expect((r.body as any).links).toMatchObject({ + self: 'http://localhost/api/user/user1/relationships/posts', + first: 'http://localhost/api/user/user1/relationships/posts?page%5Blimit%5D=3', + last: 'http://localhost/api/user/user1/relationships/posts?page%5Boffset%5D=9', + prev: null, + next: 'http://localhost/api/user/user1/relationships/posts?page%5Boffset%5D=3&page%5Blimit%5D=3', + }); + + // offset + r = await handler({ + method: 'get', + path: '/user/user1/relationships/posts', + query: { ['page[limit]']: '3', ['page[offset]']: '8' }, + prisma, + }); + expect((r.body as any).data).toHaveLength(2); + expect((r.body as any).links).toMatchObject({ + self: 'http://localhost/api/user/user1/relationships/posts', + first: 'http://localhost/api/user/user1/relationships/posts?page%5Blimit%5D=3', + last: 'http://localhost/api/user/user1/relationships/posts?page%5Boffset%5D=9', + prev: 'http://localhost/api/user/user1/relationships/posts?page%5Boffset%5D=5&page%5Blimit%5D=3', + next: null, + }); + }); + }); + + describe('POST', () => { + it('creates an item without relation', async () => { + const r = await handler({ + method: 'post', + path: '/user', + query: {}, + requestBody: { + data: { type: 'user', attributes: { myId: 'user1', email: 'user1@abc.com' } }, + }, + prisma, + }); + + expect(r.status).toBe(201); + expect(r.body).toMatchObject({ + jsonapi: { version: '1.0' }, + data: { type: 'user', id: 'user1', attributes: { email: 'user1@abc.com' } }, + }); + }); + + it('creates an item with collection relations', async () => { + await prisma.post.create({ + data: { id: 1, title: 'Post1' }, + }); + await prisma.post.create({ + data: { id: 2, title: 'Post2' }, + }); + + const r = await handler({ + method: 'post', + path: '/user', + query: {}, + requestBody: { + data: { + type: 'user', + attributes: { myId: 'user1', email: 'user1@abc.com' }, + relationships: { + posts: { + data: [ + { type: 'post', id: 1 }, + { type: 'post', id: 2 }, + ], + }, + }, + }, + }, + prisma, + }); + + expect(r.status).toBe(201); + expect(r.body).toMatchObject({ + jsonapi: { version: '1.0' }, + data: { + type: 'user', + id: 'user1', + attributes: { + email: 'user1@abc.com', + }, + links: { + self: 'http://localhost/api/user/user1', + }, + relationships: { + posts: { + links: { + self: 'http://localhost/api/user/user1/relationships/posts', + related: 'http://localhost/api/user/user1/posts', + }, + data: [ + { type: 'post', id: 1 }, + { type: 'post', id: 2 }, + ], + }, + }, + }, + }); + }); + + it('creates an item with single relation', async () => { + await prisma.user.create({ + data: { myId: 'user1', email: 'user1@abc.com' }, + }); + + const r = await handler({ + method: 'post', + path: '/post', + query: {}, + requestBody: { + data: { + type: 'post', + attributes: { title: 'Post1' }, + relationships: { + author: { + data: { type: 'user', id: 'user1' }, + }, + }, + }, + }, + prisma, + }); + + expect(r.status).toBe(201); + expect(r.body).toMatchObject({ + links: { + self: 'http://localhost/api/post/1', + }, + data: { + type: 'post', + id: 1, + attributes: { + title: 'Post1', + authorId: 'user1', + published: false, + viewCount: 0, + }, + links: { + self: 'http://localhost/api/post/1', + }, + relationships: { + author: { + links: { + self: 'http://localhost/api/post/1/relationships/author/user1', + related: 'http://localhost/api/post/1/author/user1', + }, + data: { type: 'user', id: 'user1' }, + }, + }, + }, + }); + }); + + it('create single relation disallowed', async () => { + await prisma.user.create({ data: { myId: 'user1', email: 'user1@abc.com' } }); + await prisma.post.create({ + data: { id: 1, title: 'Post1' }, + }); + + const r = await handler({ + method: 'post', + path: '/post/1/relationships/author', + query: {}, + requestBody: { + data: { type: 'user', id: 'user1' }, + }, + prisma, + }); + + expect(r.status).toBe(400); + expect(r.body).toMatchObject({ + errors: [ + { + status: 400, + code: 'invalid-verb', + title: 'The HTTP verb is not supported', + }, + ], + }); + }); + + it('create a collection of relations', async () => { + await prisma.user.create({ data: { myId: 'user1', email: 'user1@abc.com' } }); + await prisma.post.create({ + data: { id: 1, title: 'Post1' }, + }); + await prisma.post.create({ + data: { id: 2, title: 'Post2' }, + }); + + const r = await handler({ + method: 'post', + path: '/user/user1/relationships/posts', + query: {}, + requestBody: { + data: [ + { type: 'post', id: 1 }, + { type: 'post', id: 2 }, + ], + }, + prisma, + }); + + expect(r.status).toBe(200); + expect(r.body).toMatchObject({ + links: { + self: 'http://localhost/api/user/user1/relationships/posts', + }, + data: [ + { type: 'post', id: 1 }, + { type: 'post', id: 2 }, + ], + }); + }); + + it('create relation for nonexistent entity', async () => { + let r = await handler({ + method: 'post', + path: '/user/user1/relationships/posts', + query: {}, + requestBody: { + data: [{ type: 'post', id: 1 }], + }, + prisma, + }); + + expect(r.status).toBe(404); + + await prisma.user.create({ + data: { myId: 'user1', email: 'user1@abc.com' }, + }); + + r = await handler({ + method: 'post', + path: '/user/user1/relationships/posts', + query: {}, + requestBody: { data: [{ type: 'post', id: 1 }] }, + prisma, + }); + + expect(r.status).toBe(404); + }); + }); + + describe('PUT', () => { + it('updates an item if it exists', async () => { + await prisma.user.create({ + data: { + myId: 'user1', + email: 'user1@abc.com', + }, + }); + await prisma.post.create({ + data: { id: 1, title: 'Post1' }, + }); + await prisma.post.create({ + data: { id: 2, title: 'Post2' }, + }); + + const r = await handler({ + method: 'put', + path: '/user/user1', + query: {}, + requestBody: { + data: { + type: 'user', + attributes: { email: 'user2@abc.com' }, + relationships: { + posts: { + data: [ + { type: 'post', id: 1 }, + { type: 'post', id: 2 }, + ], + }, + }, + }, + }, + prisma, + }); + + expect(r.status).toBe(200); + expect(r.body).toMatchObject({ + links: { + self: 'http://localhost/api/user/user1', + }, + data: { + type: 'user', + id: 'user1', + attributes: { + email: 'user2@abc.com', + }, + links: { + self: 'http://localhost/api/user/user1', + }, + relationships: { + posts: { + links: { + self: 'http://localhost/api/user/user1/relationships/posts', + related: 'http://localhost/api/user/user1/posts', + }, + data: [ + { type: 'post', id: 1 }, + { type: 'post', id: 2 }, + ], + }, + }, + }, + }); + }); + + it('returns 404 if the user does not exist', async () => { + const r = await handler({ + method: 'put', + path: '/user/nonexistentuser', + query: {}, + requestBody: { + data: { + type: 'user', + attributes: { email: 'user2@abc.com' }, + }, + }, + prisma, + }); + + expect(r.status).toBe(404); + expect(r.body).toEqual({ + errors: [ + { + code: 'not-found', + status: 404, + title: 'Resource not found', + }, + ], + }); + }); + + it('update a single relation', async () => { + await prisma.user.create({ data: { myId: 'user1', email: 'user1@abc.com' } }); + await prisma.post.create({ + data: { id: 1, title: 'Post1' }, + }); + + const r = await handler({ + method: 'patch', + path: '/post/1/relationships/author', + query: {}, + requestBody: { + data: { + type: 'user', + id: 'user1', + }, + }, + prisma, + }); + + expect(r.status).toBe(200); + expect(r.body).toMatchObject({ + jsonapi: { + version: '1.0', + }, + links: { + self: 'http://localhost/api/post/1/relationships/author', + }, + data: { + type: 'user', + id: 'user1', + }, + }); + }); + + it('remove a single relation', async () => { + await prisma.user.create({ + data: { myId: 'user1', email: 'user1@abc.com', posts: { create: { id: 1, title: 'Post1' } } }, + }); + + const r = await handler({ + method: 'patch', + path: '/post/1/relationships/author', + query: {}, + requestBody: { data: null }, + prisma, + }); + + expect(r.status).toBe(200); + expect(r.body).toMatchObject({ + links: { + self: 'http://localhost/api/post/1/relationships/author', + }, + data: null, + }); + }); + + it('update a collection of relations', async () => { + await prisma.user.create({ + data: { myId: 'user1', email: 'user1@abc.com', posts: { create: { id: 1, title: 'Post1' } } }, + }); + await prisma.post.create({ + data: { id: 2, title: 'Post2' }, + }); + + const r = await handler({ + method: 'patch', + path: '/user/user1/relationships/posts', + query: {}, + requestBody: { + data: [{ type: 'post', id: 2 }], + }, + prisma, + }); + + expect(r.status).toBe(200); + expect(r.body).toMatchObject({ + links: { + self: 'http://localhost/api/user/user1/relationships/posts', + }, + data: [{ type: 'post', id: 2 }], + }); + }); + + it('update a collection of relations to empty', async () => { + await prisma.user.create({ + data: { myId: 'user1', email: 'user1@abc.com', posts: { create: { id: 1, title: 'Post1' } } }, + }); + + const r = await handler({ + method: 'patch', + path: '/user/user1/relationships/posts', + query: {}, + requestBody: { data: [] }, + prisma, + }); + + expect(r.status).toBe(200); + expect(r.body).toMatchObject({ + links: { + self: 'http://localhost/api/user/user1/relationships/posts', + }, + data: [], + }); + }); + + it('update relation for nonexistent entity', async () => { + let r = await handler({ + method: 'patch', + path: '/post/1/relationships/author', + query: {}, + requestBody: { + data: { + type: 'user', + id: 'user1', + }, + }, + prisma, + }); + expect(r.status).toBe(404); + + await prisma.post.create({ + data: { id: 1, title: 'Post1' }, + }); + + r = await handler({ + method: 'patch', + path: '/post/1/relationships/author', + query: {}, + requestBody: { + data: { + type: 'user', + id: 'user1', + }, + }, + prisma, + }); + + expect(r.status).toBe(404); + }); + }); + + describe('DELETE', () => { + it('deletes an item if it exists', async () => { + // Create a user first + await prisma.user.create({ + data: { + myId: 'user1', + email: 'user1@abc.com', + }, + }); + + const r = await handler({ + method: 'delete', + path: '/user/user1', + prisma, + }); + + expect(r.status).toBe(204); + expect(r.body).toBeUndefined(); + }); + + it('returns 404 if the user does not exist', async () => { + const r = await handler({ + method: 'delete', + path: '/user/nonexistentuser', + prisma, + }); + + expect(r.status).toBe(404); + expect(r.body).toEqual({ + errors: [ + { + code: 'not-found', + status: 404, + title: 'Resource not found', + }, + ], + }); + }); + + it('delete single relation disallowed', async () => { + await prisma.user.create({ + data: { myId: 'user1', email: 'user1@abc.com', posts: { create: { id: 1, title: 'Post1' } } }, + }); + + const r = await handler({ + method: 'delete', + path: '/post/1/relationships/author', + query: {}, + prisma, + }); + + expect(r.status).toBe(400); + expect(r.body).toMatchObject({ + errors: [ + { + status: 400, + code: 'invalid-verb', + title: 'The HTTP verb is not supported', + }, + ], + }); + }); + + it('delete a collection of relations', async () => { + await prisma.user.create({ + data: { + myId: 'user1', + email: 'user1@abc.com', + posts: { + create: [ + { id: 1, title: 'Post1' }, + { id: 2, title: 'Post2' }, + ], + }, + }, + }); + + const r = await handler({ + method: 'delete', + path: '/user/user1/relationships/posts', + query: {}, + requestBody: { + data: [{ type: 'post', id: 1 }], + }, + prisma, + }); + + expect(r.status).toBe(200); + expect(r.body).toMatchObject({ + jsonapi: { + version: '1.0', + }, + links: { + self: 'http://localhost/api/user/user1/relationships/posts', + }, + data: [{ type: 'post', id: 2 }], + }); + }); + + it('delete relations for nonexistent entity', async () => { + const r = await handler({ + method: 'delete', + path: '/user/user1/relationships/posts', + query: {}, + requestBody: { + data: [{ type: 'post', id: 1 }], + }, + prisma, + }); + expect(r.status).toBe(404); + }); + }); + }); +}); diff --git a/packages/server/tests/express-adapter.test.ts b/packages/server/tests/api/rpc/express-adapter.test.ts similarity index 97% rename from packages/server/tests/express-adapter.test.ts rename to packages/server/tests/api/rpc/express-adapter.test.ts index 6f77928f..ce003964 100644 --- a/packages/server/tests/express-adapter.test.ts +++ b/packages/server/tests/api/rpc/express-adapter.test.ts @@ -4,8 +4,8 @@ import { loadSchema } from '@zenstackhq/testtools'; import bodyParser from 'body-parser'; import express from 'express'; import request from 'supertest'; -import { ZenStackMiddleware } from '../src/express'; -import { makeUrl, schema } from './utils'; +import { ZenStackMiddleware } from '../../../src/express'; +import { makeUrl, schema } from '../../utils'; describe('Express adapter tests', () => { it('run plugin', async () => { diff --git a/packages/server/tests/fastify-adapter.test.ts b/packages/server/tests/api/rpc/fastify-adapter.test.ts similarity index 95% rename from packages/server/tests/fastify-adapter.test.ts rename to packages/server/tests/api/rpc/fastify-adapter.test.ts index 78c79803..b18b2f2e 100644 --- a/packages/server/tests/fastify-adapter.test.ts +++ b/packages/server/tests/api/rpc/fastify-adapter.test.ts @@ -2,8 +2,9 @@ import { loadSchema } from '@zenstackhq/testtools'; import fastify from 'fastify'; -import { ZenStackFastifyPlugin } from '../src/fastify'; -import { makeUrl, schema } from './utils'; +import { ZenStackFastifyPlugin } from '../../../src/fastify'; +import { makeUrl, schema } from '../../utils'; +import Prisma from '../../../src/api/rpc'; describe('Fastify adapter tests', () => { it('run plugin', async () => { @@ -14,6 +15,7 @@ describe('Fastify adapter tests', () => { prefix: '/api', getPrisma: () => prisma, zodSchemas, + api: Prisma(), }); let r = await app.inject({ @@ -121,6 +123,7 @@ describe('Fastify adapter tests', () => { prefix: '/api', getPrisma: () => prisma, zodSchemas, + api: Prisma(), }); let r = await app.inject({ diff --git a/packages/server/tests/open-api.test.ts b/packages/server/tests/api/rpc/rpc.test.ts similarity index 91% rename from packages/server/tests/open-api.test.ts rename to packages/server/tests/api/rpc/rpc.test.ts index 48730347..58715339 100644 --- a/packages/server/tests/open-api.test.ts +++ b/packages/server/tests/api/rpc/rpc.test.ts @@ -2,18 +2,26 @@ /// import { loadSchema } from '@zenstackhq/testtools'; -import { handleRequest } from '../src/openapi'; -import { schema } from './utils'; +import RPCAPIHandler from '../../../src/api/rpc'; +import { schema } from '../../utils'; describe('OpenAPI server tests', () => { + let prisma: any; + let zodSchemas: any; + + beforeAll(async () => { + const params = await loadSchema(schema); + prisma = params.prisma; + zodSchemas = params.zodSchemas; + }); + it('crud', async () => { - const { prisma, zodSchemas } = await loadSchema(schema); + const handleRequest = RPCAPIHandler(); let r = await handleRequest({ method: 'get', path: '/post/findMany', prisma, - zodSchemas, }); expect(r.status).toBe(200); expect(r.body).toHaveLength(0); @@ -36,7 +44,6 @@ describe('OpenAPI server tests', () => { }, }, prisma, - zodSchemas, }); expect(r.status).toBe(201); expect(r.body).toEqual( @@ -58,7 +65,6 @@ describe('OpenAPI server tests', () => { method: 'get', path: '/post/findMany', prisma, - zodSchemas, }); expect(r.status).toBe(200); expect(r.body).toHaveLength(2); @@ -68,7 +74,6 @@ describe('OpenAPI server tests', () => { path: '/post/findMany', query: { q: JSON.stringify({ where: { viewCount: { gt: 1 } } }) }, prisma, - zodSchemas, }); expect(r.status).toBe(200); expect(r.body).toHaveLength(1); @@ -78,7 +83,6 @@ describe('OpenAPI server tests', () => { path: '/user/update', requestBody: { where: { id: 'user1' }, data: { email: 'user1@def.com' } }, prisma, - zodSchemas, }); expect(r.status).toBe(200); expect((r.body as any).email).toBe('user1@def.com'); @@ -88,7 +92,6 @@ describe('OpenAPI server tests', () => { path: '/post/count', query: { q: JSON.stringify({ where: { viewCount: { gt: 1 } } }) }, prisma, - zodSchemas, }); expect(r.status).toBe(200); expect(r.body).toBe(1); @@ -98,7 +101,6 @@ describe('OpenAPI server tests', () => { path: '/post/aggregate', query: { q: JSON.stringify({ _sum: { viewCount: true } }) }, prisma, - zodSchemas, }); expect(r.status).toBe(200); expect((r.body as any)._sum.viewCount).toBe(3); @@ -108,7 +110,6 @@ describe('OpenAPI server tests', () => { path: '/post/groupBy', query: { q: JSON.stringify({ by: ['published'], _sum: { viewCount: true } }) }, prisma, - zodSchemas, }); expect(r.status).toBe(200); expect(r.body).toEqual( @@ -123,14 +124,13 @@ describe('OpenAPI server tests', () => { path: '/user/deleteMany', query: { q: JSON.stringify({ where: { id: 'user1' } }) }, prisma, - zodSchemas, }); expect(r.status).toBe(200); expect((r.body as any).count).toBe(1); }); it('validation error', async () => { - const { prisma, zodSchemas } = await loadSchema(schema); + let handleRequest = RPCAPIHandler(); // without validation let r = await handleRequest({ @@ -141,12 +141,13 @@ describe('OpenAPI server tests', () => { expect(r.status).toBe(400); expect((r.body as any).message).toContain('Argument where is missing'); + handleRequest = RPCAPIHandler({ zodSchemas }); + // with validation r = await handleRequest({ method: 'get', path: '/post/findUnique', prisma, - zodSchemas, }); expect(r.status).toBe(400); expect((r.body as any).message).toContain('Validation error'); @@ -157,7 +158,6 @@ describe('OpenAPI server tests', () => { path: '/post/create', requestBody: { data: {} }, prisma, - zodSchemas, }); expect(r.status).toBe(400); expect((r.body as any).message).toContain('Validation error'); @@ -165,7 +165,7 @@ describe('OpenAPI server tests', () => { }); it('invalid path or args', async () => { - const { prisma } = await loadSchema(schema); + const handleRequest = RPCAPIHandler(); let r = await handleRequest({ method: 'get', diff --git a/packages/testtools/src/schema.ts b/packages/testtools/src/schema.ts index 2f278eab..e00fb615 100644 --- a/packages/testtools/src/schema.ts +++ b/packages/testtools/src/schema.ts @@ -103,8 +103,6 @@ export async function loadSchema( throw new Error('Could not find workspace root'); } - console.log('Workspace root:', root); - const pkgContent = fs.readFileSync(path.join(__dirname, 'package.template.json'), { encoding: 'utf-8' }); fs.writeFileSync(path.join(projectRoot, 'package.json'), pkgContent.replaceAll('', root)); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e69be053..c94599e4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,600 +1,847 @@ -lockfileVersion: 5.4 +lockfileVersion: '6.0' importers: .: - specifiers: - '@changesets/cli': ^2.26.0 devDependencies: - '@changesets/cli': 2.26.0 + '@changesets/cli': + specifier: ^2.26.0 + version: 2.26.0 packages/language: - specifiers: - concurrently: ^7.4.0 - copyfiles: ^2.4.1 - langium: 1.2.0 - langium-cli: 1.2.0 - rimraf: ^3.0.2 - typescript: ^4.9.4 dependencies: - langium: 1.2.0 + langium: + specifier: 1.2.0 + version: 1.2.0 devDependencies: - concurrently: 7.4.0 - copyfiles: 2.4.1 - langium-cli: 1.2.0 - rimraf: 3.0.2 - typescript: 4.9.4 + concurrently: + specifier: ^7.4.0 + version: 7.4.0 + copyfiles: + specifier: ^2.4.1 + version: 2.4.1 + langium-cli: + specifier: 1.2.0 + version: 1.2.0 + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + typescript: + specifier: ^4.9.4 + version: 4.9.4 publishDirectory: dist packages/next: - specifiers: - '@types/jest': ^29.5.0 - '@types/react': ^18.0.26 - '@types/supertest': ^2.0.12 - '@zenstackhq/runtime': workspace:* - '@zenstackhq/testtools': workspace:* - copyfiles: ^2.4.1 - jest: ^29.5.0 - next: ^12.3.1 || ^13 - react: ^17.0.2 || ^18 - rimraf: ^3.0.2 - superjson: ^1.11.0 - supertest: ^6.3.3 - tmp: ^0.2.1 - ts-jest: ^29.0.5 - typescript: ^4.9.4 dependencies: - '@zenstackhq/runtime': link:../runtime/dist - next: 12.3.1_672uxklweod7ene3nqtsh262ca - tmp: 0.2.1 + '@zenstackhq/runtime': + specifier: workspace:* + version: link:../runtime/dist + next: + specifier: ^12.3.1 || ^13 + version: 12.3.1(@babel/core@7.20.5)(react-dom@18.2.0)(react@18.2.0) + tmp: + specifier: ^0.2.1 + version: 0.2.1 devDependencies: - '@types/jest': 29.5.0 - '@types/react': 18.0.26 - '@types/supertest': 2.0.12 - '@zenstackhq/testtools': link:../testtools/dist - copyfiles: 2.4.1 - jest: 29.5.0 - react: 18.2.0 - rimraf: 3.0.2 - superjson: 1.11.0 - supertest: 6.3.3 - ts-jest: 29.0.5_xv37nfqpz6757dg24cw6wqnoey - typescript: 4.9.4 + '@types/jest': + specifier: ^29.5.0 + version: 29.5.0 + '@types/react': + specifier: ^18.0.26 + version: 18.0.26 + '@types/supertest': + specifier: ^2.0.12 + version: 2.0.12 + '@zenstackhq/testtools': + specifier: workspace:* + version: link:../testtools/dist + copyfiles: + specifier: ^2.4.1 + version: 2.4.1 + jest: + specifier: ^29.5.0 + version: 29.5.0 + react: + specifier: ^17.0.2 || ^18 + version: 18.2.0 + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + superjson: + specifier: ^1.11.0 + version: 1.11.0 + supertest: + specifier: ^6.3.3 + version: 6.3.3 + ts-jest: + specifier: ^29.0.5 + version: 29.0.5(@babel/core@7.20.5)(jest@29.5.0)(typescript@4.9.4) + typescript: + specifier: ^4.9.4 + version: 4.9.4 publishDirectory: dist packages/plugins/openapi: - specifiers: - '@prisma/generator-helper': ^4.7.1 - '@prisma/internals': ^4.7.1 - '@readme/openapi-parser': ^2.4.0 - '@types/jest': ^29.5.0 - '@types/lower-case-first': ^1.0.1 - '@types/tmp': ^0.2.3 - '@typescript-eslint/eslint-plugin': ^5.54.0 - '@typescript-eslint/parser': ^5.54.0 - '@zenstackhq/runtime': workspace:* - '@zenstackhq/sdk': workspace:* - '@zenstackhq/testtools': workspace:* - change-case: ^4.1.2 - copyfiles: ^2.4.1 - eslint: ^8.35.0 - jest: ^29.5.0 - lower-case-first: ^2.0.2 - openapi-types: ^12.1.0 - rimraf: ^3.0.2 - tiny-invariant: ^1.3.1 - tmp: ^0.2.1 - ts-jest: ^29.0.5 - typescript: ^4.9.5 - yaml: ^2.2.1 - zenstack: workspace:* - zod: 3.21.1 - zod-validation-error: ^0.2.1 dependencies: - '@prisma/generator-helper': 4.7.1 - '@zenstackhq/runtime': link:../../runtime/dist - '@zenstackhq/sdk': link:../../sdk/dist - change-case: 4.1.2 - lower-case-first: 2.0.2 - openapi-types: 12.1.0 - tiny-invariant: 1.3.1 - yaml: 2.2.1 - zod: 3.21.1 - zod-validation-error: 0.2.1_zod@3.21.1 + '@prisma/generator-helper': + specifier: ^4.7.1 + version: 4.7.1 + '@zenstackhq/runtime': + specifier: workspace:* + version: link:../../runtime/dist + '@zenstackhq/sdk': + specifier: workspace:* + version: link:../../sdk/dist + change-case: + specifier: ^4.1.2 + version: 4.1.2 + lower-case-first: + specifier: ^2.0.2 + version: 2.0.2 + openapi-types: + specifier: ^12.1.0 + version: 12.1.0 + tiny-invariant: + specifier: ^1.3.1 + version: 1.3.1 + yaml: + specifier: ^2.2.1 + version: 2.2.1 + zod: + specifier: 3.21.1 + version: 3.21.1 + zod-validation-error: + specifier: ^0.2.1 + version: 0.2.1(zod@3.21.1) devDependencies: - '@prisma/internals': 4.7.1 - '@readme/openapi-parser': 2.4.0_openapi-types@12.1.0 - '@types/jest': 29.5.0 - '@types/lower-case-first': 1.0.1 - '@types/tmp': 0.2.3 - '@typescript-eslint/eslint-plugin': 5.54.0_6mj2wypvdnknez7kws2nfdgupi - '@typescript-eslint/parser': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu - '@zenstackhq/testtools': link:../../testtools/dist - copyfiles: 2.4.1 - eslint: 8.35.0 - jest: 29.5.0 - rimraf: 3.0.2 - tmp: 0.2.1 - ts-jest: 29.0.5_alvbhmn3fmdinfvcr37idtrz64 - typescript: 4.9.5 - zenstack: link:../../schema/dist + '@prisma/internals': + specifier: ^4.7.1 + version: 4.7.1 + '@readme/openapi-parser': + specifier: ^2.4.0 + version: 2.4.0(openapi-types@12.1.0) + '@types/jest': + specifier: ^29.5.0 + version: 29.5.0 + '@types/lower-case-first': + specifier: ^1.0.1 + version: 1.0.1 + '@types/tmp': + specifier: ^0.2.3 + version: 0.2.3 + '@typescript-eslint/eslint-plugin': + specifier: ^5.54.0 + version: 5.54.0(@typescript-eslint/parser@5.54.0)(eslint@8.35.0)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^5.54.0 + version: 5.54.0(eslint@8.35.0)(typescript@4.9.5) + '@zenstackhq/testtools': + specifier: workspace:* + version: link:../../testtools/dist + copyfiles: + specifier: ^2.4.1 + version: 2.4.1 + eslint: + specifier: ^8.35.0 + version: 8.35.0 + jest: + specifier: ^29.5.0 + version: 29.5.0 + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + tmp: + specifier: ^0.2.1 + version: 0.2.1 + ts-jest: + specifier: ^29.0.5 + version: 29.0.5(@babel/core@7.20.5)(jest@29.5.0)(typescript@4.9.5) + typescript: + specifier: ^4.9.5 + version: 4.9.5 + zenstack: + specifier: workspace:* + version: link:../../schema/dist publishDirectory: dist packages/plugins/react: - specifiers: - '@prisma/generator-helper': ^4.7.1 - '@tanstack/react-query': ^4.28.0 - '@types/jest': ^29.5.0 - '@types/lower-case-first': ^1.0.1 - '@types/react': ^18.0.26 - '@types/tmp': ^0.2.3 - '@types/upper-case-first': ^1.1.2 - '@zenstackhq/sdk': workspace:* - '@zenstackhq/testtools': workspace:* - change-case: ^4.1.2 - copyfiles: ^2.4.1 - decimal.js: ^10.4.2 - jest: ^29.5.0 - lower-case-first: ^2.0.2 - react: ^17.0.2 || ^18 - react-dom: ^17.0.2 || ^18 - rimraf: ^3.0.2 - superjson: ^1.11.0 - swr: ^2.0.3 - ts-jest: ^29.0.5 - ts-morph: ^16.0.0 - typescript: ^4.9.4 - upper-case-first: ^2.0.2 dependencies: - '@prisma/generator-helper': 4.7.1 - '@zenstackhq/sdk': link:../../sdk/dist - change-case: 4.1.2 - decimal.js: 10.4.2 - lower-case-first: 2.0.2 - superjson: 1.12.1 - ts-morph: 16.0.0 - upper-case-first: 2.0.2 + '@prisma/generator-helper': + specifier: ^4.7.1 + version: 4.7.1 + '@zenstackhq/sdk': + specifier: workspace:* + version: link:../../sdk/dist + change-case: + specifier: ^4.1.2 + version: 4.1.2 + decimal.js: + specifier: ^10.4.2 + version: 10.4.2 + lower-case-first: + specifier: ^2.0.2 + version: 2.0.2 + superjson: + specifier: ^1.11.0 + version: 1.12.1 + ts-morph: + specifier: ^16.0.0 + version: 16.0.0 + upper-case-first: + specifier: ^2.0.2 + version: 2.0.2 devDependencies: - '@tanstack/react-query': 4.28.0_biqbaboplfbrettd7655fr4n2y - '@types/jest': 29.5.0 - '@types/lower-case-first': 1.0.1 - '@types/react': 18.0.26 - '@types/tmp': 0.2.3 - '@types/upper-case-first': 1.1.2 - '@zenstackhq/testtools': link:../../testtools/dist - copyfiles: 2.4.1 - jest: 29.5.0 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - rimraf: 3.0.2 - swr: 2.0.3_react@18.2.0 - ts-jest: 29.0.5_xv37nfqpz6757dg24cw6wqnoey - typescript: 4.9.4 + '@tanstack/react-query': + specifier: ^4.28.0 + version: 4.28.0(react-dom@18.2.0)(react@18.2.0) + '@types/jest': + specifier: ^29.5.0 + version: 29.5.0 + '@types/lower-case-first': + specifier: ^1.0.1 + version: 1.0.1 + '@types/react': + specifier: ^18.0.26 + version: 18.0.26 + '@types/tmp': + specifier: ^0.2.3 + version: 0.2.3 + '@types/upper-case-first': + specifier: ^1.1.2 + version: 1.1.2 + '@zenstackhq/testtools': + specifier: workspace:* + version: link:../../testtools/dist + copyfiles: + specifier: ^2.4.1 + version: 2.4.1 + jest: + specifier: ^29.5.0 + version: 29.5.0 + react: + specifier: ^17.0.2 || ^18 + version: 18.2.0 + react-dom: + specifier: ^17.0.2 || ^18 + version: 18.2.0(react@18.2.0) + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + swr: + specifier: ^2.0.3 + version: 2.0.3(react@18.2.0) + ts-jest: + specifier: ^29.0.5 + version: 29.0.5(@babel/core@7.20.5)(jest@29.5.0)(typescript@4.9.4) + typescript: + specifier: ^4.9.4 + version: 4.9.4 publishDirectory: dist packages/plugins/trpc: - specifiers: - '@prisma/generator-helper': ^4.7.1 - '@prisma/internals': ^4.7.1 - '@types/jest': ^29.5.0 - '@types/lower-case-first': ^1.0.1 - '@types/prettier': ^2.7.2 - '@zenstackhq/sdk': workspace:* - '@zenstackhq/testtools': workspace:* - change-case: ^4.1.2 - copyfiles: ^2.4.1 - jest: ^29.5.0 - lower-case-first: ^2.0.2 - prettier: ^2.8.3 - rimraf: ^3.0.2 - ts-jest: ^29.0.5 - ts-morph: ^16.0.0 - tslib: ^2.4.1 - typescript: ^4.9.4 - zod: 3.21.1 dependencies: - '@prisma/generator-helper': 4.7.1 - '@prisma/internals': 4.7.1 - '@zenstackhq/sdk': link:../../sdk/dist - change-case: 4.1.2 - lower-case-first: 2.0.2 - prettier: 2.8.3 - ts-morph: 16.0.0 - tslib: 2.4.1 - zod: 3.21.1 + '@prisma/generator-helper': + specifier: ^4.7.1 + version: 4.7.1 + '@prisma/internals': + specifier: ^4.7.1 + version: 4.7.1 + '@zenstackhq/sdk': + specifier: workspace:* + version: link:../../sdk/dist + change-case: + specifier: ^4.1.2 + version: 4.1.2 + lower-case-first: + specifier: ^2.0.2 + version: 2.0.2 + prettier: + specifier: ^2.8.3 + version: 2.8.3 + ts-morph: + specifier: ^16.0.0 + version: 16.0.0 + tslib: + specifier: ^2.4.1 + version: 2.4.1 + zod: + specifier: 3.21.1 + version: 3.21.1 devDependencies: - '@types/jest': 29.5.0 - '@types/lower-case-first': 1.0.1 - '@types/prettier': 2.7.2 - '@zenstackhq/testtools': link:../../testtools/dist - copyfiles: 2.4.1 - jest: 29.5.0 - rimraf: 3.0.2 - ts-jest: 29.0.5_xv37nfqpz6757dg24cw6wqnoey - typescript: 4.9.4 + '@types/jest': + specifier: ^29.5.0 + version: 29.5.0 + '@types/lower-case-first': + specifier: ^1.0.1 + version: 1.0.1 + '@types/prettier': + specifier: ^2.7.2 + version: 2.7.2 + '@zenstackhq/testtools': + specifier: workspace:* + version: link:../../testtools/dist + copyfiles: + specifier: ^2.4.1 + version: 2.4.1 + jest: + specifier: ^29.5.0 + version: 29.5.0 + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + ts-jest: + specifier: ^29.0.5 + version: 29.0.5(@babel/core@7.20.5)(jest@29.5.0)(typescript@4.9.4) + typescript: + specifier: ^4.9.4 + version: 4.9.4 publishDirectory: dist packages/runtime: - specifiers: - '@paralleldrive/cuid2': ^2.2.0 - '@prisma/client': ^4.0.0 - '@types/bcryptjs': ^2.4.2 - '@types/jest': ^29.5.0 - '@types/lower-case-first': ^1.0.1 - '@types/node': ^14.18.29 - '@types/pluralize': ^0.0.29 - '@zenstackhq/sdk': workspace:* - bcryptjs: ^2.4.3 - change-case: ^4.1.2 - colors: 1.4.0 - copyfiles: ^2.4.1 - decimal.js: ^10.4.2 - deepcopy: ^2.1.0 - lower-case-first: ^2.0.2 - pluralize: ^8.0.0 - rimraf: ^3.0.2 - superjson: ^1.11.0 - tslib: ^2.4.1 - typescript: ^4.9.3 - zod: 3.21.1 - zod-validation-error: ^0.2.1 dependencies: - '@paralleldrive/cuid2': 2.2.0 - '@prisma/client': 4.7.1 - '@types/bcryptjs': 2.4.2 - '@zenstackhq/sdk': link:../sdk/dist - bcryptjs: 2.4.3 - change-case: 4.1.2 - colors: 1.4.0 - decimal.js: 10.4.2 - deepcopy: 2.1.0 - lower-case-first: 2.0.2 - pluralize: 8.0.0 - superjson: 1.11.0 - tslib: 2.4.1 - zod: 3.21.1 - zod-validation-error: 0.2.1_zod@3.21.1 + '@paralleldrive/cuid2': + specifier: ^2.2.0 + version: 2.2.0 + '@prisma/client': + specifier: ^4.0.0 + version: 4.7.1 + '@types/bcryptjs': + specifier: ^2.4.2 + version: 2.4.2 + '@zenstackhq/sdk': + specifier: workspace:* + version: link:../sdk/dist + bcryptjs: + specifier: ^2.4.3 + version: 2.4.3 + change-case: + specifier: ^4.1.2 + version: 4.1.2 + colors: + specifier: 1.4.0 + version: 1.4.0 + decimal.js: + specifier: ^10.4.2 + version: 10.4.2 + deepcopy: + specifier: ^2.1.0 + version: 2.1.0 + lower-case-first: + specifier: ^2.0.2 + version: 2.0.2 + pluralize: + specifier: ^8.0.0 + version: 8.0.0 + superjson: + specifier: ^1.11.0 + version: 1.11.0 + tslib: + specifier: ^2.4.1 + version: 2.4.1 + zod: + specifier: 3.21.1 + version: 3.21.1 + zod-validation-error: + specifier: ^0.2.1 + version: 0.2.1(zod@3.21.1) devDependencies: - '@types/jest': 29.5.0 - '@types/lower-case-first': 1.0.1 - '@types/node': 14.18.32 - '@types/pluralize': 0.0.29 - copyfiles: 2.4.1 - rimraf: 3.0.2 - typescript: 4.9.3 + '@types/jest': + specifier: ^29.5.0 + version: 29.5.0 + '@types/lower-case-first': + specifier: ^1.0.1 + version: 1.0.1 + '@types/node': + specifier: ^14.18.29 + version: 14.18.32 + '@types/pluralize': + specifier: ^0.0.29 + version: 0.0.29 + copyfiles: + specifier: ^2.4.1 + version: 2.4.1 + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + typescript: + specifier: ^4.9.3 + version: 4.9.3 publishDirectory: dist packages/schema: - specifiers: - '@paralleldrive/cuid2': ^2.2.0 - '@prisma/generator-helper': ^4.0.0 - '@prisma/internals': ^4.0.0 - '@types/async-exit-hook': ^2.0.0 - '@types/jest': ^29.5.0 - '@types/lower-case-first': ^1.0.1 - '@types/node': ^14.18.32 - '@types/pluralize': ^0.0.29 - '@types/semver': ^7.3.13 - '@types/tmp': ^0.2.3 - '@types/upper-case-first': ^1.1.2 - '@types/uuid': ^8.3.4 - '@types/vscode': ^1.56.0 - '@typescript-eslint/eslint-plugin': ^5.42.0 - '@typescript-eslint/parser': ^5.42.0 - '@vscode/vsce': ^2.19.0 - '@zenstackhq/language': workspace:* - '@zenstackhq/runtime': workspace:* - '@zenstackhq/sdk': workspace:* - '@zenstackhq/testtools': workspace:* - async-exit-hook: ^2.0.1 - change-case: ^4.1.2 - colors: 1.4.0 - commander: ^8.3.0 - concurrently: ^7.4.0 - copyfiles: ^2.4.1 - dotenv: ^16.0.3 - esbuild: ^0.15.12 - eslint: ^8.27.0 - eslint-plugin-jest: ^27.1.7 - get-latest-version: ^5.0.1 - jest: ^29.5.0 - langium: 1.2.0 - lower-case-first: ^2.0.2 - mixpanel: ^0.17.0 - node-machine-id: ^1.1.12 - ora: ^5.4.1 - pluralize: ^8.0.0 - prisma: ^4.0.0 - promisify: ^0.0.3 - renamer: ^4.0.0 - rimraf: ^3.0.2 - semver: ^7.3.8 - sleep-promise: ^9.1.0 - tmp: ^0.2.1 - ts-jest: ^29.0.3 - ts-morph: ^16.0.0 - ts-node: ^10.9.1 - tsc-alias: ^1.7.0 - typescript: ^4.8.4 - upper-case-first: ^2.0.2 - uuid: ^9.0.0 - vitest: ^0.29.7 - vscode-jsonrpc: ^8.0.2 - vscode-languageclient: ^8.0.2 - vscode-languageserver: ^8.0.2 - vscode-languageserver-textdocument: ^1.0.7 - vscode-uri: ^3.0.6 - zod: 3.21.1 - zod-validation-error: ^0.2.1 dependencies: - '@paralleldrive/cuid2': 2.2.0 - '@prisma/generator-helper': 4.7.1 - '@prisma/internals': 4.7.1 - '@zenstackhq/language': link:../language/dist - '@zenstackhq/sdk': link:../sdk/dist - async-exit-hook: 2.0.1 - change-case: 4.1.2 - colors: 1.4.0 - commander: 8.3.0 - get-latest-version: 5.0.1 - langium: 1.2.0 - lower-case-first: 2.0.2 - mixpanel: 0.17.0 - node-machine-id: 1.1.12 - ora: 5.4.1 - pluralize: 8.0.0 - promisify: 0.0.3 - semver: 7.3.8 - sleep-promise: 9.1.0 - ts-morph: 16.0.0 - upper-case-first: 2.0.2 - uuid: 9.0.0 - vscode-jsonrpc: 8.0.2 - vscode-languageclient: 8.0.2 - vscode-languageserver: 8.0.2 - vscode-languageserver-textdocument: 1.0.7 - vscode-uri: 3.0.6 - zod: 3.21.1 - zod-validation-error: 0.2.1_zod@3.21.1 + '@paralleldrive/cuid2': + specifier: ^2.2.0 + version: 2.2.0 + '@prisma/generator-helper': + specifier: ^4.0.0 + version: 4.7.1 + '@prisma/internals': + specifier: ^4.0.0 + version: 4.7.1 + '@zenstackhq/language': + specifier: workspace:* + version: link:../language/dist + '@zenstackhq/sdk': + specifier: workspace:* + version: link:../sdk/dist + async-exit-hook: + specifier: ^2.0.1 + version: 2.0.1 + change-case: + specifier: ^4.1.2 + version: 4.1.2 + colors: + specifier: 1.4.0 + version: 1.4.0 + commander: + specifier: ^8.3.0 + version: 8.3.0 + get-latest-version: + specifier: ^5.0.1 + version: 5.0.1 + langium: + specifier: 1.2.0 + version: 1.2.0 + lower-case-first: + specifier: ^2.0.2 + version: 2.0.2 + mixpanel: + specifier: ^0.17.0 + version: 0.17.0 + node-machine-id: + specifier: ^1.1.12 + version: 1.1.12 + ora: + specifier: ^5.4.1 + version: 5.4.1 + pluralize: + specifier: ^8.0.0 + version: 8.0.0 + promisify: + specifier: ^0.0.3 + version: 0.0.3 + semver: + specifier: ^7.3.8 + version: 7.3.8 + sleep-promise: + specifier: ^9.1.0 + version: 9.1.0 + ts-morph: + specifier: ^16.0.0 + version: 16.0.0 + upper-case-first: + specifier: ^2.0.2 + version: 2.0.2 + uuid: + specifier: ^9.0.0 + version: 9.0.0 + vscode-jsonrpc: + specifier: ^8.0.2 + version: 8.0.2 + vscode-languageclient: + specifier: ^8.0.2 + version: 8.0.2 + vscode-languageserver: + specifier: ^8.0.2 + version: 8.0.2 + vscode-languageserver-textdocument: + specifier: ^1.0.7 + version: 1.0.7 + vscode-uri: + specifier: ^3.0.6 + version: 3.0.6 + zod: + specifier: 3.21.1 + version: 3.21.1 + zod-validation-error: + specifier: ^0.2.1 + version: 0.2.1(zod@3.21.1) devDependencies: - '@types/async-exit-hook': 2.0.0 - '@types/jest': 29.5.0 - '@types/lower-case-first': 1.0.1 - '@types/node': 14.18.32 - '@types/pluralize': 0.0.29 - '@types/semver': 7.3.13 - '@types/tmp': 0.2.3 - '@types/upper-case-first': 1.1.2 - '@types/uuid': 8.3.4 - '@types/vscode': 1.72.0 - '@typescript-eslint/eslint-plugin': 5.42.0_ofgjrzjuekeo7s3hdyz2yuzw34 - '@typescript-eslint/parser': 5.42.0_rmayb2veg2btbq6mbmnyivgasy - '@vscode/vsce': 2.19.0 - '@zenstackhq/runtime': link:../runtime/dist - '@zenstackhq/testtools': link:../testtools/dist - concurrently: 7.4.0 - copyfiles: 2.4.1 - dotenv: 16.0.3 - esbuild: 0.15.12 - eslint: 8.27.0 - eslint-plugin-jest: 27.1.7_bqsz7mnzvjsobat2umlw76do7a - jest: 29.5.0_4f2ldd7um3b3u4eyvetyqsphze - prisma: 4.7.0 - renamer: 4.0.0 - rimraf: 3.0.2 - tmp: 0.2.1 - ts-jest: 29.0.3_i42we4lxl4f3wyuuvscuqjoe7i - ts-node: 10.9.1_jcmx33t3olsvcxopqdljsohpme - tsc-alias: 1.7.0 - typescript: 4.8.4 - vitest: 0.29.7 + '@types/async-exit-hook': + specifier: ^2.0.0 + version: 2.0.0 + '@types/jest': + specifier: ^29.5.0 + version: 29.5.0 + '@types/lower-case-first': + specifier: ^1.0.1 + version: 1.0.1 + '@types/node': + specifier: ^14.18.32 + version: 14.18.32 + '@types/pluralize': + specifier: ^0.0.29 + version: 0.0.29 + '@types/semver': + specifier: ^7.3.13 + version: 7.3.13 + '@types/tmp': + specifier: ^0.2.3 + version: 0.2.3 + '@types/upper-case-first': + specifier: ^1.1.2 + version: 1.1.2 + '@types/uuid': + specifier: ^8.3.4 + version: 8.3.4 + '@types/vscode': + specifier: ^1.56.0 + version: 1.72.0 + '@typescript-eslint/eslint-plugin': + specifier: ^5.42.0 + version: 5.42.0(@typescript-eslint/parser@5.42.0)(eslint@8.27.0)(typescript@4.8.4) + '@typescript-eslint/parser': + specifier: ^5.42.0 + version: 5.42.0(eslint@8.27.0)(typescript@4.8.4) + '@vscode/vsce': + specifier: ^2.19.0 + version: 2.19.0 + '@zenstackhq/runtime': + specifier: workspace:* + version: link:../runtime/dist + '@zenstackhq/testtools': + specifier: workspace:* + version: link:../testtools/dist + concurrently: + specifier: ^7.4.0 + version: 7.4.0 + copyfiles: + specifier: ^2.4.1 + version: 2.4.1 + dotenv: + specifier: ^16.0.3 + version: 16.0.3 + esbuild: + specifier: ^0.15.12 + version: 0.15.12 + eslint: + specifier: ^8.27.0 + version: 8.27.0 + eslint-plugin-jest: + specifier: ^27.1.7 + version: 27.1.7(@typescript-eslint/eslint-plugin@5.42.0)(eslint@8.27.0)(jest@29.5.0)(typescript@4.8.4) + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@14.18.32)(ts-node@10.9.1) + prisma: + specifier: ^4.0.0 + version: 4.7.0 + renamer: + specifier: ^4.0.0 + version: 4.0.0 + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + tmp: + specifier: ^0.2.1 + version: 0.2.1 + ts-jest: + specifier: ^29.0.3 + version: 29.0.3(@babel/core@7.20.5)(esbuild@0.15.12)(jest@29.5.0)(typescript@4.8.4) + ts-node: + specifier: ^10.9.1 + version: 10.9.1(@types/node@14.18.32)(typescript@4.8.4) + tsc-alias: + specifier: ^1.7.0 + version: 1.7.0 + typescript: + specifier: ^4.8.4 + version: 4.8.4 + vitest: + specifier: ^0.29.7 + version: 0.29.7 publishDirectory: dist packages/sdk: - specifiers: - '@prisma/generator-helper': ^4.7.1 - '@zenstackhq/language': workspace:* - copyfiles: ^2.4.1 - prettier: ^2.8.3 - rimraf: ^3.0.2 - ts-morph: ^16.0.0 - typescript: ^4.9.4 dependencies: - '@prisma/generator-helper': 4.7.1 - '@zenstackhq/language': link:../language/dist - prettier: 2.8.3 - ts-morph: 16.0.0 + '@prisma/generator-helper': + specifier: ^4.7.1 + version: 4.7.1 + '@zenstackhq/language': + specifier: workspace:* + version: link:../language/dist + prettier: + specifier: ^2.8.3 + version: 2.8.3 + ts-morph: + specifier: ^16.0.0 + version: 16.0.0 devDependencies: - copyfiles: 2.4.1 - rimraf: 3.0.2 - typescript: 4.9.4 + copyfiles: + specifier: ^2.4.1 + version: 2.4.1 + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + typescript: + specifier: ^4.9.4 + version: 4.9.4 publishDirectory: dist packages/server: - specifiers: - '@types/body-parser': ^1.19.2 - '@types/express': ^4.17.17 - '@types/jest': ^29.5.0 - '@types/supertest': ^2.0.12 - '@types/upper-case-first': ^1.1.2 - '@zenstackhq/openapi': workspace:* - '@zenstackhq/runtime': workspace:* - '@zenstackhq/sdk': workspace:* - '@zenstackhq/testtools': workspace:* - body-parser: ^1.20.2 - change-case: ^4.1.2 - copyfiles: ^2.4.1 - express: ^4.18.2 - fastify: ^4.14.1 - fastify-plugin: ^4.5.0 - jest: ^29.5.0 - rimraf: ^3.0.2 - supertest: ^6.3.3 - tiny-invariant: ^1.3.1 - ts-jest: ^29.0.5 - typescript: ^4.9.4 - upper-case-first: ^2.0.2 - zod-validation-error: ^0.2.1 dependencies: - '@zenstackhq/openapi': link:../plugins/openapi/dist - '@zenstackhq/runtime': link:../runtime/dist - '@zenstackhq/sdk': link:../sdk/dist - change-case: 4.1.2 - tiny-invariant: 1.3.1 - upper-case-first: 2.0.2 - zod-validation-error: 0.2.1_zod@3.21.1 + '@zenstackhq/openapi': + specifier: workspace:* + version: link:../plugins/openapi/dist + '@zenstackhq/runtime': + specifier: workspace:* + version: link:../runtime/dist + '@zenstackhq/sdk': + specifier: workspace:* + version: link:../sdk/dist + change-case: + specifier: ^4.1.2 + version: 4.1.2 + lower-case-first: + specifier: ^2.0.2 + version: 2.0.2 + tiny-invariant: + specifier: ^1.3.1 + version: 1.3.1 + ts-japi: + specifier: ^1.8.0 + version: 1.8.0 + upper-case-first: + specifier: ^2.0.2 + version: 2.0.2 + url-pattern: + specifier: ^1.0.3 + version: 1.0.3 + zod: + specifier: 3.21.1 + version: 3.21.1 + zod-validation-error: + specifier: ^0.2.1 + version: 0.2.1(zod@3.21.1) devDependencies: - '@types/body-parser': 1.19.2 - '@types/express': 4.17.17 - '@types/jest': 29.5.0 - '@types/supertest': 2.0.12 - '@types/upper-case-first': 1.1.2 - '@zenstackhq/testtools': link:../testtools/dist - body-parser: 1.20.2 - copyfiles: 2.4.1 - express: 4.18.2 - fastify: 4.14.1 - fastify-plugin: 4.5.0 - jest: 29.5.0 - rimraf: 3.0.2 - supertest: 6.3.3 - ts-jest: 29.0.5_alvbhmn3fmdinfvcr37idtrz64 - typescript: 4.9.5 + '@types/body-parser': + specifier: ^1.19.2 + version: 1.19.2 + '@types/express': + specifier: ^4.17.17 + version: 4.17.17 + '@types/jest': + specifier: ^29.5.0 + version: 29.5.0 + '@types/lower-case-first': + specifier: ^1.0.1 + version: 1.0.1 + '@types/supertest': + specifier: ^2.0.12 + version: 2.0.12 + '@types/upper-case-first': + specifier: ^1.1.2 + version: 1.1.2 + '@zenstackhq/testtools': + specifier: workspace:* + version: link:../testtools/dist + body-parser: + specifier: ^1.20.2 + version: 1.20.2 + copyfiles: + specifier: ^2.4.1 + version: 2.4.1 + express: + specifier: ^4.18.2 + version: 4.18.2 + fastify: + specifier: ^4.14.1 + version: 4.14.1 + fastify-plugin: + specifier: ^4.5.0 + version: 4.5.0 + jest: + specifier: ^29.5.0 + version: 29.5.0 + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + supertest: + specifier: ^6.3.3 + version: 6.3.3 + ts-jest: + specifier: ^29.0.5 + version: 29.0.5(@babel/core@7.20.5)(jest@29.5.0)(typescript@4.9.5) + typescript: + specifier: ^4.9.4 + version: 4.9.5 publishDirectory: dist packages/testtools: - specifiers: - '@prisma/client': ^4.7.0 - '@prisma/generator-helper': ^4.7.1 - '@prisma/internals': ^4.7.1 - '@types/node': ^18.14.2 - '@types/tmp': ^0.2.3 - '@zenstackhq/language': workspace:* - '@zenstackhq/runtime': workspace:* - copyfiles: ^2.4.1 - prisma: ~4.7.0 - rimraf: ^3.0.2 - tmp: ^0.2.1 - typescript: ^4.9.5 - zenstack: workspace:* dependencies: - '@prisma/client': 4.12.0_prisma@4.7.0 - '@prisma/generator-helper': 4.7.1 - '@prisma/internals': 4.7.1 - '@zenstackhq/language': link:../language/dist - '@zenstackhq/runtime': link:../runtime/dist - prisma: 4.7.0 - tmp: 0.2.1 - zenstack: link:../schema/dist + '@prisma/client': + specifier: ^4.7.0 + version: 4.7.1(prisma@4.7.0) + '@prisma/generator-helper': + specifier: ^4.7.1 + version: 4.7.1 + '@prisma/internals': + specifier: ^4.7.1 + version: 4.7.1 + '@zenstackhq/language': + specifier: workspace:* + version: link:../language/dist + '@zenstackhq/runtime': + specifier: workspace:* + version: link:../runtime/dist + prisma: + specifier: ~4.7.0 + version: 4.7.0 + tmp: + specifier: ^0.2.1 + version: 0.2.1 + zenstack: + specifier: workspace:* + version: link:../schema/dist devDependencies: - '@types/node': 18.14.2 - '@types/tmp': 0.2.3 - copyfiles: 2.4.1 - rimraf: 3.0.2 - typescript: 4.9.5 + '@types/node': + specifier: ^18.14.2 + version: 18.14.2 + '@types/tmp': + specifier: ^0.2.3 + version: 0.2.3 + copyfiles: + specifier: ^2.4.1 + version: 2.4.1 + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + typescript: + specifier: ^4.9.5 + version: 4.9.5 publishDirectory: dist tests/integration: - specifiers: - '@prisma/client': ^4.7.0 - '@types/bcryptjs': ^2.4.2 - '@types/fs-extra': ^11.0.1 - '@types/jest': ^29.5.0 - '@types/node': ^14.18.29 - '@types/supertest': ^2.0.12 - '@types/tmp': ^0.2.3 - '@types/uuid': ^8.3.4 - '@zenstackhq/next': workspace:* - '@zenstackhq/react': workspace:* - '@zenstackhq/runtime': workspace:* - '@zenstackhq/testtools': workspace:* - '@zenstackhq/trpc': workspace:* - bcryptjs: ^2.4.3 - decimal.js: ^10.4.2 - eslint: ^8.30.0 - eslint-plugin-jest: ^27.1.7 - fs-extra: ^11.1.0 - jest: ^29.5.0 - jest-fetch-mock: ^3.0.3 - next: ^12.3.1 - prisma: ~4.7.0 - sleep-promise: ^9.1.0 - superjson: ^1.11.0 - tmp: ^0.2.1 - ts-jest: ^29.0.1 - ts-node: ^10.9.1 - typescript: ^4.6.2 - uuid: ^9.0.0 - zenstack: 'workspace: *' dependencies: - '@prisma/client': 4.7.1_prisma@4.7.0 - '@types/node': 14.18.29 - '@zenstackhq/testtools': link:../../packages/testtools/dist - bcryptjs: 2.4.3 - decimal.js: 10.4.2 - sleep-promise: 9.1.0 - superjson: 1.11.0 + '@prisma/client': + specifier: ^4.7.0 + version: 4.7.1(prisma@4.7.0) + '@types/node': + specifier: ^14.18.29 + version: 14.18.29 + '@zenstackhq/testtools': + specifier: workspace:* + version: link:../../packages/testtools/dist + bcryptjs: + specifier: ^2.4.3 + version: 2.4.3 + decimal.js: + specifier: ^10.4.2 + version: 10.4.2 + sleep-promise: + specifier: ^9.1.0 + version: 9.1.0 + superjson: + specifier: ^1.11.0 + version: 1.11.0 devDependencies: - '@types/bcryptjs': 2.4.2 - '@types/fs-extra': 11.0.1 - '@types/jest': 29.5.0 - '@types/supertest': 2.0.12 - '@types/tmp': 0.2.3 - '@types/uuid': 8.3.4 - '@zenstackhq/next': link:../../packages/next/dist - '@zenstackhq/react': link:../../packages/plugins/react/dist - '@zenstackhq/runtime': link:../../packages/runtime/dist - '@zenstackhq/trpc': link:../../packages/plugins/trpc/dist - eslint: 8.30.0 - eslint-plugin-jest: 27.1.7_zoe3f4dgrzvdh6rxdjodmtuft4 - fs-extra: 11.1.0 - jest: 29.5.0_johvxhudwcpndp4mle25vwrlq4 - jest-fetch-mock: 3.0.3 - next: 12.3.1_672uxklweod7ene3nqtsh262ca - prisma: 4.7.0 - tmp: 0.2.1 - ts-jest: 29.0.1_rlomzopfumxmkrybxmhq4yglo4 - ts-node: 10.9.1_ck2axrxkiif44rdbzjywaqjysa - typescript: 4.8.3 - uuid: 9.0.0 - zenstack: link:../../packages/schema/dist + '@types/bcryptjs': + specifier: ^2.4.2 + version: 2.4.2 + '@types/fs-extra': + specifier: ^11.0.1 + version: 11.0.1 + '@types/jest': + specifier: ^29.5.0 + version: 29.5.0 + '@types/supertest': + specifier: ^2.0.12 + version: 2.0.12 + '@types/tmp': + specifier: ^0.2.3 + version: 0.2.3 + '@types/uuid': + specifier: ^8.3.4 + version: 8.3.4 + '@zenstackhq/next': + specifier: workspace:* + version: link:../../packages/next/dist + '@zenstackhq/react': + specifier: workspace:* + version: link:../../packages/plugins/react/dist + '@zenstackhq/runtime': + specifier: workspace:* + version: link:../../packages/runtime/dist + '@zenstackhq/trpc': + specifier: workspace:* + version: link:../../packages/plugins/trpc/dist + eslint: + specifier: ^8.30.0 + version: 8.30.0 + eslint-plugin-jest: + specifier: ^27.1.7 + version: 27.1.7(eslint@8.30.0)(jest@29.5.0)(typescript@4.8.3) + fs-extra: + specifier: ^11.1.0 + version: 11.1.0 + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@14.18.29)(ts-node@10.9.1) + jest-fetch-mock: + specifier: ^3.0.3 + version: 3.0.3 + next: + specifier: ^12.3.1 + version: 12.3.1(@babel/core@7.20.5)(react-dom@18.2.0)(react@18.2.0) + prisma: + specifier: ~4.7.0 + version: 4.7.0 + tmp: + specifier: ^0.2.1 + version: 0.2.1 + ts-jest: + specifier: ^29.0.1 + version: 29.0.1(@babel/core@7.20.5)(jest@29.5.0)(typescript@4.8.3) + ts-node: + specifier: ^10.9.1 + version: 10.9.1(@types/node@14.18.29)(typescript@4.8.3) + typescript: + specifier: ^4.6.2 + version: 4.8.3 + uuid: + specifier: ^9.0.0 + version: 9.0.0 + zenstack: + specifier: 'workspace: *' + version: link:../../packages/schema/dist packages: - /@ampproject/remapping/2.2.0: + /@ampproject/remapping@2.2.0: resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.1.1 '@jridgewell/trace-mapping': 0.3.17 - /@apidevtools/openapi-schemas/2.1.0: + /@apidevtools/openapi-schemas@2.1.0: resolution: {integrity: sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==} engines: {node: '>=10'} dev: true - /@apidevtools/swagger-methods/3.0.2: + /@apidevtools/swagger-methods@3.0.2: resolution: {integrity: sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==} dev: true - /@babel/code-frame/7.18.6: + /@babel/code-frame@7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 - /@babel/compat-data/7.20.5: + /@babel/compat-data@7.20.5: resolution: {integrity: sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==} engines: {node: '>=6.9.0'} - /@babel/core/7.20.5: + /@babel/core@7.20.5: resolution: {integrity: sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 '@babel/generator': 7.20.5 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 + '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.20.5) '@babel/helper-module-transforms': 7.20.2 '@babel/helpers': 7.20.6 '@babel/parser': 7.20.5 @@ -609,7 +856,7 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator/7.20.5: + /@babel/generator@7.20.5: resolution: {integrity: sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==} engines: {node: '>=6.9.0'} dependencies: @@ -617,7 +864,7 @@ packages: '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 - /@babel/helper-compilation-targets/7.20.0_@babel+core@7.20.5: + /@babel/helper-compilation-targets@7.20.0(@babel/core@7.20.5): resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -629,30 +876,30 @@ packages: browserslist: 4.21.4 semver: 6.3.0 - /@babel/helper-environment-visitor/7.18.9: + /@babel/helper-environment-visitor@7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} - /@babel/helper-function-name/7.19.0: + /@babel/helper-function-name@7.19.0: resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.18.10 '@babel/types': 7.20.5 - /@babel/helper-hoist-variables/7.18.6: + /@babel/helper-hoist-variables@7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.5 - /@babel/helper-module-imports/7.18.6: + /@babel/helper-module-imports@7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.5 - /@babel/helper-module-transforms/7.20.2: + /@babel/helper-module-transforms@7.20.2: resolution: {integrity: sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==} engines: {node: '>=6.9.0'} dependencies: @@ -667,41 +914,41 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-plugin-utils/7.19.0: + /@babel/helper-plugin-utils@7.19.0: resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-plugin-utils/7.20.2: + /@babel/helper-plugin-utils@7.20.2: resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-simple-access/7.20.2: + /@babel/helper-simple-access@7.20.2: resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.5 - /@babel/helper-split-export-declaration/7.18.6: + /@babel/helper-split-export-declaration@7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.5 - /@babel/helper-string-parser/7.19.4: + /@babel/helper-string-parser@7.19.4: resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier/7.19.1: + /@babel/helper-validator-identifier@7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option/7.18.6: + /@babel/helper-validator-option@7.18.6: resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} engines: {node: '>=6.9.0'} - /@babel/helpers/7.20.6: + /@babel/helpers@7.20.6: resolution: {integrity: sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==} engines: {node: '>=6.9.0'} dependencies: @@ -711,7 +958,7 @@ packages: transitivePeerDependencies: - supports-color - /@babel/highlight/7.18.6: + /@babel/highlight@7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: @@ -719,14 +966,14 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser/7.20.5: + /@babel/parser@7.20.5: resolution: {integrity: sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==} engines: {node: '>=6.0.0'} hasBin: true dependencies: '@babel/types': 7.20.5 - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.5: + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.20.5): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -735,7 +982,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.20.5): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -744,7 +991,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.5: + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.20.5): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -753,7 +1000,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.20.5: + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.20.5): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -762,7 +1009,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.20.5): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -771,7 +1018,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.5: + /@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.20.5): resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} peerDependencies: @@ -781,7 +1028,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.5: + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.20.5): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -790,7 +1037,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.20.5): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -799,7 +1046,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.5: + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.20.5): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -808,7 +1055,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.20.5): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -817,7 +1064,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.20.5): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -826,7 +1073,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.20.5): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -835,7 +1082,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.5: + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.20.5): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -845,7 +1092,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.20.5: + /@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.20.5): resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -855,14 +1102,14 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/runtime/7.20.7: + /@babel/runtime@7.20.7: resolution: {integrity: sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 dev: true - /@babel/template/7.18.10: + /@babel/template@7.18.10: resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} engines: {node: '>=6.9.0'} dependencies: @@ -870,7 +1117,7 @@ packages: '@babel/parser': 7.20.5 '@babel/types': 7.20.5 - /@babel/traverse/7.20.5: + /@babel/traverse@7.20.5: resolution: {integrity: sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==} engines: {node: '>=6.9.0'} dependencies: @@ -887,7 +1134,7 @@ packages: transitivePeerDependencies: - supports-color - /@babel/types/7.20.5: + /@babel/types@7.20.5: resolution: {integrity: sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==} engines: {node: '>=6.9.0'} dependencies: @@ -895,11 +1142,11 @@ packages: '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 - /@bcoe/v8-coverage/0.2.3: + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@changesets/apply-release-plan/6.1.3: + /@changesets/apply-release-plan@6.1.3: resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} dependencies: '@babel/runtime': 7.20.7 @@ -917,7 +1164,7 @@ packages: semver: 5.7.1 dev: true - /@changesets/assemble-release-plan/5.2.3: + /@changesets/assemble-release-plan@5.2.3: resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==} dependencies: '@babel/runtime': 7.20.7 @@ -928,13 +1175,13 @@ packages: semver: 5.7.1 dev: true - /@changesets/changelog-git/0.1.14: + /@changesets/changelog-git@0.1.14: resolution: {integrity: sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==} dependencies: '@changesets/types': 5.2.1 dev: true - /@changesets/cli/2.26.0: + /@changesets/cli@2.26.0: resolution: {integrity: sha512-0cbTiDms+ICTVtEwAFLNW0jBNex9f5+fFv3I771nBvdnV/mOjd1QJ4+f8KtVSOrwD9SJkk9xbDkWFb0oXd8d1Q==} hasBin: true dependencies: @@ -973,7 +1220,7 @@ packages: tty-table: 4.1.6 dev: true - /@changesets/config/2.3.0: + /@changesets/config@2.3.0: resolution: {integrity: sha512-EgP/px6mhCx8QeaMAvWtRrgyxW08k/Bx2tpGT+M84jEdX37v3VKfh4Cz1BkwrYKuMV2HZKeHOh8sHvja/HcXfQ==} dependencies: '@changesets/errors': 0.1.4 @@ -985,13 +1232,13 @@ packages: micromatch: 4.0.5 dev: true - /@changesets/errors/0.1.4: + /@changesets/errors@0.1.4: resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} dependencies: extendable-error: 0.1.7 dev: true - /@changesets/get-dependents-graph/1.3.5: + /@changesets/get-dependents-graph@1.3.5: resolution: {integrity: sha512-w1eEvnWlbVDIY8mWXqWuYE9oKhvIaBhzqzo4ITSJY9hgoqQ3RoBqwlcAzg11qHxv/b8ReDWnMrpjpKrW6m1ZTA==} dependencies: '@changesets/types': 5.2.1 @@ -1001,7 +1248,7 @@ packages: semver: 5.7.1 dev: true - /@changesets/get-release-plan/3.0.16: + /@changesets/get-release-plan@3.0.16: resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} dependencies: '@babel/runtime': 7.20.7 @@ -1013,11 +1260,11 @@ packages: '@manypkg/get-packages': 1.1.3 dev: true - /@changesets/get-version-range-type/0.3.2: + /@changesets/get-version-range-type@0.3.2: resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} dev: true - /@changesets/git/2.0.0: + /@changesets/git@2.0.0: resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} dependencies: '@babel/runtime': 7.20.7 @@ -1029,20 +1276,20 @@ packages: spawndamnit: 2.0.0 dev: true - /@changesets/logger/0.0.5: + /@changesets/logger@0.0.5: resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} dependencies: chalk: 2.4.2 dev: true - /@changesets/parse/0.3.16: + /@changesets/parse@0.3.16: resolution: {integrity: sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==} dependencies: '@changesets/types': 5.2.1 js-yaml: 3.14.1 dev: true - /@changesets/pre/1.0.14: + /@changesets/pre@1.0.14: resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} dependencies: '@babel/runtime': 7.20.7 @@ -1052,7 +1299,7 @@ packages: fs-extra: 7.0.1 dev: true - /@changesets/read/0.5.9: + /@changesets/read@0.5.9: resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} dependencies: '@babel/runtime': 7.20.7 @@ -1065,15 +1312,15 @@ packages: p-filter: 2.1.0 dev: true - /@changesets/types/4.1.0: + /@changesets/types@4.1.0: resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} dev: true - /@changesets/types/5.2.1: + /@changesets/types@5.2.1: resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==} dev: true - /@changesets/write/0.2.3: + /@changesets/write@0.2.3: resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} dependencies: '@babel/runtime': 7.20.7 @@ -1083,51 +1330,33 @@ packages: prettier: 2.8.3 dev: true - /@chevrotain/cst-dts-gen/10.4.2: + /@chevrotain/cst-dts-gen@10.4.2: resolution: {integrity: sha512-0+4bNjlndNWMoVLH/+y4uHnf6GrTipsC+YTppJxelVJo+xeRVQ0s2PpkdDCVTsu7efyj+8r1gFiwVXsp6JZ0iQ==} dependencies: '@chevrotain/gast': 10.4.2 '@chevrotain/types': 10.4.2 lodash: 4.17.21 - /@chevrotain/gast/10.4.2: + /@chevrotain/gast@10.4.2: resolution: {integrity: sha512-4ZAn8/mjkmYonilSJ60gGj1tAF0cVWYUMlIGA0e4ATAc3a648aCnvpBw7zlPHDQjFp50XC13iyWEgWAKiRKTOA==} dependencies: '@chevrotain/types': 10.4.2 lodash: 4.17.21 - /@chevrotain/types/10.4.2: + /@chevrotain/types@10.4.2: resolution: {integrity: sha512-QzSCjg6G4MvIoLeIgOiMR0IgzkGEQqrNJJIr3T5ETRa7l4Av4AMIiEctV99mvDr57iXwwk0/kr3RJxiU36Nevw==} - /@chevrotain/utils/10.4.2: + /@chevrotain/utils@10.4.2: resolution: {integrity: sha512-V34dacxWLwKcvcy32dx96ADJVdB7kOJLm7LyBkBQw5u5HC9WdEFw2G17zml+U3ivavGTrGPJHl8o9/UJm0PlUw==} - /@cspotcode/source-map-support/0.8.1: + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} dependencies: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@esbuild/android-arm/0.15.12: - resolution: {integrity: sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm/0.17.14: - resolution: {integrity: sha512-0CnlwnjDU8cks0yJLXfkaU/uoLyRf9VZJs4p1PskBr2AlAHeEsFEwJEo0of/Z3g+ilw5mpyDwThlxzNEIxOE4g==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm64/0.17.14: + /@esbuild/android-arm64@0.17.14: resolution: {integrity: sha512-eLOpPO1RvtsP71afiFTvS7tVFShJBCT0txiv/xjFBo5a7R7Gjw7X0IgIaFoLKhqXYAXhahoXm7qAmRXhY4guJg==} engines: {node: '>=12'} cpu: [arm64] @@ -1136,7 +1365,25 @@ packages: dev: true optional: true - /@esbuild/android-x64/0.17.14: + /@esbuild/android-arm@0.15.12: + resolution: {integrity: sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.17.14: + resolution: {integrity: sha512-0CnlwnjDU8cks0yJLXfkaU/uoLyRf9VZJs4p1PskBr2AlAHeEsFEwJEo0of/Z3g+ilw5mpyDwThlxzNEIxOE4g==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.17.14: resolution: {integrity: sha512-nrfQYWBfLGfSGLvRVlt6xi63B5IbfHm3tZCdu/82zuFPQ7zez4XjmRtF/wIRYbJQ/DsZrxJdEvYFE67avYXyng==} engines: {node: '>=12'} cpu: [x64] @@ -1145,7 +1392,7 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64/0.17.14: + /@esbuild/darwin-arm64@0.17.14: resolution: {integrity: sha512-eoSjEuDsU1ROwgBH/c+fZzuSyJUVXQTOIN9xuLs9dE/9HbV/A5IqdXHU1p2OfIMwBwOYJ9SFVGGldxeRCUJFyw==} engines: {node: '>=12'} cpu: [arm64] @@ -1154,7 +1401,7 @@ packages: dev: true optional: true - /@esbuild/darwin-x64/0.17.14: + /@esbuild/darwin-x64@0.17.14: resolution: {integrity: sha512-zN0U8RWfrDttdFNkHqFYZtOH8hdi22z0pFm0aIJPsNC4QQZv7je8DWCX5iA4Zx6tRhS0CCc0XC2m7wKsbWEo5g==} engines: {node: '>=12'} cpu: [x64] @@ -1163,7 +1410,7 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64/0.17.14: + /@esbuild/freebsd-arm64@0.17.14: resolution: {integrity: sha512-z0VcD4ibeZWVQCW1O7szaLxGsx54gcCnajEJMdYoYjLiq4g1jrP2lMq6pk71dbS5+7op/L2Aod+erw+EUr28/A==} engines: {node: '>=12'} cpu: [arm64] @@ -1172,7 +1419,7 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64/0.17.14: + /@esbuild/freebsd-x64@0.17.14: resolution: {integrity: sha512-hd9mPcxfTgJlolrPlcXkQk9BMwNBvNBsVaUe5eNUqXut6weDQH8whcNaKNF2RO8NbpT6GY8rHOK2A9y++s+ehw==} engines: {node: '>=12'} cpu: [x64] @@ -1181,16 +1428,7 @@ packages: dev: true optional: true - /@esbuild/linux-arm/0.17.14: - resolution: {integrity: sha512-BNTl+wSJ1omsH8s3TkQmIIIQHwvwJrU9u1ggb9XU2KTVM4TmthRIVyxSp2qxROJHhZuW/r8fht46/QE8hU8Qvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm64/0.17.14: + /@esbuild/linux-arm64@0.17.14: resolution: {integrity: sha512-FhAMNYOq3Iblcj9i+K0l1Fp/MHt+zBeRu/Qkf0LtrcFu3T45jcwB6A1iMsemQ42vR3GBhjNZJZTaCe3VFPbn9g==} engines: {node: '>=12'} cpu: [arm64] @@ -1199,7 +1437,16 @@ packages: dev: true optional: true - /@esbuild/linux-ia32/0.17.14: + /@esbuild/linux-arm@0.17.14: + resolution: {integrity: sha512-BNTl+wSJ1omsH8s3TkQmIIIQHwvwJrU9u1ggb9XU2KTVM4TmthRIVyxSp2qxROJHhZuW/r8fht46/QE8hU8Qvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.17.14: resolution: {integrity: sha512-91OK/lQ5y2v7AsmnFT+0EyxdPTNhov3y2CWMdizyMfxSxRqHazXdzgBKtlmkU2KYIc+9ZK3Vwp2KyXogEATYxQ==} engines: {node: '>=12'} cpu: [ia32] @@ -1208,7 +1455,7 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.15.12: + /@esbuild/linux-loong64@0.15.12: resolution: {integrity: sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw==} engines: {node: '>=12'} cpu: [loong64] @@ -1217,7 +1464,7 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.17.14: + /@esbuild/linux-loong64@0.17.14: resolution: {integrity: sha512-vp15H+5NR6hubNgMluqqKza85HcGJgq7t6rMH7O3Y6ApiOWPkvW2AJfNojUQimfTp6OUrACUXfR4hmpcENXoMQ==} engines: {node: '>=12'} cpu: [loong64] @@ -1226,7 +1473,7 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el/0.17.14: + /@esbuild/linux-mips64el@0.17.14: resolution: {integrity: sha512-90TOdFV7N+fgi6c2+GO9ochEkmm9kBAKnuD5e08GQMgMINOdOFHuYLPQ91RYVrnWwQ5683sJKuLi9l4SsbJ7Hg==} engines: {node: '>=12'} cpu: [mips64el] @@ -1235,7 +1482,7 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64/0.17.14: + /@esbuild/linux-ppc64@0.17.14: resolution: {integrity: sha512-NnBGeoqKkTugpBOBZZoktQQ1Yqb7aHKmHxsw43NddPB2YWLAlpb7THZIzsRsTr0Xw3nqiPxbA1H31ZMOG+VVPQ==} engines: {node: '>=12'} cpu: [ppc64] @@ -1244,7 +1491,7 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64/0.17.14: + /@esbuild/linux-riscv64@0.17.14: resolution: {integrity: sha512-0qdlKScLXA8MGVy21JUKvMzCYWovctuP8KKqhtE5A6IVPq4onxXhSuhwDd2g5sRCzNDlDjitc5sX31BzDoL5Fw==} engines: {node: '>=12'} cpu: [riscv64] @@ -1253,7 +1500,7 @@ packages: dev: true optional: true - /@esbuild/linux-s390x/0.17.14: + /@esbuild/linux-s390x@0.17.14: resolution: {integrity: sha512-Hdm2Jo1yaaOro4v3+6/zJk6ygCqIZuSDJHdHaf8nVH/tfOuoEX5Riv03Ka15LmQBYJObUTNS1UdyoMk0WUn9Ww==} engines: {node: '>=12'} cpu: [s390x] @@ -1262,7 +1509,7 @@ packages: dev: true optional: true - /@esbuild/linux-x64/0.17.14: + /@esbuild/linux-x64@0.17.14: resolution: {integrity: sha512-8KHF17OstlK4DuzeF/KmSgzrTWQrkWj5boluiiq7kvJCiQVzUrmSkaBvcLB2UgHpKENO2i6BthPkmUhNDaJsVw==} engines: {node: '>=12'} cpu: [x64] @@ -1271,7 +1518,7 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64/0.17.14: + /@esbuild/netbsd-x64@0.17.14: resolution: {integrity: sha512-nVwpqvb3yyXztxIT2+VsxJhB5GCgzPdk1n0HHSnchRAcxqKO6ghXwHhJnr0j/B+5FSyEqSxF4q03rbA2fKXtUQ==} engines: {node: '>=12'} cpu: [x64] @@ -1280,7 +1527,7 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64/0.17.14: + /@esbuild/openbsd-x64@0.17.14: resolution: {integrity: sha512-1RZ7uQQ9zcy/GSAJL1xPdN7NDdOOtNEGiJalg/MOzeakZeTrgH/DoCkbq7TaPDiPhWqnDF+4bnydxRqQD7il6g==} engines: {node: '>=12'} cpu: [x64] @@ -1289,7 +1536,7 @@ packages: dev: true optional: true - /@esbuild/sunos-x64/0.17.14: + /@esbuild/sunos-x64@0.17.14: resolution: {integrity: sha512-nqMjDsFwv7vp7msrwWRysnM38Sd44PKmW8EzV01YzDBTcTWUpczQg6mGao9VLicXSgW/iookNK6AxeogNVNDZA==} engines: {node: '>=12'} cpu: [x64] @@ -1298,7 +1545,7 @@ packages: dev: true optional: true - /@esbuild/win32-arm64/0.17.14: + /@esbuild/win32-arm64@0.17.14: resolution: {integrity: sha512-xrD0mccTKRBBIotrITV7WVQAwNJ5+1va6L0H9zN92v2yEdjfAN7864cUaZwJS7JPEs53bDTzKFbfqVlG2HhyKQ==} engines: {node: '>=12'} cpu: [arm64] @@ -1307,7 +1554,7 @@ packages: dev: true optional: true - /@esbuild/win32-ia32/0.17.14: + /@esbuild/win32-ia32@0.17.14: resolution: {integrity: sha512-nXpkz9bbJrLLyUTYtRotSS3t5b+FOuljg8LgLdINWFs3FfqZMtbnBCZFUmBzQPyxqU87F8Av+3Nco/M3hEcu1w==} engines: {node: '>=12'} cpu: [ia32] @@ -1316,7 +1563,7 @@ packages: dev: true optional: true - /@esbuild/win32-x64/0.17.14: + /@esbuild/win32-x64@0.17.14: resolution: {integrity: sha512-gPQmsi2DKTaEgG14hc3CHXHp62k8g6qr0Pas+I4lUxRMugGSATh/Bi8Dgusoz9IQ0IfdrvLpco6kujEIBoaogA==} engines: {node: '>=12'} cpu: [x64] @@ -1325,7 +1572,7 @@ packages: dev: true optional: true - /@eslint/eslintrc/1.3.3: + /@eslint/eslintrc@1.3.3: resolution: {integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -1342,7 +1589,7 @@ packages: - supports-color dev: true - /@eslint/eslintrc/1.4.0: + /@eslint/eslintrc@1.4.0: resolution: {integrity: sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -1359,7 +1606,7 @@ packages: - supports-color dev: true - /@eslint/eslintrc/2.0.0: + /@eslint/eslintrc@2.0.0: resolution: {integrity: sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -1376,34 +1623,34 @@ packages: - supports-color dev: true - /@eslint/js/8.35.0: + /@eslint/js@8.35.0: resolution: {integrity: sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@fastify/ajv-compiler/3.5.0: + /@fastify/ajv-compiler@3.5.0: resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==} dependencies: ajv: 8.12.0 - ajv-formats: 2.1.1_ajv@8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) fast-uri: 2.2.0 dev: true - /@fastify/deepmerge/1.3.0: + /@fastify/deepmerge@1.3.0: resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==} dev: true - /@fastify/error/3.2.0: + /@fastify/error@3.2.0: resolution: {integrity: sha512-KAfcLa+CnknwVi5fWogrLXgidLic+GXnLjijXdpl8pvkvbXU5BGa37iZO9FGvsh9ZL4y+oFi5cbHBm5UOG+dmQ==} dev: true - /@fastify/fast-json-stringify-compiler/4.2.0: + /@fastify/fast-json-stringify-compiler@4.2.0: resolution: {integrity: sha512-ypZynRvXA3dibfPykQN3RB5wBdEUgSGgny8Qc6k163wYPLD4mEGEDkACp+00YmqkGvIm8D/xYoHajwyEdWD/eg==} dependencies: fast-json-stringify: 5.6.2 dev: true - /@humanwhocodes/config-array/0.11.7: + /@humanwhocodes/config-array@0.11.7: resolution: {integrity: sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==} engines: {node: '>=10.10.0'} dependencies: @@ -1414,7 +1661,7 @@ packages: - supports-color dev: true - /@humanwhocodes/config-array/0.11.8: + /@humanwhocodes/config-array@0.11.8: resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} engines: {node: '>=10.10.0'} dependencies: @@ -1425,21 +1672,21 @@ packages: - supports-color dev: true - /@humanwhocodes/module-importer/1.0.1: + /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} dev: true - /@humanwhocodes/momoa/2.0.4: + /@humanwhocodes/momoa@2.0.4: resolution: {integrity: sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA==} engines: {node: '>=10.10.0'} dev: true - /@humanwhocodes/object-schema/1.2.1: + /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@istanbuljs/load-nyc-config/1.1.0: + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} dependencies: @@ -1450,12 +1697,12 @@ packages: resolve-from: 5.0.0 dev: true - /@istanbuljs/schema/0.1.3: + /@istanbuljs/schema@0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} dev: true - /@jest/console/29.5.0: + /@jest/console@29.5.0: resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1467,7 +1714,7 @@ packages: slash: 3.0.0 dev: true - /@jest/core/29.5.0: + /@jest/core@29.5.0: resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -1488,7 +1735,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.5.0 - jest-config: 29.5.0_@types+node@18.14.2 + jest-config: 29.5.0(@types/node@18.14.2) jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -1509,7 +1756,7 @@ packages: - ts-node dev: true - /@jest/core/29.5.0_ts-node@10.9.1: + /@jest/core@29.5.0(ts-node@10.9.1): resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -1530,7 +1777,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.5.0 - jest-config: 29.5.0_jboh4c3iv3wxuja4m36ecyac7e + jest-config: 29.5.0(@types/node@18.14.2)(ts-node@10.9.1) jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -1551,7 +1798,7 @@ packages: - ts-node dev: true - /@jest/environment/29.5.0: + /@jest/environment@29.5.0: resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1561,14 +1808,14 @@ packages: jest-mock: 29.5.0 dev: true - /@jest/expect-utils/29.5.0: + /@jest/expect-utils@29.5.0: resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.4.3 dev: true - /@jest/expect/29.5.0: + /@jest/expect@29.5.0: resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1578,7 +1825,7 @@ packages: - supports-color dev: true - /@jest/fake-timers/29.5.0: + /@jest/fake-timers@29.5.0: resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1590,7 +1837,7 @@ packages: jest-util: 29.5.0 dev: true - /@jest/globals/29.5.0: + /@jest/globals@29.5.0: resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1602,7 +1849,7 @@ packages: - supports-color dev: true - /@jest/reporters/29.5.0: + /@jest/reporters@29.5.0: resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -1639,14 +1886,21 @@ packages: - supports-color dev: true - /@jest/schemas/29.4.3: + /@jest/schemas@29.0.0: + resolution: {integrity: sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.24.47 + dev: true + + /@jest/schemas@29.4.3: resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.25.24 dev: true - /@jest/source-map/29.4.3: + /@jest/source-map@29.4.3: resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1655,7 +1909,7 @@ packages: graceful-fs: 4.2.10 dev: true - /@jest/test-result/29.5.0: + /@jest/test-result@29.5.0: resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1665,7 +1919,7 @@ packages: collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/29.5.0: + /@jest/test-sequencer@29.5.0: resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1675,7 +1929,7 @@ packages: slash: 3.0.0 dev: true - /@jest/transform/29.5.0: + /@jest/transform@29.5.0: resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1698,7 +1952,31 @@ packages: - supports-color dev: true - /@jest/types/29.5.0: + /@jest/types@29.0.3: + resolution: {integrity: sha512-coBJmOQvurXjN1Hh5PzF7cmsod0zLIOXpP8KD161mqNlroMhLcwpODiEzi7ZsRl5Z/AIuxpeNm8DCl43F4kz8A==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.0.0 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 18.14.2 + '@types/yargs': 17.0.12 + chalk: 4.1.2 + dev: true + + /@jest/types@29.2.1: + resolution: {integrity: sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.0.0 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 18.14.2 + '@types/yargs': 17.0.13 + chalk: 4.1.2 + dev: true + + /@jest/types@29.5.0: resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1710,14 +1988,14 @@ packages: chalk: 4.1.2 dev: true - /@jridgewell/gen-mapping/0.1.1: + /@jridgewell/gen-mapping@0.1.1: resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.14 - /@jridgewell/gen-mapping/0.3.2: + /@jridgewell/gen-mapping@0.3.2: resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} engines: {node: '>=6.0.0'} dependencies: @@ -1725,35 +2003,35 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 '@jridgewell/trace-mapping': 0.3.17 - /@jridgewell/resolve-uri/3.1.0: + /@jridgewell/resolve-uri@3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} - /@jridgewell/set-array/1.1.2: + /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - /@jridgewell/sourcemap-codec/1.4.14: + /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - /@jridgewell/trace-mapping/0.3.17: + /@jridgewell/trace-mapping@0.3.17: resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 - /@jridgewell/trace-mapping/0.3.9: + /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@jsdevtools/ono/7.1.3: + /@jsdevtools/ono@7.1.3: resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} dev: true - /@manypkg/find-root/1.1.0: + /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: '@babel/runtime': 7.20.7 @@ -1762,7 +2040,7 @@ packages: fs-extra: 8.1.0 dev: true - /@manypkg/get-packages/1.1.3: + /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: '@babel/runtime': 7.20.7 @@ -1773,10 +2051,10 @@ packages: read-yaml-file: 1.1.0 dev: true - /@next/env/12.3.1: + /@next/env@12.3.1: resolution: {integrity: sha512-9P9THmRFVKGKt9DYqeC2aKIxm8rlvkK38V1P1sRE7qyoPBIs8l9oo79QoSdPtOWfzkbDAVUqvbQGgTMsb8BtJg==} - /@next/swc-android-arm-eabi/12.3.1: + /@next/swc-android-arm-eabi@12.3.1: resolution: {integrity: sha512-i+BvKA8tB//srVPPQxIQN5lvfROcfv4OB23/L1nXznP+N/TyKL8lql3l7oo2LNhnH66zWhfoemg3Q4VJZSruzQ==} engines: {node: '>= 10'} cpu: [arm] @@ -1784,7 +2062,7 @@ packages: requiresBuild: true optional: true - /@next/swc-android-arm64/12.3.1: + /@next/swc-android-arm64@12.3.1: resolution: {integrity: sha512-CmgU2ZNyBP0rkugOOqLnjl3+eRpXBzB/I2sjwcGZ7/Z6RcUJXK5Evz+N0ucOxqE4cZ3gkTeXtSzRrMK2mGYV8Q==} engines: {node: '>= 10'} cpu: [arm64] @@ -1792,7 +2070,7 @@ packages: requiresBuild: true optional: true - /@next/swc-darwin-arm64/12.3.1: + /@next/swc-darwin-arm64@12.3.1: resolution: {integrity: sha512-hT/EBGNcu0ITiuWDYU9ur57Oa4LybD5DOQp4f22T6zLfpoBMfBibPtR8XktXmOyFHrL/6FC2p9ojdLZhWhvBHg==} engines: {node: '>= 10'} cpu: [arm64] @@ -1800,7 +2078,7 @@ packages: requiresBuild: true optional: true - /@next/swc-darwin-x64/12.3.1: + /@next/swc-darwin-x64@12.3.1: resolution: {integrity: sha512-9S6EVueCVCyGf2vuiLiGEHZCJcPAxglyckTZcEwLdJwozLqN0gtS0Eq0bQlGS3dH49Py/rQYpZ3KVWZ9BUf/WA==} engines: {node: '>= 10'} cpu: [x64] @@ -1808,7 +2086,7 @@ packages: requiresBuild: true optional: true - /@next/swc-freebsd-x64/12.3.1: + /@next/swc-freebsd-x64@12.3.1: resolution: {integrity: sha512-qcuUQkaBZWqzM0F1N4AkAh88lLzzpfE6ImOcI1P6YeyJSsBmpBIV8o70zV+Wxpc26yV9vpzb+e5gCyxNjKJg5Q==} engines: {node: '>= 10'} cpu: [x64] @@ -1816,7 +2094,7 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-arm-gnueabihf/12.3.1: + /@next/swc-linux-arm-gnueabihf@12.3.1: resolution: {integrity: sha512-diL9MSYrEI5nY2wc/h/DBewEDUzr/DqBjIgHJ3RUNtETAOB3spMNHvJk2XKUDjnQuluLmFMloet9tpEqU2TT9w==} engines: {node: '>= 10'} cpu: [arm] @@ -1824,7 +2102,7 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-arm64-gnu/12.3.1: + /@next/swc-linux-arm64-gnu@12.3.1: resolution: {integrity: sha512-o/xB2nztoaC7jnXU3Q36vGgOolJpsGG8ETNjxM1VAPxRwM7FyGCPHOMk1XavG88QZSQf+1r+POBW0tLxQOJ9DQ==} engines: {node: '>= 10'} cpu: [arm64] @@ -1832,7 +2110,7 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-arm64-musl/12.3.1: + /@next/swc-linux-arm64-musl@12.3.1: resolution: {integrity: sha512-2WEasRxJzgAmP43glFNhADpe8zB7kJofhEAVNbDJZANp+H4+wq+/cW1CdDi8DqjkShPEA6/ejJw+xnEyDID2jg==} engines: {node: '>= 10'} cpu: [arm64] @@ -1840,7 +2118,7 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-x64-gnu/12.3.1: + /@next/swc-linux-x64-gnu@12.3.1: resolution: {integrity: sha512-JWEaMyvNrXuM3dyy9Pp5cFPuSSvG82+yABqsWugjWlvfmnlnx9HOQZY23bFq3cNghy5V/t0iPb6cffzRWylgsA==} engines: {node: '>= 10'} cpu: [x64] @@ -1848,7 +2126,7 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-x64-musl/12.3.1: + /@next/swc-linux-x64-musl@12.3.1: resolution: {integrity: sha512-xoEWQQ71waWc4BZcOjmatuvPUXKTv6MbIFzpm4LFeCHsg2iwai0ILmNXf81rJR+L1Wb9ifEke2sQpZSPNz1Iyg==} engines: {node: '>= 10'} cpu: [x64] @@ -1856,7 +2134,7 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-arm64-msvc/12.3.1: + /@next/swc-win32-arm64-msvc@12.3.1: resolution: {integrity: sha512-hswVFYQYIeGHE2JYaBVtvqmBQ1CppplQbZJS/JgrVI3x2CurNhEkmds/yqvDONfwfbttTtH4+q9Dzf/WVl3Opw==} engines: {node: '>= 10'} cpu: [arm64] @@ -1864,7 +2142,7 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-ia32-msvc/12.3.1: + /@next/swc-win32-ia32-msvc@12.3.1: resolution: {integrity: sha512-Kny5JBehkTbKPmqulr5i+iKntO5YMP+bVM8Hf8UAmjSMVo3wehyLVc9IZkNmcbxi+vwETnQvJaT5ynYBkJ9dWA==} engines: {node: '>= 10'} cpu: [ia32] @@ -1872,7 +2150,7 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-x64-msvc/12.3.1: + /@next/swc-win32-x64-msvc@12.3.1: resolution: {integrity: sha512-W1ijvzzg+kPEX6LAc+50EYYSEo0FVu7dmTE+t+DM4iOLqgGHoW9uYSz9wCVdkXOEEMP9xhXfGpcSxsfDucyPkA==} engines: {node: '>= 10'} cpu: [x64] @@ -1880,33 +2158,33 @@ packages: requiresBuild: true optional: true - /@noble/hashes/1.3.0: + /@noble/hashes@1.3.0: resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} dev: false - /@nodelib/fs.scandir/2.1.5: + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - /@nodelib/fs.stat/2.0.5: + /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - /@nodelib/fs.walk/1.2.8: + /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - /@opentelemetry/api/1.3.0: + /@opentelemetry/api@1.3.0: resolution: {integrity: sha512-YveTnGNsFFixTKJz09Oi4zYkiLT5af3WpZDu4aIUM7xX+2bHAkOJayFTVQd6zB8kkWPpbua4Ha6Ql00grdLlJQ==} engines: {node: '>=8.0.0'} - /@opentelemetry/core/1.8.0_@opentelemetry+api@1.3.0: + /@opentelemetry/core@1.8.0(@opentelemetry/api@1.3.0): resolution: {integrity: sha512-6SDjwBML4Am0AQmy7z1j6HGrWDgeK8awBRUvl1PGw6HayViMk4QpnUXvv4HTHisecgVBy43NE/cstWprm8tIfw==} engines: {node: '>=14'} peerDependencies: @@ -1915,50 +2193,50 @@ packages: '@opentelemetry/api': 1.3.0 '@opentelemetry/semantic-conventions': 1.8.0 - /@opentelemetry/resources/1.8.0_@opentelemetry+api@1.3.0: + /@opentelemetry/resources@1.8.0(@opentelemetry/api@1.3.0): resolution: {integrity: sha512-KSyMH6Jvss/PFDy16z5qkCK0ERlpyqixb1xwb73wLMvVq+j7i89lobDjw3JkpCcd1Ws0J6jAI4fw28Zufj2ssg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.4.0' dependencies: '@opentelemetry/api': 1.3.0 - '@opentelemetry/core': 1.8.0_@opentelemetry+api@1.3.0 + '@opentelemetry/core': 1.8.0(@opentelemetry/api@1.3.0) '@opentelemetry/semantic-conventions': 1.8.0 - /@opentelemetry/sdk-trace-base/1.8.0_@opentelemetry+api@1.3.0: + /@opentelemetry/sdk-trace-base@1.8.0(@opentelemetry/api@1.3.0): resolution: {integrity: sha512-iH41m0UTddnCKJzZx3M85vlhKzRcmT48pUeBbnzsGrq4nIay1oWVHKM5nhB5r8qRDGvd/n7f/YLCXClxwM0tvA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.4.0' dependencies: '@opentelemetry/api': 1.3.0 - '@opentelemetry/core': 1.8.0_@opentelemetry+api@1.3.0 - '@opentelemetry/resources': 1.8.0_@opentelemetry+api@1.3.0 + '@opentelemetry/core': 1.8.0(@opentelemetry/api@1.3.0) + '@opentelemetry/resources': 1.8.0(@opentelemetry/api@1.3.0) '@opentelemetry/semantic-conventions': 1.8.0 - /@opentelemetry/semantic-conventions/1.8.0: + /@opentelemetry/semantic-conventions@1.8.0: resolution: {integrity: sha512-TYh1MRcm4JnvpqtqOwT9WYaBYY4KERHdToxs/suDTLviGRsQkIjS5yYROTYTSJQUnYLOn/TuOh5GoMwfLSU+Ew==} engines: {node: '>=14'} - /@paralleldrive/cuid2/2.2.0: + /@paralleldrive/cuid2@2.2.0: resolution: {integrity: sha512-CVQDpPIUHrUGGLdrMGz1NmqZvqmsB2j2rCIQEu1EvxWjlFh4fhvEGmgR409cY20/67/WlJsggenq0no3p3kYsw==} dependencies: '@noble/hashes': 1.3.0 dev: false - /@pnpm/config.env-replace/1.0.0: + /@pnpm/config.env-replace@1.0.0: resolution: {integrity: sha512-ZVPVDi1E8oeXlYqkGRtX0CkzLTwE2zt62bjWaWKaAvI8NZqHzlMvGeSNDpW+JB3+aKanYb4UETJOF1/CxGPemA==} engines: {node: '>=12.22.0'} dev: false - /@pnpm/network.ca-file/1.0.2: + /@pnpm/network.ca-file@1.0.2: resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} engines: {node: '>=12.22.0'} dependencies: graceful-fs: 4.2.10 dev: false - /@pnpm/npm-conf/2.1.0: + /@pnpm/npm-conf@2.1.0: resolution: {integrity: sha512-Oe6ntvgsMTE3hDIqy6sajqHF+MnzJrOF06qC2QSiUEybLL7cp6tjoKUa32gpd9+KPVl4QyMs3E3nsXrx/Vdnlw==} engines: {node: '>=12'} dependencies: @@ -1967,21 +2245,7 @@ packages: config-chain: 1.1.13 dev: false - /@prisma/client/4.12.0_prisma@4.7.0: - resolution: {integrity: sha512-j9/ighfWwux97J2dS15nqhl60tYoH8V0IuSsgZDb6bCFcQD3fXbXmxjYC8GHhIgOk3lB7Pq+8CwElz2MiDpsSg==} - engines: {node: '>=14.17'} - requiresBuild: true - peerDependencies: - prisma: '*' - peerDependenciesMeta: - prisma: - optional: true - dependencies: - '@prisma/engines-version': 4.12.0-67.659ef412370fa3b41cd7bf6e94587c1dfb7f67e7 - prisma: 4.7.0 - dev: false - - /@prisma/client/4.7.1: + /@prisma/client@4.7.1: resolution: {integrity: sha512-/GbnOwIPtjiveZNUzGXOdp7RxTEkHL4DZP3vBaFNadfr6Sf0RshU5EULFzVaSi9i9PIK9PYd+1Rn7z2B2npb9w==} engines: {node: '>=14.17'} requiresBuild: true @@ -1994,7 +2258,7 @@ packages: '@prisma/engines-version': 4.7.1-1.272861e07ab64f234d3ffc4094e32bd61775599c dev: false - /@prisma/client/4.7.1_prisma@4.7.0: + /@prisma/client@4.7.1(prisma@4.7.0): resolution: {integrity: sha512-/GbnOwIPtjiveZNUzGXOdp7RxTEkHL4DZP3vBaFNadfr6Sf0RshU5EULFzVaSi9i9PIK9PYd+1Rn7z2B2npb9w==} engines: {node: '>=14.17'} requiresBuild: true @@ -2008,7 +2272,7 @@ packages: prisma: 4.7.0 dev: false - /@prisma/debug/4.7.1: + /@prisma/debug@4.7.1: resolution: {integrity: sha512-oppjBRcTakJuAn0rANxWT9caxLKypSBT4Ajh7t+uPcO06CJOoN2Gt4VpFdw2i79U+klGAjTe/1yh8SCsTmxAhA==} dependencies: '@types/debug': 4.1.7 @@ -2017,11 +2281,11 @@ packages: transitivePeerDependencies: - supports-color - /@prisma/engine-core/4.7.1: + /@prisma/engine-core@4.7.1: resolution: {integrity: sha512-8NwCQcdB4OqOjpehChtKdVn6UVuDTwZewnRG13aeK+KmZurPqGO1LhwB3dTjlfLRlbYsLGb3Xzsai7Jl5QckBA==} dependencies: '@opentelemetry/api': 1.3.0 - '@opentelemetry/sdk-trace-base': 1.8.0_@opentelemetry+api@1.3.0 + '@opentelemetry/sdk-trace-base': 1.8.0(@opentelemetry/api@1.3.0) '@prisma/debug': 4.7.1 '@prisma/engines': 4.7.1 '@prisma/generator-helper': 4.7.1 @@ -2037,23 +2301,19 @@ packages: transitivePeerDependencies: - supports-color - /@prisma/engines-version/4.12.0-67.659ef412370fa3b41cd7bf6e94587c1dfb7f67e7: - resolution: {integrity: sha512-JIHNj5jlXb9mcaJwakM0vpgRYJIAurxTUqM0iX0tfEQA5XLZ9ONkIckkhuAKdAzocZ+80GYg7QSsfpjg7OxbOA==} - dev: false - - /@prisma/engines-version/4.7.1-1.272861e07ab64f234d3ffc4094e32bd61775599c: + /@prisma/engines-version@4.7.1-1.272861e07ab64f234d3ffc4094e32bd61775599c: resolution: {integrity: sha512-Bd4LZ+WAnUHOq31e9X/ihi5zPlr4SzTRwUZZYxvWOxlerIZ7HJlVa9zXpuKTKLpI9O1l8Ec4OYCKsivWCs5a3Q==} dev: false - /@prisma/engines/4.7.0: + /@prisma/engines@4.7.0: resolution: {integrity: sha512-afKrVFktaZ1pOK12/uFl2hRsBWIJZuC5FdDtacuKk5x/mR+rC5AbA+PlN3ZCZbmYTaeiBMHjcU5wbT5z2N3nSQ==} requiresBuild: true - /@prisma/engines/4.7.1: + /@prisma/engines@4.7.1: resolution: {integrity: sha512-zWabHosTdLpXXlMefHmnouhXMoTB1+SCbUU3t4FCmdrtIOZcarPKU3Alto7gm/pZ9vHlGOXHCfVZ1G7OIrSbog==} requiresBuild: true - /@prisma/fetch-engine/4.7.1: + /@prisma/fetch-engine@4.7.1: resolution: {integrity: sha512-pZ3SiUV02FTMBJOwzoqGR4YcZ2jTo43Xw1QC/5YwmRkYa5NPydUnap5rvB84DgVNq5OnOrQxhWSsakOUPqcc6g==} dependencies: '@prisma/debug': 4.7.1 @@ -2077,7 +2337,7 @@ packages: - encoding - supports-color - /@prisma/generator-helper/4.7.1: + /@prisma/generator-helper@4.7.1: resolution: {integrity: sha512-q9mjYOyLxkLWhqjvPB5sx5J1VRegWA2eC9mwrGgA0CSMo6SzZ7xwIe4rMJKnh4a7QMUO03+HQFdv/Nz7BOWCcg==} dependencies: '@prisma/debug': 4.7.1 @@ -2087,14 +2347,14 @@ packages: transitivePeerDependencies: - supports-color - /@prisma/get-platform/4.7.1: + /@prisma/get-platform@4.7.1: resolution: {integrity: sha512-p160ToD9j53TgSrg0O0q3GkGZTGwB30UqIu3B0bu/NIvhnhHOwuEo4tyDXYKblLOE2TL0e1t0PWOSQAvH3nKYw==} dependencies: '@prisma/debug': 4.7.1 transitivePeerDependencies: - supports-color - /@prisma/internals/4.7.1: + /@prisma/internals@4.7.1: resolution: {integrity: sha512-YgG+5zLZuKdVUPnNdw9XA0XGfW1vZaOqrcGgRnla0mSIIIB3Gg3noRuHv9ZQAXeHLWh2v7MHxal6fxKElMN0ug==} dependencies: '@prisma/debug': 4.7.1 @@ -2145,10 +2405,10 @@ packages: - encoding - supports-color - /@prisma/prisma-fmt-wasm/4.7.1-1.272861e07ab64f234d3ffc4094e32bd61775599c: + /@prisma/prisma-fmt-wasm@4.7.1-1.272861e07ab64f234d3ffc4094e32bd61775599c: resolution: {integrity: sha512-o9oSp2c5yDWHn9TT2Ntv3cb6LuJKPBy32gTtipYH1D166KfKBy+1RkPySobWZCKV/TrkUGlcBn5vcQgRBHPvVA==} - /@readme/better-ajv-errors/1.5.0_ajv@8.12.0: + /@readme/better-ajv-errors@1.5.0(ajv@8.12.0): resolution: {integrity: sha512-dJLAlfN5ahAb6J5t+zCv0YeJsf4mrRHllwBb6pIYZa4yfFKs3lOSAN+i+ChebbpnqCkw7IrwzPz9vzk8p5mCEw==} engines: {node: '>=14'} peerDependencies: @@ -2164,7 +2424,7 @@ packages: leven: 3.1.0 dev: true - /@readme/json-schema-ref-parser/1.2.0: + /@readme/json-schema-ref-parser@1.2.0: resolution: {integrity: sha512-Bt3QVovFSua4QmHa65EHUmh2xS0XJ3rgTEUPH998f4OW4VVJke3BuS16f+kM0ZLOGdvIrzrPRqwihuv5BAjtrA==} dependencies: '@jsdevtools/ono': 7.1.3 @@ -2173,7 +2433,7 @@ packages: js-yaml: 4.1.0 dev: true - /@readme/openapi-parser/2.4.0_openapi-types@12.1.0: + /@readme/openapi-parser@2.4.0(openapi-types@12.1.0): resolution: {integrity: sha512-KZMzLYsruShysgLgGaLNQFkinTdQu+rmVjrshhYlviHvvU6k28KYu0aOJciIQSBY0u38QHYFi74gsxU0IsmO1Q==} engines: {node: '>=14'} peerDependencies: @@ -2182,40 +2442,44 @@ packages: '@apidevtools/openapi-schemas': 2.1.0 '@apidevtools/swagger-methods': 3.0.2 '@jsdevtools/ono': 7.1.3 - '@readme/better-ajv-errors': 1.5.0_ajv@8.12.0 + '@readme/better-ajv-errors': 1.5.0(ajv@8.12.0) '@readme/json-schema-ref-parser': 1.2.0 ajv: 8.12.0 - ajv-draft-04: 1.0.0_ajv@8.12.0 + ajv-draft-04: 1.0.0(ajv@8.12.0) call-me-maybe: 1.0.2 openapi-types: 12.1.0 dev: true - /@sinclair/typebox/0.25.24: + /@sinclair/typebox@0.24.47: + resolution: {integrity: sha512-J4Xw0xYK4h7eC34MNOPQi6IkNxGRck6n4VJpWDzXIFVTW8I/D43Gf+NfWz/v/7NHlzWOPd3+T4PJ4OqklQ2u7A==} + dev: true + + /@sinclair/typebox@0.25.24: resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} dev: true - /@sinonjs/commons/2.0.0: + /@sinonjs/commons@2.0.0: resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} dependencies: type-detect: 4.0.8 dev: true - /@sinonjs/fake-timers/10.0.2: + /@sinonjs/fake-timers@10.0.2: resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} dependencies: '@sinonjs/commons': 2.0.0 dev: true - /@swc/helpers/0.4.11: + /@swc/helpers@0.4.11: resolution: {integrity: sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==} dependencies: tslib: 2.4.1 - /@tanstack/query-core/4.27.0: + /@tanstack/query-core@4.27.0: resolution: {integrity: sha512-sm+QncWaPmM73IPwFlmWSKPqjdTXZeFf/7aEmWh00z7yl2FjqophPt0dE1EHW9P1giMC5rMviv7OUbSDmWzXXA==} dev: true - /@tanstack/react-query/4.28.0_biqbaboplfbrettd7655fr4n2y: + /@tanstack/react-query@4.28.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-8cGBV5300RHlvYdS4ea+G1JcZIt5CIuprXYFnsWggkmGoC0b5JaqG0fIX3qwDL9PTNkKvG76NGThIWbpXivMrQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2229,15 +2493,15 @@ packages: dependencies: '@tanstack/query-core': 4.27.0 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - use-sync-external-store: 1.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) + use-sync-external-store: 1.2.0(react@18.2.0) dev: true - /@tootallnate/once/2.0.0: + /@tootallnate/once@2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} - /@ts-morph/common/0.17.0: + /@ts-morph/common@0.17.0: resolution: {integrity: sha512-RMSSvSfs9kb0VzkvQ2NWobwnj7TxCA9vI/IjR9bDHqgAyVbu2T0DN4wiKVqomyDWqO7dPr/tErSfq7urQ1Q37g==} dependencies: fast-glob: 3.2.12 @@ -2246,27 +2510,27 @@ packages: path-browserify: 1.0.1 dev: false - /@tsconfig/node10/1.0.9: + /@tsconfig/node10@1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} dev: true - /@tsconfig/node12/1.0.11: + /@tsconfig/node12@1.0.11: resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} dev: true - /@tsconfig/node14/1.0.3: + /@tsconfig/node14@1.0.3: resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} dev: true - /@tsconfig/node16/1.0.3: + /@tsconfig/node16@1.0.3: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} dev: true - /@types/async-exit-hook/2.0.0: + /@types/async-exit-hook@2.0.0: resolution: {integrity: sha512-RNjIyjnVZdcP5a1zeIPb5c0hq2nbJc/NOCLNKUAqeCw+J5z2zMcINISn9wybCWhczHnUu3VSUFy7ZCO6ir4ZRw==} dev: true - /@types/babel__core/7.1.19: + /@types/babel__core@7.1.19: resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: '@babel/parser': 7.20.5 @@ -2276,66 +2540,66 @@ packages: '@types/babel__traverse': 7.18.2 dev: true - /@types/babel__generator/7.6.4: + /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: '@babel/types': 7.20.5 dev: true - /@types/babel__template/7.4.1: + /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: '@babel/parser': 7.20.5 '@babel/types': 7.20.5 dev: true - /@types/babel__traverse/7.18.2: + /@types/babel__traverse@7.18.2: resolution: {integrity: sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==} dependencies: '@babel/types': 7.20.5 dev: true - /@types/bcryptjs/2.4.2: + /@types/bcryptjs@2.4.2: resolution: {integrity: sha512-LiMQ6EOPob/4yUL66SZzu6Yh77cbzJFYll+ZfaPiPPFswtIlA/Fs1MzdKYA7JApHU49zQTbJGX3PDmCpIdDBRQ==} - /@types/body-parser/1.19.2: + /@types/body-parser@1.19.2: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 '@types/node': 18.14.2 dev: true - /@types/chai-subset/1.3.3: + /@types/chai-subset@1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: '@types/chai': 4.3.4 dev: true - /@types/chai/4.3.4: + /@types/chai@4.3.4: resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} dev: true - /@types/connect/3.4.35: + /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: '@types/node': 18.14.2 dev: true - /@types/cookiejar/2.1.2: + /@types/cookiejar@2.1.2: resolution: {integrity: sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==} dev: true - /@types/cross-spawn/6.0.2: + /@types/cross-spawn@6.0.2: resolution: {integrity: sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw==} dependencies: '@types/node': 18.14.2 - /@types/debug/4.1.7: + /@types/debug@4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: '@types/ms': 0.7.31 - /@types/express-serve-static-core/4.17.33: + /@types/express-serve-static-core@4.17.33: resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==} dependencies: '@types/node': 18.14.2 @@ -2343,7 +2607,7 @@ packages: '@types/range-parser': 1.2.4 dev: true - /@types/express/4.17.17: + /@types/express@4.17.17: resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} dependencies: '@types/body-parser': 1.19.2 @@ -2352,114 +2616,114 @@ packages: '@types/serve-static': 1.15.1 dev: true - /@types/fs-extra/11.0.1: + /@types/fs-extra@11.0.1: resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} dependencies: '@types/jsonfile': 6.1.1 '@types/node': 18.14.2 dev: true - /@types/graceful-fs/4.1.5: + /@types/graceful-fs@4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: '@types/node': 18.14.2 dev: true - /@types/is-ci/3.0.0: + /@types/is-ci@3.0.0: resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} dependencies: ci-info: 3.7.1 dev: true - /@types/istanbul-lib-coverage/2.0.4: + /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true - /@types/istanbul-lib-report/3.0.0: + /@types/istanbul-lib-report@3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: '@types/istanbul-lib-coverage': 2.0.4 dev: true - /@types/istanbul-reports/3.0.1: + /@types/istanbul-reports@3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/29.5.0: + /@types/jest@29.5.0: resolution: {integrity: sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==} dependencies: expect: 29.5.0 pretty-format: 29.5.0 dev: true - /@types/json-schema/7.0.11: + /@types/json-schema@7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true - /@types/jsonfile/6.1.1: + /@types/jsonfile@6.1.1: resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} dependencies: '@types/node': 18.14.2 dev: true - /@types/lower-case-first/1.0.1: + /@types/lower-case-first@1.0.1: resolution: {integrity: sha512-Sko9LlGuUr1oqpqD2dTznreWYDWpt0OsgQxPEGudt41Rbp0iFTd3gkbo5j0MpeJCgp/Q2WRTd6MTjjZ9ax0USg==} deprecated: This is a stub types definition for lower-case-first (https://github.com/blakeembrey/lower-case-first). lower-case-first provides its own type definitions, so you don't need @types/lower-case-first installed! dependencies: lower-case-first: 2.0.2 dev: true - /@types/mime/3.0.1: + /@types/mime@3.0.1: resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} dev: true - /@types/minimist/1.2.2: + /@types/minimist@1.2.2: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/ms/0.7.31: + /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - /@types/node/12.20.55: + /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node/14.18.29: + /@types/node@14.18.29: resolution: {integrity: sha512-LhF+9fbIX4iPzhsRLpK5H7iPdvW8L4IwGciXQIOEcuF62+9nw/VQVsOViAOOGxY3OlOKGLFv0sWwJXdwQeTn6A==} - /@types/node/14.18.32: + /@types/node@14.18.32: resolution: {integrity: sha512-Y6S38pFr04yb13qqHf8uk1nHE3lXgQ30WZbv1mLliV9pt0NjvqdWttLcrOYLnXbOafknVYRHZGoMSpR9UwfYow==} dev: true - /@types/node/18.14.2: + /@types/node@18.14.2: resolution: {integrity: sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA==} - /@types/normalize-package-data/2.4.1: + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - /@types/pluralize/0.0.29: + /@types/pluralize@0.0.29: resolution: {integrity: sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA==} dev: true - /@types/prettier/2.7.2: + /@types/prettier@2.7.2: resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} dev: true - /@types/prop-types/15.7.5: + /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: true - /@types/qs/6.9.7: + /@types/qs@6.9.7: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} dev: true - /@types/range-parser/1.2.4: + /@types/range-parser@1.2.4: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: true - /@types/react/18.0.26: + /@types/react@18.0.26: resolution: {integrity: sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==} dependencies: '@types/prop-types': 15.7.5 @@ -2467,75 +2731,81 @@ packages: csstype: 3.1.1 dev: true - /@types/retry/0.12.0: + /@types/retry@0.12.0: resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} - /@types/scheduler/0.16.2: + /@types/scheduler@0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} dev: true - /@types/semver/6.2.3: + /@types/semver@6.2.3: resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} dev: true - /@types/semver/7.3.13: + /@types/semver@7.3.13: resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} dev: true - /@types/serve-static/1.15.1: + /@types/serve-static@1.15.1: resolution: {integrity: sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==} dependencies: '@types/mime': 3.0.1 '@types/node': 18.14.2 dev: true - /@types/stack-utils/2.0.1: + /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/superagent/4.1.15: + /@types/superagent@4.1.15: resolution: {integrity: sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ==} dependencies: '@types/cookiejar': 2.1.2 '@types/node': 18.14.2 dev: true - /@types/supertest/2.0.12: + /@types/supertest@2.0.12: resolution: {integrity: sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ==} dependencies: '@types/superagent': 4.1.15 dev: true - /@types/tmp/0.2.3: + /@types/tmp@0.2.3: resolution: {integrity: sha512-dDZH/tXzwjutnuk4UacGgFRwV+JSLaXL1ikvidfJprkb7L9Nx1njcRHHmi3Dsvt7pgqqTEeucQuOrWHPFgzVHA==} dev: true - /@types/upper-case-first/1.1.2: + /@types/upper-case-first@1.1.2: resolution: {integrity: sha512-YOy6ArS6hUf7d/vzYcL78OBH7+l5t98Kpn0AHrgUnetgChU2r7ku1je12Ysqh0leOHbkz+y+6R8v5hzSDE9U7g==} deprecated: This is a stub types definition for upper-case-first (https://github.com/blakeembrey/upper-case-first). upper-case-first provides its own type definitions, so you don't need @types/upper-case-first installed! dependencies: upper-case-first: 2.0.2 dev: true - /@types/uuid/8.3.4: + /@types/uuid@8.3.4: resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} dev: true - /@types/vscode/1.72.0: + /@types/vscode@1.72.0: resolution: {integrity: sha512-WvHluhUo+lQvE3I4wUagRpnkHuysB4qSyOQUyIAS9n9PYMJjepzTUD8Jyks0YeXoPD0UGctjqp2u84/b3v6Ydw==} dev: true - /@types/yargs-parser/21.0.0: + /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true - /@types/yargs/17.0.13: + /@types/yargs@17.0.12: + resolution: {integrity: sha512-Nz4MPhecOFArtm81gFQvQqdV7XYCrWKx5uUt6GNHredFHn1i2mtWqXTON7EPXMtNi1qjtjEM/VCHDhcHsAMLXQ==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@types/yargs@17.0.13: resolution: {integrity: sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==} dependencies: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin/5.42.0_ofgjrzjuekeo7s3hdyz2yuzw34: + /@typescript-eslint/eslint-plugin@5.42.0(@typescript-eslint/parser@5.42.0)(eslint@8.27.0)(typescript@4.8.4): resolution: {integrity: sha512-5TJh2AgL6+wpL8H/GTSjNb4WrjKoR2rqvFxR/DDTqYNk6uXn8BJMEcncLSpMbf/XV1aS0jAjYwn98uvVCiAywQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2546,23 +2816,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.42.0_rmayb2veg2btbq6mbmnyivgasy + '@typescript-eslint/parser': 5.42.0(eslint@8.27.0)(typescript@4.8.4) '@typescript-eslint/scope-manager': 5.42.0 - '@typescript-eslint/type-utils': 5.42.0_rmayb2veg2btbq6mbmnyivgasy - '@typescript-eslint/utils': 5.42.0_rmayb2veg2btbq6mbmnyivgasy + '@typescript-eslint/type-utils': 5.42.0(eslint@8.27.0)(typescript@4.8.4) + '@typescript-eslint/utils': 5.42.0(eslint@8.27.0)(typescript@4.8.4) debug: 4.3.4 eslint: 8.27.0 ignore: 5.2.0 natural-compare-lite: 1.4.0 regexpp: 3.2.0 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.8.4 + tsutils: 3.21.0(typescript@4.8.4) typescript: 4.8.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/eslint-plugin/5.54.0_6mj2wypvdnknez7kws2nfdgupi: + /@typescript-eslint/eslint-plugin@5.54.0(@typescript-eslint/parser@5.54.0)(eslint@8.35.0)(typescript@4.9.5): resolution: {integrity: sha512-+hSN9BdSr629RF02d7mMtXhAJvDTyCbprNYJKrXETlul/Aml6YZwd90XioVbjejQeHbb3R8Dg0CkRgoJDxo8aw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2573,10 +2843,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/parser': 5.54.0(eslint@8.35.0)(typescript@4.9.5) '@typescript-eslint/scope-manager': 5.54.0 - '@typescript-eslint/type-utils': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu - '@typescript-eslint/utils': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/type-utils': 5.54.0(eslint@8.35.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.54.0(eslint@8.35.0)(typescript@4.9.5) debug: 4.3.4 eslint: 8.35.0 grapheme-splitter: 1.0.4 @@ -2584,13 +2854,13 @@ packages: natural-compare-lite: 1.4.0 regexpp: 3.2.0 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.5 + tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser/5.42.0_rmayb2veg2btbq6mbmnyivgasy: + /@typescript-eslint/parser@5.42.0(eslint@8.27.0)(typescript@4.8.4): resolution: {integrity: sha512-Ixh9qrOTDRctFg3yIwrLkgf33AHyEIn6lhyf5cCfwwiGtkWhNpVKlEZApi3inGQR/barWnY7qY8FbGKBO7p3JA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2602,7 +2872,7 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.42.0 '@typescript-eslint/types': 5.42.0 - '@typescript-eslint/typescript-estree': 5.42.0_typescript@4.8.4 + '@typescript-eslint/typescript-estree': 5.42.0(typescript@4.8.4) debug: 4.3.4 eslint: 8.27.0 typescript: 4.8.4 @@ -2610,7 +2880,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser/5.54.0_ycpbpc6yetojsgtrx3mwntkhsu: + /@typescript-eslint/parser@5.54.0(eslint@8.35.0)(typescript@4.9.5): resolution: {integrity: sha512-aAVL3Mu2qTi+h/r04WI/5PfNWvO6pdhpeMRWk9R7rEV4mwJNzoWf5CCU5vDKBsPIFQFjEq1xg7XBI2rjiMXQbQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2622,7 +2892,7 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.54.0 '@typescript-eslint/types': 5.54.0 - '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.9.5 + '@typescript-eslint/typescript-estree': 5.54.0(typescript@4.9.5) debug: 4.3.4 eslint: 8.35.0 typescript: 4.9.5 @@ -2630,7 +2900,7 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager/5.42.0: + /@typescript-eslint/scope-manager@5.42.0: resolution: {integrity: sha512-l5/3IBHLH0Bv04y+H+zlcLiEMEMjWGaCX6WyHE5Uk2YkSGAMlgdUPsT/ywTSKgu9D1dmmKMYgYZijObfA39Wow==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -2638,7 +2908,7 @@ packages: '@typescript-eslint/visitor-keys': 5.42.0 dev: true - /@typescript-eslint/scope-manager/5.54.0: + /@typescript-eslint/scope-manager@5.54.0: resolution: {integrity: sha512-VTPYNZ7vaWtYna9M4oD42zENOBrb+ZYyCNdFs949GcN8Miwn37b8b7eMj+EZaq7VK9fx0Jd+JhmkhjFhvnovhg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -2646,7 +2916,7 @@ packages: '@typescript-eslint/visitor-keys': 5.54.0 dev: true - /@typescript-eslint/type-utils/5.42.0_rmayb2veg2btbq6mbmnyivgasy: + /@typescript-eslint/type-utils@5.42.0(eslint@8.27.0)(typescript@4.8.4): resolution: {integrity: sha512-HW14TXC45dFVZxnVW8rnUGnvYyRC0E/vxXShFCthcC9VhVTmjqOmtqj6H5rm9Zxv+ORxKA/1aLGD7vmlLsdlOg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2656,17 +2926,17 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.42.0_typescript@4.8.4 - '@typescript-eslint/utils': 5.42.0_rmayb2veg2btbq6mbmnyivgasy + '@typescript-eslint/typescript-estree': 5.42.0(typescript@4.8.4) + '@typescript-eslint/utils': 5.42.0(eslint@8.27.0)(typescript@4.8.4) debug: 4.3.4 eslint: 8.27.0 - tsutils: 3.21.0_typescript@4.8.4 + tsutils: 3.21.0(typescript@4.8.4) typescript: 4.8.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/type-utils/5.54.0_ycpbpc6yetojsgtrx3mwntkhsu: + /@typescript-eslint/type-utils@5.54.0(eslint@8.35.0)(typescript@4.9.5): resolution: {integrity: sha512-WI+WMJ8+oS+LyflqsD4nlXMsVdzTMYTxl16myXPaCXnSgc7LWwMsjxQFZCK/rVmTZ3FN71Ct78ehO9bRC7erYQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2676,27 +2946,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.9.5 - '@typescript-eslint/utils': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/typescript-estree': 5.54.0(typescript@4.9.5) + '@typescript-eslint/utils': 5.54.0(eslint@8.35.0)(typescript@4.9.5) debug: 4.3.4 eslint: 8.35.0 - tsutils: 3.21.0_typescript@4.9.5 + tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types/5.42.0: + /@typescript-eslint/types@5.42.0: resolution: {integrity: sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types/5.54.0: + /@typescript-eslint/types@5.54.0: resolution: {integrity: sha512-nExy+fDCBEgqblasfeE3aQ3NuafBUxZxgxXcYfzYRZFHdVvk5q60KhCSkG0noHgHRo/xQ/BOzURLZAafFpTkmQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.42.0_typescript@4.8.3: + /@typescript-eslint/typescript-estree@5.42.0(typescript@4.8.3): resolution: {integrity: sha512-2O3vSq794x3kZGtV7i4SCWZWCwjEtkWfVqX4m5fbUBomOsEOyd6OAD1qU2lbvV5S8tgy/luJnOYluNyYVeOTTg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2711,13 +2981,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.8.3 + tsutils: 3.21.0(typescript@4.8.3) typescript: 4.8.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.42.0_typescript@4.8.4: + /@typescript-eslint/typescript-estree@5.42.0(typescript@4.8.4): resolution: {integrity: sha512-2O3vSq794x3kZGtV7i4SCWZWCwjEtkWfVqX4m5fbUBomOsEOyd6OAD1qU2lbvV5S8tgy/luJnOYluNyYVeOTTg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2732,13 +3002,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.8.4 + tsutils: 3.21.0(typescript@4.8.4) typescript: 4.8.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.54.0_typescript@4.9.5: + /@typescript-eslint/typescript-estree@5.54.0(typescript@4.9.5): resolution: {integrity: sha512-X2rJG97Wj/VRo5YxJ8Qx26Zqf0RRKsVHd4sav8NElhbZzhpBI8jU54i6hfo9eheumj4oO4dcRN1B/zIVEqR/MQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2753,13 +3023,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.5 + tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/5.42.0_rmayb2veg2btbq6mbmnyivgasy: + /@typescript-eslint/utils@5.42.0(eslint@8.27.0)(typescript@4.8.4): resolution: {integrity: sha512-JZ++3+h1vbeG1NUECXQZE3hg0kias9kOtcQr3+JVQ3whnjvKuMyktJAAIj6743OeNPnGBmjj7KEmiDL7qsdnCQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2769,17 +3039,17 @@ packages: '@types/semver': 7.3.13 '@typescript-eslint/scope-manager': 5.42.0 '@typescript-eslint/types': 5.42.0 - '@typescript-eslint/typescript-estree': 5.42.0_typescript@4.8.4 + '@typescript-eslint/typescript-estree': 5.42.0(typescript@4.8.4) eslint: 8.27.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.27.0 + eslint-utils: 3.0.0(eslint@8.27.0) semver: 7.3.8 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils/5.42.0_yvgxsonm4ikac5pm5z5getdq5e: + /@typescript-eslint/utils@5.42.0(eslint@8.30.0)(typescript@4.8.3): resolution: {integrity: sha512-JZ++3+h1vbeG1NUECXQZE3hg0kias9kOtcQr3+JVQ3whnjvKuMyktJAAIj6743OeNPnGBmjj7KEmiDL7qsdnCQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2789,17 +3059,17 @@ packages: '@types/semver': 7.3.13 '@typescript-eslint/scope-manager': 5.42.0 '@typescript-eslint/types': 5.42.0 - '@typescript-eslint/typescript-estree': 5.42.0_typescript@4.8.3 + '@typescript-eslint/typescript-estree': 5.42.0(typescript@4.8.3) eslint: 8.30.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.30.0 + eslint-utils: 3.0.0(eslint@8.30.0) semver: 7.3.8 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils/5.54.0_ycpbpc6yetojsgtrx3mwntkhsu: + /@typescript-eslint/utils@5.54.0(eslint@8.35.0)(typescript@4.9.5): resolution: {integrity: sha512-cuwm8D/Z/7AuyAeJ+T0r4WZmlnlxQ8wt7C7fLpFlKMR+dY6QO79Cq1WpJhvZbMA4ZeZGHiRWnht7ZJ8qkdAunw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2809,17 +3079,17 @@ packages: '@types/semver': 7.3.13 '@typescript-eslint/scope-manager': 5.54.0 '@typescript-eslint/types': 5.54.0 - '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.9.5 + '@typescript-eslint/typescript-estree': 5.54.0(typescript@4.9.5) eslint: 8.35.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.35.0 + eslint-utils: 3.0.0(eslint@8.35.0) semver: 7.3.8 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys/5.42.0: + /@typescript-eslint/visitor-keys@5.42.0: resolution: {integrity: sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -2827,7 +3097,7 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@typescript-eslint/visitor-keys/5.54.0: + /@typescript-eslint/visitor-keys@5.54.0: resolution: {integrity: sha512-xu4wT7aRCakGINTLGeyGqDn+78BwFlggwBjnHa1ar/KaGagnmwLYmlrXIrgAaQ3AE1Vd6nLfKASm7LrFHNbKGA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -2835,7 +3105,7 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@vitest/expect/0.29.7: + /@vitest/expect@0.29.7: resolution: {integrity: sha512-UtG0tW0DP6b3N8aw7PHmweKDsvPv4wjGvrVZW7OSxaFg76ShtVdMiMcUkZJgCE8QWUmhwaM0aQhbbVLo4F4pkA==} dependencies: '@vitest/spy': 0.29.7 @@ -2843,7 +3113,7 @@ packages: chai: 4.3.7 dev: true - /@vitest/runner/0.29.7: + /@vitest/runner@0.29.7: resolution: {integrity: sha512-Yt0+csM945+odOx4rjZSjibQfl2ymxqVsmYz6sO2fiO5RGPYDFCo60JF6tLL9pz4G/kjY4irUxadeB1XT+H1jg==} dependencies: '@vitest/utils': 0.29.7 @@ -2851,13 +3121,13 @@ packages: pathe: 1.1.0 dev: true - /@vitest/spy/0.29.7: + /@vitest/spy@0.29.7: resolution: {integrity: sha512-IalL0iO6A6Xz8hthR8sctk6ZS//zVBX48EiNwQguYACdgdei9ZhwMaBFV70mpmeYAFCRAm+DpoFHM5470Im78A==} dependencies: tinyspy: 1.1.1 dev: true - /@vitest/utils/0.29.7: + /@vitest/utils@0.29.7: resolution: {integrity: sha512-vNgGadp2eE5XKCXtZXL5UyNEDn68npSct75OC9AlELenSK0DiV1Mb9tfkwJHKjRb69iek+e79iipoJx8+s3SdA==} dependencies: cli-truncate: 3.1.0 @@ -2866,7 +3136,7 @@ packages: pretty-format: 27.5.1 dev: true - /@vscode/vsce/2.19.0: + /@vscode/vsce@2.19.0: resolution: {integrity: sha512-dAlILxC5ggOutcvJY24jxz913wimGiUrHaPkk16Gm9/PGFbz1YezWtrXsTKUtJws4fIlpX2UIlVlVESWq8lkfQ==} engines: {node: '>= 14'} hasBin: true @@ -2895,18 +3165,18 @@ packages: keytar: 7.9.0 dev: true - /abort-controller/3.0.0: + /abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} dependencies: event-target-shim: 5.0.1 dev: true - /abstract-logging/2.0.1: + /abstract-logging@2.0.1: resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} dev: true - /accepts/1.3.8: + /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} dependencies: @@ -2914,7 +3184,7 @@ packages: negotiator: 0.6.3 dev: true - /acorn-jsx/5.3.2_acorn@8.8.0: + /acorn-jsx@5.3.2(acorn@8.8.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2922,24 +3192,24 @@ packages: acorn: 8.8.0 dev: true - /acorn-walk/8.2.0: + /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} dev: true - /acorn/8.8.0: + /acorn@8.8.0: resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /acorn/8.8.2: + /acorn@8.8.2: resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /agent-base/6.0.2: + /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: @@ -2947,14 +3217,14 @@ packages: transitivePeerDependencies: - supports-color - /aggregate-error/3.1.0: + /aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 - /ajv-draft-04/1.0.0_ajv@8.12.0: + /ajv-draft-04@1.0.0(ajv@8.12.0): resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} peerDependencies: ajv: ^8.5.0 @@ -2965,7 +3235,7 @@ packages: ajv: 8.12.0 dev: true - /ajv-formats/2.1.1_ajv@8.12.0: + /ajv-formats@2.1.1(ajv@8.12.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: ajv: ^8.0.0 @@ -2976,7 +3246,7 @@ packages: ajv: 8.12.0 dev: true - /ajv/6.12.6: + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 @@ -2985,7 +3255,7 @@ packages: uri-js: 4.4.1 dev: true - /ajv/8.12.0: + /ajv@8.12.0: resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} dependencies: fast-deep-equal: 3.1.3 @@ -2994,49 +3264,49 @@ packages: uri-js: 4.4.1 dev: true - /ansi-colors/4.1.3: + /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} dev: true - /ansi-escapes/4.3.2: + /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} dependencies: type-fest: 0.21.3 - /ansi-regex/5.0.1: + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - /ansi-regex/6.0.1: + /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} dev: true - /ansi-styles/3.2.1: + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - /ansi-styles/4.3.0: + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - /ansi-styles/5.2.0: + /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} dev: true - /ansi-styles/6.2.1: + /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} dev: true - /anymatch/3.1.2: + /anymatch@3.1.2: resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} engines: {node: '>= 8'} dependencies: @@ -3044,7 +3314,7 @@ packages: picomatch: 2.3.1 dev: true - /archiver-utils/2.1.0: + /archiver-utils@2.1.0: resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} engines: {node: '>= 6'} dependencies: @@ -3059,7 +3329,7 @@ packages: normalize-path: 3.0.0 readable-stream: 2.3.7 - /archiver/5.3.1: + /archiver@5.3.1: resolution: {integrity: sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==} engines: {node: '>= 10'} dependencies: @@ -3071,51 +3341,51 @@ packages: tar-stream: 2.2.0 zip-stream: 4.1.0 - /archy/1.0.0: + /archy@1.0.0: resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} dev: true - /arg/4.1.3: + /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true - /arg/5.0.2: + /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - /argparse/1.0.10: + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 dev: true - /argparse/2.0.1: + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true - /array-back/3.1.0: + /array-back@3.1.0: resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} engines: {node: '>=6'} dev: true - /array-back/4.0.2: + /array-back@4.0.2: resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} engines: {node: '>=8'} dev: true - /array-back/6.2.2: + /array-back@6.2.2: resolution: {integrity: sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==} engines: {node: '>=12.17'} dev: true - /array-flatten/1.1.1: + /array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} dev: true - /array-union/2.1.0: + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - /array.prototype.flat/1.3.1: + /array.prototype.flat@1.3.1: resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} engines: {node: '>= 0.4'} dependencies: @@ -3125,46 +3395,46 @@ packages: es-shim-unscopables: 1.0.0 dev: true - /arrify/1.0.1: + /arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} dev: true - /asap/2.0.6: + /asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} dev: true - /assertion-error/1.1.0: + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true - /astral-regex/2.0.0: + /astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} - /async-exit-hook/2.0.1: + /async-exit-hook@2.0.1: resolution: {integrity: sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==} engines: {node: '>=0.12.0'} dev: false - /async/3.2.4: + /async@3.2.4: resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} - /asynckit/0.4.0: + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true - /atomic-sleep/1.0.0: + /atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} dev: true - /available-typed-arrays/1.0.5: + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} dev: true - /avvio/8.2.1: + /avvio@8.2.1: resolution: {integrity: sha512-TAlMYvOuwGyLK3PfBb5WKBXZmXz2fVCgv23d6zZFdle/q3gPjmxBaeuC0pY0Dzs5PWMSgfqqEZkrye19GlDTgw==} dependencies: archy: 1.0.0 @@ -3174,14 +3444,14 @@ packages: - supports-color dev: true - /azure-devops-node-api/11.2.0: + /azure-devops-node-api@11.2.0: resolution: {integrity: sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==} dependencies: tunnel: 0.0.6 typed-rest-client: 1.8.9 dev: true - /babel-jest/29.5.0_@babel+core@7.20.5: + /babel-jest@29.5.0(@babel/core@7.20.5): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -3191,7 +3461,7 @@ packages: '@jest/transform': 29.5.0 '@types/babel__core': 7.1.19 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0_@babel+core@7.20.5 + babel-preset-jest: 29.5.0(@babel/core@7.20.5) chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -3199,7 +3469,7 @@ packages: - supports-color dev: true - /babel-plugin-istanbul/6.1.1: + /babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: @@ -3212,7 +3482,7 @@ packages: - supports-color dev: true - /babel-plugin-jest-hoist/29.5.0: + /babel-plugin-jest-hoist@29.5.0: resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3222,27 +3492,27 @@ packages: '@types/babel__traverse': 7.18.2 dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.20.5: + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.20.5): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.20.5 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.5 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.5 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.20.5 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.5 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.20.5) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.20.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.20.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.20.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.20.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.20.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.20.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.20.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.20.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.20.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.20.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.20.5) dev: true - /babel-preset-jest/29.5.0_@babel+core@7.20.5: + /babel-preset-jest@29.5.0(@babel/core@7.20.5): resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -3250,39 +3520,39 @@ packages: dependencies: '@babel/core': 7.20.5 babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.5 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.20.5) dev: true - /balanced-match/1.0.2: + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /base64-js/1.5.1: + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - /bcryptjs/2.4.3: + /bcryptjs@2.4.3: resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} dev: false - /better-path-resolve/1.0.0: + /better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} dependencies: is-windows: 1.0.2 dev: true - /binary-extensions/2.2.0: + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} dev: true - /bl/4.1.0: + /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.0 - /body-parser/1.20.1: + /body-parser@1.20.1: resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: @@ -3302,7 +3572,7 @@ packages: - supports-color dev: true - /body-parser/1.20.2: + /body-parser@1.20.2: resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: @@ -3322,34 +3592,34 @@ packages: - supports-color dev: true - /boolbase/1.0.0: + /boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} dev: true - /brace-expansion/1.1.11: + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - /brace-expansion/2.0.1: + /brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 - /braces/3.0.2: + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - /breakword/1.0.5: + /breakword@1.0.5: resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} dependencies: wcwidth: 1.0.1 dev: true - /browserslist/4.21.4: + /browserslist@4.21.4: resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -3357,81 +3627,81 @@ packages: caniuse-lite: 1.0.30001439 electron-to-chromium: 1.4.284 node-releases: 2.0.6 - update-browserslist-db: 1.0.10_browserslist@4.21.4 + update-browserslist-db: 1.0.10(browserslist@4.21.4) - /bs-logger/0.2.6: + /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} dependencies: fast-json-stable-stringify: 2.1.0 dev: true - /bser/2.1.1: + /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: node-int64: 0.4.0 dev: true - /buffer-crc32/0.2.13: + /buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - /buffer-from/1.1.2: + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true - /buffer/5.7.1: + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - /buffer/6.0.3: + /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 dev: true - /busboy/1.6.0: + /busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} dependencies: streamsearch: 1.1.0 - /bytes/3.1.2: + /bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} dev: true - /cac/6.7.14: + /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} dev: true - /call-bind/1.0.2: + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.1.3 dev: true - /call-me-maybe/1.0.2: + /call-me-maybe@1.0.2: resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} dev: true - /callsites/3.1.0: + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: true - /camel-case/4.1.2: + /camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 tslib: 2.4.1 dev: false - /camelcase-keys/6.2.2: + /camelcase-keys@6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} dependencies: @@ -3440,20 +3710,20 @@ packages: quick-lru: 4.0.1 dev: true - /camelcase/5.3.1: + /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} dev: true - /camelcase/6.3.0: + /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} dev: true - /caniuse-lite/1.0.30001439: + /caniuse-lite@1.0.30001439: resolution: {integrity: sha512-1MgUzEkoMO6gKfXflStpYgZDlFM7M/ck/bgfVCACO5vnAf0fXoNVHdWtqGU+MYca+4bL9Z5bpOVmR33cWW9G2A==} - /capital-case/1.0.4: + /capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} dependencies: no-case: 3.0.4 @@ -3461,7 +3731,7 @@ packages: upper-case-first: 2.0.2 dev: false - /chai/4.3.7: + /chai@4.3.7: resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} engines: {node: '>=4'} dependencies: @@ -3474,7 +3744,7 @@ packages: type-detect: 4.0.8 dev: true - /chalk/2.4.2: + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} dependencies: @@ -3482,14 +3752,14 @@ packages: escape-string-regexp: 1.0.5 supports-color: 5.5.0 - /chalk/4.1.2: + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - /change-case/4.1.2: + /change-case@4.1.2: resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} dependencies: camel-case: 4.1.2 @@ -3506,20 +3776,20 @@ packages: tslib: 2.4.1 dev: false - /char-regex/1.0.2: + /char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} dev: true - /chardet/0.7.0: + /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /check-error/1.0.2: + /check-error@1.0.2: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true - /checkpoint-client/1.1.21: + /checkpoint-client@1.1.21: resolution: {integrity: sha512-bcrcnJncn6uGhj06IIsWvUBPyJWK1ZezDbLCJ//IQEYXkUobhGvOOBlHe9K5x0ZMkAZGinPB4T+lTUmFz/acWQ==} dependencies: ci-info: 3.3.0 @@ -3532,7 +3802,7 @@ packages: transitivePeerDependencies: - encoding - /cheerio-select/2.1.0: + /cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} dependencies: boolbase: 1.0.0 @@ -3543,7 +3813,7 @@ packages: domutils: 3.0.1 dev: true - /cheerio/1.0.0-rc.12: + /cheerio@1.0.0-rc.12: resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} engines: {node: '>= 6'} dependencies: @@ -3556,13 +3826,13 @@ packages: parse5-htmlparser2-tree-adapter: 7.0.0 dev: true - /chevrotain-allstar/0.1.4: + /chevrotain-allstar@0.1.4: resolution: {integrity: sha512-gr5PNT8keiOTt19r+XkRY19unZw7rUE/erXgfFMEJnk1ZTuiVGWREfzVPSlz9u6DxbR0zJ9NQzdQS0a/3SVKFw==} dependencies: chevrotain: 10.4.2 lodash: 4.17.21 - /chevrotain/10.4.2: + /chevrotain@10.4.2: resolution: {integrity: sha512-gzF5GxE0Ckti5kZVuKEZycLntB5X2aj9RVY0r4/220GwQjdnljU+/t3kP74/FMWC7IzCDDEjQ9wsFUf0WCdSHg==} dependencies: '@chevrotain/cst-dts-gen': 10.4.2 @@ -3572,7 +3842,7 @@ packages: lodash: 4.17.21 regexp-to-ast: 0.5.0 - /chokidar/3.5.3: + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: @@ -3587,49 +3857,53 @@ packages: fsevents: 2.3.2 dev: true - /chownr/1.1.4: + /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} dev: true optional: true - /ci-info/3.3.0: + /ci-info@3.3.0: resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} - /ci-info/3.5.0: + /ci-info@3.4.0: + resolution: {integrity: sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==} + dev: true + + /ci-info@3.5.0: resolution: {integrity: sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==} dev: true - /ci-info/3.7.1: + /ci-info@3.7.1: resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==} engines: {node: '>=8'} dev: true - /cjs-module-lexer/1.2.2: + /cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} dev: true - /clean-stack/2.2.0: + /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} - /cli-cursor/3.1.0: + /cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 - /cli-spinners/2.7.0: + /cli-spinners@2.7.0: resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} engines: {node: '>=6'} - /cli-truncate/2.1.0: + /cli-truncate@2.1.0: resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} engines: {node: '>=8'} dependencies: slice-ansi: 3.0.0 string-width: 4.2.3 - /cli-truncate/3.1.0: + /cli-truncate@3.1.0: resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -3637,7 +3911,7 @@ packages: string-width: 5.1.2 dev: true - /cliui/6.0.0: + /cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: string-width: 4.2.3 @@ -3645,7 +3919,7 @@ packages: wrap-ansi: 6.2.0 dev: true - /cliui/7.0.4: + /cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: string-width: 4.2.3 @@ -3653,7 +3927,7 @@ packages: wrap-ansi: 7.0.0 dev: true - /cliui/8.0.1: + /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} dependencies: @@ -3662,58 +3936,58 @@ packages: wrap-ansi: 7.0.0 dev: true - /clone/1.0.4: + /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} - /co/4.6.0: + /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true - /code-block-writer/11.0.3: + /code-block-writer@11.0.3: resolution: {integrity: sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==} dev: false - /code-error-fragment/0.0.230: + /code-error-fragment@0.0.230: resolution: {integrity: sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==} engines: {node: '>= 4'} dev: true - /collect-v8-coverage/1.0.1: + /collect-v8-coverage@1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} dev: true - /color-convert/1.9.3: + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - /color-convert/2.0.1: + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - /color-name/1.1.3: + /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - /color-name/1.1.4: + /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /colors/1.4.0: + /colors@1.4.0: resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} engines: {node: '>=0.1.90'} dev: false - /combined-stream/1.0.8: + /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 dev: true - /command-line-args/5.2.1: + /command-line-args@5.2.1: resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} engines: {node: '>=4.0.0'} dependencies: @@ -3723,7 +3997,7 @@ packages: typical: 4.0.0 dev: true - /command-line-usage/6.1.3: + /command-line-usage@6.1.3: resolution: {integrity: sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==} engines: {node: '>=8.0.0'} dependencies: @@ -3733,34 +4007,34 @@ packages: typical: 5.2.0 dev: true - /commander/10.0.0: + /commander@10.0.0: resolution: {integrity: sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==} engines: {node: '>=14'} dev: true - /commander/6.2.1: + /commander@6.2.1: resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} engines: {node: '>= 6'} dev: true - /commander/8.3.0: + /commander@8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} dev: false - /commander/9.4.1: + /commander@9.4.1: resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} engines: {node: ^12.20.0 || >=14} dev: true - /commondir/1.0.1: + /commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - /component-emitter/1.3.0: + /component-emitter@1.3.0: resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} dev: true - /compress-commons/4.1.1: + /compress-commons@4.1.1: resolution: {integrity: sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==} engines: {node: '>= 10'} dependencies: @@ -3769,10 +4043,10 @@ packages: normalize-path: 3.0.0 readable-stream: 3.6.0 - /concat-map/0.0.1: + /concat-map@0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} - /concurrently/7.4.0: + /concurrently@7.4.0: resolution: {integrity: sha512-M6AfrueDt/GEna/Vg9BqQ+93yuvzkSKmoTixnwEJkH0LlcGrRC2eCmjeG1tLLHIYfpYJABokqSGyMcXjm96AFA==} engines: {node: ^12.20.0 || ^14.13.0 || >=16.0.0} hasBin: true @@ -3788,14 +4062,14 @@ packages: yargs: 17.6.0 dev: true - /config-chain/1.1.13: + /config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} dependencies: ini: 1.3.8 proto-list: 1.2.4 dev: false - /constant-case/3.0.4: + /constant-case@3.0.4: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} dependencies: no-case: 3.0.4 @@ -3803,45 +4077,45 @@ packages: upper-case: 2.0.2 dev: false - /content-disposition/0.5.4: + /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} dependencies: safe-buffer: 5.2.1 dev: true - /content-type/1.0.5: + /content-type@1.0.5: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} dev: true - /convert-source-map/1.9.0: + /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - /convert-source-map/2.0.0: + /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true - /cookie-signature/1.0.6: + /cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} dev: true - /cookie/0.5.0: + /cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} dev: true - /cookiejar/2.1.4: + /cookiejar@2.1.4: resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} dev: true - /copy-anything/3.0.3: + /copy-anything@3.0.3: resolution: {integrity: sha512-fpW2W/BqEzqPp29QS+MwwfisHCQZtiduTe/m8idFo0xbti9fIZ2WVhAsCv4ggFVH3AgCkVdpoOCtQC6gBrdhjw==} engines: {node: '>=12.13'} dependencies: is-what: 4.1.8 - /copyfiles/2.4.1: + /copyfiles@2.4.1: resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==} hasBin: true dependencies: @@ -3854,26 +4128,26 @@ packages: yargs: 16.2.0 dev: true - /core-util-is/1.0.3: + /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - /crc-32/1.2.2: + /crc-32@1.2.2: resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} engines: {node: '>=0.8'} hasBin: true - /crc32-stream/4.0.2: + /crc32-stream@4.0.2: resolution: {integrity: sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==} engines: {node: '>= 10'} dependencies: crc-32: 1.2.2 readable-stream: 3.6.0 - /create-require/1.1.1: + /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true - /cross-fetch/3.1.5: + /cross-fetch@3.1.5: resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} dependencies: node-fetch: 2.6.7 @@ -3881,7 +4155,7 @@ packages: - encoding dev: true - /cross-spawn/5.1.0: + /cross-spawn@5.1.0: resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} dependencies: lru-cache: 4.1.5 @@ -3889,7 +4163,7 @@ packages: which: 1.3.1 dev: true - /cross-spawn/7.0.3: + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} dependencies: @@ -3897,11 +4171,11 @@ packages: shebang-command: 2.0.0 which: 2.0.2 - /crypto-random-string/2.0.0: + /crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} - /css-select/5.1.0: + /css-select@5.1.0: resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} dependencies: boolbase: 1.0.0 @@ -3911,28 +4185,28 @@ packages: nth-check: 2.1.1 dev: true - /css-what/6.1.0: + /css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} dev: true - /csstype/3.1.1: + /csstype@3.1.1: resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} dev: true - /csv-generate/3.4.3: + /csv-generate@3.4.3: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} dev: true - /csv-parse/4.16.3: + /csv-parse@4.16.3: resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} dev: true - /csv-stringify/5.6.5: + /csv-stringify@5.6.5: resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} dev: true - /csv/5.5.3: + /csv@5.5.3: resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} engines: {node: '>= 0.1.90'} dependencies: @@ -3942,17 +4216,17 @@ packages: stream-transform: 2.1.3 dev: true - /current-module-paths/1.1.0: + /current-module-paths@1.1.0: resolution: {integrity: sha512-HGhLUszcgprjKmzvQoCQda8iEWsQn3sWVzPdttyJVR5cjfVDYcoyozQA5D1YXgab9v84SPMpSuD+YrPX6i1IMQ==} engines: {node: '>=12.17'} dev: true - /date-fns/2.29.3: + /date-fns@2.29.3: resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} engines: {node: '>=0.11'} dev: true - /debug/2.6.9: + /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: supports-color: '*' @@ -3963,7 +4237,7 @@ packages: ms: 2.0.0 dev: true - /debug/4.3.4: + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -3974,7 +4248,7 @@ packages: dependencies: ms: 2.1.2 - /decamelize-keys/1.1.1: + /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} dependencies: @@ -3982,16 +4256,16 @@ packages: map-obj: 1.0.1 dev: true - /decamelize/1.2.0: + /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} dev: true - /decimal.js/10.4.2: + /decimal.js@10.4.2: resolution: {integrity: sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==} dev: false - /decompress-response/6.0.0: + /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} dependencies: @@ -3999,49 +4273,49 @@ packages: dev: true optional: true - /decompress-response/7.0.0: + /decompress-response@7.0.0: resolution: {integrity: sha512-6IvPrADQyyPGLpMnUh6kfKiqy7SrbXbjoUuZ90WMBJKErzv2pCiwlGEXjRX9/54OnTq+XFVnkOnOMzclLI5aEA==} engines: {node: '>=10'} dependencies: mimic-response: 3.1.0 dev: false - /dedent/0.7.0: + /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true - /deep-eql/4.1.3: + /deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} dependencies: type-detect: 4.0.8 dev: true - /deep-extend/0.6.0: + /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} - /deep-is/0.1.4: + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /deepcopy/2.1.0: + /deepcopy@2.1.0: resolution: {integrity: sha512-8cZeTb1ZKC3bdSCP6XOM1IsTczIO73fdqtwa2B0N15eAz7gmyhQo+mc5gnFuulsgN3vIQYmTgbmQVKalH1dKvQ==} dependencies: type-detect: 4.0.8 dev: false - /deepmerge/4.2.2: + /deepmerge@4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} engines: {node: '>=0.10.0'} dev: true - /defaults/1.0.4: + /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 - /define-properties/1.1.4: + /define-properties@1.1.4: resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} engines: {node: '>= 0.4'} dependencies: @@ -4049,7 +4323,7 @@ packages: object-keys: 1.1.1 dev: true - /del/6.1.1: + /del@6.1.1: resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} engines: {node: '>=10'} dependencies: @@ -4062,73 +4336,73 @@ packages: rimraf: 3.0.2 slash: 3.0.0 - /delayed-stream/1.0.0: + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} dev: true - /depd/2.0.0: + /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} dev: true - /destroy/1.2.0: + /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dev: true - /detect-indent/6.1.0: + /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} dev: true - /detect-libc/2.0.1: + /detect-libc@2.0.1: resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} engines: {node: '>=8'} dev: true optional: true - /detect-newline/3.1.0: + /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} dev: true - /dezalgo/1.0.4: + /dezalgo@1.0.4: resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} dependencies: asap: 2.0.6 wrappy: 1.0.2 dev: true - /diff-sequences/29.4.3: + /diff-sequences@29.4.3: resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /diff/4.0.2: + /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} dev: true - /diff/5.1.0: + /diff@5.1.0: resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} engines: {node: '>=0.3.1'} dev: true - /dir-glob/3.0.1: + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 - /doctrine/3.0.0: + /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 dev: true - /dom-serializer/2.0.0: + /dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} dependencies: domelementtype: 2.3.0 @@ -4136,18 +4410,18 @@ packages: entities: 4.4.0 dev: true - /domelementtype/2.3.0: + /domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: true - /domhandler/5.0.3: + /domhandler@5.0.3: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 dev: true - /domutils/3.0.1: + /domutils@3.0.1: resolution: {integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==} dependencies: dom-serializer: 2.0.0 @@ -4155,76 +4429,76 @@ packages: domhandler: 5.0.3 dev: true - /dot-case/3.0.4: + /dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 tslib: 2.4.1 dev: false - /dotenv/16.0.3: + /dotenv@16.0.3: resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} engines: {node: '>=12'} - /eastasianwidth/0.2.0: + /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /ee-first/1.1.1: + /ee-first@1.1.1: resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} dev: true - /electron-to-chromium/1.4.284: + /electron-to-chromium@1.4.284: resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} - /emittery/0.13.1: + /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} dev: true - /emoji-regex/8.0.0: + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - /emoji-regex/9.2.2: + /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /encodeurl/1.0.2: + /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} dev: true - /end-of-stream/1.4.4: + /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 - /enquirer/2.3.6: + /enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 dev: true - /entities/2.1.0: + /entities@2.1.0: resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} dev: true - /entities/4.4.0: + /entities@4.4.0: resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} engines: {node: '>=0.12'} dev: true - /env-paths/2.2.1: + /env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} - /error-ex/1.3.2: + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 - /es-abstract/1.21.1: + /es-abstract@1.21.1: resolution: {integrity: sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==} engines: {node: '>= 0.4'} dependencies: @@ -4263,7 +4537,7 @@ packages: which-typed-array: 1.1.9 dev: true - /es-set-tostringtag/2.0.1: + /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} dependencies: @@ -4272,13 +4546,13 @@ packages: has-tostringtag: 1.0.0 dev: true - /es-shim-unscopables/1.0.0: + /es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: has: 1.0.3 dev: true - /es-to-primitive/1.2.1: + /es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: @@ -4287,7 +4561,7 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild-android-64/0.15.12: + /esbuild-android-64@0.15.12: resolution: {integrity: sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q==} engines: {node: '>=12'} cpu: [x64] @@ -4296,7 +4570,7 @@ packages: dev: true optional: true - /esbuild-android-arm64/0.15.12: + /esbuild-android-arm64@0.15.12: resolution: {integrity: sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA==} engines: {node: '>=12'} cpu: [arm64] @@ -4305,7 +4579,7 @@ packages: dev: true optional: true - /esbuild-darwin-64/0.15.12: + /esbuild-darwin-64@0.15.12: resolution: {integrity: sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q==} engines: {node: '>=12'} cpu: [x64] @@ -4314,7 +4588,7 @@ packages: dev: true optional: true - /esbuild-darwin-arm64/0.15.12: + /esbuild-darwin-arm64@0.15.12: resolution: {integrity: sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw==} engines: {node: '>=12'} cpu: [arm64] @@ -4323,7 +4597,7 @@ packages: dev: true optional: true - /esbuild-freebsd-64/0.15.12: + /esbuild-freebsd-64@0.15.12: resolution: {integrity: sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw==} engines: {node: '>=12'} cpu: [x64] @@ -4332,7 +4606,7 @@ packages: dev: true optional: true - /esbuild-freebsd-arm64/0.15.12: + /esbuild-freebsd-arm64@0.15.12: resolution: {integrity: sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g==} engines: {node: '>=12'} cpu: [arm64] @@ -4341,7 +4615,7 @@ packages: dev: true optional: true - /esbuild-linux-32/0.15.12: + /esbuild-linux-32@0.15.12: resolution: {integrity: sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA==} engines: {node: '>=12'} cpu: [ia32] @@ -4350,7 +4624,7 @@ packages: dev: true optional: true - /esbuild-linux-64/0.15.12: + /esbuild-linux-64@0.15.12: resolution: {integrity: sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA==} engines: {node: '>=12'} cpu: [x64] @@ -4359,16 +4633,7 @@ packages: dev: true optional: true - /esbuild-linux-arm/0.15.12: - resolution: {integrity: sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-arm64/0.15.12: + /esbuild-linux-arm64@0.15.12: resolution: {integrity: sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ==} engines: {node: '>=12'} cpu: [arm64] @@ -4377,7 +4642,16 @@ packages: dev: true optional: true - /esbuild-linux-mips64le/0.15.12: + /esbuild-linux-arm@0.15.12: + resolution: {integrity: sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le@0.15.12: resolution: {integrity: sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A==} engines: {node: '>=12'} cpu: [mips64el] @@ -4386,7 +4660,7 @@ packages: dev: true optional: true - /esbuild-linux-ppc64le/0.15.12: + /esbuild-linux-ppc64le@0.15.12: resolution: {integrity: sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg==} engines: {node: '>=12'} cpu: [ppc64] @@ -4395,7 +4669,7 @@ packages: dev: true optional: true - /esbuild-linux-riscv64/0.15.12: + /esbuild-linux-riscv64@0.15.12: resolution: {integrity: sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA==} engines: {node: '>=12'} cpu: [riscv64] @@ -4404,7 +4678,7 @@ packages: dev: true optional: true - /esbuild-linux-s390x/0.15.12: + /esbuild-linux-s390x@0.15.12: resolution: {integrity: sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww==} engines: {node: '>=12'} cpu: [s390x] @@ -4413,7 +4687,7 @@ packages: dev: true optional: true - /esbuild-netbsd-64/0.15.12: + /esbuild-netbsd-64@0.15.12: resolution: {integrity: sha512-jlUxCiHO1dsqoURZDQts+HK100o0hXfi4t54MNRMCAqKGAV33JCVvMplLAa2FwviSojT/5ZG5HUfG3gstwAG8w==} engines: {node: '>=12'} cpu: [x64] @@ -4422,7 +4696,7 @@ packages: dev: true optional: true - /esbuild-openbsd-64/0.15.12: + /esbuild-openbsd-64@0.15.12: resolution: {integrity: sha512-1o1uAfRTMIWNOmpf8v7iudND0L6zRBYSH45sofCZywrcf7NcZA+c7aFsS1YryU+yN7aRppTqdUK1PgbZVaB1Dw==} engines: {node: '>=12'} cpu: [x64] @@ -4431,7 +4705,7 @@ packages: dev: true optional: true - /esbuild-sunos-64/0.15.12: + /esbuild-sunos-64@0.15.12: resolution: {integrity: sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg==} engines: {node: '>=12'} cpu: [x64] @@ -4440,7 +4714,7 @@ packages: dev: true optional: true - /esbuild-windows-32/0.15.12: + /esbuild-windows-32@0.15.12: resolution: {integrity: sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw==} engines: {node: '>=12'} cpu: [ia32] @@ -4449,7 +4723,7 @@ packages: dev: true optional: true - /esbuild-windows-64/0.15.12: + /esbuild-windows-64@0.15.12: resolution: {integrity: sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA==} engines: {node: '>=12'} cpu: [x64] @@ -4458,7 +4732,7 @@ packages: dev: true optional: true - /esbuild-windows-arm64/0.15.12: + /esbuild-windows-arm64@0.15.12: resolution: {integrity: sha512-Of3MIacva1OK/m4zCNIvBfz8VVROBmQT+gRX6pFTLPngFYcj6TFH/12VveAqq1k9VB2l28EoVMNMUCcmsfwyuA==} engines: {node: '>=12'} cpu: [arm64] @@ -4467,7 +4741,7 @@ packages: dev: true optional: true - /esbuild/0.15.12: + /esbuild@0.15.12: resolution: {integrity: sha512-PcT+/wyDqJQsRVhaE9uX/Oq4XLrFh0ce/bs2TJh4CSaw9xuvI+xFrH2nAYOADbhQjUgAhNWC5LKoUsakm4dxng==} engines: {node: '>=12'} hasBin: true @@ -4497,7 +4771,7 @@ packages: esbuild-windows-arm64: 0.15.12 dev: true - /esbuild/0.17.14: + /esbuild@0.17.14: resolution: {integrity: sha512-vOO5XhmVj/1XQR9NQ1UPq6qvMYL7QFJU57J5fKBKBKxp17uDt5PgxFDb4A2nEiXhr1qQs4x0F5+66hVVw4ruNw==} engines: {node: '>=12'} hasBin: true @@ -4527,28 +4801,28 @@ packages: '@esbuild/win32-x64': 0.17.14 dev: true - /escalade/3.1.1: + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - /escape-html/1.0.3: + /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} dev: true - /escape-string-regexp/1.0.5: + /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - /escape-string-regexp/2.0.0: + /escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} dev: true - /escape-string-regexp/4.0.0: + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /eslint-plugin-jest/27.1.7_bqsz7mnzvjsobat2umlw76do7a: + /eslint-plugin-jest@27.1.7(@typescript-eslint/eslint-plugin@5.42.0)(eslint@8.27.0)(jest@29.5.0)(typescript@4.8.4): resolution: {integrity: sha512-0QVzf+og4YI1Qr3UoprkqqhezAZjFffdi62b0IurkCXMqPtRW84/UT4CKsYT80h/D82LA9avjO/80Ou1LdgbaQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -4561,16 +4835,16 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.42.0_ofgjrzjuekeo7s3hdyz2yuzw34 - '@typescript-eslint/utils': 5.42.0_rmayb2veg2btbq6mbmnyivgasy + '@typescript-eslint/eslint-plugin': 5.42.0(@typescript-eslint/parser@5.42.0)(eslint@8.27.0)(typescript@4.8.4) + '@typescript-eslint/utils': 5.42.0(eslint@8.27.0)(typescript@4.8.4) eslint: 8.27.0 - jest: 29.5.0_4f2ldd7um3b3u4eyvetyqsphze + jest: 29.5.0(@types/node@14.18.32)(ts-node@10.9.1) transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jest/27.1.7_zoe3f4dgrzvdh6rxdjodmtuft4: + /eslint-plugin-jest@27.1.7(eslint@8.30.0)(jest@29.5.0)(typescript@4.8.3): resolution: {integrity: sha512-0QVzf+og4YI1Qr3UoprkqqhezAZjFffdi62b0IurkCXMqPtRW84/UT4CKsYT80h/D82LA9avjO/80Ou1LdgbaQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -4583,15 +4857,15 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/utils': 5.42.0_yvgxsonm4ikac5pm5z5getdq5e + '@typescript-eslint/utils': 5.42.0(eslint@8.30.0)(typescript@4.8.3) eslint: 8.30.0 - jest: 29.5.0_johvxhudwcpndp4mle25vwrlq4 + jest: 29.5.0(@types/node@14.18.29)(ts-node@10.9.1) transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-scope/5.1.1: + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} dependencies: @@ -4599,7 +4873,7 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope/7.1.1: + /eslint-scope@7.1.1: resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -4607,7 +4881,7 @@ packages: estraverse: 5.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.27.0: + /eslint-utils@3.0.0(eslint@8.27.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: @@ -4617,7 +4891,7 @@ packages: eslint-visitor-keys: 2.1.0 dev: true - /eslint-utils/3.0.0_eslint@8.30.0: + /eslint-utils@3.0.0(eslint@8.30.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: @@ -4627,7 +4901,7 @@ packages: eslint-visitor-keys: 2.1.0 dev: true - /eslint-utils/3.0.0_eslint@8.35.0: + /eslint-utils@3.0.0(eslint@8.35.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: @@ -4637,17 +4911,17 @@ packages: eslint-visitor-keys: 2.1.0 dev: true - /eslint-visitor-keys/2.1.0: + /eslint-visitor-keys@2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} dev: true - /eslint-visitor-keys/3.3.0: + /eslint-visitor-keys@3.3.0: resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.27.0: + /eslint@8.27.0: resolution: {integrity: sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true @@ -4663,7 +4937,7 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.27.0 + eslint-utils: 3.0.0(eslint@8.27.0) eslint-visitor-keys: 3.3.0 espree: 9.4.1 esquery: 1.4.0 @@ -4695,7 +4969,7 @@ packages: - supports-color dev: true - /eslint/8.30.0: + /eslint@8.30.0: resolution: {integrity: sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true @@ -4711,7 +4985,7 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.30.0 + eslint-utils: 3.0.0(eslint@8.30.0) eslint-visitor-keys: 3.3.0 espree: 9.4.1 esquery: 1.4.0 @@ -4743,7 +5017,7 @@ packages: - supports-color dev: true - /eslint/8.35.0: + /eslint@8.35.0: resolution: {integrity: sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true @@ -4760,7 +5034,7 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.35.0 + eslint-utils: 3.0.0(eslint@8.35.0) eslint-visitor-keys: 3.3.0 espree: 9.4.1 esquery: 1.5.0 @@ -4792,73 +5066,73 @@ packages: - supports-color dev: true - /espree/9.4.1: + /espree@9.4.1: resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.8.0 - acorn-jsx: 5.3.2_acorn@8.8.0 + acorn-jsx: 5.3.2(acorn@8.8.0) eslint-visitor-keys: 3.3.0 dev: true - /esprima/4.0.1: + /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true dev: true - /esquery/1.4.0: + /esquery@1.4.0: resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 dev: true - /esquery/1.5.0: + /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 dev: true - /esrecurse/4.3.0: + /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 dev: true - /estraverse/4.3.0: + /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} dev: true - /estraverse/5.3.0: + /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} dev: true - /esutils/2.0.3: + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} dev: true - /etag/1.8.1: + /etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} dev: true - /event-target-shim/5.0.1: + /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} dev: true - /events/3.3.0: + /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} dev: true - /execa/5.1.1: + /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} dependencies: @@ -4872,18 +5146,18 @@ packages: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - /exit/0.1.2: + /exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} dev: true - /expand-template/2.0.3: + /expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} dev: true optional: true - /expect/29.5.0: + /expect@29.5.0: resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4894,7 +5168,7 @@ packages: jest-util: 29.5.0 dev: true - /express/4.18.2: + /express@4.18.2: resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} engines: {node: '>= 0.10.0'} dependencies: @@ -4933,11 +5207,11 @@ packages: - supports-color dev: true - /extendable-error/0.1.7: + /extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} dev: true - /external-editor/3.1.0: + /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} dependencies: @@ -4946,23 +5220,23 @@ packages: tmp: 0.0.33 dev: true - /fast-content-type-parse/1.0.0: + /fast-content-type-parse@1.0.0: resolution: {integrity: sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA==} dev: true - /fast-decode-uri-component/1.0.1: + /fast-decode-uri-component@1.0.1: resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} dev: true - /fast-deep-equal/3.1.3: + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true - /fast-diff/1.2.0: + /fast-diff@1.2.0: resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} dev: true - /fast-glob/3.2.12: + /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} dependencies: @@ -4972,52 +5246,52 @@ packages: merge2: 1.4.1 micromatch: 4.0.5 - /fast-json-stable-stringify/2.1.0: + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true - /fast-json-stringify/5.6.2: + /fast-json-stringify@5.6.2: resolution: {integrity: sha512-F6xkRrXvtGbAiDSEI5Rk7qk2P63Y9kc8bO6Dnsd3Rt6sBNr2QxNFWs0JbKftgiyOfGxnJaRoHe4SizCTqeAyrA==} dependencies: '@fastify/deepmerge': 1.3.0 ajv: 8.12.0 - ajv-formats: 2.1.1_ajv@8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) fast-deep-equal: 3.1.3 fast-uri: 2.2.0 rfdc: 1.3.0 dev: true - /fast-levenshtein/2.0.6: + /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fast-querystring/1.1.1: + /fast-querystring@1.1.1: resolution: {integrity: sha512-qR2r+e3HvhEFmpdHMv//U8FnFlnYjaC6QKDuaXALDkw2kvHO8WDjxH+f/rHGR4Me4pnk8p9JAkRNTjYHAKRn2Q==} dependencies: fast-decode-uri-component: 1.0.1 dev: true - /fast-redact/3.1.2: + /fast-redact@3.1.2: resolution: {integrity: sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==} engines: {node: '>=6'} dev: true - /fast-safe-stringify/2.1.1: + /fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} dev: true - /fast-uri/2.2.0: + /fast-uri@2.2.0: resolution: {integrity: sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg==} dev: true - /fast-write-atomic/0.2.1: + /fast-write-atomic@0.2.1: resolution: {integrity: sha512-WvJe06IfNYlr+6cO3uQkdKdy3Cb1LlCJSF8zRs2eT8yuhdbSlR9nIt+TgQ92RUxiRrQm+/S7RARnMfCs5iuAjw==} - /fastify-plugin/4.5.0: + /fastify-plugin@4.5.0: resolution: {integrity: sha512-79ak0JxddO0utAXAQ5ccKhvs6vX2MGyHHMMsmZkBANrq3hXc1CHzvNPHOcvTsVMEPl5I+NT+RO4YKMGehOfSIg==} dev: true - /fastify/4.14.1: + /fastify@4.14.1: resolution: {integrity: sha512-yjrDeXe77j9gRlSV2UJry8mcFWbD0NQ5JYjnPi4tkFjHZVaG3/BD5wxOmRzGnHPC0YvaBJ0XWrIfFPl2IHRa1w==} dependencies: '@fastify/ajv-compiler': 3.5.0 @@ -5039,31 +5313,31 @@ packages: - supports-color dev: true - /fastq/1.15.0: + /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 - /fb-watchman/2.0.2: + /fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 dev: true - /fd-slicer/1.1.0: + /fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} dependencies: pend: 1.2.0 dev: true - /file-entry-cache/6.0.1: + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 dev: true - /file-set/5.1.3: + /file-set@5.1.3: resolution: {integrity: sha512-mQ6dqz+z59on3B50IGF3ujNGbZmY1TAeLHpNfhLEeNM6Lky31w3RUlbCyqZWQs0DuZJQU4R2qDuVd9ojyzadcg==} engines: {node: '>=12.17'} dependencies: @@ -5071,13 +5345,13 @@ packages: glob: 7.2.3 dev: true - /fill-range/7.0.1: + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - /finalhandler/1.2.0: + /finalhandler@1.2.0: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} dependencies: @@ -5092,7 +5366,7 @@ packages: - supports-color dev: true - /find-cache-dir/3.3.2: + /find-cache-dir@3.3.2: resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} engines: {node: '>=8'} dependencies: @@ -5100,7 +5374,7 @@ packages: make-dir: 3.1.0 pkg-dir: 4.2.0 - /find-my-way/7.5.0: + /find-my-way@7.5.0: resolution: {integrity: sha512-3ehydSBhGcS0TtMA/BYEyMAKi9Sv0MqF8aqiMO5oGBXyCcSlyEJyfGWsbNxAx7BekTNWUwD1ttLJLURni2vmJg==} engines: {node: '>=14'} dependencies: @@ -5109,35 +5383,35 @@ packages: safe-regex2: 2.0.0 dev: true - /find-replace/3.0.0: + /find-replace@3.0.0: resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} engines: {node: '>=4.0.0'} dependencies: array-back: 3.1.0 dev: true - /find-up/4.1.0: + /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - /find-up/5.0.0: + /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - /find-yarn-workspace-root2/1.2.16: + /find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} dependencies: micromatch: 4.0.5 pkg-dir: 4.2.0 dev: true - /flat-cache/3.0.4: + /flat-cache@3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: @@ -5145,11 +5419,11 @@ packages: rimraf: 3.0.2 dev: true - /flatted/3.2.7: + /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true - /follow-redirects/1.15.2_debug@4.3.4: + /follow-redirects@1.15.2(debug@4.3.4): resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} peerDependencies: @@ -5161,13 +5435,13 @@ packages: debug: 4.3.4 dev: false - /for-each/0.3.3: + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 dev: true - /form-data/4.0.0: + /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} dependencies: @@ -5176,7 +5450,7 @@ packages: mime-types: 2.1.35 dev: true - /formidable/2.1.2: + /formidable@2.1.2: resolution: {integrity: sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==} dependencies: dezalgo: 1.0.4 @@ -5185,30 +5459,30 @@ packages: qs: 6.11.0 dev: true - /forwarded/0.2.0: + /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} dev: true - /fp-ts/2.13.1: + /fp-ts@2.13.1: resolution: {integrity: sha512-0eu5ULPS2c/jsa1lGFneEFFEdTbembJv8e4QKXeVJ3lm/5hyve06dlKZrpxmMwJt6rYen7sxmHHK2CLaXvWuWQ==} - /fresh/0.5.2: + /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} dev: true - /from2/2.3.0: + /from2@2.3.0: resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} dependencies: inherits: 2.0.4 readable-stream: 2.3.7 dev: false - /fs-constants/1.0.0: + /fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - /fs-extra/10.1.0: + /fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} dependencies: @@ -5216,7 +5490,7 @@ packages: jsonfile: 6.1.0 universalify: 2.0.0 - /fs-extra/11.1.0: + /fs-extra@11.1.0: resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} engines: {node: '>=14.14'} dependencies: @@ -5225,7 +5499,7 @@ packages: universalify: 2.0.0 dev: true - /fs-extra/7.0.1: + /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -5234,7 +5508,7 @@ packages: universalify: 0.1.2 dev: true - /fs-extra/8.1.0: + /fs-extra@8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -5243,15 +5517,15 @@ packages: universalify: 0.1.2 dev: true - /fs-jetpack/5.1.0: + /fs-jetpack@5.1.0: resolution: {integrity: sha512-Xn4fDhLydXkuzepZVsr02jakLlmoARPy+YWIclo4kh0GyNGUHnTqeH/w/qIsVn50dFxtp8otPL2t/HcPJBbxUA==} dependencies: minimatch: 5.1.0 - /fs.realpath/1.0.0: + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - /fsevents/2.3.2: + /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -5259,10 +5533,10 @@ packages: dev: true optional: true - /function-bind/1.1.1: + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - /function.prototype.name/1.1.5: + /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} dependencies: @@ -5272,24 +5546,24 @@ packages: functions-have-names: 1.2.3 dev: true - /functions-have-names/1.2.3: + /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true - /gensync/1.0.0-beta.2: + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - /get-caller-file/2.0.5: + /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-func-name/2.0.0: + /get-func-name@2.0.0: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: true - /get-intrinsic/1.1.3: + /get-intrinsic@1.1.3: resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} dependencies: function-bind: 1.1.1 @@ -5297,13 +5571,13 @@ packages: has-symbols: 1.0.3 dev: true - /get-it/8.1.1: + /get-it@8.1.1: resolution: {integrity: sha512-83P2+3V/3E+KSdlHnGlOr4vCrlV8wDsT580AyJkMtkK/8LtZc0TOCI9bjQXH1sgYnmQTzCoPoPaOAE+a8JZqLQ==} engines: {node: '>=14.0.0'} dependencies: debug: 4.3.4 decompress-response: 7.0.0 - follow-redirects: 1.15.2_debug@4.3.4 + follow-redirects: 1.15.2(debug@4.3.4) into-stream: 6.0.0 is-plain-object: 5.0.0 is-retry-allowed: 2.2.0 @@ -5315,7 +5589,7 @@ packages: - supports-color dev: false - /get-latest-version/5.0.1: + /get-latest-version@5.0.1: resolution: {integrity: sha512-oonDx2gj9GzP+b1dxrd4KJwnTEFPjugNVALey5ze7cBkwjI/2BQ6X93hzE5cTVHV3DOPTB8U9HlbpEZVLjI1MQ==} engines: {node: '>=14.18'} dependencies: @@ -5327,16 +5601,16 @@ packages: - supports-color dev: false - /get-package-type/0.1.0: + /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} dev: true - /get-stream/6.0.1: + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - /get-symbol-description/1.0.0: + /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: @@ -5344,25 +5618,25 @@ packages: get-intrinsic: 1.1.3 dev: true - /github-from-package/0.0.0: + /github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} dev: true optional: true - /glob-parent/5.1.2: + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - /glob-parent/6.0.2: + /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 dev: true - /glob/7.2.3: + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 @@ -5372,38 +5646,38 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /global-dirs/3.0.0: + /global-dirs@3.0.0: resolution: {integrity: sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==} engines: {node: '>=10'} dependencies: ini: 2.0.0 - /globals/11.12.0: + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globals/13.17.0: + /globals@13.17.0: resolution: {integrity: sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: true - /globals/13.19.0: + /globals@13.19.0: resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: true - /globalthis/1.0.3: + /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} dependencies: define-properties: 1.1.4 dev: true - /globby/11.1.0: + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} dependencies: @@ -5414,103 +5688,103 @@ packages: merge2: 1.4.1 slash: 3.0.0 - /gopd/1.0.1: + /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.1.3 dev: true - /graceful-fs/4.2.10: + /graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - /grapheme-splitter/1.0.4: + /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /hard-rejection/2.1.0: + /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} dev: true - /has-bigints/1.0.2: + /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true - /has-flag/3.0.0: + /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - /has-flag/4.0.0: + /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - /has-property-descriptors/1.0.0: + /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: get-intrinsic: 1.1.3 dev: true - /has-proto/1.0.1: + /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} dev: true - /has-symbols/1.0.3: + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} dev: true - /has-tostringtag/1.0.0: + /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: true - /has-yarn/2.1.0: + /has-yarn@2.1.0: resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} engines: {node: '>=8'} - /has/1.0.3: + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - /hasha/5.2.2: + /hasha@5.2.2: resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} engines: {node: '>=8'} dependencies: is-stream: 2.0.1 type-fest: 0.8.1 - /header-case/2.0.4: + /header-case@2.0.4: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} dependencies: capital-case: 1.0.4 tslib: 2.4.1 dev: false - /hexoid/1.0.0: + /hexoid@1.0.0: resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} engines: {node: '>=8'} dev: true - /hosted-git-info/2.8.9: + /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - /hosted-git-info/4.1.0: + /hosted-git-info@4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} dependencies: lru-cache: 6.0.0 dev: true - /html-escaper/2.0.2: + /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /htmlparser2/8.0.1: + /htmlparser2@8.0.1: resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==} dependencies: domelementtype: 2.3.0 @@ -5519,7 +5793,7 @@ packages: entities: 4.4.0 dev: true - /http-errors/2.0.0: + /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} dependencies: @@ -5530,7 +5804,7 @@ packages: toidentifier: 1.0.1 dev: true - /http-proxy-agent/5.0.0: + /http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} dependencies: @@ -5540,7 +5814,7 @@ packages: transitivePeerDependencies: - supports-color - /https-proxy-agent/5.0.0: + /https-proxy-agent@5.0.0: resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==} engines: {node: '>= 6'} dependencies: @@ -5550,7 +5824,7 @@ packages: - supports-color dev: false - /https-proxy-agent/5.0.1: + /https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} dependencies: @@ -5559,34 +5833,34 @@ packages: transitivePeerDependencies: - supports-color - /human-id/1.0.2: + /human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} dev: true - /human-signals/2.1.0: + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - /iconv-lite/0.4.24: + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 dev: true - /ieee754/1.2.1: + /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - /ignore/5.2.0: + /ignore@5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} dev: true - /ignore/5.2.4: + /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} - /import-fresh/3.3.0: + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} dependencies: @@ -5594,7 +5868,7 @@ packages: resolve-from: 4.0.0 dev: true - /import-local/3.1.0: + /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} hasBin: true @@ -5603,32 +5877,32 @@ packages: resolve-cwd: 3.0.0 dev: true - /imurmurhash/0.1.4: + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} dev: true - /indent-string/4.0.0: + /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - /inflight/1.0.6: + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 - /inherits/2.0.4: + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - /ini/1.3.8: + /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - /ini/2.0.0: + /ini@2.0.0: resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} engines: {node: '>=10'} - /internal-slot/1.0.4: + /internal-slot@1.0.4: resolution: {integrity: sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==} engines: {node: '>= 0.4'} dependencies: @@ -5637,7 +5911,7 @@ packages: side-channel: 1.0.4 dev: true - /into-stream/6.0.0: + /into-stream@6.0.0: resolution: {integrity: sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==} engines: {node: '>=10'} dependencies: @@ -5645,12 +5919,12 @@ packages: p-is-promise: 3.0.0 dev: false - /ipaddr.js/1.9.1: + /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} dev: true - /is-array-buffer/3.0.1: + /is-array-buffer@3.0.1: resolution: {integrity: sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==} dependencies: call-bind: 1.0.2 @@ -5658,23 +5932,23 @@ packages: is-typed-array: 1.1.10 dev: true - /is-arrayish/0.2.1: + /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - /is-bigint/1.0.4: + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 dev: true - /is-binary-path/2.1.0: + /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 dev: true - /is-boolean-object/1.1.2: + /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: @@ -5682,98 +5956,98 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-callable/1.2.7: + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} dev: true - /is-ci/3.0.1: + /is-ci@3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: ci-info: 3.7.1 dev: true - /is-core-module/2.11.0: + /is-core-module@2.11.0: resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: has: 1.0.3 - /is-date-object/1.0.5: + /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-docker/2.2.1: + /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true - /is-extglob/2.1.1: + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - /is-fullwidth-code-point/3.0.0: + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - /is-fullwidth-code-point/4.0.0: + /is-fullwidth-code-point@4.0.0: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} dev: true - /is-generator-fn/2.1.0: + /is-generator-fn@2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} dev: true - /is-glob/4.0.3: + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - /is-interactive/1.0.0: + /is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} - /is-negative-zero/2.0.2: + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} dev: true - /is-number-object/1.0.7: + /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-number/7.0.0: + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - /is-path-cwd/2.2.0: + /is-path-cwd@2.2.0: resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} engines: {node: '>=6'} - /is-path-inside/3.0.3: + /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - /is-plain-obj/1.1.0: + /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} dev: true - /is-plain-object/5.0.0: + /is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} dev: false - /is-regex/1.1.4: + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: @@ -5781,43 +6055,43 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-retry-allowed/2.2.0: + /is-retry-allowed@2.2.0: resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} engines: {node: '>=10'} dev: false - /is-shared-array-buffer/1.0.2: + /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 dev: true - /is-stream/2.0.1: + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - /is-string/1.0.7: + /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-subdir/1.2.0: + /is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} dependencies: better-path-resolve: 1.0.0 dev: true - /is-symbol/1.0.4: + /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: true - /is-typed-array/1.1.10: + /is-typed-array@1.1.10: resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} engines: {node: '>= 0.4'} dependencies: @@ -5828,46 +6102,46 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-unicode-supported/0.1.0: + /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} - /is-weakref/1.0.2: + /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: true - /is-what/4.1.8: + /is-what@4.1.8: resolution: {integrity: sha512-yq8gMao5upkPoGEU9LsB2P+K3Kt8Q3fQFCGyNCWOAnJAMzEXVV9drYb0TXr42TTliLLhKIBvulgAXgtLLnwzGA==} engines: {node: '>=12.13'} - /is-windows/1.0.2: + /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} - /is-wsl/2.2.0: + /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} dependencies: is-docker: 2.2.1 - /isarray/0.0.1: + /isarray@0.0.1: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} dev: true - /isarray/1.0.0: + /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - /isexe/2.0.0: + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - /istanbul-lib-coverage/3.2.0: + /istanbul-lib-coverage@3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} dev: true - /istanbul-lib-instrument/5.2.1: + /istanbul-lib-instrument@5.2.1: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: @@ -5880,7 +6154,7 @@ packages: - supports-color dev: true - /istanbul-lib-report/3.0.0: + /istanbul-lib-report@3.0.0: resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} engines: {node: '>=8'} dependencies: @@ -5889,7 +6163,7 @@ packages: supports-color: 7.2.0 dev: true - /istanbul-lib-source-maps/4.0.1: + /istanbul-lib-source-maps@4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: @@ -5900,7 +6174,7 @@ packages: - supports-color dev: true - /istanbul-reports/3.1.5: + /istanbul-reports@3.1.5: resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} engines: {node: '>=8'} dependencies: @@ -5908,7 +6182,7 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /jest-changed-files/29.5.0: + /jest-changed-files@29.5.0: resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -5916,7 +6190,7 @@ packages: p-limit: 3.1.0 dev: true - /jest-circus/29.5.0: + /jest-circus@29.5.0: resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -5944,7 +6218,7 @@ packages: - supports-color dev: true - /jest-cli/29.5.0: + /jest-cli@29.5.0: resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -5972,7 +6246,7 @@ packages: - ts-node dev: true - /jest-cli/29.5.0_4f2ldd7um3b3u4eyvetyqsphze: + /jest-cli@29.5.0(@types/node@14.18.29)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -5982,14 +6256,14 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.5.0_ts-node@10.9.1 + '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.5.0_4f2ldd7um3b3u4eyvetyqsphze + jest-config: 29.5.0(@types/node@14.18.29)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -6000,7 +6274,7 @@ packages: - ts-node dev: true - /jest-cli/29.5.0_johvxhudwcpndp4mle25vwrlq4: + /jest-cli@29.5.0(@types/node@14.18.32)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6010,14 +6284,14 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.5.0_ts-node@10.9.1 + '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.5.0_johvxhudwcpndp4mle25vwrlq4 + jest-config: 29.5.0(@types/node@14.18.32)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -6028,7 +6302,7 @@ packages: - ts-node dev: true - /jest-config/29.5.0: + /jest-config@29.5.0: resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6043,7 +6317,7 @@ packages: '@babel/core': 7.20.5 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 - babel-jest: 29.5.0_@babel+core@7.20.5 + babel-jest: 29.5.0(@babel/core@7.20.5) chalk: 4.1.2 ci-info: 3.7.1 deepmerge: 4.2.2 @@ -6066,126 +6340,7 @@ packages: - supports-color dev: true - /jest-config/29.5.0_4f2ldd7um3b3u4eyvetyqsphze: - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.20.5 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 14.18.32 - babel-jest: 29.5.0_@babel+core@7.20.5 - chalk: 4.1.2 - ci-info: 3.7.1 - deepmerge: 4.2.2 - glob: 7.2.3 - graceful-fs: 4.2.10 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - ts-node: 10.9.1_jcmx33t3olsvcxopqdljsohpme - transitivePeerDependencies: - - supports-color - dev: true - - /jest-config/29.5.0_@types+node@18.14.2: - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.20.5 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.14.2 - babel-jest: 29.5.0_@babel+core@7.20.5 - chalk: 4.1.2 - ci-info: 3.7.1 - deepmerge: 4.2.2 - glob: 7.2.3 - graceful-fs: 4.2.10 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-config/29.5.0_jboh4c3iv3wxuja4m36ecyac7e: - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.20.5 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.14.2 - babel-jest: 29.5.0_@babel+core@7.20.5 - chalk: 4.1.2 - ci-info: 3.7.1 - deepmerge: 4.2.2 - glob: 7.2.3 - graceful-fs: 4.2.10 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - ts-node: 10.9.1_jcmx33t3olsvcxopqdljsohpme - transitivePeerDependencies: - - supports-color - dev: true - - /jest-config/29.5.0_johvxhudwcpndp4mle25vwrlq4: + /jest-config@29.5.0(@types/node@14.18.29)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6201,7 +6356,7 @@ packages: '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 '@types/node': 14.18.29 - babel-jest: 29.5.0_@babel+core@7.20.5 + babel-jest: 29.5.0(@babel/core@7.20.5) chalk: 4.1.2 ci-info: 3.7.1 deepmerge: 4.2.2 @@ -6220,12 +6375,131 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1_ck2axrxkiif44rdbzjywaqjysa + ts-node: 10.9.1(@types/node@14.18.29)(typescript@4.8.3) transitivePeerDependencies: - supports-color dev: true - /jest-diff/29.5.0: + /jest-config@29.5.0(@types/node@14.18.32)(ts-node@10.9.1): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.20.5 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 14.18.32 + babel-jest: 29.5.0(@babel/core@7.20.5) + chalk: 4.1.2 + ci-info: 3.7.1 + deepmerge: 4.2.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.1(@types/node@14.18.32)(typescript@4.8.4) + transitivePeerDependencies: + - supports-color + dev: true + + /jest-config@29.5.0(@types/node@18.14.2): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.20.5 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.14.2 + babel-jest: 29.5.0(@babel/core@7.20.5) + chalk: 4.1.2 + ci-info: 3.7.1 + deepmerge: 4.2.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-config@29.5.0(@types/node@18.14.2)(ts-node@10.9.1): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.20.5 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.14.2 + babel-jest: 29.5.0(@babel/core@7.20.5) + chalk: 4.1.2 + ci-info: 3.7.1 + deepmerge: 4.2.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.1(@types/node@14.18.32)(typescript@4.8.4) + transitivePeerDependencies: + - supports-color + dev: true + + /jest-diff@29.5.0: resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6235,14 +6509,14 @@ packages: pretty-format: 29.5.0 dev: true - /jest-docblock/29.4.3: + /jest-docblock@29.4.3: resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each/29.5.0: + /jest-each@29.5.0: resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6253,7 +6527,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-environment-node/29.5.0: + /jest-environment-node@29.5.0: resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6265,7 +6539,7 @@ packages: jest-util: 29.5.0 dev: true - /jest-fetch-mock/3.0.3: + /jest-fetch-mock@3.0.3: resolution: {integrity: sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw==} dependencies: cross-fetch: 3.1.5 @@ -6274,12 +6548,12 @@ packages: - encoding dev: true - /jest-get-type/29.4.3: + /jest-get-type@29.4.3: resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map/29.5.0: + /jest-haste-map@29.5.0: resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6298,7 +6572,7 @@ packages: fsevents: 2.3.2 dev: true - /jest-leak-detector/29.5.0: + /jest-leak-detector@29.5.0: resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6306,7 +6580,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-matcher-utils/29.5.0: + /jest-matcher-utils@29.5.0: resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6316,7 +6590,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-message-util/29.5.0: + /jest-message-util@29.5.0: resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6331,7 +6605,7 @@ packages: stack-utils: 2.0.5 dev: true - /jest-mock/29.5.0: + /jest-mock@29.5.0: resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6340,7 +6614,7 @@ packages: jest-util: 29.5.0 dev: true - /jest-pnp-resolver/1.2.2_jest-resolve@29.5.0: + /jest-pnp-resolver@1.2.2(jest-resolve@29.5.0): resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} engines: {node: '>=6'} peerDependencies: @@ -6352,12 +6626,12 @@ packages: jest-resolve: 29.5.0 dev: true - /jest-regex-util/29.4.3: + /jest-regex-util@29.4.3: resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies/29.5.0: + /jest-resolve-dependencies@29.5.0: resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6367,14 +6641,14 @@ packages: - supports-color dev: true - /jest-resolve/29.5.0: + /jest-resolve@29.5.0: resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.10 jest-haste-map: 29.5.0 - jest-pnp-resolver: 1.2.2_jest-resolve@29.5.0 + jest-pnp-resolver: 1.2.2(jest-resolve@29.5.0) jest-util: 29.5.0 jest-validate: 29.5.0 resolve: 1.22.1 @@ -6382,7 +6656,7 @@ packages: slash: 3.0.0 dev: true - /jest-runner/29.5.0: + /jest-runner@29.5.0: resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6411,7 +6685,7 @@ packages: - supports-color dev: true - /jest-runtime/29.5.0: + /jest-runtime@29.5.0: resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6441,14 +6715,14 @@ packages: - supports-color dev: true - /jest-snapshot/29.5.0: + /jest-snapshot@29.5.0: resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.20.5 '@babel/generator': 7.20.5 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.5 + '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.20.5) + '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.20.5) '@babel/traverse': 7.20.5 '@babel/types': 7.20.5 '@jest/expect-utils': 29.5.0 @@ -6456,7 +6730,7 @@ packages: '@jest/types': 29.5.0 '@types/babel__traverse': 7.18.2 '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.5 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.20.5) chalk: 4.1.2 expect: 29.5.0 graceful-fs: 4.2.10 @@ -6472,23 +6746,23 @@ packages: - supports-color dev: true - /jest-util/29.0.3: + /jest-util@29.0.3: resolution: {integrity: sha512-Q0xaG3YRG8QiTC4R6fHjHQPaPpz9pJBEi0AeOE4mQh/FuWOijFjGXMMOfQEaU9i3z76cNR7FobZZUQnL6IyfdQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.5.0 + '@jest/types': 29.0.3 '@types/node': 18.14.2 chalk: 4.1.2 - ci-info: 3.7.1 + ci-info: 3.4.0 graceful-fs: 4.2.10 picomatch: 2.3.1 dev: true - /jest-util/29.2.1: + /jest-util@29.2.1: resolution: {integrity: sha512-P5VWDj25r7kj7kl4pN2rG/RN2c1TLfYYYZYULnS/35nFDjBai+hBeo3MDrYZS7p6IoY3YHZnt2vq4L6mKnLk0g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.5.0 + '@jest/types': 29.2.1 '@types/node': 18.14.2 chalk: 4.1.2 ci-info: 3.5.0 @@ -6496,7 +6770,7 @@ packages: picomatch: 2.3.1 dev: true - /jest-util/29.4.3: + /jest-util@29.4.3: resolution: {integrity: sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6508,7 +6782,7 @@ packages: picomatch: 2.3.1 dev: true - /jest-util/29.5.0: + /jest-util@29.5.0: resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6520,7 +6794,7 @@ packages: picomatch: 2.3.1 dev: true - /jest-validate/29.5.0: + /jest-validate@29.5.0: resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6532,7 +6806,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-watcher/29.5.0: + /jest-watcher@29.5.0: resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6546,7 +6820,7 @@ packages: string-length: 4.0.2 dev: true - /jest-worker/29.5.0: + /jest-worker@29.5.0: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6556,7 +6830,7 @@ packages: supports-color: 8.1.1 dev: true - /jest/29.5.0: + /jest@29.5.0: resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6576,7 +6850,7 @@ packages: - ts-node dev: true - /jest/29.5.0_4f2ldd7um3b3u4eyvetyqsphze: + /jest@29.5.0(@types/node@14.18.29)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6586,17 +6860,17 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.5.0_ts-node@10.9.1 + '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0_4f2ldd7um3b3u4eyvetyqsphze + jest-cli: 29.5.0(@types/node@14.18.29)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color - ts-node dev: true - /jest/29.5.0_johvxhudwcpndp4mle25vwrlq4: + /jest@29.5.0(@types/node@14.18.32)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6606,24 +6880,24 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.5.0_ts-node@10.9.1 + '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0_johvxhudwcpndp4mle25vwrlq4 + jest-cli: 29.5.0(@types/node@14.18.32)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color - ts-node dev: true - /js-sdsl/4.1.5: + /js-sdsl@4.1.5: resolution: {integrity: sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==} dev: true - /js-tokens/4.0.0: + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /js-yaml/3.14.1: + /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true dependencies: @@ -6631,34 +6905,34 @@ packages: esprima: 4.0.1 dev: true - /js-yaml/4.1.0: + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 dev: true - /jsesc/2.5.2: + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true - /json-parse-even-better-errors/2.3.1: + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - /json-schema-traverse/0.4.1: + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true - /json-schema-traverse/1.0.0: + /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} dev: true - /json-stable-stringify-without-jsonify/1.0.1: + /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /json-to-ast/2.1.0: + /json-to-ast@2.1.0: resolution: {integrity: sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==} engines: {node: '>= 4'} dependencies: @@ -6666,44 +6940,44 @@ packages: grapheme-splitter: 1.0.4 dev: true - /json5/2.2.1: + /json5@2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} engines: {node: '>=6'} hasBin: true dev: true - /json5/2.2.3: + /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - /jsonc-parser/3.2.0: + /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true - /jsonfile/4.0.0: + /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.10 dev: true - /jsonfile/6.1.0: + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: universalify: 2.0.0 optionalDependencies: graceful-fs: 4.2.10 - /jsonpointer/5.0.1: + /jsonpointer@5.0.1: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} dev: true - /jsonschema/1.4.1: + /jsonschema@1.4.1: resolution: {integrity: sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==} dev: true - /keytar/7.9.0: + /keytar@7.9.0: resolution: {integrity: sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==} requiresBuild: true dependencies: @@ -6712,21 +6986,21 @@ packages: dev: true optional: true - /kind-of/6.0.3: + /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} dev: true - /kleur/3.0.3: + /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - /kleur/4.1.5: + /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} dev: true - /langium-cli/1.2.0: + /langium-cli@1.2.0: resolution: {integrity: sha512-DPyJUd4Hj8+OBNEcAQyJtW6e38+UPd758gTI7Ep0r/sDogrwJ/GJHx5nGA+r0ygpNcDPG+mS9Hw8Y05uCNNcoQ==} engines: {node: '>=14.0.0'} hasBin: true @@ -6739,7 +7013,7 @@ packages: lodash: 4.17.21 dev: true - /langium/1.2.0: + /langium@1.2.0: resolution: {integrity: sha512-jFSptpFljYo9ZTHrq/GZflMUXiKo5KBNtsaIJtnIzDm9zC2FxsxejEFAtNL09262RVQt+zFeF/2iLAShFTGitw==} engines: {node: '>=14.0.0'} dependencies: @@ -6749,18 +7023,18 @@ packages: vscode-languageserver-textdocument: 1.0.8 vscode-uri: 3.0.7 - /lazystream/1.0.1: + /lazystream@1.0.1: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} dependencies: readable-stream: 2.3.7 - /leven/3.1.0: + /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} dev: true - /levn/0.4.1: + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} dependencies: @@ -6768,7 +7042,7 @@ packages: type-check: 0.4.0 dev: true - /light-my-request/5.9.1: + /light-my-request@5.9.1: resolution: {integrity: sha512-UT7pUk8jNCR1wR7w3iWfIjx32DiB2f3hFdQSOwy3/EPQ3n3VocyipUxcyRZR0ahoev+fky69uA+GejPa9KuHKg==} dependencies: cookie: 0.5.0 @@ -6776,23 +7050,23 @@ packages: set-cookie-parser: 2.5.1 dev: true - /lines-and-columns/1.2.4: + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /linkify-it/3.0.3: + /linkify-it@3.0.3: resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} dependencies: uc.micro: 1.0.6 dev: true - /load-module/4.2.1: + /load-module@4.2.1: resolution: {integrity: sha512-Sbfg6R4LjvyThJpqUoADHMjyoI2+cL4msbCQeZ9kkY/CqP/TT2938eftKm7x4I2gd4/A+DEe6nePkbfWYbXwSw==} engines: {node: '>=12.17'} dependencies: array-back: 6.2.2 dev: true - /load-yaml-file/0.2.0: + /load-yaml-file@0.2.0: resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} engines: {node: '>=6'} dependencies: @@ -6802,127 +7076,127 @@ packages: strip-bom: 3.0.0 dev: true - /local-pkg/0.4.3: + /local-pkg@0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} dev: true - /locate-path/5.0.0: + /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} dependencies: p-locate: 4.1.0 - /locate-path/6.0.0: + /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - /lodash.camelcase/4.3.0: + /lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} dev: true - /lodash.defaults/4.2.0: + /lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - /lodash.difference/4.5.0: + /lodash.difference@4.5.0: resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} - /lodash.flatten/4.4.0: + /lodash.flatten@4.4.0: resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} - /lodash.isplainobject/4.0.6: + /lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - /lodash.memoize/4.1.2: + /lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} dev: true - /lodash.merge/4.6.2: + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true - /lodash.startcase/4.4.0: + /lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true - /lodash.union/4.6.0: + /lodash.union@4.6.0: resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} - /lodash/4.17.21: + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - /log-symbols/4.1.0: + /log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - /loose-envify/1.4.0: + /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true dependencies: js-tokens: 4.0.0 - /loupe/2.3.6: + /loupe@2.3.6: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: get-func-name: 2.0.0 dev: true - /lower-case-first/2.0.2: + /lower-case-first@2.0.2: resolution: {integrity: sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==} dependencies: tslib: 2.4.1 - /lower-case/2.0.2: + /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: tslib: 2.4.1 dev: false - /lru-cache/4.1.5: + /lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: pseudomap: 1.0.2 yallist: 2.1.2 dev: true - /lru-cache/6.0.0: + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 - /make-dir/3.1.0: + /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: semver: 6.3.0 - /make-error/1.3.6: + /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true - /makeerror/1.0.12: + /makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 dev: true - /map-obj/1.0.1: + /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} dev: true - /map-obj/4.3.0: + /map-obj@4.3.0: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} dev: true - /markdown-it/12.3.2: + /markdown-it@12.3.2: resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} hasBin: true dependencies: @@ -6933,16 +7207,16 @@ packages: uc.micro: 1.0.6 dev: true - /mdurl/1.0.1: + /mdurl@1.0.1: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} dev: true - /media-typer/0.3.0: + /media-typer@0.3.0: resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} engines: {node: '>= 0.6'} dev: true - /meow/6.1.1: + /meow@6.1.1: resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} engines: {node: '>=8'} dependencies: @@ -6959,77 +7233,77 @@ packages: yargs-parser: 18.1.3 dev: true - /merge-descriptors/1.0.1: + /merge-descriptors@1.0.1: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} dev: true - /merge-stream/2.0.0: + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - /merge2/1.4.1: + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - /methods/1.1.2: + /methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} dev: true - /micromatch/4.0.5: + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: braces: 3.0.2 picomatch: 2.3.1 - /mime-db/1.52.0: + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} dev: true - /mime-types/2.1.35: + /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 dev: true - /mime/1.6.0: + /mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} hasBin: true dev: true - /mime/2.6.0: + /mime@2.6.0: resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} engines: {node: '>=4.0.0'} hasBin: true dev: true - /mimic-fn/2.1.0: + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - /mimic-response/3.1.0: + /mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} - /min-indent/1.0.1: + /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - /minimatch/3.1.2: + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - /minimatch/5.1.0: + /minimatch@5.1.0: resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 - /minimist-options/4.1.0: + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} dependencies: @@ -7038,15 +7312,15 @@ packages: kind-of: 6.0.3 dev: true - /minimist/1.2.8: + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - /mixme/0.5.4: + /mixme@0.5.4: resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} engines: {node: '>= 8.0.0'} dev: true - /mixpanel/0.17.0: + /mixpanel@0.17.0: resolution: {integrity: sha512-DY5WeOy/hmkPrNiiZugJpWR0iMuOwuj1a3u0bgwB2eUFRV6oIew/pIahhpawdbNjb+Bye4a8ID3gefeNPvL81g==} engines: {node: '>=10.0'} dependencies: @@ -7055,17 +7329,17 @@ packages: - supports-color dev: false - /mkdirp-classic/0.5.3: + /mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} dev: true optional: true - /mkdirp/1.0.4: + /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true - /mlly/1.2.0: + /mlly@1.2.0: resolution: {integrity: sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==} dependencies: acorn: 8.8.2 @@ -7074,53 +7348,53 @@ packages: ufo: 1.1.1 dev: true - /ms/2.0.0: + /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: true - /ms/2.1.2: + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - /ms/2.1.3: + /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - /mute-stream/0.0.8: + /mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true - /mylas/2.1.13: + /mylas@2.1.13: resolution: {integrity: sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==} engines: {node: '>=12.0.0'} dev: true - /nanoid/3.3.4: + /nanoid@3.3.4: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /napi-build-utils/1.0.2: + /napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} dev: true optional: true - /natural-compare-lite/1.4.0: + /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true - /natural-compare/1.4.0: + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true - /negotiator/0.6.3: + /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} dev: true - /new-github-issue-url/0.2.1: + /new-github-issue-url@0.2.1: resolution: {integrity: sha512-md4cGoxuT4T4d/HDOXbrUHkTKrp/vp+m3aOA7XXVYwNsUNMK49g3SQicTSeV5GIz/5QVGAeYRAOlyp9OvlgsYA==} engines: {node: '>=10'} - /next/12.3.1_672uxklweod7ene3nqtsh262ca: + /next@12.3.1(@babel/core@7.20.5)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-l7bvmSeIwX5lp07WtIiP9u2ytZMv7jIeB8iacR28PuUEFG5j0HGAPnMqyG5kbZNBG2H7tRsrQ4HCjuMOPnANZw==} engines: {node: '>=12.22.0'} hasBin: true @@ -7143,9 +7417,9 @@ packages: caniuse-lite: 1.0.30001439 postcss: 8.4.14 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - styled-jsx: 5.0.7_zavbqmrropwrojvx6ojaa4s7im - use-sync-external-store: 1.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.0.7(@babel/core@7.20.5)(react@18.2.0) + use-sync-external-store: 1.2.0(react@18.2.0) optionalDependencies: '@next/swc-android-arm-eabi': 12.3.1 '@next/swc-android-arm64': 12.3.1 @@ -7164,14 +7438,14 @@ packages: - '@babel/core' - babel-plugin-macros - /no-case/3.0.4: + /no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 tslib: 2.4.1 dev: false - /node-abi/3.33.0: + /node-abi@3.33.0: resolution: {integrity: sha512-7GGVawqyHF4pfd0YFybhv/eM9JwTtPqx0mAanQ146O3FlSh3pA24zf9IRQTOsfTSqXTNzPSP5iagAJ94jjuVog==} engines: {node: '>=10'} dependencies: @@ -7179,12 +7453,12 @@ packages: dev: true optional: true - /node-addon-api/4.3.0: + /node-addon-api@4.3.0: resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} dev: true optional: true - /node-fetch/2.6.7: + /node-fetch@2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} engines: {node: 4.x || >=6.0.0} peerDependencies: @@ -7195,25 +7469,25 @@ packages: dependencies: whatwg-url: 5.0.0 - /node-int64/0.4.0: + /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true - /node-machine-id/1.1.12: + /node-machine-id@1.1.12: resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} dev: false - /node-releases/2.0.6: + /node-releases@2.0.6: resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} - /noms/0.0.0: + /noms@0.0.0: resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==} dependencies: inherits: 2.0.4 readable-stream: 1.0.34 dev: true - /normalize-package-data/2.5.0: + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 @@ -7221,32 +7495,32 @@ packages: semver: 5.7.1 validate-npm-package-license: 3.0.4 - /normalize-path/3.0.0: + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - /npm-run-path/4.0.1: + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} dependencies: path-key: 3.1.1 - /nth-check/2.1.1: + /nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: boolbase: 1.0.0 dev: true - /object-inspect/1.12.3: + /object-inspect@1.12.3: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} dev: true - /object-keys/1.1.1: + /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} dev: true - /object.assign/4.1.4: + /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: @@ -7256,39 +7530,39 @@ packages: object-keys: 1.1.1 dev: true - /on-exit-leak-free/2.1.0: + /on-exit-leak-free@2.1.0: resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} dev: true - /on-finished/2.4.1: + /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 dev: true - /once/1.4.0: + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - /onetime/5.1.2: + /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 - /open/7.4.2: + /open@7.4.2: resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} engines: {node: '>=8'} dependencies: is-docker: 2.2.1 is-wsl: 2.2.0 - /openapi-types/12.1.0: + /openapi-types@12.1.0: resolution: {integrity: sha512-XpeCy01X6L5EpP+6Hc3jWN7rMZJ+/k1lwki/kTmWzbVhdPie3jd5O2ZtedEx8Yp58icJ0osVldLMrTB/zslQXA==} - /optionator/0.9.1: + /optionator@0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} dependencies: @@ -7300,7 +7574,7 @@ packages: word-wrap: 1.2.3 dev: true - /ora/5.4.1: + /ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} dependencies: @@ -7314,97 +7588,97 @@ packages: strip-ansi: 6.0.1 wcwidth: 1.0.1 - /os-tmpdir/1.0.2: + /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} dev: true - /outdent/0.5.0: + /outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} dev: true - /p-filter/2.1.0: + /p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} dependencies: p-map: 2.1.0 - /p-is-promise/3.0.0: + /p-is-promise@3.0.0: resolution: {integrity: sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==} engines: {node: '>=8'} dev: false - /p-limit/2.3.0: + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} dependencies: p-try: 2.2.0 - /p-limit/3.1.0: + /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - /p-limit/4.0.0: + /p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: yocto-queue: 1.0.0 dev: true - /p-locate/4.1.0: + /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} dependencies: p-limit: 2.3.0 - /p-locate/5.0.0: + /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - /p-map/2.1.0: + /p-map@2.1.0: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} - /p-map/4.0.0: + /p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} dependencies: aggregate-error: 3.1.0 - /p-retry/4.6.2: + /p-retry@4.6.2: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} dependencies: '@types/retry': 0.12.0 retry: 0.13.1 - /p-try/2.2.0: + /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - /param-case/3.0.4: + /param-case@3.0.4: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 tslib: 2.4.1 dev: false - /parent-module/1.0.1: + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} dependencies: callsites: 3.1.0 dev: true - /parse-headers/2.0.5: + /parse-headers@2.0.5: resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==} dev: false - /parse-json/5.2.0: + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: @@ -7413,107 +7687,107 @@ packages: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - /parse-semver/1.1.1: + /parse-semver@1.1.1: resolution: {integrity: sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==} dependencies: semver: 5.7.1 dev: true - /parse5-htmlparser2-tree-adapter/7.0.0: + /parse5-htmlparser2-tree-adapter@7.0.0: resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} dependencies: domhandler: 5.0.3 parse5: 7.1.2 dev: true - /parse5/7.1.2: + /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.4.0 dev: true - /parseurl/1.3.3: + /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} dev: true - /pascal-case/3.1.2: + /pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 tslib: 2.4.1 dev: false - /path-browserify/1.0.1: + /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} dev: false - /path-case/3.0.4: + /path-case@3.0.4: resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} dependencies: dot-case: 3.0.4 tslib: 2.4.1 dev: false - /path-exists/4.0.0: + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - /path-is-absolute/1.0.1: + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - /path-key/3.1.1: + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - /path-parse/1.0.7: + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /path-to-regexp/0.1.7: + /path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} dev: true - /path-type/4.0.0: + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - /pathe/1.1.0: + /pathe@1.1.0: resolution: {integrity: sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==} dev: true - /pathval/1.1.1: + /pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true - /pend/1.2.0: + /pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} dev: true - /picocolors/1.0.0: + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - /picomatch/2.3.1: + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - /pify/4.0.1: + /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} dev: true - /pino-abstract-transport/1.0.0: + /pino-abstract-transport@1.0.0: resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} dependencies: readable-stream: 4.3.0 split2: 4.1.0 dev: true - /pino-std-serializers/6.1.0: + /pino-std-serializers@6.1.0: resolution: {integrity: sha512-KO0m2f1HkrPe9S0ldjx7za9BJjeHqBku5Ch8JyxETxT8dEFGz1PwgrHaOQupVYitpzbFSYm7nnljxD8dik2c+g==} dev: true - /pino/8.11.0: + /pino@8.11.0: resolution: {integrity: sha512-Z2eKSvlrl2rH8p5eveNUnTdd4AjJk8tAsLkHYZQKGHP4WTh2Gi1cOSOs3eWPqaj+niS3gj4UkoreoaWgF3ZWYg==} hasBin: true dependencies: @@ -7530,18 +7804,18 @@ packages: thread-stream: 2.3.0 dev: true - /pirates/4.0.5: + /pirates@4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} engines: {node: '>= 6'} dev: true - /pkg-dir/4.2.0: + /pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} dependencies: find-up: 4.1.0 - /pkg-types/1.0.2: + /pkg-types@1.0.2: resolution: {integrity: sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==} dependencies: jsonc-parser: 3.2.0 @@ -7549,18 +7823,18 @@ packages: pathe: 1.1.0 dev: true - /plimit-lit/1.4.1: + /plimit-lit@1.4.1: resolution: {integrity: sha512-bK14ePAod0XWhXwjT6XvYfjcQ9PbCUkZXnDCAKRMZTJCaDIV9VFya1S/I+3WSbpdR8uBhCDh8TS4lQ/JQvhNFA==} dependencies: queue-lit: 1.4.0 dev: true - /pluralize/8.0.0: + /pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} dev: false - /postcss/8.4.14: + /postcss@8.4.14: resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} engines: {node: ^10 || ^12 || >=14} dependencies: @@ -7568,7 +7842,7 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /postcss/8.4.21: + /postcss@8.4.21: resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} dependencies: @@ -7577,7 +7851,7 @@ packages: source-map-js: 1.0.2 dev: true - /prebuild-install/7.1.1: + /prebuild-install@7.1.1: resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} engines: {node: '>=10'} hasBin: true @@ -7597,7 +7871,7 @@ packages: dev: true optional: true - /preferred-pm/3.0.3: + /preferred-pm@3.0.3: resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} engines: {node: '>=10'} dependencies: @@ -7607,17 +7881,17 @@ packages: which-pm: 2.0.0 dev: true - /prelude-ls/1.2.1: + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} dev: true - /prettier/2.8.3: + /prettier@2.8.3: resolution: {integrity: sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==} engines: {node: '>=10.13.0'} hasBin: true - /pretty-format/27.5.1: + /pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -7626,7 +7900,7 @@ packages: react-is: 17.0.2 dev: true - /pretty-format/29.5.0: + /pretty-format@29.5.0: resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -7635,13 +7909,13 @@ packages: react-is: 18.2.0 dev: true - /printj/1.3.1: + /printj@1.3.1: resolution: {integrity: sha512-GA3TdL8szPK4AQ2YnOe/b+Y1jUFwmmGMMK/qbY7VcE3Z7FU8JstbKiKRzO6CIiAKPhTO8m01NoQ0V5f3jc4OGg==} engines: {node: '>=0.8'} hasBin: true dev: true - /prisma/4.7.0: + /prisma@4.7.0: resolution: {integrity: sha512-VsecNo0Ca3+bDTzSpJqIpdupKVhhQ8aOYeWc09JlUM89knqvhSrlMrg0U8BiOD4tFrY1OPaCcraK8leDBxKMBg==} engines: {node: '>=14.17'} hasBin: true @@ -7649,51 +7923,51 @@ packages: dependencies: '@prisma/engines': 4.7.0 - /process-nextick-args/2.0.1: + /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - /process-warning/2.1.0: + /process-warning@2.1.0: resolution: {integrity: sha512-9C20RLxrZU/rFnxWncDkuF6O999NdIf3E1ws4B0ZeY3sRVPzWBMsYDE2lxjxhiXxg464cQTgKUGm8/i6y2YGXg==} dev: true - /process/0.11.10: + /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} dev: true - /progress-stream/2.0.0: + /progress-stream@2.0.0: resolution: {integrity: sha512-xJwOWR46jcXUq6EH9yYyqp+I52skPySOeHfkxOZ2IY1AiBi/sFJhbhAKHoV3OTw/omQ45KTio9215dRJ2Yxd3Q==} dependencies: speedometer: 1.0.0 through2: 2.0.5 dev: false - /progress/2.0.3: + /progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} - /promise-polyfill/8.2.3: + /promise-polyfill@8.2.3: resolution: {integrity: sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg==} dev: true - /promisify/0.0.3: + /promisify@0.0.3: resolution: {integrity: sha512-CcBGsRhhq466fsZVyHfptuKqon6eih0CqMsJE0kWIIjbpVNEyDoaKLELm2WVs//W/WXRBHip+6xhTExTkHUwtA==} dependencies: when: 3.7.8 dev: false - /prompts/2.4.2: + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - /proto-list/1.2.4: + /proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} dev: false - /proxy-addr/2.0.7: + /proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} dependencies: @@ -7701,11 +7975,11 @@ packages: ipaddr.js: 1.9.1 dev: true - /pseudomap/1.0.2: + /pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true - /pump/3.0.0: + /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} dependencies: end-of-stream: 1.4.4 @@ -7713,44 +7987,44 @@ packages: dev: true optional: true - /punycode/2.1.1: + /punycode@2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} dev: true - /pure-rand/6.0.1: + /pure-rand@6.0.1: resolution: {integrity: sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==} dev: true - /qs/6.11.0: + /qs@6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} dependencies: side-channel: 1.0.4 dev: true - /queue-lit/1.4.0: + /queue-lit@1.4.0: resolution: {integrity: sha512-l1+4YHm4vHWpCnvTg8JMsnPETmPvLGWhqjvNOc8TSbqscGplHVSWXOxybA3vYeMNNIR9Z1PQt85U+S3wFJX2uQ==} dev: true - /queue-microtask/1.2.3: + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - /quick-format-unescaped/4.0.4: + /quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} dev: true - /quick-lru/4.0.1: + /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} dev: true - /range-parser/1.2.1: + /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} dev: true - /raw-body/2.5.1: + /raw-body@2.5.1: resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} engines: {node: '>= 0.8'} dependencies: @@ -7760,7 +8034,7 @@ packages: unpipe: 1.0.0 dev: true - /raw-body/2.5.2: + /raw-body@2.5.2: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} dependencies: @@ -7770,7 +8044,7 @@ packages: unpipe: 1.0.0 dev: true - /rc/1.2.8: + /rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true dependencies: @@ -7779,7 +8053,7 @@ packages: minimist: 1.2.8 strip-json-comments: 2.0.1 - /react-dom/18.2.0_react@18.2.0: + /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: react: ^18.2.0 @@ -7788,21 +8062,21 @@ packages: react: 18.2.0 scheduler: 0.23.0 - /react-is/17.0.2: + /react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: true - /react-is/18.2.0: + /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /react/18.2.0: + /react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 - /read-pkg-up/7.0.1: + /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} dependencies: @@ -7810,7 +8084,7 @@ packages: read-pkg: 5.2.0 type-fest: 0.8.1 - /read-pkg/5.2.0: + /read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} dependencies: @@ -7819,7 +8093,7 @@ packages: parse-json: 5.2.0 type-fest: 0.6.0 - /read-yaml-file/1.1.0: + /read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} dependencies: @@ -7829,14 +8103,14 @@ packages: strip-bom: 3.0.0 dev: true - /read/1.0.7: + /read@1.0.7: resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==} engines: {node: '>=0.8'} dependencies: mute-stream: 0.0.8 dev: true - /readable-stream/1.0.34: + /readable-stream@1.0.34: resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} dependencies: core-util-is: 1.0.3 @@ -7845,7 +8119,7 @@ packages: string_decoder: 0.10.31 dev: true - /readable-stream/2.3.7: + /readable-stream@2.3.7: resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} dependencies: core-util-is: 1.0.3 @@ -7856,7 +8130,7 @@ packages: string_decoder: 1.1.1 util-deprecate: 1.0.2 - /readable-stream/3.6.0: + /readable-stream@3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} engines: {node: '>= 6'} dependencies: @@ -7864,7 +8138,7 @@ packages: string_decoder: 1.3.0 util-deprecate: 1.0.2 - /readable-stream/4.3.0: + /readable-stream@4.3.0: resolution: {integrity: sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -7874,24 +8148,24 @@ packages: process: 0.11.10 dev: true - /readdir-glob/1.1.2: + /readdir-glob@1.1.2: resolution: {integrity: sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA==} dependencies: minimatch: 5.1.0 - /readdirp/3.6.0: + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 dev: true - /real-require/0.2.0: + /real-require@0.2.0: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} dev: true - /redent/3.0.0: + /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} dependencies: @@ -7899,19 +8173,19 @@ packages: strip-indent: 3.0.0 dev: true - /reduce-flatten/2.0.0: + /reduce-flatten@2.0.0: resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} engines: {node: '>=6'} dev: true - /regenerator-runtime/0.13.11: + /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: true - /regexp-to-ast/0.5.0: + /regexp-to-ast@0.5.0: resolution: {integrity: sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==} - /regexp.prototype.flags/1.4.3: + /regexp.prototype.flags@1.4.3: resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} engines: {node: '>= 0.4'} dependencies: @@ -7920,26 +8194,26 @@ packages: functions-have-names: 1.2.3 dev: true - /regexpp/3.2.0: + /regexpp@3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} dev: true - /registry-auth-token/5.0.2: + /registry-auth-token@5.0.2: resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} engines: {node: '>=14'} dependencies: '@pnpm/npm-conf': 2.1.0 dev: false - /registry-url/5.1.0: + /registry-url@5.1.0: resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} engines: {node: '>=8'} dependencies: rc: 1.2.8 dev: false - /renamer/4.0.0: + /renamer@4.0.0: resolution: {integrity: sha512-yurufcXxbJfFBVAUoByNyDVH811zTZ/MrKo6gUH8pHGeAmdK7J5egj2lSNe57HuVIvnVzSalzeVGu8pi8UHGxg==} engines: {node: '>=12.17'} hasBin: true @@ -7958,47 +8232,47 @@ packages: typical: 7.1.1 dev: true - /replace-string/3.1.0: + /replace-string@3.1.0: resolution: {integrity: sha512-yPpxc4ZR2makceA9hy/jHNqc7QVkd4Je/N0WRHm6bs3PtivPuPynxE5ejU/mp5EhnCv8+uZL7vhz8rkluSlx+Q==} engines: {node: '>=8'} - /require-directory/2.1.1: + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} dev: true - /require-from-string/2.0.2: + /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} dev: true - /require-main-filename/2.0.0: + /require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} dev: true - /resolve-cwd/3.0.0: + /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 dev: true - /resolve-from/4.0.0: + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} dev: true - /resolve-from/5.0.0: + /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} dev: true - /resolve.exports/2.0.0: + /resolve.exports@2.0.0: resolution: {integrity: sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==} engines: {node: '>=10'} dev: true - /resolve/1.22.1: + /resolve@1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: @@ -8006,37 +8280,37 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /restore-cursor/3.1.0: + /restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - /ret/0.2.2: + /ret@0.2.2: resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} engines: {node: '>=4'} dev: true - /retry/0.13.1: + /retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} - /reusify/1.0.4: + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - /rfdc/1.3.0: + /rfdc@1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} dev: true - /rimraf/3.0.2: + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.3 - /rollup/3.20.2: + /rollup@3.20.2: resolution: {integrity: sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true @@ -8044,24 +8318,24 @@ packages: fsevents: 2.3.2 dev: true - /run-parallel/1.2.0: + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - /rxjs/7.5.7: + /rxjs@7.5.7: resolution: {integrity: sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==} dependencies: tslib: 2.4.1 dev: true - /safe-buffer/5.1.2: + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - /safe-buffer/5.2.1: + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - /safe-regex-test/1.0.0: + /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 @@ -8069,50 +8343,50 @@ packages: is-regex: 1.1.4 dev: true - /safe-regex2/2.0.0: + /safe-regex2@2.0.0: resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} dependencies: ret: 0.2.2 dev: true - /safe-stable-stringify/2.4.2: + /safe-stable-stringify@2.4.2: resolution: {integrity: sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==} engines: {node: '>=10'} dev: true - /safer-buffer/2.1.2: + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sax/1.2.4: + /sax@1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} dev: true - /scheduler/0.23.0: + /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 - /secure-json-parse/2.7.0: + /secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} dev: true - /semver/5.7.1: + /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true - /semver/6.3.0: + /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true - /semver/7.3.8: + /semver@7.3.8: resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 - /send/0.18.0: + /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} dependencies: @@ -8133,7 +8407,7 @@ packages: - supports-color dev: true - /sentence-case/3.0.4: + /sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} dependencies: no-case: 3.0.4 @@ -8141,7 +8415,7 @@ packages: upper-case-first: 2.0.2 dev: false - /serve-static/1.15.0: + /serve-static@1.15.0: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} dependencies: @@ -8153,45 +8427,45 @@ packages: - supports-color dev: true - /set-blocking/2.0.0: + /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: true - /set-cookie-parser/2.5.1: + /set-cookie-parser@2.5.1: resolution: {integrity: sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==} dev: true - /setprototypeof/1.2.0: + /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: true - /shebang-command/1.2.0: + /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 dev: true - /shebang-command/2.0.0: + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - /shebang-regex/1.0.0: + /shebang-regex@1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} engines: {node: '>=0.10.0'} dev: true - /shebang-regex/3.0.0: + /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /shell-quote/1.7.4: + /shell-quote@1.7.4: resolution: {integrity: sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==} dev: true - /side-channel/1.0.4: + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 @@ -8199,19 +8473,19 @@ packages: object-inspect: 1.12.3 dev: true - /siginfo/2.0.0: + /siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} dev: true - /signal-exit/3.0.7: + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - /simple-concat/1.0.1: + /simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} dev: true optional: true - /simple-get/4.0.1: + /simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} dependencies: decompress-response: 6.0.0 @@ -8220,18 +8494,18 @@ packages: dev: true optional: true - /sisteransi/1.0.5: + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - /slash/3.0.0: + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - /sleep-promise/9.1.0: + /sleep-promise@9.1.0: resolution: {integrity: sha512-UHYzVpz9Xn8b+jikYSD6bqvf754xL2uBUzDFwiU6NcdZeifPr6UfgU43xpkPu67VMS88+TI2PSI7Eohgqf2fKA==} dev: false - /slice-ansi/3.0.0: + /slice-ansi@3.0.0: resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} engines: {node: '>=8'} dependencies: @@ -8239,7 +8513,7 @@ packages: astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - /slice-ansi/5.0.0: + /slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} dependencies: @@ -8247,7 +8521,7 @@ packages: is-fullwidth-code-point: 4.0.0 dev: true - /smartwrap/2.0.2: + /smartwrap@2.0.2: resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} engines: {node: '>=6'} hasBin: true @@ -8260,113 +8534,113 @@ packages: yargs: 15.4.1 dev: true - /snake-case/3.0.4: + /snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} dependencies: dot-case: 3.0.4 tslib: 2.4.1 dev: false - /sonic-boom/3.2.1: + /sonic-boom@3.2.1: resolution: {integrity: sha512-iITeTHxy3B9FGu8aVdiDXUVAcHMF9Ss0cCsAOo2HfCrmVGT3/DT5oYaeu0M/YKZDlKTvChEyPq0zI9Hf33EX6A==} dependencies: atomic-sleep: 1.0.0 dev: true - /source-map-js/1.0.2: + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - /source-map-support/0.5.13: + /source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: true - /source-map/0.6.1: + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} dev: true - /spawn-command/0.0.2-1: + /spawn-command@0.0.2-1: resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==} dev: true - /spawndamnit/2.0.0: + /spawndamnit@2.0.0: resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} dependencies: cross-spawn: 5.1.0 signal-exit: 3.0.7 dev: true - /spdx-correct/3.1.1: + /spdx-correct@3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.12 - /spdx-exceptions/2.3.0: + /spdx-exceptions@2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - /spdx-expression-parse/3.0.1: + /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.12 - /spdx-license-ids/3.0.12: + /spdx-license-ids@3.0.12: resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} - /speedometer/1.0.0: + /speedometer@1.0.0: resolution: {integrity: sha512-lgxErLl/7A5+vgIIXsh9MbeukOaCb2axgQ+bKCdIE+ibNT4XNYGNCR1qFEGq6F+YDASXK3Fh/c5FgtZchFolxw==} dev: false - /split2/4.1.0: + /split2@4.1.0: resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==} engines: {node: '>= 10.x'} dev: true - /sprintf-js/1.0.3: + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true - /stack-utils/2.0.5: + /stack-utils@2.0.5: resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 dev: true - /stackback/0.0.2: + /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true - /statuses/2.0.1: + /statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} dev: true - /std-env/3.3.2: + /std-env@3.3.2: resolution: {integrity: sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==} dev: true - /stream-read-all/3.0.1: + /stream-read-all@3.0.1: resolution: {integrity: sha512-EWZT9XOceBPlVJRrYcykW8jyRSZYbkb/0ZK36uLEmoWVO5gxBOnntNTseNzfREsqxqdfEGQrD8SXQ3QWbBmq8A==} engines: {node: '>=10'} dev: true - /stream-transform/2.1.3: + /stream-transform@2.1.3: resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} dependencies: mixme: 0.5.4 dev: true - /streamsearch/1.1.0: + /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} - /string-length/4.0.2: + /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} dependencies: @@ -8374,7 +8648,7 @@ packages: strip-ansi: 6.0.1 dev: true - /string-width/4.2.3: + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} dependencies: @@ -8382,7 +8656,7 @@ packages: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - /string-width/5.1.2: + /string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} dependencies: @@ -8391,7 +8665,7 @@ packages: strip-ansi: 7.0.1 dev: true - /string.prototype.trimend/1.0.6: + /string.prototype.trimend@1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 @@ -8399,7 +8673,7 @@ packages: es-abstract: 1.21.1 dev: true - /string.prototype.trimstart/1.0.6: + /string.prototype.trimstart@1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 @@ -8407,69 +8681,69 @@ packages: es-abstract: 1.21.1 dev: true - /string_decoder/0.10.31: + /string_decoder@0.10.31: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} dev: true - /string_decoder/1.1.1: + /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 - /string_decoder/1.3.0: + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 - /strip-ansi/6.0.1: + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - /strip-ansi/7.0.1: + /strip-ansi@7.0.1: resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 dev: true - /strip-bom/3.0.0: + /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} dev: true - /strip-bom/4.0.0: + /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} dev: true - /strip-final-newline/2.0.0: + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - /strip-indent/3.0.0: + /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} dependencies: min-indent: 1.0.1 - /strip-json-comments/2.0.1: + /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} - /strip-json-comments/3.1.1: + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} dev: true - /strip-literal/1.0.1: + /strip-literal@1.0.1: resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} dependencies: acorn: 8.8.2 dev: true - /styled-jsx/5.0.7_zavbqmrropwrojvx6ojaa4s7im: + /styled-jsx@5.0.7(@babel/core@7.20.5)(react@18.2.0): resolution: {integrity: sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -8485,7 +8759,7 @@ packages: '@babel/core': 7.20.5 react: 18.2.0 - /superagent/8.0.9: + /superagent@8.0.9: resolution: {integrity: sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA==} engines: {node: '>=6.4.0 <13 || >=14'} dependencies: @@ -8503,20 +8777,20 @@ packages: - supports-color dev: true - /superjson/1.11.0: + /superjson@1.11.0: resolution: {integrity: sha512-6PfAg1FKhqkwWvPb2uXhH4MkMttdc17eJ91+Aoz4s1XUEDZFmLfFx/xVA3wgkPxAGy5dpozgGdK6V/n20Wj9yg==} engines: {node: '>=10'} dependencies: copy-anything: 3.0.3 - /superjson/1.12.1: + /superjson@1.12.1: resolution: {integrity: sha512-HMTj43zvwW5bD+JCZCvFf4DkZQCmiLTen4C+W1Xogj0SPOpnhxsriogM04QmBVGH5b3kcIIOr6FqQ/aoIDx7TQ==} engines: {node: '>=10'} dependencies: copy-anything: 3.0.3 dev: false - /supertest/6.3.3: + /supertest@6.3.3: resolution: {integrity: sha512-EMCG6G8gDu5qEqRQ3JjjPs6+FYT1a7Hv5ApHvtSghmOFJYtsU5S+pSb6Y2EUeCEY3CmEL3mmQ8YWlPOzQomabA==} engines: {node: '>=6.4.0'} dependencies: @@ -8526,47 +8800,47 @@ packages: - supports-color dev: true - /supports-color/5.5.0: + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - /supports-color/7.2.0: + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - /supports-color/8.1.1: + /supports-color@8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} dependencies: has-flag: 4.0.0 dev: true - /supports-hyperlinks/2.3.0: + /supports-hyperlinks@2.3.0: resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 supports-color: 7.2.0 - /supports-preserve-symlinks-flag/1.0.0: + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /swr/2.0.3_react@18.2.0: + /swr@2.0.3(react@18.2.0): resolution: {integrity: sha512-sGvQDok/AHEWTPfhUWXEHBVEXmgGnuahyhmRQbjl9XBYxT/MSlAzvXEKQpyM++bMPaI52vcWS2HiKNaW7+9OFw==} engines: {pnpm: '7'} peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 dependencies: react: 18.2.0 - use-sync-external-store: 1.2.0_react@18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) dev: true - /table-layout/1.0.2: + /table-layout@1.0.2: resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} engines: {node: '>=8.0.0'} dependencies: @@ -8576,7 +8850,7 @@ packages: wordwrapjs: 4.0.1 dev: true - /tar-fs/2.1.1: + /tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} dependencies: chownr: 1.1.4 @@ -8586,7 +8860,7 @@ packages: dev: true optional: true - /tar-stream/2.2.0: + /tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} dependencies: @@ -8596,15 +8870,15 @@ packages: inherits: 2.0.4 readable-stream: 3.6.0 - /temp-dir/1.0.0: + /temp-dir@1.0.0: resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} engines: {node: '>=4'} - /temp-dir/2.0.0: + /temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} - /temp-write/4.0.0: + /temp-write@4.0.0: resolution: {integrity: sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw==} engines: {node: '>=8'} dependencies: @@ -8614,7 +8888,7 @@ packages: temp-dir: 1.0.0 uuid: 3.4.0 - /tempy/1.0.1: + /tempy@1.0.1: resolution: {integrity: sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==} engines: {node: '>=10'} dependencies: @@ -8624,19 +8898,19 @@ packages: type-fest: 0.16.0 unique-string: 2.0.0 - /term-size/2.2.1: + /term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} dev: true - /terminal-link/2.1.1: + /terminal-link@2.1.1: resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} engines: {node: '>=8'} dependencies: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - /test-exclude/6.0.0: + /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} dependencies: @@ -8645,91 +8919,96 @@ packages: minimatch: 3.1.2 dev: true - /text-table/0.2.0: + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /thread-stream/2.3.0: + /thread-stream@2.3.0: resolution: {integrity: sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==} dependencies: real-require: 0.2.0 dev: true - /through2/2.0.5: + /through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} dependencies: readable-stream: 2.3.7 xtend: 4.0.2 - /tiny-invariant/1.3.1: + /tiny-invariant@1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} dev: false - /tiny-lru/10.0.1: + /tiny-lru@10.0.1: resolution: {integrity: sha512-Vst+6kEsWvb17Zpz14sRJV/f8bUWKhqm6Dc+v08iShmIJ/WxqWytHzCTd6m88pS33rE2zpX34TRmOpAJPloNCA==} engines: {node: '>=6'} dev: true - /tinybench/2.4.0: + /tinybench@2.4.0: resolution: {integrity: sha512-iyziEiyFxX4kyxSp+MtY1oCH/lvjH3PxFN8PGCDeqcZWAJ/i+9y+nL85w99PxVzrIvew/GSkSbDYtiGVa85Afg==} dev: true - /tinypool/0.4.0: + /tinypool@0.4.0: resolution: {integrity: sha512-2ksntHOKf893wSAH4z/+JbPpi92esw8Gn9N2deXX+B0EO92hexAVI9GIZZPx7P5aYo5KULfeOSt3kMOmSOy6uA==} engines: {node: '>=14.0.0'} dev: true - /tinyspy/1.1.1: + /tinyspy@1.1.1: resolution: {integrity: sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==} engines: {node: '>=14.0.0'} dev: true - /tmp/0.0.33: + /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 dev: true - /tmp/0.2.1: + /tmp@0.2.1: resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} engines: {node: '>=8.17.0'} dependencies: rimraf: 3.0.2 - /tmpl/1.0.5: + /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true - /to-fast-properties/2.0.0: + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - /to-regex-range/5.0.1: + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - /toidentifier/1.0.1: + /toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} dev: true - /tr46/0.0.3: + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - /tree-kill/1.2.2: + /tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true dev: true - /trim-newlines/3.0.1: + /trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} dev: true - /ts-jest/29.0.1_rlomzopfumxmkrybxmhq4yglo4: + /ts-japi@1.8.0: + resolution: {integrity: sha512-77cNpz1CMJsImcikE7gnihMKOME4c/prCaruBmr7yMRHGnmEt1llFyJbuokXCaEmm0hERPv2VlzTyZ+pb43leg==} + engines: {node: '>=10'} + dev: false + + /ts-jest@29.0.1(@babel/core@7.20.5)(jest@29.5.0)(typescript@4.8.3): resolution: {integrity: sha512-htQOHshgvhn93QLxrmxpiQPk69+M1g7govO1g6kf6GsjCv4uvRV0znVmDrrvjUrVCnTYeY4FBxTYYYD4airyJA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -8753,7 +9032,7 @@ packages: '@babel/core': 7.20.5 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0_johvxhudwcpndp4mle25vwrlq4 + jest: 29.5.0(@types/node@14.18.29)(ts-node@10.9.1) jest-util: 29.0.3 json5: 2.2.1 lodash.memoize: 4.1.2 @@ -8763,7 +9042,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-jest/29.0.3_i42we4lxl4f3wyuuvscuqjoe7i: + /ts-jest@29.0.3(@babel/core@7.20.5)(esbuild@0.15.12)(jest@29.5.0)(typescript@4.8.4): resolution: {integrity: sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -8788,7 +9067,7 @@ packages: bs-logger: 0.2.6 esbuild: 0.15.12 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0_4f2ldd7um3b3u4eyvetyqsphze + jest: 29.5.0(@types/node@14.18.32)(ts-node@10.9.1) jest-util: 29.2.1 json5: 2.2.1 lodash.memoize: 4.1.2 @@ -8798,41 +9077,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-jest/29.0.5_alvbhmn3fmdinfvcr37idtrz64: - resolution: {integrity: sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/types': ^29.0.0 - babel-jest: ^29.0.0 - esbuild: '*' - jest: ^29.0.0 - typescript: '>=4.3' - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true - dependencies: - '@babel/core': 7.20.5 - bs-logger: 0.2.6 - fast-json-stable-stringify: 2.1.0 - jest: 29.5.0 - jest-util: 29.4.3 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.3.8 - typescript: 4.9.5 - yargs-parser: 21.1.1 - dev: true - - /ts-jest/29.0.5_xv37nfqpz6757dg24cw6wqnoey: + /ts-jest@29.0.5(@babel/core@7.20.5)(jest@29.5.0)(typescript@4.9.4): resolution: {integrity: sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -8866,14 +9111,48 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-morph/16.0.0: + /ts-jest@29.0.5(@babel/core@7.20.5)(jest@29.5.0)(typescript@4.9.5): + resolution: {integrity: sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.20.5 + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 29.5.0 + jest-util: 29.4.3 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.3.8 + typescript: 4.9.5 + yargs-parser: 21.1.1 + dev: true + + /ts-morph@16.0.0: resolution: {integrity: sha512-jGNF0GVpFj0orFw55LTsQxVYEUOCWBAbR5Ls7fTYE5pQsbW18ssTb/6UXx/GYAEjS+DQTp8VoTw0vqYMiaaQuw==} dependencies: '@ts-morph/common': 0.17.0 code-block-writer: 11.0.3 dev: false - /ts-node/10.9.1_ck2axrxkiif44rdbzjywaqjysa: + /ts-node@10.9.1(@types/node@14.18.29)(typescript@4.8.3): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -8904,7 +9183,7 @@ packages: yn: 3.1.1 dev: true - /ts-node/10.9.1_jcmx33t3olsvcxopqdljsohpme: + /ts-node@10.9.1(@types/node@14.18.32)(typescript@4.8.4): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -8935,10 +9214,10 @@ packages: yn: 3.1.1 dev: true - /ts-pattern/4.0.6: + /ts-pattern@4.0.6: resolution: {integrity: sha512-sFHQYD4KoysBi7e7a2mzDPvRBeqA4w+vEyRE+P5MU9VLq8eEYxgKCgD9RNEAT+itGRWUTYN+hry94GDPLb1/Yw==} - /tsc-alias/1.7.0: + /tsc-alias@1.7.0: resolution: {integrity: sha512-n/K6g8S7Ec7Y/A2Z77Ikp2Uv1S1ERtT63ni69XV4W1YPT4rnNmz8ItgIiJYvKfFnKfqcZQ81UPjoKpMTxaC/rg==} hasBin: true dependencies: @@ -8950,14 +9229,14 @@ packages: plimit-lit: 1.4.1 dev: true - /tslib/1.14.1: + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib/2.4.1: + /tslib@2.4.1: resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} - /tsutils/3.21.0_typescript@4.8.3: + /tsutils@3.21.0(typescript@4.8.3): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: @@ -8967,7 +9246,7 @@ packages: typescript: 4.8.3 dev: true - /tsutils/3.21.0_typescript@4.8.4: + /tsutils@3.21.0(typescript@4.8.4): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: @@ -8977,7 +9256,7 @@ packages: typescript: 4.8.4 dev: true - /tsutils/3.21.0_typescript@4.9.5: + /tsutils@3.21.0(typescript@4.9.5): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: @@ -8987,7 +9266,7 @@ packages: typescript: 4.9.5 dev: true - /tty-table/4.1.6: + /tty-table@4.1.6: resolution: {integrity: sha512-kRj5CBzOrakV4VRRY5kUWbNYvo/FpOsz65DzI5op9P+cHov3+IqPbo1JE1ZnQGkHdZgNFDsrEjrfqqy/Ply9fw==} engines: {node: '>=8.0.0'} hasBin: true @@ -9001,54 +9280,54 @@ packages: yargs: 17.6.2 dev: true - /tunnel-agent/0.6.0: + /tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: safe-buffer: 5.2.1 - /tunnel/0.0.6: + /tunnel@0.0.6: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} dev: true - /type-check/0.4.0: + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 dev: true - /type-detect/4.0.8: + /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - /type-fest/0.13.1: + /type-fest@0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} dev: true - /type-fest/0.16.0: + /type-fest@0.16.0: resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} engines: {node: '>=10'} - /type-fest/0.20.2: + /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} dev: true - /type-fest/0.21.3: + /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - /type-fest/0.6.0: + /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} - /type-fest/0.8.1: + /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} - /type-is/1.6.18: + /type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} dependencies: @@ -9056,7 +9335,7 @@ packages: mime-types: 2.1.35 dev: true - /typed-array-length/1.0.4: + /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: call-bind: 1.0.2 @@ -9064,7 +9343,7 @@ packages: is-typed-array: 1.1.10 dev: true - /typed-rest-client/1.8.9: + /typed-rest-client@1.8.9: resolution: {integrity: sha512-uSmjE38B80wjL85UFX3sTYEUlvZ1JgCRhsWj/fJ4rZ0FqDUFoIuodtiVeE+cUqiVTOKPdKrp/sdftD15MDek6g==} dependencies: qs: 6.11.0 @@ -9072,60 +9351,60 @@ packages: underscore: 1.13.6 dev: true - /typescript/4.8.3: + /typescript@4.8.3: resolution: {integrity: sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==} engines: {node: '>=4.2.0'} hasBin: true dev: true - /typescript/4.8.4: + /typescript@4.8.4: resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} engines: {node: '>=4.2.0'} hasBin: true dev: true - /typescript/4.9.3: + /typescript@4.9.3: resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} engines: {node: '>=4.2.0'} hasBin: true dev: true - /typescript/4.9.4: + /typescript@4.9.4: resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} engines: {node: '>=4.2.0'} hasBin: true dev: true - /typescript/4.9.5: + /typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true dev: true - /typical/4.0.0: + /typical@4.0.0: resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} engines: {node: '>=8'} dev: true - /typical/5.2.0: + /typical@5.2.0: resolution: {integrity: sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==} engines: {node: '>=8'} dev: true - /typical/7.1.1: + /typical@7.1.1: resolution: {integrity: sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==} engines: {node: '>=12.17'} dev: true - /uc.micro/1.0.6: + /uc.micro@1.0.6: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} dev: true - /ufo/1.1.1: + /ufo@1.1.1: resolution: {integrity: sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==} dev: true - /unbox-primitive/1.0.2: + /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.2 @@ -9134,42 +9413,42 @@ packages: which-boxed-primitive: 1.0.2 dev: true - /underscore/1.13.6: + /underscore@1.13.6: resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} dev: true - /undici/5.11.0: + /undici@5.11.0: resolution: {integrity: sha512-oWjWJHzFet0Ow4YZBkyiJwiK5vWqEYoH7BINzJAJOLedZ++JpAlCbUktW2GQ2DS2FpKmxD/JMtWUUWl1BtghGw==} engines: {node: '>=12.18'} dependencies: busboy: 1.6.0 - /unique-string/2.0.0: + /unique-string@2.0.0: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} dependencies: crypto-random-string: 2.0.0 - /universalify/0.1.2: + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} dev: true - /universalify/2.0.0: + /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} - /unpipe/1.0.0: + /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} dev: true - /untildify/4.0.0: + /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} dev: true - /update-browserslist-db/1.0.10_browserslist@4.21.4: + /update-browserslist-db@1.0.10(browserslist@4.21.4): resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true peerDependencies: @@ -9179,60 +9458,65 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 - /upper-case-first/2.0.2: + /upper-case-first@2.0.2: resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} dependencies: tslib: 2.4.1 - /upper-case/2.0.2: + /upper-case@2.0.2: resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} dependencies: tslib: 2.4.1 dev: false - /uri-js/4.4.1: + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 dev: true - /url-join/4.0.1: + /url-join@4.0.1: resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} dev: true - /use-sync-external-store/1.2.0_react@18.2.0: + /url-pattern@1.0.3: + resolution: {integrity: sha512-uQcEj/2puA4aq1R3A2+VNVBgaWYR24FdWjl7VNW83rnWftlhyzOZ/tBjezRiC2UkIzuxC8Top3IekN3vUf1WxA==} + engines: {node: '>=0.12.0'} + dev: false + + /use-sync-external-store@1.2.0(react@18.2.0): resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: react: 18.2.0 - /util-deprecate/1.0.2: + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - /utils-merge/1.0.1: + /utils-merge@1.0.1: resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} engines: {node: '>= 0.4.0'} dev: true - /uuid/3.4.0: + /uuid@3.4.0: resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. hasBin: true - /uuid/8.3.2: + /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true - /uuid/9.0.0: + /uuid@9.0.0: resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true - /v8-compile-cache-lib/3.0.1: + /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true - /v8-to-istanbul/9.0.1: + /v8-to-istanbul@9.0.1: resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} engines: {node: '>=10.12.0'} dependencies: @@ -9241,18 +9525,18 @@ packages: convert-source-map: 1.9.0 dev: true - /validate-npm-package-license/3.0.4: + /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.1.1 spdx-expression-parse: 3.0.1 - /vary/1.1.2: + /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} dev: true - /vite-node/0.29.7_@types+node@18.14.2: + /vite-node@0.29.7(@types/node@18.14.2): resolution: {integrity: sha512-PakCZLvz37yFfUPWBnLa1OYHPCGm5v4pmRrTcFN4V/N/T3I6tyP3z07S//9w+DdeL7vVd0VSeyMZuAh+449ZWw==} engines: {node: '>=v14.16.0'} hasBin: true @@ -9262,7 +9546,7 @@ packages: mlly: 1.2.0 pathe: 1.1.0 picocolors: 1.0.0 - vite: 4.2.1_@types+node@18.14.2 + vite: 4.2.1(@types/node@18.14.2) transitivePeerDependencies: - '@types/node' - less @@ -9273,7 +9557,7 @@ packages: - terser dev: true - /vite/4.2.1_@types+node@18.14.2: + /vite@4.2.1(@types/node@18.14.2): resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9307,7 +9591,7 @@ packages: fsevents: 2.3.2 dev: true - /vitest/0.29.7: + /vitest@0.29.7: resolution: {integrity: sha512-aWinOSOu4jwTuZHkb+cCyrqQ116Q9TXaJrNKTHudKBknIpR0VplzeaOUuDF9jeZcrbtQKZQt6yrtd+eakbaxHg==} engines: {node: '>=v14.16.0'} hasBin: true @@ -9356,8 +9640,8 @@ packages: tinybench: 2.4.0 tinypool: 0.4.0 tinyspy: 1.1.1 - vite: 4.2.1_@types+node@18.14.2 - vite-node: 0.29.7_@types+node@18.14.2 + vite: 4.2.1(@types/node@18.14.2) + vite-node: 0.29.7(@types/node@18.14.2) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -9368,11 +9652,11 @@ packages: - terser dev: true - /vscode-jsonrpc/8.0.2: + /vscode-jsonrpc@8.0.2: resolution: {integrity: sha512-RY7HwI/ydoC1Wwg4gJ3y6LpU9FJRZAUnTYMXthqhFXXu77ErDd/xkREpGuk4MyYkk4a+XDWAMqe0S3KkelYQEQ==} engines: {node: '>=14.0.0'} - /vscode-languageclient/8.0.2: + /vscode-languageclient@8.0.2: resolution: {integrity: sha512-lHlthJtphG9gibGb/y72CKqQUxwPsMXijJVpHEC2bvbFqxmkj9LwQ3aGU9dwjBLqsX1S4KjShYppLvg1UJDF/Q==} engines: {vscode: ^1.67.0} dependencies: @@ -9381,60 +9665,60 @@ packages: vscode-languageserver-protocol: 3.17.2 dev: false - /vscode-languageserver-protocol/3.17.2: + /vscode-languageserver-protocol@3.17.2: resolution: {integrity: sha512-8kYisQ3z/SQ2kyjlNeQxbkkTNmVFoQCqkmGrzLH6A9ecPlgTbp3wDTnUNqaUxYr4vlAcloxx8zwy7G5WdguYNg==} dependencies: vscode-jsonrpc: 8.0.2 vscode-languageserver-types: 3.17.2 - /vscode-languageserver-textdocument/1.0.7: + /vscode-languageserver-textdocument@1.0.7: resolution: {integrity: sha512-bFJH7UQxlXT8kKeyiyu41r22jCZXG8kuuVVA33OEJn1diWOZK5n8zBSPZFHVBOu8kXZ6h0LIRhf5UnCo61J4Hg==} dev: false - /vscode-languageserver-textdocument/1.0.8: + /vscode-languageserver-textdocument@1.0.8: resolution: {integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==} - /vscode-languageserver-types/3.17.2: + /vscode-languageserver-types@3.17.2: resolution: {integrity: sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==} - /vscode-languageserver/8.0.2: + /vscode-languageserver@8.0.2: resolution: {integrity: sha512-bpEt2ggPxKzsAOZlXmCJ50bV7VrxwCS5BI4+egUmure/oI/t4OlFzi/YNtVvY24A2UDOZAgwFGgnZPwqSJubkA==} hasBin: true dependencies: vscode-languageserver-protocol: 3.17.2 - /vscode-uri/3.0.6: + /vscode-uri@3.0.6: resolution: {integrity: sha512-fmL7V1eiDBFRRnu+gfRWTzyPpNIHJTc4mWnFkwBUmO9U3KPgJAmTx7oxi2bl/Rh6HLdU7+4C9wlj0k2E4AdKFQ==} dev: false - /vscode-uri/3.0.7: + /vscode-uri@3.0.7: resolution: {integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==} - /walker/1.0.8: + /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: makeerror: 1.0.12 dev: true - /wcwidth/1.0.1: + /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 - /webidl-conversions/3.0.1: + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - /whatwg-url/5.0.0: + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - /when/3.7.8: + /when@3.7.8: resolution: {integrity: sha512-5cZ7mecD3eYcMiCH4wtRPA5iFJZ50BJYDfckI5RRpQiktMiYTcn0ccLTZOvcbBume+1304fQztxeNzNS9Gvrnw==} dev: false - /which-boxed-primitive/1.0.2: + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 @@ -9444,11 +9728,11 @@ packages: is-symbol: 1.0.4 dev: true - /which-module/2.0.0: + /which-module@2.0.0: resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} dev: true - /which-pm/2.0.0: + /which-pm@2.0.0: resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} engines: {node: '>=8.15'} dependencies: @@ -9456,7 +9740,7 @@ packages: path-exists: 4.0.0 dev: true - /which-typed-array/1.1.9: + /which-typed-array@1.1.9: resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} engines: {node: '>= 0.4'} dependencies: @@ -9468,21 +9752,21 @@ packages: is-typed-array: 1.1.10 dev: true - /which/1.3.1: + /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true dependencies: isexe: 2.0.0 dev: true - /which/2.0.2: + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true dependencies: isexe: 2.0.0 - /why-is-node-running/2.2.2: + /why-is-node-running@2.2.2: resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} engines: {node: '>=8'} hasBin: true @@ -9491,12 +9775,12 @@ packages: stackback: 0.0.2 dev: true - /word-wrap/1.2.3: + /word-wrap@1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} dev: true - /wordwrapjs/4.0.1: + /wordwrapjs@4.0.1: resolution: {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==} engines: {node: '>=8.0.0'} dependencies: @@ -9504,7 +9788,7 @@ packages: typical: 5.2.0 dev: true - /wrap-ansi/6.2.0: + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} dependencies: @@ -9513,7 +9797,7 @@ packages: strip-ansi: 6.0.1 dev: true - /wrap-ansi/7.0.0: + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} dependencies: @@ -9522,10 +9806,10 @@ packages: strip-ansi: 6.0.1 dev: true - /wrappy/1.0.2: + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - /write-file-atomic/4.0.2: + /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: @@ -9533,7 +9817,7 @@ packages: signal-exit: 3.0.7 dev: true - /xml2js/0.5.0: + /xml2js@0.5.0: resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} engines: {node: '>=4.0.0'} dependencies: @@ -9541,37 +9825,37 @@ packages: xmlbuilder: 11.0.1 dev: true - /xmlbuilder/11.0.1: + /xmlbuilder@11.0.1: resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} engines: {node: '>=4.0'} dev: true - /xtend/4.0.2: + /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} - /y18n/4.0.3: + /y18n@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} dev: true - /y18n/5.0.8: + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} dev: true - /yallist/2.1.2: + /yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} dev: true - /yallist/4.0.0: + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - /yaml/2.2.1: + /yaml@2.2.1: resolution: {integrity: sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==} engines: {node: '>= 14'} dev: false - /yargs-parser/18.1.3: + /yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} dependencies: @@ -9579,17 +9863,17 @@ packages: decamelize: 1.2.0 dev: true - /yargs-parser/20.2.9: + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} dev: true - /yargs-parser/21.1.1: + /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} dev: true - /yargs/15.4.1: + /yargs@15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} dependencies: @@ -9606,7 +9890,7 @@ packages: yargs-parser: 18.1.3 dev: true - /yargs/16.2.0: + /yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} dependencies: @@ -9619,7 +9903,7 @@ packages: yargs-parser: 20.2.9 dev: true - /yargs/17.6.0: + /yargs@17.6.0: resolution: {integrity: sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==} engines: {node: '>=12'} dependencies: @@ -9632,7 +9916,7 @@ packages: yargs-parser: 21.1.1 dev: true - /yargs/17.6.2: + /yargs@17.6.2: resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} engines: {node: '>=12'} dependencies: @@ -9645,34 +9929,34 @@ packages: yargs-parser: 21.1.1 dev: true - /yauzl/2.10.0: + /yauzl@2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} dependencies: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 dev: true - /yazl/2.5.1: + /yazl@2.5.1: resolution: {integrity: sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==} dependencies: buffer-crc32: 0.2.13 dev: true - /yn/3.1.1: + /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} dev: true - /yocto-queue/0.1.0: + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - /yocto-queue/1.0.0: + /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} dev: true - /zip-stream/4.1.0: + /zip-stream@4.1.0: resolution: {integrity: sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==} engines: {node: '>= 10'} dependencies: @@ -9680,7 +9964,7 @@ packages: compress-commons: 4.1.1 readable-stream: 3.6.0 - /zod-validation-error/0.2.1_zod@3.21.1: + /zod-validation-error@0.2.1(zod@3.21.1): resolution: {integrity: sha512-zGg6P5EHi5V0dvyEeC8HBZd2pzp7QDKTngkSWgWunljrY+0SHkHyjI519D+u8/37BHkGHAFseWgnZ2Uq8LNFKg==} engines: {node: ^14.17 || >=16.0.0} peerDependencies: @@ -9690,6 +9974,6 @@ packages: zod: 3.21.1 dev: false - /zod/3.21.1: + /zod@3.21.1: resolution: {integrity: sha512-+dTu2m6gmCbO9Ahm4ZBDapx2O6ZY9QSPXst2WXjcznPMwf2YNpn3RevLx4KkZp1OPW/ouFcoBtBzFz/LeY69oA==} dev: false