From f77f99ae2cec9d3281be74f0103ebcbe804bd867 Mon Sep 17 00:00:00 2001 From: typedarray <90073088+0xOlias@users.noreply.github.com> Date: Thu, 9 Nov 2023 11:50:28 -0500 Subject: [PATCH] Eliminate codegen (#413) * remove packages * remove codegen, new app type * update codegen * fix errors * bump graphql * fix type errors * add back graphql patch until we convert to esm * remove test --- package.json | 2 +- packages/core/.gitignore | 3 +- packages/core/package.json | 10 +- packages/core/src/Ponder.ts | 12 +- packages/core/src/_test/setup.ts | 8 - packages/core/src/build/functions.ts | 36 -- packages/core/src/codegen/entity.ts | 46 -- packages/core/src/codegen/event.ts | 44 -- packages/core/src/codegen/prettier.ts | 25 - packages/core/src/codegen/service.test.ts | 33 -- packages/core/src/codegen/service.ts | 71 +-- packages/core/src/index.ts | 2 +- packages/core/src/schema/types.ts | 2 +- packages/core/src/server/graphql/plural.ts | 8 +- packages/core/src/server/graphql/schema.ts | 3 +- .../ponder.test-d.ts} | 177 ++++-- .../{build/ponderApp.ts => types/ponder.ts} | 8 +- packages/create-ponder/src/index.ts | 27 +- packages/create-ponder/src/main.test.ts | 47 -- ...phql@15.8.0.patch => graphql@16.8.1.patch} | 2 +- pnpm-lock.yaml | 554 ++---------------- 21 files changed, 223 insertions(+), 897 deletions(-) delete mode 100644 packages/core/src/codegen/entity.ts delete mode 100644 packages/core/src/codegen/event.ts delete mode 100644 packages/core/src/codegen/prettier.ts delete mode 100644 packages/core/src/codegen/service.test.ts rename packages/core/src/{build/ponderApp.test-d.ts => types/ponder.test-d.ts} (56%) rename packages/core/src/{build/ponderApp.ts => types/ponder.ts} (95%) rename patches/{graphql@15.8.0.patch => graphql@16.8.1.patch} (56%) diff --git a/package.json b/package.json index aac06caf2..fc8b9f948 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "packageManager": "pnpm@8.6.10", "pnpm": { "patchedDependencies": { - "graphql@15.8.0": "patches/graphql@15.8.0.patch" + "graphql@16.8.1": "patches/graphql@16.8.1.patch" } } } diff --git a/packages/core/.gitignore b/packages/core/.gitignore index 4c13059ce..7186791c3 100644 --- a/packages/core/.gitignore +++ b/packages/core/.gitignore @@ -2,4 +2,5 @@ dist/ .ponder/ generated/ .env.local -**/*.node \ No newline at end of file +**/*.node +ponder-env.d.ts \ No newline at end of file diff --git a/packages/core/package.json b/packages/core/package.json index 96224731c..2c21d658c 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -38,18 +38,16 @@ "async-mutex": "^0.4.0", "better-sqlite3": "^8.7.0", "cac": "^6.7.14", - "chokidar": "^3.5.3", "conf": "^10.2.0", "cors": "^2.8.5", "data-uri-to-buffer": "3.0.1", "detect-package-manager": "^2.0.1", "dotenv": "^16.0.1", "emittery": "^0.13.1", - "esbuild": "^0.15.2", "ethereum-bloom-filters": "^1.0.10", "express": "^4.18.1", "glob": "^8.1.0", - "graphql": "^15.3.0", + "graphql": "^16.8.1", "graphql-http": "^1.22.0", "http-terminator": "^3.2.0", "ink": "^3.2.0", @@ -59,12 +57,10 @@ "pg": "^8.9.0", "picocolors": "^1.0.0", "pino": "^8.14.1", - "prettier": "^2.6.2", "prom-client": "^14.2.0", "react": "17", "retry": "^0.13.1", "stacktrace-parser": "^0.1.10", - "tsc-alias": "^1.8.2", "viem": "^1.2.6", "vite": "^4.5.0", "vite-node": "^0.34.6" @@ -73,10 +69,8 @@ "@types/babel__code-frame": "^7.0.3", "@types/better-sqlite3": "^7.6.0", "@types/cors": "^2.8.12", - "@types/detect-port": "^1.3.2", "@types/express": "^4.17.13", "@types/glob": "^8.0.0", - "@types/module-alias": "^2.0.1", "@types/node": "^18.7.8", "@types/pg": "^8.6.6", "@types/react": "^18.0.25", @@ -84,9 +78,9 @@ "@types/supertest": "^2.0.12", "@viem/anvil": "^0.0.6", "concurrently": "^8.2.0", - "module-alias": "^2.2.2", "rimraf": "^5.0.1", "supertest": "^6.3.3", + "tsc-alias": "^1.8.2", "typescript": "^5.1.3", "vitest": "^0.34.6" } diff --git a/packages/core/src/Ponder.ts b/packages/core/src/Ponder.ts index 0b47762d7..f88d25c7c 100644 --- a/packages/core/src/Ponder.ts +++ b/packages/core/src/Ponder.ts @@ -173,10 +173,7 @@ export class Ponder { common: this.common, indexingStore: this.indexingStore, }); - this.codegenService = new CodegenService({ - common: this.common, - sources: this.sources, - }); + this.codegenService = new CodegenService({ common: this.common }); this.uiService = new UiService({ common: this.common, sources: this.sources, @@ -186,8 +183,8 @@ export class Ponder { // using the initial config, register service dependencies. this.registerServiceDependencies(); - // TODO: Remove once we have the new PonderApp magic. - this.codegenService.generateAppFile(); + // Regenerate the `ponder-env.d.ts` file in case it was deleted. + this.codegenService.generateDeclarationFile(); // One-time setup for some services. await this.syncStore.migrateUp(); @@ -242,7 +239,7 @@ export class Ponder { } async codegen() { - this.codegenService.generateAppFile(); + this.codegenService.generateDeclarationFile(); const result = await this.buildService.loadSchema(); if (result) { @@ -297,7 +294,6 @@ export class Ponder { this.buildService.on("newSchema", async ({ schema, graphqlSchema }) => { this.common.errors.hasUserError = false; - this.codegenService.generateAppFile({ schema }); this.codegenService.generateGraphqlSchemaFile({ graphqlSchema }); this.serverService.reload({ graphqlSchema }); diff --git a/packages/core/src/_test/setup.ts b/packages/core/src/_test/setup.ts index 779c96d11..6f9e7805d 100644 --- a/packages/core/src/_test/setup.ts +++ b/packages/core/src/_test/setup.ts @@ -1,6 +1,4 @@ import SqliteDatabase from "better-sqlite3"; -import moduleAlias from "module-alias"; -import path from "node:path"; import { Pool } from "pg"; import { type TestContext, beforeEach } from "vitest"; @@ -21,12 +19,6 @@ import { TelemetryService } from "@/telemetry/service"; import { FORK_BLOCK_NUMBER, vitalik } from "./constants"; import { poolId, testClient } from "./utils"; -/** - * Set up a package alias so we can reference `@ponder/core` by name in test files. - */ -const ponderCoreDir = path.resolve(__dirname, "../../"); -moduleAlias.addAlias("@ponder/core", ponderCoreDir); - /** * Inject an isolated sync store into the test context. * diff --git a/packages/core/src/build/functions.ts b/packages/core/src/build/functions.ts index 90bee6770..4ab0789bc 100644 --- a/packages/core/src/build/functions.ts +++ b/packages/core/src/build/functions.ts @@ -42,42 +42,6 @@ export type RawIndexingFunctions = { }; }; -// @ponder/core creates an instance of this class called `ponder` -export class PonderApp< - IndexingFunctions = Record -> { - private indexingFunctions: RawIndexingFunctions = { eventSources: {} }; - private errors: Error[] = []; - - on>( - name: EventName, - indexingFunction: IndexingFunctions[EventName] - ) { - if (name === "setup") { - this.indexingFunctions._meta_ ||= {}; - this.indexingFunctions._meta_.setup = - indexingFunction as SetupEventIndexingFunction; - return; - } - - const [eventSourceName, eventName] = name.split(":"); - if (!eventSourceName || !eventName) { - this.errors.push(new Error(`Invalid event name: ${name}`)); - return; - } - - this.indexingFunctions.eventSources[eventSourceName] ||= {}; - if (this.indexingFunctions.eventSources[eventSourceName][eventName]) { - this.errors.push( - new Error(`Cannot add multiple indexing functions for event: ${name}`) - ); - return; - } - this.indexingFunctions.eventSources[eventSourceName][eventName] = - indexingFunction as LogEventIndexingFunction; - } -} - export type IndexingFunctions = { _meta_: { setup?: { diff --git a/packages/core/src/codegen/entity.ts b/packages/core/src/codegen/entity.ts deleted file mode 100644 index 607c472cb..000000000 --- a/packages/core/src/codegen/entity.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { Scalar, Schema } from "@/schema/types"; -import { isEnumColumn, isVirtualColumn } from "@/schema/utils"; - -const scalarToTsType: Record = { - string: "string", - int: "number", - float: "number", - boolean: "boolean", - bigint: "bigint", - bytes: "`0x${string}`", -}; - -export const buildEntityTypes = (schema: Schema) => { - // TODO:Kyle use recovered types inferred from the entity - - const entityModelTypes = Object.entries(schema.tables) - .map(([tableName, table]) => { - return `export type ${tableName} = { - ${Object.entries(table) - .map(([columnName, column]) => { - // Build enum type as union - - if (isVirtualColumn(column)) return; - else if (isEnumColumn(column)) { - return `${columnName}${ - column.optional ? "?" : "" - }: ${schema.enums[column.type] - .map((val) => `"${val}"`) - .join(" | ")};`; - } else { - // base column (reference or non reference) - - const scalar = scalarToTsType[column.type]; - - return `${columnName}${column.optional ? "?" : ""}: ${scalar}${ - column.list ? "[]" : "" - };`; - } - }) - .join("")} - };`; - }) - .join(""); - - return entityModelTypes; -}; diff --git a/packages/core/src/codegen/event.ts b/packages/core/src/codegen/event.ts deleted file mode 100644 index f4180eede..000000000 --- a/packages/core/src/codegen/event.ts +++ /dev/null @@ -1,44 +0,0 @@ -import type { LogEventMetadata } from "@/config/abi"; -import { Source } from "@/config/sources"; - -export const buildEventTypes = ({ sources }: { sources: Source[] }) => { - const allIndexingFunctions = sources.map((source) => - Object.values(source.events) - .filter((val): val is LogEventMetadata => !!val) - .map(({ safeName, abiItem }) => { - const paramsType = `{${abiItem.inputs - .map((input, index) => { - const inputName = input.name ? input.name : `param_${index}`; - return `${inputName}: - AbiParameterToPrimitiveType<${JSON.stringify(input)}>`; - }) - .join(";")}}`; - - return `["${source.name}:${safeName}"]: ({ - event, context - }: { - event: { - name: "${abiItem.name}"; - params: ${paramsType}; - log: Log; - block: Block; - transaction: Transaction; - }; - context: Context; - }) => Promise | any;`; - }) - .join("") - ); - - allIndexingFunctions.unshift( - `["setup"]: ({ context }: { context: Context; }) => Promise | any;` - ); - - const final = ` - export type AppType = { - ${allIndexingFunctions.join("")} - } - `; - - return final; -}; diff --git a/packages/core/src/codegen/prettier.ts b/packages/core/src/codegen/prettier.ts deleted file mode 100644 index 1f41b887f..000000000 --- a/packages/core/src/codegen/prettier.ts +++ /dev/null @@ -1,25 +0,0 @@ -import prettier from "prettier"; - -let prettierConfig: prettier.Options = { parser: "typescript" }; - -const loadPrettierConfig = async () => { - if (prettierConfig) return; - - const configFile = await prettier.resolveConfigFile(); - if (configFile) { - const foundConfig = await prettier.resolveConfig(configFile); - if (foundConfig) { - prettierConfig = foundConfig; - } - } -}; - -// Just call this once on process start -loadPrettierConfig(); - -export const formatPrettier = ( - source: string, - configOverrides?: Partial -) => { - return prettier.format(source, { ...prettierConfig, ...configOverrides }); -}; diff --git a/packages/core/src/codegen/service.test.ts b/packages/core/src/codegen/service.test.ts deleted file mode 100644 index 0556c82ab..000000000 --- a/packages/core/src/codegen/service.test.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { expect, test } from "vitest"; - -import { buildEntityTypes } from "@/codegen/entity"; -import * as p from "@/schema"; - -test("entity type codegen succeeds", () => { - const output = buildEntityTypes( - p.createSchema({ - name: p.createTable({ - id: p.bigint(), - age: p.int(), - }), - }) - ); - expect(output).toStrictEqual(`export type name = { - id: bigint;age: number; - };`); -}); - -test("enum type codegen succeeds", () => { - const output = buildEntityTypes( - p.createSchema({ - e: p.createEnum(["ONE", "TWO"]), - name: p.createTable({ - id: p.bigint(), - age: p.enum("e"), - }), - }) - ); - expect(output).toStrictEqual(`export type name = { - id: bigint;age: "ONE" | "TWO"; - };`); -}); diff --git a/packages/core/src/codegen/service.ts b/packages/core/src/codegen/service.ts index 68d69492e..3cddc1e43 100644 --- a/packages/core/src/codegen/service.ts +++ b/packages/core/src/codegen/service.ts @@ -3,70 +3,47 @@ import { GraphQLSchema, printSchema } from "graphql"; import { writeFileSync } from "node:fs"; import path from "node:path"; -import { Source } from "@/config/sources"; import type { Common } from "@/Ponder"; -import { Schema } from "@/schema/types"; import { ensureDirExists } from "@/utils/exists"; -import { buildEntityTypes } from "./entity"; -import { buildEventTypes } from "./event"; -import { formatPrettier } from "./prettier"; - export class CodegenService extends Emittery { private common: Common; - private sources: Source[]; - constructor({ common, sources }: { common: Common; sources: Source[] }) { + constructor({ common }: { common: Common }) { super(); this.common = common; - this.sources = sources; } - generateAppFile({ schema }: { schema?: Schema } = {}) { - const raw = ` - /* Autogenerated file. Do not edit manually. */ - - import { PonderApp } from "@ponder/core"; - import type { Block, Log, Transaction, Model, ReadOnlyContract } from "@ponder/core"; - import type { AbiParameterToPrimitiveType } from "abitype"; - import type { BlockTag, Hash } from "viem"; - - /* ENTITY TYPES */ + generateDeclarationFile() { + const getImportPath = (file: string) => { + let relative = path.relative(this.common.options.rootDir, file); - ${buildEntityTypes(schema ?? { tables: {}, enums: {} })} - - /* CONTRACT TYPES */ + // If the file is in the same directory, prepend with "./" + if (!relative.startsWith("..") && !path.isAbsolute(relative)) + relative = `./${relative}`; - /* CONTEXT TYPES */ + return relative; + }; - export type Context = { - - entities: { - ${Object.keys(schema?.tables ?? {}) - .map((tableName) => `${tableName}: Model<${tableName}>;`) - .join("")} - }, - } + const configPath = getImportPath(this.common.options.configFile); + const schemaPath = getImportPath(this.common.options.schemaFile); - - /* INDEXING FUNCTION TYPES */ - - ${buildEventTypes({ - sources: this.sources, - })} + const contents = `declare module "@/generated" { + import type { PonderApp } from "@ponder/core"; - export const ponder = new PonderApp(); - `; + export const ponder: PonderApp< + typeof import("${configPath}").config, + typeof import("${schemaPath}").schema + >; +} +`; - const final = formatPrettier(raw); - - const filePath = path.join(this.common.options.generatedDir, "index.ts"); - ensureDirExists(filePath); - writeFileSync(filePath, final, "utf8"); + const filePath = path.join(this.common.options.rootDir, "ponder-env.d.ts"); + writeFileSync(filePath, contents, "utf8"); this.common.logger.debug({ service: "codegen", - msg: `Wrote new file at generated/index.ts`, + msg: `Generated ponder-env.d.ts`, }); } @@ -75,9 +52,7 @@ export class CodegenService extends Emittery { }: { graphqlSchema: GraphQLSchema; }) { - const final = formatPrettier(printSchema(graphqlSchema), { - parser: "graphql", - }); + const final = printSchema(graphqlSchema); const filePath = path.join( this.common.options.generatedDir, diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 9e5db44e8..890c6b68c 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,7 +1,7 @@ -export { PonderApp } from "@/build/functions"; export { createConfig } from "@/config/config"; export * as p from "@/schema"; export type { Block } from "@/types/block"; export type { Log } from "@/types/log"; export type { Model } from "@/types/model"; +export type { PonderApp } from "@/types/ponder"; export type { Transaction } from "@/types/transaction"; diff --git a/packages/core/src/schema/types.ts b/packages/core/src/schema/types.ts index d08f48a22..1c2c744d7 100644 --- a/packages/core/src/schema/types.ts +++ b/packages/core/src/schema/types.ts @@ -272,7 +272,7 @@ export type RecoverTableType< ReferenceColumn | NonReferenceColumn | EnumColumn | VirtualColumn > ? Prettify< - { + { id: RecoverColumnType<_columns["id"]> } & { [key in keyof RecoverRequiredColumns<_columns>]: RecoverColumnType< _columns[key] >; diff --git a/packages/core/src/server/graphql/plural.ts b/packages/core/src/server/graphql/plural.ts index 3babe83b0..30219f588 100644 --- a/packages/core/src/server/graphql/plural.ts +++ b/packages/core/src/server/graphql/plural.ts @@ -2,6 +2,7 @@ import { type GraphQLFieldConfig, type GraphQLFieldResolver, type GraphQLInputType, + GraphQLInputFieldConfigMap, GraphQLInputObjectType, GraphQLInt, GraphQLList, @@ -50,7 +51,7 @@ export const buildPluralField = ({ table: Schema["tables"][string]; entityGqlType: GraphQLObjectType; }): GraphQLFieldConfig => { - const filterFields: Record = {}; + const filterFields: GraphQLInputFieldConfigMap = {}; Object.entries(table).forEach(([columnName, column]) => { // Note: Only include non-virtual columns in plural fields @@ -60,13 +61,14 @@ export const buildPluralField = ({ operators.universal.forEach((suffix) => { filterFields[`${columnName}${suffix}`] = { - type: enumType as GraphQLInputType, // TODO:Kyle this is probably a bad idea + // TODO: Kyle this cast is probably a bad idea. + type: enumType as GraphQLInputType, }; }); operators.singular.forEach((suffix) => { filterFields[`${columnName}${suffix}`] = { - type: new GraphQLList(enumType), + type: new GraphQLList(enumType) as GraphQLInputType, }; }); } else if (column.list) { diff --git a/packages/core/src/server/graphql/schema.ts b/packages/core/src/server/graphql/schema.ts index 54e72621d..97f3d7bb2 100644 --- a/packages/core/src/server/graphql/schema.ts +++ b/packages/core/src/server/graphql/schema.ts @@ -19,7 +19,8 @@ import { buildSingularField } from "./singular"; const GraphQLBigInt = new GraphQLScalarType({ name: "BigInt", serialize: (value) => String(value), - parseValue: (value) => BigInt(value), + // TODO: Kyle this cast is probably a bad idea. + parseValue: (value) => BigInt(value as any), parseLiteral: (value) => { if (value.kind === "StringValue") { return BigInt(value.value); diff --git a/packages/core/src/build/ponderApp.test-d.ts b/packages/core/src/types/ponder.test-d.ts similarity index 56% rename from packages/core/src/build/ponderApp.test-d.ts rename to packages/core/src/types/ponder.test-d.ts index a1d70db9e..c332040cd 100644 --- a/packages/core/src/build/ponderApp.test-d.ts +++ b/packages/core/src/types/ponder.test-d.ts @@ -1,7 +1,9 @@ import { AbiEvent, ParseAbi } from "abitype"; import { assertType, test } from "vitest"; -import { ExtractAddress, ExtractAllAddresses, PonderApp } from "./ponderApp"; +import { bigint, bytes, createSchema, createTable, string } from "@/schema"; + +import { ExtractAddress, ExtractAllAddresses, PonderApp } from "./ponder"; type OneAbi = ParseAbi< ["event Event0(bytes32 indexed arg3)", "event Event1(bytes32 indexed)"] @@ -36,11 +38,14 @@ test("ExtractAllAddress", () => { }); test("PonderApp non intersecting event names", () => { - type p = PonderApp<{ - // ^? - networks: any; - contracts: readonly [{ name: "One"; network: any; abi: OneAbi }]; - }>; + type p = PonderApp< + { + // ^? + networks: any; + contracts: readonly [{ name: "One"; network: any; abi: OneAbi }]; + }, + any + >; type name = Parameters[0]; // ^? @@ -49,11 +54,14 @@ test("PonderApp non intersecting event names", () => { }); test("PonderApp intersecting event names", () => { - type p = PonderApp<{ - // ^? - networks: any; - contracts: readonly [{ name: "Two"; network: any; abi: TwoAbi }]; - }>; + type p = PonderApp< + { + // ^? + networks: any; + contracts: readonly [{ name: "Two"; network: any; abi: TwoAbi }]; + }, + any + >; type name = Parameters[0]; // ^? @@ -62,14 +70,17 @@ test("PonderApp intersecting event names", () => { }); test("PonderApp multiple contracts", () => { - type p = PonderApp<{ - // ^? - networks: any; - contracts: readonly [ - { name: "One"; network: any; abi: OneAbi }, - { name: "Two"; network: any; abi: TwoAbi } - ]; - }>; + type p = PonderApp< + { + // ^? + networks: any; + contracts: readonly [ + { name: "One"; network: any; abi: OneAbi }, + { name: "Two"; network: any; abi: TwoAbi } + ]; + }, + any + >; // Events should only correspond to their contract type name = Exclude< @@ -83,11 +94,14 @@ test("PonderApp multiple contracts", () => { test("PonderApp event type"), () => { - type p = PonderApp<{ - // ^? - networks: any; - contracts: readonly [{ name: "One"; network: any; abi: OneAbi }]; - }>; + type p = PonderApp< + { + // ^? + networks: any; + contracts: readonly [{ name: "One"; network: any; abi: OneAbi }]; + }, + any + >; type name = Parameters[1]>[0]["event"]["name"]; // ^? @@ -102,17 +116,20 @@ test("PonderApp event type"), }; test("PonderApp context network type", () => { - type p = PonderApp<{ - // ^? - networks: any; - contracts: readonly [ - { - name: "One"; - network: [{ name: "mainnet" }, { name: "optimism" }]; - abi: OneAbi; - } - ]; - }>; + type p = PonderApp< + { + // ^? + networks: any; + contracts: readonly [ + { + name: "One"; + network: [{ name: "mainnet" }, { name: "optimism" }]; + abi: OneAbi; + } + ]; + }, + any + >; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore @@ -122,17 +139,20 @@ test("PonderApp context network type", () => { }); test("PonderApp context client type", () => { - type p = PonderApp<{ - // ^? - networks: any; - contracts: readonly [ - { - name: "One"; - network: [{ name: "mainnet" }, { name: "optimism" }]; - abi: OneAbi; - } - ]; - }>; + type p = PonderApp< + { + // ^? + networks: any; + contracts: readonly [ + { + name: "One"; + network: [{ name: "mainnet" }, { name: "optimism" }]; + abi: OneAbi; + } + ]; + }, + any + >; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore @@ -142,20 +162,23 @@ test("PonderApp context client type", () => { }); test("PonderApp context contracts type", () => { - type p = PonderApp<{ - // ^? - networks: any; - contracts: readonly [ - { - name: "One"; - network: [{ name: "mainnet"; address: "0x1" }, { name: "optimism" }]; - abi: OneAbi; - address: "0x2"; - startBlock: 1; - endBlock: 2; - } - ]; - }>; + type p = PonderApp< + { + // ^? + networks: any; + contracts: readonly [ + { + name: "One"; + network: [{ name: "mainnet"; address: "0x1" }, { name: "optimism" }]; + abi: OneAbi; + address: "0x2"; + startBlock: 1; + endBlock: 2; + } + ]; + }, + any + >; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore @@ -163,3 +186,37 @@ test("PonderApp context contracts type", () => { (({}) as p).on("One:Event1", ({ context: { contracts } }) => {}); // ^? }); + +test("PonderApp context entity type", () => { + const schema = createSchema({ + ExampleTable: createTable({ + id: string(), + kevin: bytes(), + kyle: bigint(), + }), + }); + + type p = PonderApp< + { + // ^? + networks: any; + contracts: readonly [ + { + name: "One"; + network: [{ name: "mainnet"; address: "0x1" }, { name: "optimism" }]; + abi: OneAbi; + address: "0x2"; + startBlock: 1; + endBlock: 2; + } + ]; + }, + typeof schema + >; + + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + // eslint-disable-next-line @typescript-eslint/no-unused-vars + (({}) as p).on("One:Event1", ({ context: { models } }) => {}); + // ^? +}); diff --git a/packages/core/src/build/ponderApp.ts b/packages/core/src/types/ponder.ts similarity index 95% rename from packages/core/src/build/ponderApp.ts rename to packages/core/src/types/ponder.ts index 7b1ae09f4..0d3cbcc42 100644 --- a/packages/core/src/build/ponderApp.ts +++ b/packages/core/src/types/ponder.ts @@ -10,8 +10,10 @@ import { SafeEventNames, } from "@/config/config"; import { ReadOnlyClient } from "@/indexing/ponderActions"; +import { Infer, Schema } from "@/schema/types"; import { Block } from "@/types/block"; import { Log } from "@/types/log"; +import { Model } from "@/types/model"; import { Transaction } from "@/types/transaction"; /** "{ContractName}:{EventName}". */ @@ -120,7 +122,7 @@ type AppContracts = AppContracts : {}; -export type PonderApp = { +export type PonderApp = { on: [number]>( name: TName, indexingFunction: ({ @@ -164,7 +166,9 @@ export type PonderApp = { : never; }; client: ReadOnlyClient; - models: any; // use ts-schema to infer types + models: { + [key in keyof Infer]: Model[key]>; + }; }; }) => Promise | void ) => void; diff --git a/packages/create-ponder/src/index.ts b/packages/create-ponder/src/index.ts index b1c02972a..885cb15dd 100644 --- a/packages/create-ponder/src/index.ts +++ b/packages/create-ponder/src/index.ts @@ -211,10 +211,7 @@ export const run = async ( "resolveJsonModule": true, "esModuleInterop": true, "strict": true, - "rootDir": ".", - "paths": { - "@/generated": ["./generated/index.ts"] - } + "rootDir": "." }, "include": ["./**/*.ts"], "exclude": ["node_modules"] @@ -241,7 +238,27 @@ export const run = async ( // Write the .gitignore file. writeFileSync( path.join(rootDir, ".gitignore"), - `node_modules/\n.DS_Store\n\n.env.local\n.ponder/\ngenerated/` + `# Dependencies +/node_modules + +# Debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# Misc +.DS_Store + +# Env files +.env*.local + +# Ponder +/.next/ +/generated/ + +# TypeScript +ponder-env.d.ts` ); const packageManager = await getPackageManager(); diff --git a/packages/create-ponder/src/main.test.ts b/packages/create-ponder/src/main.test.ts index 58e0a4e57..6a055b59e 100644 --- a/packages/create-ponder/src/main.test.ts +++ b/packages/create-ponder/src/main.test.ts @@ -446,51 +446,4 @@ describe("create-ponder", () => { }); }); }); - - describe("eslint", () => { - const lintFileName = ".eslintrc.json"; - const ponderEslintConfig = "eslint-config-ponder"; - - test("installs eslint if enabled", async () => { - const rootDir = path.join(tmpDir, randomUUID()); - await run( - { rootDir, projectName: "eslint", eslint: true }, - { installCommand: 'echo "skip install"' } - ); - - const root = fs.readdirSync(rootDir); - const packageJSON = JSON.parse( - fs.readFileSync(path.join(rootDir, "package.json"), { - encoding: "utf-8", - }) - ); - - expect(root).toContain(lintFileName); - expect(packageJSON["scripts"]).toHaveProperty("lint"); - expect(packageJSON["devDependencies"]).toHaveProperty("eslint"); - expect(packageJSON["devDependencies"]).toHaveProperty(ponderEslintConfig); - }); - - test("does not install eslint if disabled", async () => { - const rootDir = path.join(tmpDir, randomUUID()); - await run( - { rootDir, projectName: "eslint", eslint: false }, - { installCommand: 'echo "skip install"' } - ); - - const root = fs.readdirSync(rootDir); - const packageJSON = JSON.parse( - fs.readFileSync(path.join(rootDir, "package.json"), { - encoding: "utf-8", - }) - ); - - expect(root).not.toContain(lintFileName); - expect(packageJSON["scripts"]).not.toHaveProperty("lint"); - expect(packageJSON["devDependencies"]).not.toHaveProperty("eslint"); - expect(packageJSON["devDependencies"]).not.toHaveProperty( - ponderEslintConfig - ); - }); - }); }); diff --git a/patches/graphql@15.8.0.patch b/patches/graphql@16.8.1.patch similarity index 56% rename from patches/graphql@15.8.0.patch rename to patches/graphql@16.8.1.patch index d83de4e62..730b48159 100644 --- a/patches/graphql@15.8.0.patch +++ b/patches/graphql@16.8.1.patch @@ -1,3 +1,3 @@ diff --git a/index.mjs b/index.mjs deleted file mode 100644 -index 952630a2a0366f2b72a5c4907f491eac0d57c6f8..0000000000000000000000000000000000000000 \ No newline at end of file +index ba8672e675b69675b8d37d3aa521ee2298eacdcc..0000000000000000000000000000000000000000 \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0070c595b..2b599d72d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,9 +5,9 @@ settings: excludeLinksFromLockfile: false patchedDependencies: - graphql@15.8.0: - hash: qb2u6q36ugvr6swjr2i3rg76ty - path: patches/graphql@15.8.0.patch + graphql@16.8.1: + hash: 3zvcnrptpojleshpmtp6be677a + path: patches/graphql@16.8.1.patch importers: @@ -325,9 +325,6 @@ importers: cac: specifier: ^6.7.14 version: 6.7.14 - chokidar: - specifier: ^3.5.3 - version: 3.5.3 conf: specifier: ^10.2.0 version: 10.2.0 @@ -346,9 +343,6 @@ importers: emittery: specifier: ^0.13.1 version: 0.13.1 - esbuild: - specifier: ^0.15.2 - version: 0.15.4 ethereum-bloom-filters: specifier: ^1.0.10 version: 1.0.10 @@ -359,11 +353,11 @@ importers: specifier: ^8.1.0 version: 8.1.0 graphql: - specifier: ^15.3.0 - version: 15.8.0(patch_hash=qb2u6q36ugvr6swjr2i3rg76ty) + specifier: ^16.8.1 + version: 16.8.1(patch_hash=3zvcnrptpojleshpmtp6be677a) graphql-http: specifier: ^1.22.0 - version: 1.22.0(graphql@15.8.0) + version: 1.22.0(graphql@16.8.1) http-terminator: specifier: ^3.2.0 version: 3.2.0 @@ -388,9 +382,6 @@ importers: pino: specifier: ^8.14.1 version: 8.14.1 - prettier: - specifier: ^2.6.2 - version: 2.8.8 prom-client: specifier: ^14.2.0 version: 14.2.0 @@ -403,9 +394,6 @@ importers: stacktrace-parser: specifier: ^0.1.10 version: 0.1.10 - tsc-alias: - specifier: ^1.8.2 - version: 1.8.2 viem: specifier: ^1.2.6 version: 1.2.6(typescript@5.1.3) @@ -425,18 +413,12 @@ importers: '@types/cors': specifier: ^2.8.12 version: 2.8.12 - '@types/detect-port': - specifier: ^1.3.2 - version: 1.3.2 '@types/express': specifier: ^4.17.13 version: 4.17.13 '@types/glob': specifier: ^8.0.0 version: 8.0.0 - '@types/module-alias': - specifier: ^2.0.1 - version: 2.0.1 '@types/node': specifier: ^18.7.8 version: 18.16.18 @@ -458,15 +440,15 @@ importers: concurrently: specifier: ^8.2.0 version: 8.2.0 - module-alias: - specifier: ^2.2.2 - version: 2.2.2 rimraf: specifier: ^5.0.1 version: 5.0.1 supertest: specifier: ^6.3.3 version: 6.3.3 + tsc-alias: + specifier: ^1.8.2 + version: 1.8.2 typescript: specifier: ^5.1.3 version: 5.1.3 @@ -2043,15 +2025,6 @@ packages: requiresBuild: true optional: true - /@esbuild/android-arm64@0.18.4: - resolution: {integrity: sha512-yQVgO+V307hA2XhzELQ6F91CBGX7gSnlVGAj5YIqjQOxThDpM7fOcHT2YLJbE6gNdPtgRSafQrsK8rJ9xHCaZg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm@0.18.20: resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} @@ -2060,15 +2033,6 @@ packages: requiresBuild: true optional: true - /@esbuild/android-arm@0.18.4: - resolution: {integrity: sha512-yKmQC9IiuvHdsNEbPHSprnMHg6OhL1cSeQZLzPpgzJBJ9ppEg9GAZN8MKj1TcmB4tZZUrq5xjK7KCmhwZP8iDA==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-x64@0.18.20: resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} @@ -2077,15 +2041,6 @@ packages: requiresBuild: true optional: true - /@esbuild/android-x64@0.18.4: - resolution: {integrity: sha512-yLKXMxQg6sk1ntftxQ5uwyVgG4/S2E7UoOCc5N4YZW7fdkfRiYEXqm7CMuIfY2Vs3FTrNyKmSfNevIuIvJnMww==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64@0.18.20: resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} @@ -2094,15 +2049,6 @@ packages: requiresBuild: true optional: true - /@esbuild/darwin-arm64@0.18.4: - resolution: {integrity: sha512-MVPEoZjZpk2xQ1zckZrb8eQuQib+QCzdmMs3YZAYEQPg+Rztk5pUxGyk8htZOC8Z38NMM29W+MqY9Sqo/sDGKw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64@0.18.20: resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} @@ -2111,15 +2057,6 @@ packages: requiresBuild: true optional: true - /@esbuild/darwin-x64@0.18.4: - resolution: {integrity: sha512-uEsRtYRUDsz7i2tXg/t/SyF+5gU1cvi9B6B8i5ebJgtUUHJYWyIPIesmIOL4/+bywjxsDMA/XrNFMgMffLnh5A==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-arm64@0.18.20: resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} @@ -2128,15 +2065,6 @@ packages: requiresBuild: true optional: true - /@esbuild/freebsd-arm64@0.18.4: - resolution: {integrity: sha512-I8EOigqWnOHRin6Zp5Y1cfH3oT54bd7Sdz/VnpUNksbOtfp8IWRTH4pgkgO5jWaRQPjCpJcOpdRjYAMjPt8wXg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64@0.18.20: resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} @@ -2145,15 +2073,6 @@ packages: requiresBuild: true optional: true - /@esbuild/freebsd-x64@0.18.4: - resolution: {integrity: sha512-1bHfgMz/cNMjbpsYxjVgMJ1iwKq+NdDPlACBrWULD7ZdFmBQrhMicMaKb5CdmdVyvIwXmasOuF4r6Iq574kUTA==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm64@0.18.20: resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} @@ -2162,15 +2081,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-arm64@0.18.4: - resolution: {integrity: sha512-J42vLHaYREyiBwH0eQE4/7H1DTfZx8FuxyWSictx4d7ezzuKE3XOkIvOg+SQzRz7T9HLVKzq2tvbAov4UfufBw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm@0.18.20: resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} @@ -2179,15 +2089,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-arm@0.18.4: - resolution: {integrity: sha512-4XCGqM/Ay1LCXUBH59bL4JbSbbTK1K22dWHymWMGaEh2sQCDOUw+OQxozYV/YdBb91leK2NbuSrE2BRamwgaYw==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ia32@0.18.20: resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} @@ -2196,24 +2097,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-ia32@0.18.4: - resolution: {integrity: sha512-4ksIqFwhq7OExty7Sl1n0vqQSCqTG4sU6i99G2yuMr28CEOUZ/60N+IO9hwI8sIxBqmKmDgncE1n5CMu/3m0IA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-loong64@0.15.4: - resolution: {integrity: sha512-6uFuTbBbdBk7lbW8lb5jaEqrCyiJa+wb+Sfcr0FJNGgWHnUY0RvXbkqQj/OaDEyu0vrMvfbD27fbyRySK0muUw==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-loong64@0.18.20: resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} @@ -2222,15 +2105,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-loong64@0.18.4: - resolution: {integrity: sha512-bsWtoVHkGQgAsFXioDueXRiUIfSGrVkJjBBz4gcBJxXcD461cWFQFyu8Fxdj9TP+zEeqJ8C/O4LFFMBNi6Fscw==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-mips64el@0.18.20: resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} @@ -2239,15 +2113,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-mips64el@0.18.4: - resolution: {integrity: sha512-LRD9Fu8wJQgIOOV1o3nRyzrheFYjxA0C1IVWZ93eNRRWBKgarYFejd5WBtrp43cE4y4D4t3qWWyklm73Mrsd/g==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64@0.18.20: resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} @@ -2256,15 +2121,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-ppc64@0.18.4: - resolution: {integrity: sha512-jtQgoZjM92gauVRxNaaG/TpL3Pr4WcL3Pwqi9QgdrBGrEXzB+twohQiWNSTycs6lUygakos4mm2h0B9/SHveng==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-riscv64@0.18.20: resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} @@ -2273,15 +2129,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-riscv64@0.18.4: - resolution: {integrity: sha512-7WaU/kRZG0VCV09Xdlkg6LNAsfU9SAxo6XEdaZ8ffO4lh+DZoAhGTx7+vTMOXKxa+r2w1LYDGxfJa2rcgagMRA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-s390x@0.18.20: resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} @@ -2290,15 +2137,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-s390x@0.18.4: - resolution: {integrity: sha512-D19ed0xreKQvC5t+ArE2njSnm18WPpE+1fhwaiJHf+Xwqsq+/SUaV8Mx0M27nszdU+Atq1HahrgCOZCNNEASUg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-x64@0.18.20: resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} @@ -2307,15 +2145,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-x64@0.18.4: - resolution: {integrity: sha512-Rx3AY1sxyiO/gvCGP00nL69L60dfmWyjKWY06ugpB8Ydpdsfi3BHW58HWC24K3CAjAPSwxcajozC2PzA9JBS1g==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-x64@0.18.20: resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} @@ -2324,15 +2153,6 @@ packages: requiresBuild: true optional: true - /@esbuild/netbsd-x64@0.18.4: - resolution: {integrity: sha512-AaShPmN9c6w1mKRpliKFlaWcSkpBT4KOlk93UfFgeI3F3cbjzdDKGsbKnOZozmYbE1izZKLmNJiW0sFM+A5JPA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-x64@0.18.20: resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} @@ -2341,15 +2161,6 @@ packages: requiresBuild: true optional: true - /@esbuild/openbsd-x64@0.18.4: - resolution: {integrity: sha512-tRGvGwou3BrvHVvF8HxTqEiC5VtPzySudS9fh2jBIKpLX7HCW8jIkW+LunkFDNwhslx4xMAgh0jAHsx/iCymaQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/sunos-x64@0.18.20: resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} @@ -2358,15 +2169,6 @@ packages: requiresBuild: true optional: true - /@esbuild/sunos-x64@0.18.4: - resolution: {integrity: sha512-acORFDI95GKhmAnlH8EarBeuqoy/j3yxIU+FDB91H3+ZON+8HhTadtT450YkaMzX6lEWbhi+mjVUCj00M5yyOQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-arm64@0.18.20: resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} @@ -2375,15 +2177,6 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-arm64@0.18.4: - resolution: {integrity: sha512-1NxP+iOk8KSvS1L9SSxEvBAJk39U0GiGZkiiJGbuDF9G4fG7DSDw6XLxZMecAgmvQrwwx7yVKdNN3GgNh0UfKg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-ia32@0.18.20: resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} @@ -2392,15 +2185,6 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-ia32@0.18.4: - resolution: {integrity: sha512-OKr8jze93vbgqZ/r23woWciTixUwLa976C9W7yNBujtnVHyvsL/ocYG61tsktUfJOpyIz5TsohkBZ6Lo2+PCcQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-x64@0.18.20: resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} @@ -2409,15 +2193,6 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-x64@0.18.4: - resolution: {integrity: sha512-qJr3wVvcLjPFcV4AMDS3iquhBfTef2zo/jlm8RMxmiRp3Vy2HY8WMxrykJlcbCnqLXZPA0YZxZGND6eug85ogg==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.43.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2615,8 +2390,8 @@ packages: hasBin: true dependencies: '@rescript/std': 9.0.0 - graphql: 16.6.0 - graphql-import-node: 0.0.5(graphql@16.6.0) + graphql: 16.8.1(patch_hash=3zvcnrptpojleshpmtp6be677a) + graphql-import-node: 0.0.5(graphql@16.8.1) js-yaml: 4.1.0 dev: true @@ -3492,11 +3267,7 @@ packages: /@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: - resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} + '@types/chai': 4.3.9 dev: true /@types/chai@4.3.9: @@ -3535,10 +3306,6 @@ packages: '@types/ms': 0.7.31 dev: false - /@types/detect-port@1.3.2: - resolution: {integrity: sha512-xxgAGA2SAU4111QefXPSp5eGbDm/hW6zhvYl9IeEPZEry9F4d66QAHm5qpUXjb6IsevZV/7emAEx5MhP6O192g==} - dev: true - /@types/estree-jsx@1.0.0: resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==} dependencies: @@ -3647,10 +3414,6 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/module-alias@2.0.1: - resolution: {integrity: sha512-DN/CCT1HQG6HquBNJdLkvV+4v5l/oEuwOHUPLxI+Eub0NED+lk0YUfba04WGH90EINiUrNgClkNnwGmbICeWMQ==} - dev: true - /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: false @@ -4384,6 +4147,7 @@ packages: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 + dev: true /apisauce@2.1.6(debug@4.3.4): resolution: {integrity: sha512-MdxR391op/FucS2YQRfB/NMRyCnHEPDd4h17LRIuVYi0BpGmMhpxc0shbOpfs5ahABuBEffNCGal5EcsydbBWg==} @@ -4684,6 +4448,7 @@ packages: /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} + dev: true /binary-install-raw@0.0.13(debug@4.3.4): resolution: {integrity: sha512-v7ms6N/H7iciuk6QInon3/n2mu7oRX+6knJ9xFPsJ3rQePgAqcR3CRTwUheFd8SLbiq4LL7Z4G/44L9zscdt9A==} @@ -4888,13 +4653,13 @@ packages: base64-js: 1.5.1 ieee754: 1.2.1 - /bundle-require@4.0.1(esbuild@0.18.4): + /bundle-require@4.0.1(esbuild@0.18.20): resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: esbuild: '>=0.17' dependencies: - esbuild: 0.18.4 + esbuild: 0.18.20 load-tsconfig: 0.2.5 dev: true @@ -5055,6 +4820,7 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.3 + dev: true /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -5249,6 +5015,7 @@ packages: /commander@9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} + dev: true /component-emitter@1.3.0: resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} @@ -6308,215 +6075,6 @@ packages: es6-promise: 4.2.8 dev: true - /esbuild-android-64@0.15.4: - resolution: {integrity: sha512-Phl8srrfwgWC/aZsR2HK5FVMK9XY9T8Qi2lO76/N7OpxODnlF4PUx43gm+CdseAvY8Y58BEUXYdiajA4oP3WEg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: false - optional: true - - /esbuild-android-arm64@0.15.4: - resolution: {integrity: sha512-2VHCcYm0prP5qFV4fSZwml6/fCk2vqLlJtkt0V9VB2LVSckaa5Fmk4iP4Yo7N+U6GpkG0VBi1D3j+WRbh7NNTA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false - optional: true - - /esbuild-darwin-64@0.15.4: - resolution: {integrity: sha512-UpGsrCmNFdFRzDdorWoU5Sqi1BiKBQw2pC+3y0Fzue5xffWHuDuXrCK3EfNEVLlipRcopgINtmSop068y5sR8w==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /esbuild-darwin-arm64@0.15.4: - resolution: {integrity: sha512-pTPxb/Hhpj7GYA5eFL1AMw14qtpglR0nioKW6GTkkFuW/RJimk4w10oSIAU/XhiRz4CHtRwBXqkuoBlrwzjlWQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /esbuild-freebsd-64@0.15.4: - resolution: {integrity: sha512-sLdEx/zsdHwmYRwggluSVvJt51yDXRDsCSjDj/nqi9vZXyPn1YPRSz+G+c7eBgVp/bttsi3pCQTpmUN9+iIvGg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - - /esbuild-freebsd-arm64@0.15.4: - resolution: {integrity: sha512-M0FPT9UUvNsqLbZxmxqhOA0jYzaCUIklXsV6wc+WCKnyZnKf7PisugPp6OwkbRnQs7uHbOopMABgBGq3dio/Yw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - - /esbuild-linux-32@0.15.4: - resolution: {integrity: sha512-LbkSPE9I3JqY8/2Nt5Hv8C7f4YgcVLXkWZtg2eL26SP647UfN00AnZIGZTvMnPoAyUuD3XAF870iIugyfeNwtA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /esbuild-linux-64@0.15.4: - resolution: {integrity: sha512-v1dRx4MKPUgKbA5FNT+rYz/E+t9TSP/qCCC12m2Iv4SWCzCpTw4mBdoRLC6jgjuRWy2OZ+2MTYHLSEODMBFTEg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /esbuild-linux-arm64@0.15.4: - resolution: {integrity: sha512-rhqtX2q/W4q0OevlQcZ4XAbtFfgbZjSynSKIKgtXAtRVQaG57YFiT5O1UVy2aD32g1gsAIbRBLlAg+jFBEkkbg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /esbuild-linux-arm@0.15.4: - resolution: {integrity: sha512-+lF+uk/knaZHRIWS50s/JEutmt7GWNly2IbfyEUEFHV+3fnnOz2UzRDLXFW7y6+3R04zrTncypNeK7w1V+Q/2A==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /esbuild-linux-mips64le@0.15.4: - resolution: {integrity: sha512-tygMDy0+Rf3D7mhQGXjyCFDj2+WJREvXASnwwmAiflUYZTTexXybZLqzSArob5p+ulaRKr8ZUE/edBNDStKoqw==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /esbuild-linux-ppc64le@0.15.4: - resolution: {integrity: sha512-CcAJjc6gKvML7n76aUQJEvz3hDMm1tnb9ZirInTjETJ0XGrw/JaZzKTnsa3NBlEtO/hZnN+xSHif8IqUCJcY0w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /esbuild-linux-riscv64@0.15.4: - resolution: {integrity: sha512-GSbnazL7/1ngcoZ7I8jklnO01DXukAM1vQnTZnraqzsP+SwfpkuZBp+qU856wYJZZauNAC0Y0hZrgeiVJt0nRw==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /esbuild-linux-s390x@0.15.4: - resolution: {integrity: sha512-TRRuxc7qgYcYUae8EH6RgKkrsQ2AITDrt4FOLqvrYm32/63a/9Q17Gfu9hZFI5uEOqgd1l0rlWXJdJYm4S9Yug==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /esbuild-netbsd-64@0.15.4: - resolution: {integrity: sha512-bOZ4E9nnmCpR8kekPe5fFZ0/vsZWWFUcNOrIu1gw2Yli74ALxkdijFT2m9JnfHQJCreFXUsNlYrzO2vD/ZTfKQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: false - optional: true - - /esbuild-openbsd-64@0.15.4: - resolution: {integrity: sha512-BvhLa8uHcVzdO492LGMfX9DjgZhhdjOSNSr6FizzpAwiQWE50RDoJ3G4VC6uQ1dULx/w+NtqeZP6hXOiahxrMw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: false - optional: true - - /esbuild-sunos-64@0.15.4: - resolution: {integrity: sha512-OnUVLjAmZK66gatr9Ft9zY1Xb+wzrJrhwiuW6VlAOGZg1uFC20JziySGzQ3t5VtmIiMbbV8SUgxsMz2jJ/gI5Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: false - optional: true - - /esbuild-windows-32@0.15.4: - resolution: {integrity: sha512-W8OLh+RoQfXKCyU5tMiRSVm68JWv1bNA90zXr8lSvaICqfjYV+YOsVWSI+HvU8gfYaePQNlhKrSIpf/t3qtFbA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /esbuild-windows-64@0.15.4: - resolution: {integrity: sha512-3//ZfrtStFrQzQyCU1gmdpFCa3aC9WJ2NPNu1D1faw1Op8coUdMOTzyKfy7eycPdmsALUAvla0PhgAvlvy0k5Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /esbuild-windows-arm64@0.15.4: - resolution: {integrity: sha512-OOb9RI0wlweBoHB1nrB/93h6Fnz6u89OzPe8zh6sp8+yNUzB15/eUmdZwLNjCrY9kJUWZ3JnRcLXxJeqot4W+w==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /esbuild@0.15.4: - resolution: {integrity: sha512-wSQJWQXCuQhRnRQQUNZpj8oyYJTvjFCuYzAOt07SWX9hLaA+idr3BWTTj8S2k7Fldhbkfpb4DYJTO3RWRhxKbA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/linux-loong64': 0.15.4 - esbuild-android-64: 0.15.4 - esbuild-android-arm64: 0.15.4 - esbuild-darwin-64: 0.15.4 - esbuild-darwin-arm64: 0.15.4 - esbuild-freebsd-64: 0.15.4 - esbuild-freebsd-arm64: 0.15.4 - esbuild-linux-32: 0.15.4 - esbuild-linux-64: 0.15.4 - esbuild-linux-arm: 0.15.4 - esbuild-linux-arm64: 0.15.4 - esbuild-linux-mips64le: 0.15.4 - esbuild-linux-ppc64le: 0.15.4 - esbuild-linux-riscv64: 0.15.4 - esbuild-linux-s390x: 0.15.4 - esbuild-netbsd-64: 0.15.4 - esbuild-openbsd-64: 0.15.4 - esbuild-sunos-64: 0.15.4 - esbuild-windows-32: 0.15.4 - esbuild-windows-64: 0.15.4 - esbuild-windows-arm64: 0.15.4 - dev: false - /esbuild@0.18.20: resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} @@ -6546,36 +6104,6 @@ packages: '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 - /esbuild@0.18.4: - resolution: {integrity: sha512-9rxWV/Cb2DMUXfe9aUsYtqg0KTlw146ElFH22kYeK9KVV1qT082X4lpmiKsa12ePiCcIcB686TQJxaGAa9TFvA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.18.4 - '@esbuild/android-arm64': 0.18.4 - '@esbuild/android-x64': 0.18.4 - '@esbuild/darwin-arm64': 0.18.4 - '@esbuild/darwin-x64': 0.18.4 - '@esbuild/freebsd-arm64': 0.18.4 - '@esbuild/freebsd-x64': 0.18.4 - '@esbuild/linux-arm': 0.18.4 - '@esbuild/linux-arm64': 0.18.4 - '@esbuild/linux-ia32': 0.18.4 - '@esbuild/linux-loong64': 0.18.4 - '@esbuild/linux-mips64el': 0.18.4 - '@esbuild/linux-ppc64': 0.18.4 - '@esbuild/linux-riscv64': 0.18.4 - '@esbuild/linux-s390x': 0.18.4 - '@esbuild/linux-x64': 0.18.4 - '@esbuild/netbsd-x64': 0.18.4 - '@esbuild/openbsd-x64': 0.18.4 - '@esbuild/sunos-x64': 0.18.4 - '@esbuild/win32-arm64': 0.18.4 - '@esbuild/win32-ia32': 0.18.4 - '@esbuild/win32-x64': 0.18.4 - dev: true - /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -7720,21 +7248,21 @@ packages: /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - /graphql-http@1.22.0(graphql@15.8.0): + /graphql-http@1.22.0(graphql@16.8.1): resolution: {integrity: sha512-9RBUlGJWBFqz9LwfpmAbjJL/8j/HCNkZwPBU5+Bfmwez+1Ay43DocMNQYpIWsWqH0Ftv6PTNAh2aRnnMCBJgLw==} engines: {node: '>=12'} peerDependencies: graphql: '>=0.11 <=16' dependencies: - graphql: 15.8.0(patch_hash=qb2u6q36ugvr6swjr2i3rg76ty) + graphql: 16.8.1(patch_hash=3zvcnrptpojleshpmtp6be677a) dev: false - /graphql-import-node@0.0.5(graphql@16.6.0): + /graphql-import-node@0.0.5(graphql@16.8.1): resolution: {integrity: sha512-OXbou9fqh9/Lm7vwXT0XoRN9J5+WCYKnbiTalgFDvkQERITRmcfncZs6aVABedd5B85yQU5EULS4a5pnbpuI0Q==} peerDependencies: graphql: '*' dependencies: - graphql: 16.6.0 + graphql: 16.8.1(patch_hash=3zvcnrptpojleshpmtp6be677a) dev: true /graphql@15.5.0: @@ -7742,16 +7270,10 @@ packages: engines: {node: '>= 10.x'} dev: true - /graphql@15.8.0(patch_hash=qb2u6q36ugvr6swjr2i3rg76ty): - resolution: {integrity: sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==} - engines: {node: '>= 10.x'} - dev: false - patched: true - - /graphql@16.6.0: - resolution: {integrity: sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==} + /graphql@16.8.1(patch_hash=3zvcnrptpojleshpmtp6be677a): + resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - dev: true + patched: true /gray-matter@4.0.3: resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} @@ -8258,6 +7780,7 @@ packages: /ipfs-http-client@55.0.0(node-fetch@3.3.2): resolution: {integrity: sha512-GpvEs7C7WL9M6fN/kZbjeh4Y8YN7rY8b18tVWZnKxRsVwM25cIFrRI8CwNt3Ugin9yShieI3i9sPyzYGMrLNnQ==} engines: {node: '>=14.0.0', npm: '>=3.0.0'} + deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details dependencies: '@ipld/dag-cbor': 7.0.3 '@ipld/dag-json': 8.0.11 @@ -8350,6 +7873,7 @@ packages: engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 + dev: true /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} @@ -9981,10 +9505,6 @@ packages: pkg-types: 1.0.3 ufo: 1.3.1 - /module-alias@2.2.2: - resolution: {integrity: sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==} - dev: true - /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -10032,6 +9552,7 @@ packages: /mylas@2.1.13: resolution: {integrity: sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==} engines: {node: '>=12.0.0'} + dev: true /mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -10305,6 +9826,7 @@ packages: /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + dev: true /npm-run-path@2.0.2: resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} @@ -10871,6 +10393,7 @@ packages: resolution: {integrity: sha512-Eb/MqCb1Iv/ok4m1FqIXqvUKPISufcjZ605hl3KM/n8GaX8zfhtgdLwZU3vKjuHGh2O9Rjog/bHTq8ofIShdng==} dependencies: queue-lit: 1.5.0 + dev: true /pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} @@ -11127,6 +10650,7 @@ packages: /queue-lit@1.5.0: resolution: {integrity: sha512-IslToJ4eiCEE9xwMzq3viOO5nH8sUWUCwoElrhNMozzr9IIt2qqvB4I+uHu/zJTQVqc9R5DFwok4ijNK1pU3fA==} + dev: true /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -11304,6 +10828,7 @@ packages: engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 + dev: true /reading-time@1.5.0: resolution: {integrity: sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==} @@ -11620,14 +11145,6 @@ packages: resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} dev: false - /rollup@3.25.1: - resolution: {integrity: sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.3 - dev: true - /rollup@3.29.4: resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} @@ -12692,6 +12209,7 @@ packages: mylas: 2.1.13 normalize-path: 3.0.0 plimit-lit: 1.5.0 + dev: true /tsconfig-paths@3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} @@ -12725,17 +12243,17 @@ packages: typescript: optional: true dependencies: - bundle-require: 4.0.1(esbuild@0.18.4) + bundle-require: 4.0.1(esbuild@0.18.20) cac: 6.7.14 chokidar: 3.5.3 debug: 4.3.4(supports-color@8.1.1) - esbuild: 0.18.4 + esbuild: 0.18.20 execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 postcss-load-config: 4.0.1 resolve-from: 5.0.0 - rollup: 3.25.1 + rollup: 3.29.4 source-map: 0.8.0-beta.0 sucrase: 3.32.0 tree-kill: 1.2.2