diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index b59c63c5e94..8c58b59823b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -36,7 +36,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@05963f47d870e2cb19a537396c1f668a348c7d8f # v3.24.8 + uses: github/codeql-action/init@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -47,7 +47,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@05963f47d870e2cb19a537396c1f668a348c7d8f # v3.24.8 + uses: github/codeql-action/autobuild@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 # ℹī¸ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -61,4 +61,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@05963f47d870e2cb19a537396c1f668a348c7d8f # v3.24.8 + uses: github/codeql-action/analyze@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 580e16b1927..779f39fe9cf 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -17,4 +17,4 @@ jobs: - name: "Checkout Repository" uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: "Dependency Review" - uses: actions/dependency-review-action@0fa40c3c10055986a88de3baa0d6ec17c5a894b3 # v4.2.3 + uses: actions/dependency-review-action@733dd5d4a5203f238c33806593ec0f5fc5343d8c # v4.2.4 diff --git a/.github/workflows/hash-backend-cd.yml b/.github/workflows/hash-backend-cd.yml index c4331194712..fbb505c015e 100644 --- a/.github/workflows/hash-backend-cd.yml +++ b/.github/workflows/hash-backend-cd.yml @@ -522,7 +522,7 @@ jobs: if: ${{ failure() }} steps: - name: Slack Notification - uses: rtCamp/action-slack-notify@4e5fb42d249be6a45a298f3c9543b111b02f7907 + uses: rtCamp/action-slack-notify@72c987ec9674843e8a882c6beb4fb043c1ea926e env: SLACK_LINK_NAMES: true SLACK_MESSAGE: "Error deploying the HASH backend <@U0143NL4GMP> <@U027NPY8Y3X> <@U02NLJY0FGX>" diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 534dab564e8..1bf802a8891 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -188,7 +188,7 @@ jobs: mv "$tmp" clippy.sarif - name: Upload SARIF file - uses: github/codeql-action/upload-sarif@05963f47d870e2cb19a537396c1f668a348c7d8f # v3.24.8 + uses: github/codeql-action/upload-sarif@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 if: always() && steps.lints.outputs.has-clippy == 'true' with: sarif_file: ${{ matrix.directory }}/clippy.sarif diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 32d7c322df1..050dbb1ccb2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,7 +27,7 @@ jobs: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Notify Slack on failure - uses: rtCamp/action-slack-notify@4e5fb42d249be6a45a298f3c9543b111b02f7907 + uses: rtCamp/action-slack-notify@72c987ec9674843e8a882c6beb4fb043c1ea926e if: ${{ failure() }} env: SLACK_LINK_NAMES: true diff --git a/.github/workflows/semgrep.yml b/.github/workflows/semgrep.yml index 12909dab008..9f7b9cabfc5 100644 --- a/.github/workflows/semgrep.yml +++ b/.github/workflows/semgrep.yml @@ -43,7 +43,7 @@ jobs: files: "semgrep.sarif" - name: Upload SARIF file for GitHub Advanced Security Dashboard - uses: github/codeql-action/upload-sarif@05963f47d870e2cb19a537396c1f668a348c7d8f # v3.24.8 + uses: github/codeql-action/upload-sarif@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 if: steps.sarif_file_check.outputs.files_exists == 'true' with: sarif_file: semgrep.sarif diff --git a/.github/workflows/tf-apply-hash.yml b/.github/workflows/tf-apply-hash.yml index 7c775bf1cda..ad0ab706506 100644 --- a/.github/workflows/tf-apply-hash.yml +++ b/.github/workflows/tf-apply-hash.yml @@ -63,7 +63,7 @@ jobs: env: ${{ matrix.env }} - name: Notify Slack on failure - uses: rtCamp/action-slack-notify@4e5fb42d249be6a45a298f3c9543b111b02f7907 + uses: rtCamp/action-slack-notify@72c987ec9674843e8a882c6beb4fb043c1ea926e if: ${{ failure() }} env: SLACK_LINK_NAMES: true diff --git a/Cargo.toml b/Cargo.toml index dc6a1eec764..338b35d97e9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,7 +53,7 @@ type-system.path = "libs/@blockprotocol/type-system/rust" error-stack = { version = "0.4.1", default-features = false } # Shared third-party dependencies -bytes = "1.5.0" +bytes = "1.6.0" clap = { version = "4.5.3", default-features = false, features = ["std"] } email_address = { version = "0.2.4", default-features = false } futures = { version = "0.3.30", default-features = false } diff --git a/apps/hash-ai-worker-ts/package.json b/apps/hash-ai-worker-ts/package.json index 44aab081743..f51efd1892a 100644 --- a/apps/hash-ai-worker-ts/package.json +++ b/apps/hash-ai-worker-ts/package.json @@ -4,6 +4,7 @@ "private": true, "description": "A TypeScript 'AI' worker for HASH", "license": "AGPL-3.0", + "type": "module", "exports": { ".": "./src/main.ts", "./workflows": "./src/workflows.ts", diff --git a/apps/hash-ai-worker-ts/scripts/bundle-workflow-code.ts b/apps/hash-ai-worker-ts/scripts/bundle-workflow-code.ts index a7c7d74adeb..3733b739389 100644 --- a/apps/hash-ai-worker-ts/scripts/bundle-workflow-code.ts +++ b/apps/hash-ai-worker-ts/scripts/bundle-workflow-code.ts @@ -1,8 +1,16 @@ import { writeFile } from "node:fs/promises"; +import { createRequire } from "node:module"; import * as path from "node:path"; +import { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; import { bundleWorkflowCode } from "@temporalio/worker"; +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const require = createRequire(import.meta.url); + async function bundle() { const { code } = await bundleWorkflowCode({ workflowsPath: require.resolve("../src/workflows"), diff --git a/apps/hash-ai-worker-ts/src/activities/infer-entities/log.ts b/apps/hash-ai-worker-ts/src/activities/infer-entities/log.ts index 64feb7491c3..d1a0084e0e6 100644 --- a/apps/hash-ai-worker-ts/src/activities/infer-entities/log.ts +++ b/apps/hash-ai-worker-ts/src/activities/infer-entities/log.ts @@ -1,8 +1,12 @@ import fs from "node:fs"; -import path from "node:path"; +import path, { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; import { Context } from "@temporalio/activity"; +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + export const log = (message: string) => { const requestId = Context.current().info.workflowExecution.workflowId; diff --git a/apps/hash-ai-worker-ts/src/activities/infer-entities/persist-entities/create-entities.ts b/apps/hash-ai-worker-ts/src/activities/infer-entities/persist-entities/create-entities.ts index 0e71a55b1f4..9074e4698ec 100644 --- a/apps/hash-ai-worker-ts/src/activities/infer-entities/persist-entities/create-entities.ts +++ b/apps/hash-ai-worker-ts/src/activities/infer-entities/persist-entities/create-entities.ts @@ -406,7 +406,17 @@ export const createEntities = async ({ proposedEntity, operation: "create", status: "failure", - failureReason: `Link entities must have both a sourceEntityId and a targetEntityId.${originalProposal ? `You originally proposed that entityId ${proposedEntity.entityId} should have sourceEntityId ${originalProposal.sourceEntityId?.toString() ?? ""} and targetEntityId ${originalProposal.targetEntityId?.toString() ?? ""}.` : ""}`, + failureReason: `Link entities must have both a sourceEntityId and a targetEntityId.${ + originalProposal + ? `You originally proposed that entityId ${ + proposedEntity.entityId + } should have sourceEntityId ${ + originalProposal.sourceEntityId?.toString() ?? "" + } and targetEntityId ${ + originalProposal.targetEntityId?.toString() ?? "" + }.` + : "" + }`, }; return; } diff --git a/apps/hash-ai-worker-ts/src/activities/shared/embeddings.ts b/apps/hash-ai-worker-ts/src/activities/shared/embeddings.ts index 774ef8a9b8b..bfadbf5a4db 100644 --- a/apps/hash-ai-worker-ts/src/activities/shared/embeddings.ts +++ b/apps/hash-ai-worker-ts/src/activities/shared/embeddings.ts @@ -34,7 +34,11 @@ const createPropertyEmbeddingInput = (params: { propertyTypeSchema: Pick; propertyValue: EntityPropertyValue; }): string => { - return `${params.propertyTypeSchema.title}: ${typeof params.propertyValue === "string" ? params.propertyValue : JSON.stringify(params.propertyValue)}`; + return `${params.propertyTypeSchema.title}: ${ + typeof params.propertyValue === "string" + ? params.propertyValue + : JSON.stringify(params.propertyValue) + }`; }; /** diff --git a/apps/hash-ai-worker-ts/src/main.ts b/apps/hash-ai-worker-ts/src/main.ts index 15e63831e76..a3505b50d18 100644 --- a/apps/hash-ai-worker-ts/src/main.ts +++ b/apps/hash-ai-worker-ts/src/main.ts @@ -1,5 +1,8 @@ import * as http from "node:http"; +import { createRequire } from "node:module"; import * as path from "node:path"; +import { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; import { createGraphClient } from "@local/hash-backend-utils/create-graph-client"; import { getRequiredEnv } from "@local/hash-backend-utils/environment"; @@ -9,6 +12,11 @@ import { config } from "dotenv-flow"; import { createAiActivities, createGraphActivities } from "./activities"; +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const require = createRequire(import.meta.url); + export const monorepoRootDir = path.resolve(__dirname, "../../.."); config({ silent: true, path: monorepoRootDir }); diff --git a/apps/hash-ai-worker-ts/vitest.config.mjs b/apps/hash-ai-worker-ts/vitest.config.js similarity index 100% rename from apps/hash-ai-worker-ts/vitest.config.mjs rename to apps/hash-ai-worker-ts/vitest.config.js diff --git a/apps/hash-api/package.json b/apps/hash-api/package.json index 6888038fa1f..3d006a9f562 100644 --- a/apps/hash-api/package.json +++ b/apps/hash-api/package.json @@ -4,6 +4,7 @@ "private": true, "description": "API and data store for HASH", "license": "AGPL-3.0", + "type": "module", "scripts": { "build:docker": "docker buildx build --tag hash-api --file ../../infra/docker/api/prod/Dockerfile ../../ --load", "codegen": "rimraf './src/**/*.gen.*'; graphql-codegen --config codegen.config.ts", @@ -24,7 +25,7 @@ "@aws-sdk/credential-provider-node": "3.436.0", "@aws-sdk/s3-presigned-post": "3.436.0", "@aws-sdk/s3-request-presigner": "3.436.0", - "@blockprotocol/core": "0.1.2", + "@blockprotocol/core": "0.1.3", "@blockprotocol/type-system": "0.1.1", "@graphql-tools/schema": "8.5.0", "@linear/sdk": "6.0.0", @@ -52,6 +53,7 @@ "@sentry/node": "7.93.0", "@snowplow/node-tracker": "3.3.1", "@temporalio/client": "1.8.1", + "@temporalio/proto": "1.8.1", "@types/ws": "8.5.10", "agentkeepalive": "4.2.1", "apollo-datasource": "3.3.2", @@ -96,7 +98,7 @@ "ws": "8.15.1" }, "devDependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@graphql-codegen/cli": "5.0.0", "@graphql-codegen/introspection": "2.2.3", "@graphql-codegen/typescript": "2.8.7", diff --git a/apps/hash-api/src/ai/gpt/README.md b/apps/hash-api/src/ai/gpt/README.md index 81e3808c8da..bfb87dd676b 100644 --- a/apps/hash-api/src/ai/gpt/README.md +++ b/apps/hash-api/src/ai/gpt/README.md @@ -2,6 +2,18 @@ This folder contains functions which support the use of HASH as an external datastore for a custom GPT called HashGPT. +## GPT Instructions + +These instructions are set in the ChatGPT interface. They are repeated here to allow them to be version controlled. + +Update them if you find that amending the GPT's instructions improves its performance. + +> HashGPT is designed to give users a way of exploring the contents of the HASH knowledge graph through natural language queries. It helps users understand the contents of entities in their 'web' (an area of the HASH graph that belongs to them), or webs of the organizations they belong to. It can suggest follow-up questions that the user might like to ask about any data, based on interesting characteristics within it. HashGPT presents its findings in an informative and user-friendly manner, which may include formatted tables, graphs, and other visual aids to enhance understanding – it uses the code interpreter for these visual aids wherever possible, rather than generating images. +> +> The GPT ensures clarity and depth in responses. It never invents entities which were not included in the API response. The user values accuracy above all else – the GPT is careful to review the data thoroughly before providing an answer which takes full account of all relevant information. The GPT also biases heavily towards only using the facts in the data it gets from the HASH graph to offer answers, avoiding speculation about things not confirmed by the data unless absolutely necessary or unless the user requests it. Again, the most important thing for users is accuracy – they depend on data in the graph being represented accurately, including which entities link to which other entities. Literal, accurate and comprehensive use of data in the graph is key! Links and entities are never invented or misrepresented by HashGPT. +> +> Whenever HashGPT mentions an entity, it includes a link for the user to view more about the entity, as provided by the HASH API as entityHref. + ## Development ### Fresh local instance setup diff --git a/apps/hash-api/src/ai/gpt/generate-hashgpt-schema.ts b/apps/hash-api/src/ai/gpt/generate-hashgpt-schema.ts index ce34b3e45f2..2765417229a 100644 --- a/apps/hash-api/src/ai/gpt/generate-hashgpt-schema.ts +++ b/apps/hash-api/src/ai/gpt/generate-hashgpt-schema.ts @@ -1,9 +1,13 @@ import { writeFileSync } from "node:fs"; -import { resolve } from "node:path"; +import { dirname, resolve } from "node:path"; +import { fileURLToPath } from "node:url"; import { apiOrigin } from "@local/hash-isomorphic-utils/environment"; import * as generator from "ts-json-schema-generator"; +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + const config = { diagnostics: false, noTopRef: true, @@ -22,6 +26,22 @@ const { .createGenerator(config) .createSchema("GptQueryEntitiesResponseBody"); +const { $ref: queryTypesRequestRef, definitions: queryTypesRequestDefs } = + generator + .createGenerator({ + ...config, + path: resolve(__dirname, "gpt-query-types.ts"), + }) + .createSchema("GptQueryTypesRequestBody"); + +const { $ref: queryTypesResponseRef, definitions: queryTypesResponseDefs } = + generator + .createGenerator({ + ...config, + path: resolve(__dirname, "gpt-query-types.ts"), + }) + .createSchema("GptQueryTypesResponseBody"); + const { $ref: getUserWebsResponseRef, definitions: getUserWebsResponseDefs } = generator .createGenerator({ @@ -34,6 +54,8 @@ const components = { schemas: { ...queryEntitiesRequestDefs, ...queryEntitiesResponseDefs, + ...queryTypesRequestDefs, + ...queryTypesResponseDefs, ...getUserWebsResponseDefs, }, }; @@ -97,6 +119,31 @@ const openApiSchema = { }, }, }, + "/gpt/entities/query-types": { + post: { + description: + "Retrieve entity types which match a semantic query, or which belong to a specific web", + operationId: "queryTypes", + "x-openai-isConsequential:": false, + requestBody: { + content: { + "application/json": { + schema: { $ref: queryTypesRequestRef }, + }, + }, + }, + responses: { + "200": { + description: "response", + content: { + "application/json": { + schema: { $ref: queryTypesResponseRef }, + }, + }, + }, + }, + }, + }, }, components, }; diff --git a/apps/hash-api/src/ai/gpt/gpt-query-entities.ts b/apps/hash-api/src/ai/gpt/gpt-query-entities.ts index 3af3e832a7a..3d2d43816ba 100644 --- a/apps/hash-api/src/ai/gpt/gpt-query-entities.ts +++ b/apps/hash-api/src/ai/gpt/gpt-query-entities.ts @@ -1,7 +1,11 @@ -import { typedEntries, typedKeys } from "@local/advanced-types/typed-entries"; +import { typedEntries } from "@local/advanced-types/typed-entries"; +import type { + CreateEmbeddingsParams, + CreateEmbeddingsReturn, +} from "@local/hash-isomorphic-utils/ai-inference-types"; +import { frontendUrl } from "@local/hash-isomorphic-utils/environment"; import { currentTimeInstantTemporalAxes } from "@local/hash-isomorphic-utils/graph-queries"; import { systemPropertyTypes } from "@local/hash-isomorphic-utils/ontology-type-ids"; -import { stringifyPropertyValue } from "@local/hash-isomorphic-utils/stringify-property-value"; import type { OrganizationProperties, UserProperties, @@ -21,32 +25,25 @@ import { import { getEntityTypeById, getOutgoingLinksForEntity, - getPropertyTypeById, getPropertyTypeForEntity, mapGraphApiSubgraphToSubgraph, } from "@local/hash-subgraph/stdlib"; import type { RequestHandler } from "express"; import { getLatestEntityById } from "../../graph/knowledge/primitive/entity"; +import { genId } from "../../util"; +import type { SimpleEntityType } from "./shared/entity-types"; +import { getSimpleEntityType } from "./shared/entity-types"; +import { stringifyResults } from "./shared/stringify-results"; import type { SimpleWeb } from "./shared/webs"; import { getUserSimpleWebs } from "./shared/webs"; -const stringifyResults = ( - items: SimpleWeb[] | SimpleEntityType[] | SimpleEntity[], -) => - items - .map((item) => - Object.entries(item) - .map(([key, value]) => `${key}: ${stringifyPropertyValue(value)}`) - .join("\n"), - ) - .join("---------------\n"); - export type GptQueryEntitiesRequestBody = { /** * The titles of specific types of entities to retrieve. Types are typically capitalized, e.g. User, Organization. * You may omit this field to retrieve all entities visible to the user, but this may be a slow operation. * If types is omitted, a 'webs' or 'entityUuids' filter should be provided to limit the number of entities returned. + * If you're unsure what types to request, you can use the queryTypes endpoint to get a list of available types. */ types?: string[]; /** @@ -56,6 +53,10 @@ export type GptQueryEntitiesRequestBody = { * They may also refer to 'my graph' or 'Acme's graph'. */ webUuids?: string[]; + /** + * A natural language text query that looks for entities with properties which are semantically close to the query. + */ + query?: string; /** * Limit the response to the entities with the specified entityUuids. * Use this filter if you want to explore the graph rooted at specific entities. @@ -72,10 +73,11 @@ export type GptQueryEntitiesRequestBody = { * * If a given entity has no links in the return data, it may be that it DOES have links in the graph, * but the traversal depth was not sufficient to reach them. + * You can make a follow-up query with the entityUuid and a non-zero traversal depth to check. * * If an API response is too large, it is worth repeating it with a lower or 0 traversalDepth. * - * @default 4 + * @default 2 */ traversalDepth?: number; /** @@ -85,31 +87,6 @@ export type GptQueryEntitiesRequestBody = { includeDrafts?: boolean; }; -/** - * A simplified object representing an entity type, which will be converted to plain text for the response. - */ -export type SimpleEntityType = { - /** The entity type's title / name */ - title: string; - /** A description of the entity type */ - description: string; - /** - * The properties that entities of this type may have – the keys are the property titles, and the values are the property - * descriptions. - */ - properties: Record; - /** - * The links that entities of this type may have – the keys are the link titles, and the values are the link - * descriptions. - */ - links: Record; - /** - * The unique id for this entity type. The name of the web it belongs to can be found in this id prefixed by an @, - * e.g. `@hash` or `@alice` - */ - entityTypeId: string; -}; - type BaseSimpleEntityFields = { /** Whether or not the entity is in draft */ draft: boolean; @@ -119,6 +96,8 @@ type BaseSimpleEntityFields = { entityType: string; /** The properties of the entity, with the property title as the key */ properties: Record; + /** A link to view full details of the entity which users can follow to find out more */ + entityHref: string; }; export type SimpleLink = BaseSimpleEntityFields & { @@ -172,6 +151,7 @@ export type GptQueryEntitiesResponseBody = const createBaseSimpleEntityFields = ( subgraph: Subgraph, entity: Entity, + shortname: string, ): BaseSimpleEntityFields => { const typeSchema = getEntityTypeById(subgraph, entity.metadata.entityTypeId); if (!typeSchema) { @@ -190,11 +170,14 @@ const createBaseSimpleEntityFields = ( properties[propertyType.title] = propertyValue; } + const entityUuid = extractEntityUuidFromEntityId( + entity.metadata.recordId.entityId, + ); + return { draft: !!extractDraftIdFromEntityId(entity.metadata.recordId.entityId), - entityUuid: extractEntityUuidFromEntityId( - entity.metadata.recordId.entityId, - ), + entityUuid, + entityHref: `${frontendUrl}/@${shortname}/entities/${entityUuid}`, entityType: typeSchema.schema.title, properties, }; @@ -218,11 +201,27 @@ export const gptQueryEntities: RequestHandler< return; } - const { types, entityUuids, webUuids, traversalDepth, includeDrafts } = + const { types, query, entityUuids, webUuids, traversalDepth, includeDrafts } = req.body; const depth = traversalDepth ?? 2; + const semanticSearchString = query + ? await req.context.temporalClient.workflow + .execute< + (params: CreateEmbeddingsParams) => Promise + >("createEmbeddings", { + taskQueue: "ai", + args: [ + { + input: [query], + }, + ], + workflowId: genId(), + }) + .then(({ embeddings }) => embeddings[0]) + : null; + const queryResponse: GptQueryEntitiesResponseBody = await req.context.graphApi .getEntitiesByQuery(user.accountId, { query: { @@ -263,7 +262,7 @@ export const gptQueryEntities: RequestHandler< }, ] : []), - ...(webUuids + ...(webUuids?.length ? [ { any: webUuids.map((webUuid) => ({ @@ -272,6 +271,17 @@ export const gptQueryEntities: RequestHandler< }, ] : []), + ...(semanticSearchString + ? [ + { + cosineDistance: [ + { path: ["embedding"] }, + { parameter: semanticSearchString }, + { parameter: 0.8 }, + ], + }, + ] + : []), { equal: [{ path: ["archived"] }, { parameter: false }] }, ], }, @@ -362,52 +372,11 @@ export const gptQueryEntities: RequestHandler< (type) => type.entityTypeId === vertex.inner.metadata.entityTypeId, ); if (!entityType) { - const typeSchema = getEntityTypeById( + const simpleType = getSimpleEntityType( subgraph, vertex.inner.metadata.entityTypeId, - )?.schema; - if (!typeSchema) { - throw new Error("Entity type not found in subgraph"); - } - - const properties: SimpleEntityType["properties"] = {}; - for (const [_baseUrl, propertySchema] of typedEntries( - typeSchema.properties, - )) { - const propertyTypeId = - "$ref" in propertySchema - ? propertySchema.$ref - : propertySchema.items.$ref; - - const propertyType = getPropertyTypeById( - subgraph, - propertyTypeId, - ); - if (!propertyType) { - throw new Error("Property type not found in subgraph"); - } - - properties[propertyType.schema.title] = - propertyType.schema.description ?? ""; - } - - const links: SimpleEntityType["links"] = {}; - for (const linkTypeId of typedKeys(typeSchema.links ?? {})) { - const linkType = getEntityTypeById(subgraph, linkTypeId); - if (!linkType) { - throw new Error("Link type not found in subgraph"); - } - - links[linkType.schema.title] = linkType.schema.description ?? ""; - } - - entityTypes.push({ - title: typeSchema.title, - description: typeSchema.description ?? "", - entityTypeId: vertex.inner.metadata.entityTypeId, - properties, - links, - }); + ); + entityTypes.push(simpleType); } /** @@ -416,6 +385,7 @@ export const gptQueryEntities: RequestHandler< const baseFields = createBaseSimpleEntityFields( subgraph, vertex.inner, + web.name, ); const links: SimpleEntity["links"] = []; @@ -430,7 +400,8 @@ export const gptQueryEntities: RequestHandler< ); } links.push({ - ...createBaseSimpleEntityFields(subgraph, link), + /** @todo account for link being in a different web to the source entity */ + ...createBaseSimpleEntityFields(subgraph, link, web.name), targetEntityUuid: extractEntityUuidFromEntityId( link.linkData.rightEntityId, ), diff --git a/apps/hash-api/src/ai/gpt/gpt-query-types.ts b/apps/hash-api/src/ai/gpt/gpt-query-types.ts new file mode 100644 index 00000000000..c3869302c41 --- /dev/null +++ b/apps/hash-api/src/ai/gpt/gpt-query-types.ts @@ -0,0 +1,145 @@ +import { typedValues } from "@local/advanced-types/typed-entries"; +import type { + CreateEmbeddingsParams, + CreateEmbeddingsReturn, +} from "@local/hash-isomorphic-utils/ai-inference-types"; +import { currentTimeInstantTemporalAxes } from "@local/hash-isomorphic-utils/graph-queries"; +import { mapGraphApiSubgraphToSubgraph } from "@local/hash-subgraph/stdlib"; +import type { RequestHandler } from "express"; + +import { genId } from "../../util"; +import type { SimpleEntityType } from "./shared/entity-types"; +import { getSimpleEntityType } from "./shared/entity-types"; +import { stringifyResults } from "./shared/stringify-results"; + +export type GptQueryTypesRequestBody = { + /** + * Limit the response to types within the specified webs, identified by the web's uuid. + * Note that a user may have entities of types from outside their web. + */ + webUuids?: string[]; + /** + * A natural language text query that looks for entity types which are semantically close to the query. + */ + query?: string; +}; + +export type GptQueryTypesResponseBody = + | { error: string } + | { + /** + * The entity types that various entities in this response belong to. + * Each describes the properties and outgoing links that an entity of this type may have. + * They also have a unique id, which contains the name of the web that the entity type belongs to prefixed by an + * @, e.g. `@hash` + */ + entityTypes: string; + }; + +export const gptQueryTypes: RequestHandler< + Record, + GptQueryTypesResponseBody, + GptQueryTypesRequestBody + // eslint-disable-next-line @typescript-eslint/no-misused-promises +> = async (req, res) => { + const { user } = req; + + if (!user) { + res.status(401).send({ error: "No authenticated user" }); + return; + } + + if (!user.isAccountSignupComplete) { + res.status(401).send({ error: "User has not completed signup." }); + return; + } + + const { query, webUuids } = req.body; + + const semanticSearchString = query + ? await req.context.temporalClient.workflow + .execute< + (params: CreateEmbeddingsParams) => Promise + >("createEmbeddings", { + taskQueue: "ai", + args: [ + { + input: [query], + }, + ], + workflowId: genId(), + }) + .then(({ embeddings }) => embeddings[0]) + : null; + + const queryResponse: GptQueryTypesResponseBody = await req.context.graphApi + .getEntityTypesByQuery(user.accountId, { + filter: { + all: [ + ...(webUuids?.length + ? [ + { + any: webUuids.map((webUuid) => ({ + equal: [{ path: ["ownedById"] }, { parameter: webUuid }], + })), + }, + ] + : []), + ...(semanticSearchString + ? [ + { + cosineDistance: [ + { path: ["embedding"] }, + { parameter: semanticSearchString }, + { parameter: 0.9 }, + ], + }, + ] + : []), + ], + }, + includeDrafts: false, + temporalAxes: currentTimeInstantTemporalAxes, + graphResolveDepths: { + inheritsFrom: { outgoing: 255 }, + constrainsValuesOn: { outgoing: 255 }, + constrainsPropertiesOn: { outgoing: 255 }, + constrainsLinksOn: { outgoing: 255 }, + constrainsLinkDestinationsOn: { outgoing: 255 }, + isOfType: { outgoing: 1 }, + hasLeftEntity: { incoming: 0, outgoing: 0 }, + hasRightEntity: { incoming: 0, outgoing: 0 }, + }, + }) + .then(async (response) => { + const entityTypes: SimpleEntityType[] = []; + + const subgraph = mapGraphApiSubgraphToSubgraph(response.data); + + const vertices = typedValues(subgraph.vertices) + .map((vertex) => typedValues(vertex)) + .flat(); + + for (const vertex of vertices) { + if (vertex.kind === "entityType") { + const entityType = entityTypes.find( + (type) => type.entityTypeId === vertex.inner.schema.$id, + ); + + if (!entityType) { + entityTypes.push( + getSimpleEntityType(subgraph, vertex.inner.schema.$id), + ); + } + } + } + + return { + entityTypes: ` + ---- Entity Types ---- + ${stringifyResults(entityTypes)}`, + }; + }); + + res.status(200).json(queryResponse); +}; diff --git a/apps/hash-api/src/ai/gpt/shared/entity-types.ts b/apps/hash-api/src/ai/gpt/shared/entity-types.ts new file mode 100644 index 00000000000..36dc2e406fe --- /dev/null +++ b/apps/hash-api/src/ai/gpt/shared/entity-types.ts @@ -0,0 +1,78 @@ +import type { VersionedUrl } from "@blockprotocol/type-system/slim"; +import { typedEntries, typedKeys } from "@local/advanced-types/typed-entries"; +import type { Subgraph } from "@local/hash-subgraph"; +import { + getEntityTypeById, + getPropertyTypeById, +} from "@local/hash-subgraph/stdlib"; + +/** + * A simplified object representing an entity type, which will be converted to plain text for the response. + */ +export type SimpleEntityType = { + /** The entity type's title / name */ + title: string; + /** A description of the entity type */ + description: string; + /** + * The properties that entities of this type may have – the keys are the property titles, and the values are the property + * descriptions. + */ + properties: Record; + /** + * The links that entities of this type may have – the keys are the link titles, and the values are the link + * descriptions. + */ + links: Record; + /** + * The unique id for this entity type. The name of the web it belongs to can be found in this id prefixed by an @, + * e.g. `@hash` or `@alice` + */ + entityTypeId: string; +}; + +export const getSimpleEntityType = ( + subgraph: Subgraph, + entityTypeId: VersionedUrl, +) => { + const typeSchema = getEntityTypeById(subgraph, entityTypeId)?.schema; + if (!typeSchema) { + throw new Error("Entity type not found in subgraph"); + } + + const properties: SimpleEntityType["properties"] = {}; + for (const [_baseUrl, propertySchema] of typedEntries( + typeSchema.properties, + )) { + const propertyTypeId = + "$ref" in propertySchema + ? propertySchema.$ref + : propertySchema.items.$ref; + + const propertyType = getPropertyTypeById(subgraph, propertyTypeId); + if (!propertyType) { + throw new Error("Property type not found in subgraph"); + } + + properties[propertyType.schema.title] = + propertyType.schema.description ?? ""; + } + + const links: SimpleEntityType["links"] = {}; + for (const linkTypeId of typedKeys(typeSchema.links ?? {})) { + const linkType = getEntityTypeById(subgraph, linkTypeId); + if (!linkType) { + throw new Error("Link type not found in subgraph"); + } + + links[linkType.schema.title] = linkType.schema.description ?? ""; + } + + return { + title: typeSchema.title, + description: typeSchema.description ?? "", + entityTypeId, + properties, + links, + }; +}; diff --git a/apps/hash-api/src/ai/gpt/shared/stringify-results.ts b/apps/hash-api/src/ai/gpt/shared/stringify-results.ts new file mode 100644 index 00000000000..a7945c44c80 --- /dev/null +++ b/apps/hash-api/src/ai/gpt/shared/stringify-results.ts @@ -0,0 +1,10 @@ +import { stringifyPropertyValue } from "@local/hash-isomorphic-utils/stringify-property-value"; + +export const stringifyResults = (items: object[]) => + items + .map((item) => + Object.entries(item) + .map(([key, value]) => `${key}: ${stringifyPropertyValue(value)}`) + .join("\n"), + ) + .join("---------------\n"); diff --git a/apps/hash-api/src/generate-ontology-type-ids.ts b/apps/hash-api/src/generate-ontology-type-ids.ts index 2802f715b62..e3974bb0793 100644 --- a/apps/hash-api/src/generate-ontology-type-ids.ts +++ b/apps/hash-api/src/generate-ontology-type-ids.ts @@ -2,6 +2,8 @@ import "@local/hash-backend-utils/environment"; import { writeFile } from "node:fs/promises"; import * as path from "node:path"; +import { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; import { createGraphClient } from "@local/hash-backend-utils/create-graph-client"; import { Logger } from "@local/hash-backend-utils/logger"; @@ -32,6 +34,9 @@ import { import { getPropertyTypes } from "./graph/ontology/primitive/property-type"; import { getRequiredEnv } from "./util"; +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + const outputFileName = "ontology-type-ids.ts"; const convertTitleToCamelCase = (title: string) => diff --git a/apps/hash-api/src/graph/ensure-system-graph-is-initialized/migrate-ontology-types.ts b/apps/hash-api/src/graph/ensure-system-graph-is-initialized/migrate-ontology-types.ts index 1513d109327..193f6716e8b 100644 --- a/apps/hash-api/src/graph/ensure-system-graph-is-initialized/migrate-ontology-types.ts +++ b/apps/hash-api/src/graph/ensure-system-graph-is-initialized/migrate-ontology-types.ts @@ -1,5 +1,6 @@ import { readdir } from "node:fs/promises"; -import path from "node:path"; +import path, { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; import type { Logger } from "@local/hash-backend-utils/logger"; @@ -10,6 +11,9 @@ import type { MigrationState, } from "./migrate-ontology-types/types"; +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + /** * Migrate the ontology types in the Graph API. */ diff --git a/apps/hash-api/src/graph/ensure-system-graph-is-initialized/migrate-ontology-types/util.ts b/apps/hash-api/src/graph/ensure-system-graph-is-initialized/migrate-ontology-types/util.ts index dfb3849f402..8ba280eddbb 100644 --- a/apps/hash-api/src/graph/ensure-system-graph-is-initialized/migrate-ontology-types/util.ts +++ b/apps/hash-api/src/graph/ensure-system-graph-is-initialized/migrate-ontology-types/util.ts @@ -1,6 +1,7 @@ /* eslint-disable no-param-reassign */ import fs from "node:fs"; -import path from "node:path"; +import path, { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; import type { Array, @@ -100,6 +101,9 @@ import { import type { MigrationState } from "./types"; import { upgradeEntityTypeDependencies } from "./util/upgrade-entity-type-dependencies"; +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + const systemTypeDomain = "https://hash.ai"; export const generateSystemTypeBaseUrl = ({ diff --git a/apps/hash-api/src/graphql/resolvers/flows/runs.ts b/apps/hash-api/src/graphql/resolvers/flows/runs.ts new file mode 100644 index 00000000000..0f8519f5cb1 --- /dev/null +++ b/apps/hash-api/src/graphql/resolvers/flows/runs.ts @@ -0,0 +1,335 @@ +import type { + Client as TemporalClient, + WorkflowExecutionInfo, +} from "@temporalio/client"; +import * as proto from "@temporalio/proto"; + +import { isProdEnv } from "../../../lib/env-config"; +import type { + FlowRun, + FlowRunStatus, + QueryGetFlowRunsArgs, + ResolverFn, + StepRun, +} from "../../api-types.gen"; +import { FlowStepStatus } from "../../api-types.gen"; +import type { GraphQLContext } from "../../context"; + +const parseHistoryItemPayload = ( + inputOrResults: proto.temporal.api.common.v1.IPayloads | null | undefined, +) => + inputOrResults?.payloads + ?.map(({ data }) => { + if (!data) { + return data; + } + return JSON.parse(data.toString()); + }) + .filter((item) => item !== undefined); + +const eventTimeIsoStringFromEvent = ( + event?: proto.temporal.api.history.v1.IHistoryEvent, +) => { + const { eventTime } = event ?? {}; + if (!eventTime?.seconds) { + return; + } + + return new Date( + eventTime.seconds.toInt() * 1000 + + (eventTime.nanos ? eventTime.nanos / 1_000_000 : 0), + ).toISOString(); +}; + +/** + * Get details from an ActivityTaskScheduledEvent + */ +const getActivityScheduledDetails = ( + event: proto.temporal.api.history.v1.IHistoryEvent, +) => { + if ( + event.eventType !== + proto.temporal.api.enums.v1.EventType.EVENT_TYPE_ACTIVITY_TASK_SCHEDULED + ) { + throw new Error( + `Unexpected event type ${event.eventType}, expected ${proto.temporal.api.enums.v1.EventType.EVENT_TYPE_ACTIVITY_TASK_SCHEDULED}`, + ); + } + + if (!event.activityTaskScheduledEventAttributes?.activityId) { + throw new Error("No activityId on scheduled event"); + } + + const scheduledAt = eventTimeIsoStringFromEvent(event); + if (!scheduledAt) { + throw new Error("No eventTime on scheduled event"); + } + + const inputs = parseHistoryItemPayload( + event.activityTaskScheduledEventAttributes.input, + ); + + return { + activityId: event.activityTaskScheduledEventAttributes.activityId, + activityType: event.activityTaskScheduledEventAttributes.activityType?.name, + inputs, + scheduledAt, + startedAt: undefined, + attempt: 1, + }; +}; + +/** + * Get the history event where this activity was last scheduled, which is the only one that contains the activityId, + * and tells us when it was last scheduled. + */ +const getActivityStartedDetails = ( + events: proto.temporal.api.history.v1.IHistoryEvent[], + attributes: + | proto.temporal.api.history.v1.IActivityTaskStartedEventAttributes + | proto.temporal.api.history.v1.IActivityTaskCompletedEventAttributes + | proto.temporal.api.history.v1.IActivityTaskCanceledEventAttributes + | proto.temporal.api.history.v1.IActivityTaskCancelRequestedEventAttributes + | proto.temporal.api.history.v1.IActivityTaskTimedOutEventAttributes + | proto.temporal.api.history.v1.IActivityTaskFailedEventAttributes, +) => { + const { scheduledEventId } = attributes; + + const scheduledEvent = events.findLast( + (item) => + item.eventId?.toString() === scheduledEventId?.toString() && + item.eventType === + proto.temporal.api.enums.v1.EventType + .EVENT_TYPE_ACTIVITY_TASK_SCHEDULED, + ); + + if (!scheduledEvent) { + throw new Error("Could not find scheduled event for activity in history"); + } + + const { activityId, activityType, scheduledAt, inputs } = + getActivityScheduledDetails(scheduledEvent); + + const startedEvent = events.findLast( + (item) => + item.eventType === + proto.temporal.api.enums.v1.EventType + .EVENT_TYPE_ACTIVITY_TASK_STARTED && + item.activityTaskStartedEventAttributes?.scheduledEventId?.toString() === + scheduledEventId?.toString(), + ); + + return { + activityId, + activityType, + scheduledAt, + inputs, + attempt: startedEvent?.activityTaskStartedEventAttributes?.attempt ?? 1, + startedAt: eventTimeIsoStringFromEvent(startedEvent), + }; +}; + +const mapTemporalWorkflowToFlowStatus = async ( + workflow: WorkflowExecutionInfo, + temporalClient: TemporalClient, +): Promise => { + const handle = temporalClient.workflow.getHandle( + workflow.workflowId, + workflow.runId, + ); + + const { events } = await handle.fetchHistory(); + + const workflowInputs = parseHistoryItemPayload( + events?.find( + (event) => + event.eventType === + proto.temporal.api.enums.v1.EventType + .EVENT_TYPE_WORKFLOW_EXECUTION_STARTED, + )?.workflowExecutionStartedEventAttributes?.input, + ); + + const workflowOutputs = parseHistoryItemPayload( + events?.find( + (event) => + event.eventType === + proto.temporal.api.enums.v1.EventType + .EVENT_TYPE_WORKFLOW_EXECUTION_COMPLETED, + )?.workflowExecutionCompletedEventAttributes?.result, + ); + + const stepMap: { [activityId: string]: StepRun } = {}; + + if (events?.length) { + /* + * Walk backwards from the most recent event until we have populated the latest state data for each step + */ + for (let i = events.length - 1; i >= 0; i--) { + const event = events[i]; + if (!event) { + throw new Error("Somehow out of bounds for events array"); + } + + const nonScheduledAttributes = + event.activityTaskStartedEventAttributes || + event.activityTaskCompletedEventAttributes || + event.activityTaskCanceledEventAttributes || + event.activityTaskCancelRequestedEventAttributes || + event.activityTaskFailedEventAttributes || + event.activityTaskTimedOutEventAttributes; + + if ( + !nonScheduledAttributes && + !event.activityTaskScheduledEventAttributes + ) { + // This is not an activity-related event + continue; + } + + const { + activityId, + activityType, + attempt, + inputs, + startedAt, + scheduledAt, + } = event.activityTaskScheduledEventAttributes + ? getActivityScheduledDetails(event) + : getActivityStartedDetails(events, nonScheduledAttributes!); + + if (stepMap[activityId]) { + // We've already encountered and therefore populated all the details for this step + continue; + } + + const activityRecord: StepRun = { + stepId: activityId, + stepType: activityType ?? "UNKNOWN", + startedAt, + scheduledAt, + inputs, + status: FlowStepStatus.Scheduled, + attempt, + }; + + stepMap[activityId] = activityRecord; + + switch (event.eventType) { + case proto.temporal.api.enums.v1.EventType + .EVENT_TYPE_ACTIVITY_TASK_SCHEDULED: { + activityRecord.status = FlowStepStatus.Scheduled; + break; + } + + case proto.temporal.api.enums.v1.EventType + .EVENT_TYPE_ACTIVITY_TASK_STARTED: { + activityRecord.status = FlowStepStatus.Started; + activityRecord.lastFailure = + event.activityTaskStartedEventAttributes?.lastFailure; + break; + } + + case proto.temporal.api.enums.v1.EventType + .EVENT_TYPE_ACTIVITY_TASK_COMPLETED: { + activityRecord.status = FlowStepStatus.Completed; + activityRecord.outputs = + parseHistoryItemPayload( + event.activityTaskCompletedEventAttributes?.result, + ) ?? []; + activityRecord.closedAt = eventTimeIsoStringFromEvent(event); + break; + } + + case proto.temporal.api.enums.v1.EventType + .EVENT_TYPE_ACTIVITY_TASK_FAILED: { + activityRecord.status = FlowStepStatus.Failed; + activityRecord.lastFailure = + event.activityTaskFailedEventAttributes?.failure; + activityRecord.retryState = + event.activityTaskFailedEventAttributes?.retryState?.toString(); + activityRecord.closedAt = eventTimeIsoStringFromEvent(event); + break; + } + + case proto.temporal.api.enums.v1.EventType + .EVENT_TYPE_ACTIVITY_TASK_TIMED_OUT: { + activityRecord.status = FlowStepStatus.TimedOut; + activityRecord.lastFailure = + event.activityTaskTimedOutEventAttributes?.failure; + activityRecord.retryState = + event.activityTaskTimedOutEventAttributes?.retryState?.toString(); + activityRecord.closedAt = eventTimeIsoStringFromEvent(event); + break; + } + + case proto.temporal.api.enums.v1.EventType + .EVENT_TYPE_ACTIVITY_TASK_CANCELED: { + activityRecord.status = FlowStepStatus.Canceled; + activityRecord.closedAt = eventTimeIsoStringFromEvent(event); + break; + } + + case proto.temporal.api.enums.v1.EventType + .EVENT_TYPE_ACTIVITY_TASK_CANCEL_REQUESTED: { + activityRecord.status = FlowStepStatus.CancelRequested; + break; + } + + default: + throw new Error(`Unhandled event type ${event.eventType}`); + } + } + } + + const { type, runId, status, startTime, executionTime, closeTime } = workflow; + + return { + flowDefinitionId: type, + runId, + status: status.name as FlowRunStatus, + startedAt: startTime.toISOString(), + executedAt: executionTime?.toISOString(), + closedAt: closeTime?.toISOString(), + inputs: workflowInputs, + outputs: workflowOutputs, + steps: Object.values(stepMap), + }; +}; + +export const getFlowRuns: ResolverFn< + FlowRun[], + Record, + GraphQLContext, + QueryGetFlowRunsArgs +> = async (_parent, args, context) => { + if (isProdEnv) { + throw new Error("Not yet available"); + } + + const workflows: FlowRun[] = []; + + const { flowTypes } = args; + + const workflowIterable = context.temporal.workflow.list( + flowTypes?.length + ? { + /** + * Can also filter by runId, useful for e.g. getting all Temporal runIds for a given user + * and then retrieving a list of details from Temporal + */ + query: `WorkflowType IN (${flowTypes.map((type) => `'${type}'`).join(", ")})`, + } + : {}, + ); + + for await (const workflow of workflowIterable) { + const runInfo = await mapTemporalWorkflowToFlowStatus( + workflow, + context.temporal, + ); + + workflows.push(runInfo); + } + + return workflows; +}; diff --git a/apps/hash-api/src/graphql/resolvers/index.ts b/apps/hash-api/src/graphql/resolvers/index.ts index 519b6e8a219..beeafab955a 100644 --- a/apps/hash-api/src/graphql/resolvers/index.ts +++ b/apps/hash-api/src/graphql/resolvers/index.ts @@ -12,6 +12,7 @@ import type { } from "../api-types.gen"; import { getBlockProtocolBlocksResolver } from "./blockprotocol/get-block"; import { embedCode } from "./embed"; +import { getFlowRuns } from "./flows/runs"; import { getLinearOrganizationResolver } from "./integrations/linear/linear-organization"; import { syncLinearIntegrationWithWorkspacesMutation } from "./integrations/linear/sync-workspaces-with-teams"; import { blocksResolver } from "./knowledge/block/block"; @@ -111,6 +112,7 @@ export const resolvers: Omit & { pageComments: loggedInAndSignedUpMiddleware(pageCommentsResolver), blocks: loggedInAndSignedUpMiddleware(blocksResolver), getEntity: getEntityResolver, + getFlowRuns, queryEntities: queryEntitiesResolver, isEntityPublic: loggedInAndSignedUpMiddleware(isEntityPublicResolver), getEntityAuthorizationRelationships: loggedInAndSignedUpMiddleware( diff --git a/apps/hash-api/src/index.ts b/apps/hash-api/src/index.ts index f26492af0d4..117438c7f5f 100644 --- a/apps/hash-api/src/index.ts +++ b/apps/hash-api/src/index.ts @@ -26,18 +26,19 @@ import { OpenSearch } from "@local/hash-backend-utils/search/opensearch"; import { GracefulShutdown } from "@local/hash-backend-utils/shutdown"; import { createVaultClient } from "@local/hash-backend-utils/vault"; import * as Sentry from "@sentry/node"; -import { json } from "body-parser"; +import bodyParser from "body-parser"; import cors from "cors"; import proxy from "express-http-proxy"; import type { Options as RateLimitOptions } from "express-rate-limit"; import { rateLimit } from "express-rate-limit"; import helmet from "helmet"; import { StatsD } from "hot-shots"; -import { createHttpTerminator } from "http-terminator"; +import httpTerminator from "http-terminator"; import { customAlphabet } from "nanoid"; import { gptGetUserWebs } from "./ai/gpt/gpt-get-user-webs"; import { gptQueryEntities } from "./ai/gpt/gpt-query-entities"; +import { gptQueryTypes } from "./ai/gpt/gpt-query-types"; import { upsertGptOauthClient } from "./ai/gpt/upsert-gpt-oauth-client"; import { openInferEntitiesWebSocket } from "./ai/infer-entities-websocket"; import { @@ -256,7 +257,7 @@ const main = async () => { app.set("trust proxy", 1); } - const jsonParser = json({ + const jsonParser = bodyParser.json({ // default is 100kb limit: "16mb", }); @@ -531,6 +532,7 @@ const main = async () => { // Endpoints used by HashGPT or in support of it app.post("/gpt/entities/query", gptQueryEntities); + app.post("/gpt/entities/query-types", gptQueryTypes); app.get("/gpt/user-webs", gptGetUserWebs); app.post("/gpt/upsert-gpt-oauth-client", upsertGptOauthClient); @@ -563,8 +565,10 @@ const main = async () => { // close active connections. This can result in the server hanging indefinitely. We // use the `http-terminator` library to shut down the server properly. const httpServer = http.createServer(app); - const httpTerminator = createHttpTerminator({ server: httpServer }); - shutdown.addCleanup("HTTP Server", async () => httpTerminator.terminate()); + const terminator = httpTerminator.createHttpTerminator({ + server: httpServer, + }); + shutdown.addCleanup("HTTP Server", async () => terminator.terminate()); openInferEntitiesWebSocket({ context, diff --git a/apps/hash-api/src/integrations/google/create-or-update-sheets-integration.ts b/apps/hash-api/src/integrations/google/create-or-update-sheets-integration.ts index 7536f663b43..d4ebffce46a 100644 --- a/apps/hash-api/src/integrations/google/create-or-update-sheets-integration.ts +++ b/apps/hash-api/src/integrations/google/create-or-update-sheets-integration.ts @@ -352,7 +352,9 @@ export const createOrUpdateSheetsIntegration: RequestHandler< res.json({ integrationEntityId }); } catch (err) { res.status(500).send({ - error: `Error triggering workflow ${workflow}: ${(err as Error).message}`, + error: `Error triggering workflow ${workflow}: ${ + (err as Error).message + }`, }); } }; diff --git a/apps/hash-api/src/util.ts b/apps/hash-api/src/util.ts index d26c08bd064..1bc1a280d98 100644 --- a/apps/hash-api/src/util.ts +++ b/apps/hash-api/src/util.ts @@ -1,4 +1,4 @@ -import { Uuid4 } from "id128"; +import id128 from "id128"; export { DefaultMap, @@ -10,7 +10,7 @@ export { * Generate a new ID. * @todo make ULID. Replace the implementation in datastore/postgres * */ -export const genId = () => Uuid4.generate().toCanonical().toLowerCase(); +export const genId = () => id128.Uuid4.generate().toCanonical().toLowerCase(); /** Get a required environment variable. Throws an error if it's not set. */ export const getRequiredEnv = (name: string) => { diff --git a/apps/hash-api/vitest.config.mjs b/apps/hash-api/vitest.config.js similarity index 100% rename from apps/hash-api/vitest.config.mjs rename to apps/hash-api/vitest.config.js diff --git a/apps/hash-frontend/block.dependencies.ts b/apps/hash-frontend/block.dependencies.ts index d920821d5b1..23183d3f089 100644 --- a/apps/hash-frontend/block.dependencies.ts +++ b/apps/hash-frontend/block.dependencies.ts @@ -1,9 +1,14 @@ -/* eslint-disable global-require */ +import lodash from "lodash"; +// eslint-disable-next-line unicorn/import-style +import React from "react"; +// eslint-disable-next-line unicorn/import-style +import ReactDOM from "react-dom"; + /** * Dependencies to be made available to external blocks must be referenced here */ export const blockDependencies: Record = { - react: require("react"), - "react-dom": require("react-dom"), - lodash: require("lodash"), + react: React, + "react-dom": ReactDOM, + lodash, }; diff --git a/apps/hash-frontend/buildstamp.js b/apps/hash-frontend/buildstamp.js index 44ef843ebef..cf8c498be28 100644 --- a/apps/hash-frontend/buildstamp.js +++ b/apps/hash-frontend/buildstamp.js @@ -3,4 +3,4 @@ const identifier = process.env.NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHA ?? new Date().toISOString(); const buildStamp = `commit-${identifier}-${branch.replace(/\//g, "-")}`; -module.exports = { buildStamp }; +export { buildStamp }; diff --git a/apps/hash-frontend/next.config.js b/apps/hash-frontend/next.config.js index d4b092df1dc..48d9ad50c4d 100644 --- a/apps/hash-frontend/next.config.js +++ b/apps/hash-frontend/next.config.js @@ -1,12 +1,15 @@ -const { config } = require("dotenv-flow"); -const withBundleAnalyzer = require("@next/bundle-analyzer")({ - enabled: process.env.ANALYZE === "true", -}); -const { withSentryConfig } = require("@sentry/nextjs"); +import bundleAnalyzer from "@next/bundle-analyzer"; +import { withSentryConfig } from "@sentry/nextjs"; +import { config } from "dotenv-flow"; +import webpack from "webpack"; -const { DefinePlugin } = require("webpack"); +// eslint-disable-next-line import/extensions +import { buildStamp } from "./buildstamp.js"; -const { buildStamp } = require("./buildstamp"); +const { DefinePlugin } = webpack; +const withBundleAnalyzer = bundleAnalyzer({ + enabled: process.env.ANALYZE === "true", +}); config({ silent: true, path: "../.." }); @@ -58,7 +61,8 @@ const pageEntityTypeBaseUrl = "https://hash.ai/@hash/types/entity-type/page/"; * @todo make plugin definition cleaner - some ideas in https://github.com/cyrilwanner/next-compose-plugins/issues/59 * next-compose plugins itself is unmaintained and leads to 'invalid config property' warnings if used */ -module.exports = withSentryConfig( +// eslint-disable-next-line import/no-default-export +export default withSentryConfig( withBundleAnalyzer( /** @type {import('next').NextConfig} */ { @@ -164,7 +168,7 @@ module.exports = withSentryConfig( webpack: (webpackConfig, { isServer }) => { webpackConfig.module.rules.push({ test: /\.svg$/, - use: [require.resolve("@svgr/webpack")], + use: ["@svgr/webpack"], }); // eslint-disable-next-line no-param-reassign diff --git a/apps/hash-frontend/package.json b/apps/hash-frontend/package.json index e316352ef9a..67b9fefced2 100644 --- a/apps/hash-frontend/package.json +++ b/apps/hash-frontend/package.json @@ -4,6 +4,7 @@ "private": true, "description": "HASH frontend", "license": "AGPL-3.0", + "type": "module", "scripts": { "build": "next build", "codegen": "rimraf './src/**/*.gen.*'; graphql-codegen --config codegen.config.ts", @@ -15,8 +16,8 @@ }, "dependencies": { "@apollo/client": "3.6.9", - "@blockprotocol/core": "0.1.2", - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/core": "0.1.3", + "@blockprotocol/graph": "0.3.4", "@blockprotocol/hook": "0.1.3", "@blockprotocol/service": "0.1.4", "@blockprotocol/type-system": "0.1.1", @@ -48,7 +49,7 @@ "@popperjs/core": "2.11.8", "@sentry/nextjs": "7.93.0", "@sentry/react": "7.93.0", - "@svgr/webpack": "6.2.1", + "@svgr/webpack": "8.1.0", "@tldraw/editor": "2.0.0-alpha.12", "@tldraw/primitives": "2.0.0-alpha.12", "@tldraw/tldraw": "2.0.0-alpha.12", @@ -127,7 +128,7 @@ "rimraf": "5.0.5", "sass": "1.57.1", "typescript": "5.1.6", - "webpack": "5.88.1" + "webpack": "5.90.3" }, "engines": { "node": ">=v18.15.0" diff --git a/apps/hash-frontend/src/components/remote-block/block-renderer/html.tsx b/apps/hash-frontend/src/components/remote-block/block-renderer/html.tsx index fedaed40d15..beaff4bea54 100644 --- a/apps/hash-frontend/src/components/remote-block/block-renderer/html.tsx +++ b/apps/hash-frontend/src/components/remote-block/block-renderer/html.tsx @@ -1,5 +1,5 @@ -import type { HtmlBlockDefinition } from "@blockprotocol/core"; -import { renderHtmlBlock } from "@blockprotocol/core"; +import type { HtmlBlockDefinition } from "@blockprotocol/core/html"; +import { renderHtmlBlock } from "@blockprotocol/core/html"; import type { FunctionComponent } from "react"; import { useEffect, useRef, useState } from "react"; diff --git a/apps/hash-frontend/src/pages/[shortname].page/edit-user-profile-info-modal/user-profile-info-modal-header.tsx b/apps/hash-frontend/src/pages/[shortname].page/edit-user-profile-info-modal/user-profile-info-modal-header.tsx index f9de861ef84..bf0adbb0e79 100644 --- a/apps/hash-frontend/src/pages/[shortname].page/edit-user-profile-info-modal/user-profile-info-modal-header.tsx +++ b/apps/hash-frontend/src/pages/[shortname].page/edit-user-profile-info-modal/user-profile-info-modal-header.tsx @@ -9,7 +9,7 @@ import { systemEntityTypes, systemLinkEntityTypes, } from "@local/hash-isomorphic-utils/ontology-type-ids"; -import type { EntityId, OwnedById } from "@local/hash-subgraph"; +import type { OwnedById } from "@local/hash-subgraph"; import { Box, buttonClasses, styled } from "@mui/material"; import Image from "next/image"; import type { ChangeEventHandler, FunctionComponent } from "react"; @@ -151,8 +151,8 @@ export const UserProfileInfoModalHeader: FunctionComponent<{ ...(existingCoverImageEntity ? { fileEntityUpdateInput: { - existingFileEntityId: existingCoverImageEntity.metadata - .recordId.entityId as EntityId, + existingFileEntityId: + existingCoverImageEntity.metadata.recordId.entityId, }, } : { diff --git a/apps/hash-frontend/src/pages/[shortname]/entities/[entity-uuid].page/entity-editor/properties-section/property-table/cells/value-cell/utils.ts b/apps/hash-frontend/src/pages/[shortname]/entities/[entity-uuid].page/entity-editor/properties-section/property-table/cells/value-cell/utils.ts index de686c11fe3..a35a2ca24cf 100644 --- a/apps/hash-frontend/src/pages/[shortname]/entities/[entity-uuid].page/entity-editor/properties-section/property-table/cells/value-cell/utils.ts +++ b/apps/hash-frontend/src/pages/[shortname]/entities/[entity-uuid].page/entity-editor/properties-section/property-table/cells/value-cell/utils.ts @@ -1,5 +1,5 @@ import type { DataTypeWithMetadata } from "@local/hash-subgraph"; -import { isPlainObject } from "lodash"; +import isPlainObject from "lodash/isPlainObject"; import type { EditorType } from "./types"; diff --git a/apps/hash-frontend/src/pages/[shortname]/entities/[entity-uuid].page/entity-editor/properties-section/property-table/use-create-on-cell-edited.ts b/apps/hash-frontend/src/pages/[shortname]/entities/[entity-uuid].page/entity-editor/properties-section/property-table/use-create-on-cell-edited.ts index e49ce6942a1..d4cbfc2a476 100644 --- a/apps/hash-frontend/src/pages/[shortname]/entities/[entity-uuid].page/entity-editor/properties-section/property-table/use-create-on-cell-edited.ts +++ b/apps/hash-frontend/src/pages/[shortname]/entities/[entity-uuid].page/entity-editor/properties-section/property-table/use-create-on-cell-edited.ts @@ -1,7 +1,8 @@ import type { EditableGridCell, Item } from "@glideapps/glide-data-grid"; import { GridCellKind } from "@glideapps/glide-data-grid"; import { getRoots } from "@local/hash-subgraph/stdlib"; -import { cloneDeep, set } from "lodash"; +import cloneDeep from "lodash/cloneDeep"; +import set from "lodash/set"; import { useCallback } from "react"; import { useEntityEditor } from "../../entity-editor-context"; diff --git a/apps/hash-frontend/src/pages/[shortname]/entities/[entity-uuid].page/entity-editor/properties-section/property-table/use-rows/generate-property-rows-from-entity/generate-property-row-recursively.ts b/apps/hash-frontend/src/pages/[shortname]/entities/[entity-uuid].page/entity-editor/properties-section/property-table/use-rows/generate-property-rows-from-entity/generate-property-row-recursively.ts index abe1672997c..090e9da8d27 100644 --- a/apps/hash-frontend/src/pages/[shortname]/entities/[entity-uuid].page/entity-editor/properties-section/property-table/use-rows/generate-property-rows-from-entity/generate-property-row-recursively.ts +++ b/apps/hash-frontend/src/pages/[shortname]/entities/[entity-uuid].page/entity-editor/properties-section/property-table/use-rows/generate-property-rows-from-entity/generate-property-row-recursively.ts @@ -9,7 +9,7 @@ import type { Subgraph, } from "@local/hash-subgraph"; import { getPropertyTypeById } from "@local/hash-subgraph/stdlib"; -import { get } from "lodash"; +import get from "lodash/get"; import { isPropertyValueArray, diff --git a/apps/hash-frontend/src/pages/[shortname]/entities/[entity-uuid].page/query-editor-page.tsx b/apps/hash-frontend/src/pages/[shortname]/entities/[entity-uuid].page/query-editor-page.tsx index 07963ff68e1..06ea18f6f9f 100644 --- a/apps/hash-frontend/src/pages/[shortname]/entities/[entity-uuid].page/query-editor-page.tsx +++ b/apps/hash-frontend/src/pages/[shortname]/entities/[entity-uuid].page/query-editor-page.tsx @@ -1,4 +1,4 @@ -import type { MultiFilter } from "@blockprotocol/graph"; +import type { Entity as EntityBp, MultiFilter } from "@blockprotocol/graph"; import { OntologyChip } from "@hashintel/design-system"; import { EntityQueryEditor } from "@hashintel/query-editor"; import { frontendDomain } from "@local/hash-isomorphic-utils/environment"; @@ -74,7 +74,7 @@ export const QueryEditorPage = (props: QueryEditorPageProps) => { throw new Error(res.errors?.[0]?.message ?? "Unknown error"); } - return getRoots(res.data.results); + return getRoots(res.data.results) as unknown as EntityBp[]; }, [queryEntities], ); diff --git a/apps/hash-frontend/src/pages/[shortname]/shared/use-update-profile-avatar.tsx b/apps/hash-frontend/src/pages/[shortname]/shared/use-update-profile-avatar.tsx index 70015d66d4d..f7a00467194 100644 --- a/apps/hash-frontend/src/pages/[shortname]/shared/use-update-profile-avatar.tsx +++ b/apps/hash-frontend/src/pages/[shortname]/shared/use-update-profile-avatar.tsx @@ -2,7 +2,7 @@ import { systemEntityTypes, systemLinkEntityTypes, } from "@local/hash-isomorphic-utils/ontology-type-ids"; -import type { EntityId, OwnedById } from "@local/hash-subgraph"; +import type { OwnedById } from "@local/hash-subgraph"; import { useCallback, useState } from "react"; import type { Org, User } from "../../../lib/user-and-org"; @@ -46,8 +46,8 @@ export const useUpdateProfileAvatar = (props: { ...(existingAvatarImageEntity ? { fileEntityUpdateInput: { - existingFileEntityId: existingAvatarImageEntity.metadata - .recordId.entityId as EntityId, + existingFileEntityId: + existingAvatarImageEntity.metadata.recordId.entityId, }, } : { diff --git a/apps/hash-frontend/src/pages/_app.page.tsx b/apps/hash-frontend/src/pages/_app.page.tsx index 563488e6280..e7c87ddfa37 100644 --- a/apps/hash-frontend/src/pages/_app.page.tsx +++ b/apps/hash-frontend/src/pages/_app.page.tsx @@ -262,7 +262,9 @@ AppWithTypeSystemContextProvider.getInitialProps = async (appContext) => { // ...redirect them to the login page redirectInGetInitialProps({ appContext, - location: `/signin${["", "/", "/404"].includes(pathname) ? "" : `?return_to=${asPath}`}`, + location: `/signin${ + ["", "/", "/404"].includes(pathname) ? "" : `?return_to=${asPath}` + }`, }); } diff --git a/apps/hash-frontend/src/pages/actions.page/draft-entities/draft-entities-filters/filter-section.tsx b/apps/hash-frontend/src/pages/actions.page/draft-entities/draft-entities-filters/filter-section.tsx index 3a03d079911..c4f79747f25 100644 --- a/apps/hash-frontend/src/pages/actions.page/draft-entities/draft-entities-filters/filter-section.tsx +++ b/apps/hash-frontend/src/pages/actions.page/draft-entities/draft-entities-filters/filter-section.tsx @@ -119,7 +119,11 @@ const SelectAllSwitch = styled(Switch)(() => ({ [`& .${switchClasses.switchBase}`]: { margin: selectAllSwitchGutter, [`&.${switchClasses.checked}`]: { - transform: `translateX(${calculateSwitchTranslateDistance({ width: selectAllSwitchWidth, thumbSize: selectAllSwitchThumbSize, gutter: selectAllSwitchGutter })}px)`, + transform: `translateX(${calculateSwitchTranslateDistance({ + width: selectAllSwitchWidth, + thumbSize: selectAllSwitchThumbSize, + gutter: selectAllSwitchGutter, + })}px)`, }, }, [`& .${switchClasses.thumb}`]: { diff --git a/apps/hash-frontend/src/pages/settings/integrations/google-sheets/create-or-edit-sheets-integration.tsx b/apps/hash-frontend/src/pages/settings/integrations/google-sheets/create-or-edit-sheets-integration.tsx index ab9d3e250a2..de0cc1f5066 100644 --- a/apps/hash-frontend/src/pages/settings/integrations/google-sheets/create-or-edit-sheets-integration.tsx +++ b/apps/hash-frontend/src/pages/settings/integrations/google-sheets/create-or-edit-sheets-integration.tsx @@ -260,8 +260,10 @@ export const CreateOrEditSheetsIntegration = ({ onUserChoice={(response) => { setAccessToken(null); - // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison - if (response.action !== "picked" || !response.docs[0]) { + if ( + response.action !== google.picker.Action.PICKED || + !response.docs[0] + ) { return; } diff --git a/apps/hash-frontend/src/pages/settings/organizations/shared/org-form.tsx b/apps/hash-frontend/src/pages/settings/organizations/shared/org-form.tsx index 88fb633768e..86cef727201 100644 --- a/apps/hash-frontend/src/pages/settings/organizations/shared/org-form.tsx +++ b/apps/hash-frontend/src/pages/settings/organizations/shared/org-form.tsx @@ -3,7 +3,7 @@ import { systemEntityTypes, systemLinkEntityTypes, } from "@local/hash-isomorphic-utils/ontology-type-ids"; -import type { EntityId, OwnedById } from "@local/hash-subgraph"; +import type { OwnedById } from "@local/hash-subgraph"; import { Box, outlinedInputClasses, Stack, Typography } from "@mui/material"; import type { PropsWithChildren } from "react"; import { useState } from "react"; @@ -152,8 +152,8 @@ export const OrgForm = ({ ...(existingImageEntity ? { fileEntityUpdateInput: { - existingFileEntityId: existingImageEntity.metadata.recordId - .entityId as EntityId, + existingFileEntityId: + existingImageEntity.metadata.recordId.entityId, }, } : { diff --git a/apps/hash-frontend/src/pages/shared/block-collection/collab/editor-connection.ts b/apps/hash-frontend/src/pages/shared/block-collection/collab/editor-connection.ts index 13fb8007c86..b809551e086 100644 --- a/apps/hash-frontend/src/pages/shared/block-collection/collab/editor-connection.ts +++ b/apps/hash-frontend/src/pages/shared/block-collection/collab/editor-connection.ts @@ -16,7 +16,7 @@ import { EntityStorePluginAction, } from "@local/hash-isomorphic-utils/entity-store-plugin"; import { ProsemirrorManager } from "@local/hash-isomorphic-utils/prosemirror-manager"; -import { isString } from "lodash"; +import isString from "lodash/isString"; import { collab, receiveTransaction, sendableSteps } from "prosemirror-collab"; import { Node, Schema } from "prosemirror-model"; import { EditorState, Plugin, Transaction } from "prosemirror-state"; diff --git a/apps/hash-frontend/src/pages/shared/block-collection/create-editor-view.ts b/apps/hash-frontend/src/pages/shared/block-collection/create-editor-view.ts index ab629941a79..dc761aeb048 100644 --- a/apps/hash-frontend/src/pages/shared/block-collection/create-editor-view.ts +++ b/apps/hash-frontend/src/pages/shared/block-collection/create-editor-view.ts @@ -11,7 +11,7 @@ import { import { ProsemirrorManager } from "@local/hash-isomorphic-utils/prosemirror-manager"; import { save } from "@local/hash-isomorphic-utils/save"; import type { EntityId, OwnedById } from "@local/hash-subgraph"; -import { debounce } from "lodash"; +import debounce from "lodash/debounce"; // import applyDevTools from "prosemirror-dev-tools"; import { Plugin, PluginKey } from "prosemirror-state"; import type { EditorView } from "prosemirror-view"; diff --git a/apps/hash-frontend/src/pages/shared/entities-table.tsx b/apps/hash-frontend/src/pages/shared/entities-table.tsx index dae16b0d9e1..8c9ab3f5f8e 100644 --- a/apps/hash-frontend/src/pages/shared/entities-table.tsx +++ b/apps/hash-frontend/src/pages/shared/entities-table.tsx @@ -364,7 +364,7 @@ export const EntitiesTable: FunctionComponent<{ const handleEntityClick = useCallback( (entity: BpEntity) => { const { shortname: entityNamespace } = getOwnerForEntity( - entity as Entity, + entity as unknown as Entity, ); if (entityNamespace === "") { diff --git a/apps/hash-frontend/src/pages/shared/use-entity-href.tsx b/apps/hash-frontend/src/pages/shared/use-entity-href.tsx index 30045ee16b3..638f30df5d4 100644 --- a/apps/hash-frontend/src/pages/shared/use-entity-href.tsx +++ b/apps/hash-frontend/src/pages/shared/use-entity-href.tsx @@ -8,7 +8,9 @@ export const generateEntityHref = (params: { entityId: EntityId; shortname: string; }) => - `/@${params.shortname}/entities/${extractEntityUuidFromEntityId(params.entityId)}`; + `/@${params.shortname}/entities/${extractEntityUuidFromEntityId( + params.entityId, + )}`; export const useEntityHref = (entity: Entity) => { const getOwnerForEntity = useGetOwnerForEntity(); diff --git a/apps/hash-frontend/src/shared/layout/layout-with-header/search-bar.tsx b/apps/hash-frontend/src/shared/layout/layout-with-header/search-bar.tsx index 460d96b8ddf..6fbb0091ab8 100644 --- a/apps/hash-frontend/src/shared/layout/layout-with-header/search-bar.tsx +++ b/apps/hash-frontend/src/shared/layout/layout-with-header/search-bar.tsx @@ -115,7 +115,9 @@ const EntityResult: FunctionComponent<{ {generateEntityLabel(subgraph, entity)} diff --git a/apps/hash-graph/bins/cli/Cargo.toml b/apps/hash-graph/bins/cli/Cargo.toml index 0c45c3142f1..00e91c86dfd 100644 --- a/apps/hash-graph/bins/cli/Cargo.toml +++ b/apps/hash-graph/bins/cli/Cargo.toml @@ -28,7 +28,7 @@ clap = { workspace = true, features = ["cargo", "derive", "env", "wrap_help"] } clap_complete = "4.5.1" mimalloc = { version = "0.1.39", default-features = false } futures = { version = "0.3.30" } -regex = "1.10.3" +regex = "1.10.4" reqwest = { version = "0.12", default-features = false, features = ["rustls-tls"] } semver = { version = "1.0.22", default-features = false } serde_json = "1.0.114" diff --git a/apps/hash-graph/libs/api/Cargo.toml b/apps/hash-graph/libs/api/Cargo.toml index 4bf64555db6..cb0f9c262ff 100644 --- a/apps/hash-graph/libs/api/Cargo.toml +++ b/apps/hash-graph/libs/api/Cargo.toml @@ -20,10 +20,10 @@ type-system = { workspace = true, features = ["utoipa"] } validation = { workspace = true, features = ["utoipa"] } codec = { workspace = true, optional = true } -async-trait = "0.1.78" +async-trait = "0.1.79" axum = "0.7.4" base64 = "0.22.0" -bytes = "1.5.0" +bytes = "1.6.0" error-stack = { workspace = true } futures = { workspace = true } http-body-util = "0.1.1" diff --git a/apps/hash-graph/libs/graph/Cargo.toml b/apps/hash-graph/libs/graph/Cargo.toml index 0ba58178c95..5261bfaa0ba 100644 --- a/apps/hash-graph/libs/graph/Cargo.toml +++ b/apps/hash-graph/libs/graph/Cargo.toml @@ -25,7 +25,7 @@ serde = { workspace = true, features = ["derive"] } utoipa = { workspace = true, features = ["uuid"], optional = true } tracing = { workspace = true } -async-trait = "0.1.78" +async-trait = "0.1.79" async-scoped = { version = "0.9.0", features = ["use-tokio"] } bb8-postgres = "0.8.1" bytes = { workspace = true } @@ -36,7 +36,7 @@ json-patch = { version = "1.2.0", default-features = false } futures = { workspace = true } mime = "0.3.17" refinery = { version = "0.8", features = ["tokio-postgres"] } -regex = "1.10.3" +regex = "1.10.4" semver = { version = "1.0.22", default-features = false, features = ["serde"] } sentry = { version = "0.32.2", features = ["tracing", "tower", "tower-http"], default-features = false } serde_json = { workspace = true } diff --git a/apps/hash-graph/libs/query-builder-derive/Cargo.toml b/apps/hash-graph/libs/query-builder-derive/Cargo.toml index 00662cc595a..471be0bad1b 100644 --- a/apps/hash-graph/libs/query-builder-derive/Cargo.toml +++ b/apps/hash-graph/libs/query-builder-derive/Cargo.toml @@ -10,7 +10,7 @@ proc-macro = true [dependencies] virtue = "0.0.16" -syn = "2.0.53" +syn = "2.0.55" [dev-dependencies] trybuild = "1.0.90" diff --git a/apps/hash-integration-worker/package.json b/apps/hash-integration-worker/package.json index c90b926cf02..cefc025a1e8 100644 --- a/apps/hash-integration-worker/package.json +++ b/apps/hash-integration-worker/package.json @@ -4,6 +4,7 @@ "private": true, "description": "A TypeScript worker for HASH for data integration", "license": "AGPL-3.0", + "type": "module", "scripts": { "build": "tsc --build && yarn exe ./scripts/bundle-workflow-code.ts", "build:docker": "docker buildx build --tag hash-integration-worker --file ./docker/Dockerfile ../../ --load", @@ -15,7 +16,7 @@ "start": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=2048 tsx ./src/main.ts" }, "dependencies": { - "@blockprotocol/graph": "0.3.3", + "@blockprotocol/graph": "0.3.4", "@blockprotocol/type-system": "0.1.1", "@linear/sdk": "6.0.0", "@local/advanced-types": "0.0.0-private", diff --git a/apps/hash-integration-worker/scripts/bundle-workflow-code.ts b/apps/hash-integration-worker/scripts/bundle-workflow-code.ts index a7c7d74adeb..3733b739389 100644 --- a/apps/hash-integration-worker/scripts/bundle-workflow-code.ts +++ b/apps/hash-integration-worker/scripts/bundle-workflow-code.ts @@ -1,8 +1,16 @@ import { writeFile } from "node:fs/promises"; +import { createRequire } from "node:module"; import * as path from "node:path"; +import { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; import { bundleWorkflowCode } from "@temporalio/worker"; +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const require = createRequire(import.meta.url); + async function bundle() { const { code } = await bundleWorkflowCode({ workflowsPath: require.resolve("../src/workflows"), diff --git a/apps/hash-integration-worker/src/google-activities/convert-subgraph-to-sheet-requests.ts b/apps/hash-integration-worker/src/google-activities/convert-subgraph-to-sheet-requests.ts index 3e11568bfcd..7084e08c13c 100644 --- a/apps/hash-integration-worker/src/google-activities/convert-subgraph-to-sheet-requests.ts +++ b/apps/hash-integration-worker/src/google-activities/convert-subgraph-to-sheet-requests.ts @@ -613,7 +613,9 @@ export const createSheetRequestsFromEntitySubgraph = ( label: generateEntityLabel(entitySubgraph, linkedEntity), sheetId, startCellInclusive: `A${rowIndex + 1}`, - endCellInclusive: `${entityPosition.lastColumnLetter}${rowIndex + 1}`, + endCellInclusive: `${entityPosition.lastColumnLetter}${ + rowIndex + 1 + }`, }), ); @@ -668,7 +670,9 @@ export const createSheetRequestsFromEntitySubgraph = ( label: generateEntityLabel(entitySubgraph, linkedEntity), sheetId, startCellInclusive: `A${rowIndex + 1}`, - endCellInclusive: `${entityPosition.lastColumnLetter}${rowIndex + 1}`, + endCellInclusive: `${entityPosition.lastColumnLetter}${ + rowIndex + 1 + }`, }), ); } else { @@ -813,8 +817,12 @@ export const createSheetRequestsFromEntitySubgraph = ( createHyperlinkCell({ label: `View links`, sheetId: outgoingLinkRange.sheetId, - startCellInclusive: `A${outgoingLinkRange.startRowIndex + 1}`, - endCellInclusive: `${outgoingLinkRange.lastColumnLetter}${outgoingLinkRange.endRowIndex + 1}`, + startCellInclusive: `A${ + outgoingLinkRange.startRowIndex + 1 + }`, + endCellInclusive: `${outgoingLinkRange.lastColumnLetter}${ + outgoingLinkRange.endRowIndex + 1 + }`, }), ], }, diff --git a/apps/hash-integration-worker/src/main.ts b/apps/hash-integration-worker/src/main.ts index 89e55d06b05..55fb4ac2233 100644 --- a/apps/hash-integration-worker/src/main.ts +++ b/apps/hash-integration-worker/src/main.ts @@ -1,5 +1,8 @@ import * as http from "node:http"; +import { createRequire } from "node:module"; import * as path from "node:path"; +import { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; import { createGraphClient } from "@local/hash-backend-utils/create-graph-client"; import { getRequiredEnv } from "@local/hash-backend-utils/environment"; @@ -14,6 +17,11 @@ import * as graphActivities from "./graph-activities"; import * as linearActivities from "./linear-activities"; import * as workflows from "./workflows"; +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const require = createRequire(import.meta.url); + // This is a workaround to ensure that all functions defined in WorkflowTypeMap are exported from the workflows file // They must be individually exported from the file, and it's impossible to check completeness of exports in the file itself // eslint-disable-next-line @typescript-eslint/no-unused-vars diff --git a/apps/hash-realtime/package.json b/apps/hash-realtime/package.json index cce1fdd30a9..110658a5a4e 100644 --- a/apps/hash-realtime/package.json +++ b/apps/hash-realtime/package.json @@ -4,6 +4,7 @@ "private": true, "description": "Realtime streaming update server from the HASH datstore", "license": "AGPL-3.0", + "type": "module", "scripts": { "clear-redis": "tsx ./src/scripts/clear-redis.ts", "dev": "yarn clear-redis && NODE_ENV=development NODE_OPTIONS=--max-old-space-size=2048 tsx watch --clear-screen=false ./src/index.ts", diff --git a/apps/hash-search-loader/package.json b/apps/hash-search-loader/package.json index d0801939e9c..204c3353b92 100644 --- a/apps/hash-search-loader/package.json +++ b/apps/hash-search-loader/package.json @@ -4,6 +4,7 @@ "private": true, "description": "Loads changes from the hash/realtime package stream into the search service", "license": "AGPL-3.0", + "type": "module", "scripts": { "clear-opensearch": "yarn tsx ./src/scripts/clear-opensearch.ts", "dev": "echo 'Opensearch currently disabled'", diff --git a/apps/hashdotdev/src/pages/shared/mdx-utils.ts b/apps/hashdotdev/src/pages/shared/mdx-utils.ts index edee8e6a570..a7636559121 100644 --- a/apps/hashdotdev/src/pages/shared/mdx-utils.ts +++ b/apps/hashdotdev/src/pages/shared/mdx-utils.ts @@ -368,7 +368,10 @@ export const recursivelyGetDocsPages = (params: { title: titleDerivedFromDirectoryName, titleDerivedFromDirectoryName, /** @todo: this should probably be removed */ - href: `/${pathToDirectory.replace(/\d+_/g, "")}/${fileNameWithoutIndex}`, + href: `/${pathToDirectory.replace( + /\d+_/g, + "", + )}/${fileNameWithoutIndex}`, sections: [], subPages: recursivelyGetDocsPages({ pathToDirectory: `${pathToDirectory}/${directoryItem}`, diff --git a/apps/plugin-browser/package.json b/apps/plugin-browser/package.json index c8191d518cd..8bcd84c33df 100755 --- a/apps/plugin-browser/package.json +++ b/apps/plugin-browser/package.json @@ -8,6 +8,7 @@ "url": "https://github.com/hashintel/hash.git" }, "license": "AGPL-3.0", + "type": "module", "workspaces": { "nohoist": [ "@sentry/webpack-plugin" @@ -25,7 +26,7 @@ "lint:tsc": "tsc --noEmit" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@hashintel/block-design-system": "0.0.2", "@hashintel/design-system": "0.0.8", "@local/advanced-types": "0.0.0-private", @@ -50,7 +51,7 @@ "@babel/plugin-proposal-class-properties": "7.18.6", "@babel/preset-env": "7.23.9", "@babel/preset-react": "7.23.3", - "@blockprotocol/core": "0.1.2", + "@blockprotocol/core": "0.1.3", "@graphql-codegen/cli": "5.0.0", "@local/eslint-config": "0.0.0-private", "@local/hash-graph-client": "0.0.0-private", @@ -85,7 +86,7 @@ "ts-loader": "9.4.2", "type-fest": "3.5.2", "typescript": "5.1.6", - "webpack": "5.88.1", + "webpack": "5.90.3", "webpack-cli": "4.10.0", "webpack-dev-server": "4.11.1", "zip-webpack-plugin": "4.0.1" diff --git a/apps/plugin-browser/src/scripts/content.ts b/apps/plugin-browser/src/scripts/content.ts index ae256598694..ba3394d1d97 100644 --- a/apps/plugin-browser/src/scripts/content.ts +++ b/apps/plugin-browser/src/scripts/content.ts @@ -12,27 +12,26 @@ import browser from "webextension-polyfill"; */ import type { GetSiteContentReturn, Message } from "../shared/messages"; -browser.runtime.onMessage.addListener( - (message: Message, _sender, sendResponse) => { - if (message.type === "get-site-content") { - const docContent = - document.querySelector("main") ?? document.querySelector("body"); +// Promise based API (see: https://github.com/mozilla/webextension-polyfill/?tab=readme-ov-file#using-the-promise-based-apis) +// eslint-disable-next-line @typescript-eslint/require-await +browser.runtime.onMessage.addListener(async (message: Message, _sender) => { + if (message.type === "get-site-content") { + const docContent = + document.querySelector("main") ?? document.querySelector("body"); - /** - * Take the URL without any anchor hash on the assumption that it does not affect page content. - * Helps avoid making duplicate requests for the same page. - */ - const urlObject = new URL(window.location.href); - const pageUrl = urlObject.href.replace(urlObject.hash, ""); + /** + * Take the URL without any anchor hash on the assumption that it does not affect page content. + * Helps avoid making duplicate requests for the same page. + */ + const urlObject = new URL(window.location.href); + const pageUrl = urlObject.href.replace(urlObject.hash, ""); - sendResponse({ - innerText: docContent?.innerText ?? "", - pageTitle: document.title, - pageUrl, - } satisfies GetSiteContentReturn); - return; - } + return { + innerText: docContent?.innerText ?? "", + pageTitle: document.title, + pageUrl, + } satisfies GetSiteContentReturn; + } - sendResponse(`Unrecognised message type ${message.type}`); - }, -); + return `Unrecognised message type ${message.type}`; +}); diff --git a/apps/plugin-browser/utils/build.js b/apps/plugin-browser/utils/build.js index c9f389c3f65..66b829d79f1 100755 --- a/apps/plugin-browser/utils/build.js +++ b/apps/plugin-browser/utils/build.js @@ -1,12 +1,19 @@ +import fs from "node:fs"; +import path, { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; + +import webpack from "webpack"; +import ZipPlugin from "zip-webpack-plugin"; + +// eslint-disable-next-line import/extensions +import config from "../webpack.config.js"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + process.env.BABEL_ENV = "production"; process.env.ASSET_PATH = "/"; -const webpack = require("webpack"); -const path = require("node:path"); -const fs = require("node:fs"); -const ZipPlugin = require("zip-webpack-plugin"); -const config = require("../webpack.config"); - delete config.custom; config.mode = "production"; diff --git a/apps/plugin-browser/utils/webserver.js b/apps/plugin-browser/utils/webserver.js index 69f45a8934c..54e1130aae0 100755 --- a/apps/plugin-browser/utils/webserver.js +++ b/apps/plugin-browser/utils/webserver.js @@ -1,13 +1,19 @@ -// Do this as the first thing so that any code reading it knows the right env. +import path, { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; + +import webpack from "webpack"; +import WebpackDevServer from "webpack-dev-server"; + +// eslint-disable-next-line import/extensions +import config from "../webpack.config.js"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + process.env.BABEL_ENV = "development"; process.env.NODE_ENV = "development"; process.env.ASSET_PATH = "/"; -const WebpackDevServer = require("webpack-dev-server"); -const webpack = require("webpack"); -const path = require("node:path"); -const config = require("../webpack.config"); - const excludeEntriesToHotReload = ["background", "content"]; const port = 8080; diff --git a/apps/plugin-browser/webpack.config.js b/apps/plugin-browser/webpack.config.js index 989e1f7ce6e..22f5585edac 100755 --- a/apps/plugin-browser/webpack.config.js +++ b/apps/plugin-browser/webpack.config.js @@ -1,14 +1,18 @@ -require("dotenv-flow").config(); -const webpack = require("webpack"); -const path = require("node:path"); -const fileSystem = require("fs-extra"); -const CopyWebpackPlugin = require("copy-webpack-plugin"); -const HtmlWebpackPlugin = require("html-webpack-plugin"); -const TerserPlugin = require("terser-webpack-plugin"); -const { CleanWebpackPlugin } = require("clean-webpack-plugin"); -const ReactRefreshWebpackPlugin = require("@pmmmwh/react-refresh-webpack-plugin"); -const ReactRefreshTypeScript = require("react-refresh-typescript"); -const { sentryWebpackPlugin } = require("@sentry/webpack-plugin"); +import path, { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; + +import ReactRefreshWebpackPlugin from "@pmmmwh/react-refresh-webpack-plugin"; +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { CleanWebpackPlugin } from "clean-webpack-plugin"; +import CopyWebpackPlugin from "copy-webpack-plugin"; +import dotenv from "dotenv-flow"; +import fileSystem from "fs-extra"; +import HtmlWebpackPlugin from "html-webpack-plugin"; +import ReactRefreshTypeScript from "react-refresh-typescript"; +import TerserPlugin from "terser-webpack-plugin"; +import webpack from "webpack"; + +dotenv.config(); const env = { API_ORIGIN: process.env.API_ORIGIN || "https://app-api.hash.ai", @@ -23,6 +27,9 @@ const ASSET_PATH = process.env.ASSET_PATH || "/"; const alias = {}; +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + const secretsPath = path.join(__dirname, `secrets.${env.NODE_ENV}.js`); const fileExtensions = [ @@ -108,7 +115,7 @@ const options = { exclude: /node_modules/, use: [ { - loader: require.resolve("ts-loader"), + loader: "ts-loader", options: { getCustomTransformers: () => ({ before: [isDevelopment && ReactRefreshTypeScript()].filter( @@ -127,16 +134,20 @@ const options = { loader: "source-map-loader", }, { - loader: require.resolve("babel-loader"), + loader: "babel-loader", options: { - plugins: [ - isDevelopment && require.resolve("react-refresh/babel"), - ].filter(Boolean), + plugins: [isDevelopment && "react-refresh/babel"].filter(Boolean), }, }, ], exclude: /node_modules/, }, + { + test: /\.m?js/, + resolve: { + fullySpecified: false, + }, + }, ], }, resolve: { @@ -144,9 +155,6 @@ const options = { extensions: fileExtensions .map((extension) => `.${extension}`) .concat([".js", ".jsx", ".ts", ".tsx", ".css"]), - fallback: { - "process/browser": require.resolve("process/browser"), - }, }, plugins: [ isDevelopment && new ReactRefreshWebpackPlugin(), @@ -247,4 +255,4 @@ if (!isDevelopment) { }; } -module.exports = options; +export default options; diff --git a/blocks/address/package.json b/blocks/address/package.json index ed86405ac91..fc9ac111e5a 100644 --- a/blocks/address/package.json +++ b/blocks/address/package.json @@ -2,6 +2,7 @@ "name": "@blocks/address", "version": "0.1.2", "private": true, + "type": "module", "description": "Search for an address using the Mapbox Address Autofill and Mapbox Static Images APIs", "keywords": [ "blockprotocol", @@ -30,7 +31,7 @@ "trailingComma": "all" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@blockprotocol/service": "0.1.4", "@fortawesome/free-regular-svg-icons": "6.0.0", "@fortawesome/free-solid-svg-icons": "6.0.0", @@ -51,7 +52,8 @@ "mock-block-dock": "0.1.9", "prettier": "3.2.5", "react": "18.2.0", - "react-dom": "18.2.0" + "react-dom": "18.2.0", + "typescript": "5.1.6" }, "peerDependencies": { "react": "^18.0.0", diff --git a/blocks/ai-chat/package.json b/blocks/ai-chat/package.json index 9fe8fe95c55..c735304bd14 100644 --- a/blocks/ai-chat/package.json +++ b/blocks/ai-chat/package.json @@ -15,6 +15,7 @@ }, "license": "see LICENSE.md", "author": "HASH", + "type": "module", "scripts": { "build": "block-scripts build", "codegen": "block-scripts codegen && yarn format", @@ -26,7 +27,7 @@ "serve": "block-scripts serve" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@blockprotocol/hook": "0.1.3", "@blockprotocol/service": "0.1.4", "@hashintel/block-design-system": "0.0.2", @@ -46,7 +47,8 @@ "eslint": "8.57.0", "mock-block-dock": "0.1.9", "react": "18.2.0", - "react-dom": "18.2.0" + "react-dom": "18.2.0", + "typescript": "5.1.6" }, "peerDependencies": { "react": "^18.0.0", diff --git a/blocks/ai-image/package.json b/blocks/ai-image/package.json index 4c51f085ce4..8f58759c6de 100644 --- a/blocks/ai-image/package.json +++ b/blocks/ai-image/package.json @@ -2,6 +2,7 @@ "name": "@blocks/ai-image", "version": "0.1.2", "private": true, + "type": "module", "description": "Generate any image you can put into words, in just a few seconds", "keywords": [ "blockprotocol", @@ -30,7 +31,7 @@ "trailingComma": "all" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@blockprotocol/service": "0.1.4", "@hashintel/block-design-system": "0.0.2", "@hashintel/design-system": "0.0.8", @@ -47,7 +48,8 @@ "mock-block-dock": "0.1.9", "prettier": "3.2.5", "react": "18.2.0", - "react-dom": "18.2.0" + "react-dom": "18.2.0", + "typescript": "5.1.6" }, "peerDependencies": { "react": "^18.0.0", diff --git a/blocks/ai-text/package.json b/blocks/ai-text/package.json index edea414bf73..860d141cda9 100644 --- a/blocks/ai-text/package.json +++ b/blocks/ai-text/package.json @@ -15,6 +15,7 @@ }, "license": "see LICENSE.md", "author": "HASH", + "type": "module", "scripts": { "build": "block-scripts build", "codegen": "block-scripts codegen && yarn format", @@ -26,7 +27,7 @@ "serve": "block-scripts serve" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@blockprotocol/service": "0.1.4", "@hashintel/block-design-system": "0.0.2", "@hashintel/design-system": "0.0.8", @@ -40,7 +41,8 @@ "eslint": "8.57.0", "mock-block-dock": "0.1.9", "react": "18.2.0", - "react-dom": "18.2.0" + "react-dom": "18.2.0", + "typescript": "5.1.6" }, "peerDependencies": { "react": "^18.0.0", diff --git a/blocks/callout/package.json b/blocks/callout/package.json index 3ccab8d4e65..02c2559f190 100644 --- a/blocks/callout/package.json +++ b/blocks/callout/package.json @@ -15,6 +15,7 @@ }, "license": "(MIT OR Apache-2.0)", "author": "HASH", + "type": "module", "scripts": { "build": "block-scripts build", "codegen": "block-scripts codegen && yarn format", @@ -26,7 +27,7 @@ "serve": "block-scripts serve" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@blockprotocol/hook": "0.1.3" }, "devDependencies": { diff --git a/blocks/chart/package.json b/blocks/chart/package.json index ddec1089999..d709c5d361f 100644 --- a/blocks/chart/package.json +++ b/blocks/chart/package.json @@ -15,6 +15,7 @@ }, "license": "(MIT OR Apache-2.0)", "author": "HASH", + "type": "module", "scripts": { "build": "block-scripts build", "codegen": "block-scripts codegen && yarn format", @@ -26,7 +27,7 @@ "serve": "block-scripts serve" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@hashintel/block-design-system": "0.0.2", "@hashintel/design-system": "0.0.8", "@mui/material": "5.14.11", diff --git a/blocks/code/package.json b/blocks/code/package.json index 60fed4c4e58..e9827d6805d 100644 --- a/blocks/code/package.json +++ b/blocks/code/package.json @@ -15,6 +15,7 @@ }, "license": "(MIT OR Apache-2.0)", "author": "HASH", + "type": "module", "scripts": { "build": "block-scripts build", "codegen": "block-scripts codegen && yarn format", @@ -26,7 +27,7 @@ "serve": "block-scripts serve" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "prismjs": "1.29.0" }, "devDependencies": { diff --git a/blocks/countdown/package.json b/blocks/countdown/package.json index c2bf3252b08..3b40348733d 100644 --- a/blocks/countdown/package.json +++ b/blocks/countdown/package.json @@ -15,6 +15,7 @@ }, "license": "(MIT OR Apache-2.0)", "author": "HASH", + "type": "module", "scripts": { "build": "block-scripts build", "codegen": "block-scripts codegen && yarn format", @@ -26,7 +27,7 @@ "serve": "block-scripts serve" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "date-fns": "2.28.0", "react-datepicker": "4.7.0" }, diff --git a/blocks/divider/package.json b/blocks/divider/package.json index 221efd60570..50031a6eaeb 100644 --- a/blocks/divider/package.json +++ b/blocks/divider/package.json @@ -15,6 +15,7 @@ }, "license": "(MIT OR Apache-2.0)", "author": "HASH", + "type": "module", "scripts": { "build": "block-scripts build", "codegen": "block-scripts codegen && yarn format", @@ -26,7 +27,7 @@ "serve": "block-scripts serve" }, "dependencies": { - "@blockprotocol/core": "0.1.2", + "@blockprotocol/core": "0.1.3", "@blockprotocol/graph": "0.3.4-canary-20240313191438" }, "devDependencies": { diff --git a/blocks/embed/package.json b/blocks/embed/package.json index 4949d9615c3..d5724def36f 100644 --- a/blocks/embed/package.json +++ b/blocks/embed/package.json @@ -15,6 +15,7 @@ }, "license": "(MIT OR Apache-2.0)", "author": "HASH", + "type": "module", "scripts": { "build": "block-scripts build", "dev": "block-scripts dev", diff --git a/blocks/embed/src/utils.ts b/blocks/embed/src/utils.ts index 76df49e418f..ebaaa5eb5a9 100644 --- a/blocks/embed/src/utils.ts +++ b/blocks/embed/src/utils.ts @@ -1,4 +1,4 @@ -import { kebabCase } from "lodash"; +import kebabCase from "lodash/kebabCase"; import type { ProviderName } from "./types"; diff --git a/blocks/faq/package.json b/blocks/faq/package.json index 3a17ad71da2..bdf3915491c 100644 --- a/blocks/faq/package.json +++ b/blocks/faq/package.json @@ -2,6 +2,7 @@ "name": "@blocks/faq", "version": "0.1.3", "private": true, + "type": "module", "description": "Create a frequently asked questions section", "keywords": [ "blockprotocol", @@ -30,7 +31,7 @@ "trailingComma": "all" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@hashintel/block-design-system": "0.0.2", "@hashintel/design-system": "0.0.8", "@mui/material": "5.14.11", @@ -44,7 +45,8 @@ "mock-block-dock": "0.1.9", "prettier": "3.2.5", "react": "18.2.0", - "react-dom": "18.2.0" + "react-dom": "18.2.0", + "typescript": "5.1.6" }, "peerDependencies": { "react": "^18.0.0", diff --git a/blocks/heading/package.json b/blocks/heading/package.json index 7bee0ebcfd8..653e125c020 100644 --- a/blocks/heading/package.json +++ b/blocks/heading/package.json @@ -15,6 +15,7 @@ }, "license": "(MIT OR Apache-2.0)", "author": "HASH", + "type": "module", "scripts": { "build": "block-scripts build", "codegen": "block-scripts codegen && yarn format", @@ -26,7 +27,7 @@ "serve": "block-scripts serve" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@blockprotocol/hook": "0.1.3" }, "devDependencies": { diff --git a/blocks/how-to/package.json b/blocks/how-to/package.json index c3eb8a0c91f..83b58821da3 100644 --- a/blocks/how-to/package.json +++ b/blocks/how-to/package.json @@ -2,6 +2,7 @@ "name": "@blocks/how-to", "version": "0.1.3", "private": true, + "type": "module", "description": "Describe a task or process via a list of steps", "keywords": [ "blockprotocol", @@ -30,7 +31,7 @@ "trailingComma": "all" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@hashintel/block-design-system": "0.0.2", "@hashintel/design-system": "0.0.8", "@mui/material": "5.14.11", @@ -45,7 +46,8 @@ "mock-block-dock": "0.1.9", "prettier": "3.2.5", "react": "18.2.0", - "react-dom": "18.2.0" + "react-dom": "18.2.0", + "typescript": "5.1.6" }, "peerDependencies": { "react": "^18.0.0", diff --git a/blocks/image/package.json b/blocks/image/package.json index a839c48dcbf..8fd9cc117d3 100644 --- a/blocks/image/package.json +++ b/blocks/image/package.json @@ -15,6 +15,7 @@ }, "license": "(MIT OR Apache-2.0)", "author": "HASH", + "type": "module", "scripts": { "build": "block-scripts build", "codegen": "block-scripts codegen && yarn format", @@ -26,7 +27,7 @@ "serve": "block-scripts serve" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@blockprotocol/hook": "0.1.3", "twind": "0.16.17" }, diff --git a/blocks/kanban-board/package.json b/blocks/kanban-board/package.json index a22b035b351..113f6acecd8 100644 --- a/blocks/kanban-board/package.json +++ b/blocks/kanban-board/package.json @@ -2,6 +2,7 @@ "name": "@blocks/kanban-board", "version": "0.0.2", "private": true, + "type": "module", "description": "Capture information in cards, and drag cards flexibly between customizable columns", "keywords": [ "blockprotocol", @@ -30,7 +31,7 @@ "trailingComma": "all" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@dnd-kit/core": "6.0.8", "@dnd-kit/sortable": "7.0.2", "@dnd-kit/utilities": "3.2.1", @@ -53,7 +54,8 @@ "eslint": "8.57.0", "mock-block-dock": "0.1.9", "react": "18.2.0", - "react-dom": "18.2.0" + "react-dom": "18.2.0", + "typescript": "5.1.6" }, "peerDependencies": { "react": "^18.0.0", diff --git a/blocks/minesweeper/package.json b/blocks/minesweeper/package.json index c79ed2eb99b..a976e5f874e 100644 --- a/blocks/minesweeper/package.json +++ b/blocks/minesweeper/package.json @@ -9,6 +9,7 @@ ], "license": "(MIT OR Apache-2.0)", "author": "HASH", + "type": "module", "scripts": { "build": "block-scripts build", "codegen": "block-scripts codegen && yarn format", @@ -20,7 +21,7 @@ "serve": "block-scripts serve" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "lit": "^2.4.1", "mine-sweeper-tag": "1.0.6" }, @@ -31,7 +32,8 @@ "block-scripts": "0.3.4", "mock-block-dock": "0.1.9", "react": "18.2.0", - "react-dom": "18.2.0" + "react-dom": "18.2.0", + "typescript": "5.1.6" }, "block-scripts": { "port": 63212 diff --git a/blocks/paragraph/package.json b/blocks/paragraph/package.json index cdbef876cc5..a2caec876db 100644 --- a/blocks/paragraph/package.json +++ b/blocks/paragraph/package.json @@ -15,6 +15,7 @@ }, "license": "(MIT OR Apache-2.0)", "author": "HASH", + "type": "module", "scripts": { "build": "block-scripts build", "codegen": "block-scripts codegen && yarn format", @@ -26,7 +27,7 @@ "serve": "block-scripts serve" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@blockprotocol/hook": "0.1.3" }, "devDependencies": { diff --git a/blocks/person/package.json b/blocks/person/package.json index e60cbef834c..6efda6d216f 100644 --- a/blocks/person/package.json +++ b/blocks/person/package.json @@ -15,6 +15,7 @@ }, "license": "(MIT OR Apache-2.0)", "author": "HASH", + "type": "module", "scripts": { "build": "block-scripts build", "dev": "block-scripts dev", diff --git a/blocks/shuffle/package.json b/blocks/shuffle/package.json index a795d246146..08167edabee 100644 --- a/blocks/shuffle/package.json +++ b/blocks/shuffle/package.json @@ -15,6 +15,7 @@ }, "license": "(MIT OR Apache-2.0)", "author": "HASH", + "type": "module", "scripts": { "build": "block-scripts build", "codegen": "block-scripts codegen && yarn format", @@ -26,7 +27,7 @@ "serve": "block-scripts serve" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@dnd-kit/core": "6.0.8", "@dnd-kit/sortable": "7.0.2", "@dnd-kit/utilities": "3.2.1", diff --git a/blocks/table/package.json b/blocks/table/package.json index 12a852badb5..862c316cf7c 100644 --- a/blocks/table/package.json +++ b/blocks/table/package.json @@ -2,6 +2,7 @@ "name": "@blocks/table", "version": "0.3.4", "private": true, + "type": "module", "description": "Display and manipulate tabular data with filter, sort, and search features", "keywords": [ "blockprotocol", @@ -30,7 +31,7 @@ "trailingComma": "all" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@glideapps/glide-data-grid": "6.0.3", "@hashintel/block-design-system": "0.0.2", "@mui/material": "5.14.11", @@ -55,7 +56,8 @@ "eslint": "8.57.0", "mock-block-dock": "0.1.9", "react": "18.2.0", - "react-dom": "18.2.0" + "react-dom": "18.2.0", + "typescript": "5.1.6" }, "peerDependencies": { "react": "^18.0.0", diff --git a/blocks/timer/package.json b/blocks/timer/package.json index 7d0363ccc7b..f8a5a0ba4ca 100644 --- a/blocks/timer/package.json +++ b/blocks/timer/package.json @@ -15,6 +15,7 @@ }, "license": "(MIT OR Apache-2.0)", "author": "HASH", + "type": "module", "scripts": { "build": "block-scripts build", "codegen": "block-scripts codegen && yarn format", @@ -26,7 +27,7 @@ "serve": "block-scripts serve" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "date-fns": "2.28.0", "duration-fns": "3.0.1" }, diff --git a/blocks/video/package.json b/blocks/video/package.json index cba98cd0170..ba8b6416d00 100644 --- a/blocks/video/package.json +++ b/blocks/video/package.json @@ -15,6 +15,7 @@ }, "license": "(MIT OR Apache-2.0)", "author": "HASH", + "type": "module", "scripts": { "build": "block-scripts build", "codegen": "block-scripts codegen && yarn format", @@ -26,7 +27,7 @@ "serve": "block-scripts serve" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "twind": "0.16.17" }, "devDependencies": { diff --git a/libs/@blockprotocol/graph/package.json b/libs/@blockprotocol/graph/package.json index e998d7e8c14..9cf98db4de1 100644 --- a/libs/@blockprotocol/graph/package.json +++ b/libs/@blockprotocol/graph/package.json @@ -131,7 +131,7 @@ "lint:tsc": "tsc --noEmit" }, "dependencies": { - "@blockprotocol/core": "0.1.2", + "@blockprotocol/core": "0.1.3", "@blockprotocol/type-system": "0.1.2-canary.0", "ajv": "^8.11.2", "ajv-formats": "^2.1.1", diff --git a/libs/@blockprotocol/graph/src/shared/stdlib/subgraph/builder.ts b/libs/@blockprotocol/graph/src/shared/stdlib/subgraph/builder.ts index 9392643e6ad..3eca8753b69 100644 --- a/libs/@blockprotocol/graph/src/shared/stdlib/subgraph/builder.ts +++ b/libs/@blockprotocol/graph/src/shared/stdlib/subgraph/builder.ts @@ -147,7 +147,9 @@ export const buildSubgraph = ( if (missingRootVertexIds.length > 0) { throw new Error( - `Internal implementation error, could not find VertexId for root RecordId(s): ${missingRootVertexIds.join(", ")}`, + `Internal implementation error, could not find VertexId for root RecordId(s): ${missingRootVertexIds.join( + ", ", + )}`, ); } diff --git a/libs/@blockprotocol/type-system/typescript/vitest.config.mjs b/libs/@blockprotocol/type-system/typescript/vitest.config.js similarity index 100% rename from libs/@blockprotocol/type-system/typescript/vitest.config.mjs rename to libs/@blockprotocol/type-system/typescript/vitest.config.js diff --git a/libs/@hashintel/block-design-system/package.json b/libs/@hashintel/block-design-system/package.json index 4e41ac1582c..77881197c4d 100644 --- a/libs/@hashintel/block-design-system/package.json +++ b/libs/@hashintel/block-design-system/package.json @@ -1,6 +1,7 @@ { "name": "@hashintel/block-design-system", "version": "0.0.2", + "private": true, "description": "Block Design System", "bugs": { "url": "https://github.com/hashintel/hash/issues" @@ -15,6 +16,7 @@ "name": "HASH", "url": "https://hash.ai" }, + "type": "module", "main": "src/main.ts", "types": "src/main.ts", "scripts": { @@ -25,7 +27,7 @@ "postpublish": "PACKAGE_DIR=$(pwd) yarn workspace @local/repo-chores exe scripts/postpublish.ts" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@blockprotocol/type-system": "0.1.1", "@hashintel/design-system": "0.0.8", "@local/hash-isomorphic-utils": "0.0.0-private", diff --git a/libs/@hashintel/design-system/package.json b/libs/@hashintel/design-system/package.json index aee09daa65b..b7b2cc2a1d6 100644 --- a/libs/@hashintel/design-system/package.json +++ b/libs/@hashintel/design-system/package.json @@ -9,6 +9,7 @@ }, "license": "AGPL-3.0", "sideEffects": false, + "type": "module", "exports": { ".": "./src/components.ts", "./constants": "./src/constants.ts", @@ -36,7 +37,7 @@ "postpublish": "PACKAGE_DIR=$(pwd) yarn workspace @local/repo-chores exe scripts/postpublish.ts" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@blockprotocol/type-system": "0.1.1", "@fortawesome/free-regular-svg-icons": "6.0.0", "@fortawesome/free-solid-svg-icons": "6.0.0", diff --git a/libs/@hashintel/query-editor/package.json b/libs/@hashintel/query-editor/package.json index 26ca4fe9857..542a0f5349d 100644 --- a/libs/@hashintel/query-editor/package.json +++ b/libs/@hashintel/query-editor/package.json @@ -9,6 +9,7 @@ }, "license": "AGPL-3.0", "sideEffects": false, + "type": "module", "main": "src/main.ts", "types": "src/main.ts", "scripts": { @@ -19,7 +20,7 @@ "postpublish": "PACKAGE_DIR=$(pwd) yarn workspace @local/repo-chores exe scripts/postpublish.ts" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@fortawesome/free-regular-svg-icons": "6.0.0", "@fortawesome/free-solid-svg-icons": "6.0.0", "@hashintel/design-system": "0.0.8", @@ -31,7 +32,8 @@ "@mui/system": "5.14.11", "react": "18.2.0", "react-dom": "18.2.0", - "react-hook-form": "7.48.2" + "react-hook-form": "7.48.2", + "typescript": "5.1.6" }, "peerDependencies": { "@mui/material": "^5.14.0", diff --git a/libs/@hashintel/type-editor/package.json b/libs/@hashintel/type-editor/package.json index b4a0b1abec1..97f857529fc 100644 --- a/libs/@hashintel/type-editor/package.json +++ b/libs/@hashintel/type-editor/package.json @@ -9,6 +9,7 @@ }, "license": "AGPL-3.0", "sideEffects": false, + "type": "module", "main": "src/main.ts", "types": "src/main.ts", "scripts": { @@ -19,7 +20,7 @@ "postpublish": "PACKAGE_DIR=$(pwd) yarn workspace @local/repo-chores exe scripts/postpublish.ts" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@blockprotocol/type-system": "0.1.1", "@fortawesome/free-regular-svg-icons": "6.0.0", "@fortawesome/free-solid-svg-icons": "6.0.0", @@ -39,7 +40,8 @@ "@types/lodash.uniqueid": "4.0.7", "react": "18.2.0", "react-dom": "18.2.0", - "react-hook-form": "7.48.2" + "react-hook-form": "7.48.2", + "typescript": "5.1.6" }, "peerDependencies": { "@mui/material": "^5.14.0", diff --git a/libs/@hashintel/type-editor/src/entity-type-editor/property-list-card/property-title-cell.tsx b/libs/@hashintel/type-editor/src/entity-type-editor/property-list-card/property-title-cell.tsx index 7f58aa2457e..cefe6da725b 100644 --- a/libs/@hashintel/type-editor/src/entity-type-editor/property-list-card/property-title-cell.tsx +++ b/libs/@hashintel/type-editor/src/entity-type-editor/property-list-card/property-title-cell.tsx @@ -122,7 +122,9 @@ export const PropertyTitleCell = ({ diff --git a/libs/@hashintel/type-editor/src/entity-type-editor/shared/use-inherited-values.ts b/libs/@hashintel/type-editor/src/entity-type-editor/shared/use-inherited-values.ts index d3a6a88b115..1c8688534a9 100644 --- a/libs/@hashintel/type-editor/src/entity-type-editor/shared/use-inherited-values.ts +++ b/libs/@hashintel/type-editor/src/entity-type-editor/shared/use-inherited-values.ts @@ -99,7 +99,9 @@ const addInheritedValuesForEntityType = ( throw new Error( `Link type '${versionedUrlToTitle( duplicateLinkKey, - )}' found on two parents: '${duplicateInheritedFrom.schema.title}' and '${ + )}' found on two parents: '${ + duplicateInheritedFrom.schema.title + }' and '${ entityType.schema.title }'. Please remove it from one in order to have both as a parent.`, ); @@ -127,7 +129,9 @@ const addInheritedValuesForEntityType = ( throw new Error( `Property type '${versionedUrlToTitle( duplicatePropertyKey, - )}' found on two parents: '${duplicateInheritedFrom.schema.title}' and '${ + )}' found on two parents: '${ + duplicateInheritedFrom.schema.title + }' and '${ entityType.schema.title }'. Please remove it from one in order to have both as a parent.`, ); diff --git a/libs/@local/advanced-types/package.json b/libs/@local/advanced-types/package.json index 656d871bc70..44209504886 100644 --- a/libs/@local/advanced-types/package.json +++ b/libs/@local/advanced-types/package.json @@ -4,6 +4,7 @@ "private": true, "description": "A collection of helper types", "license": "(MIT OR Apache-2.0)", + "type": "module", "exports": { "./*": "./src/*.ts" }, diff --git a/libs/@local/hash-authorization/Cargo.toml b/libs/@local/hash-authorization/Cargo.toml index 471f8fefdf3..44164435abb 100644 --- a/libs/@local/hash-authorization/Cargo.toml +++ b/libs/@local/hash-authorization/Cargo.toml @@ -23,7 +23,7 @@ futures = { version = "0.3.30", default-features = false } serde_json = { version = "1.0.114" } serde_plain = "1.0.2" -reqwest = { version = "0.12.0", default-features = false, features = ["json", "stream"] } +reqwest = { version = "0.12.1", default-features = false, features = ["json", "stream"] } tokio-util = { version ="0.7.10", features = ["io"] } uuid = { version = "1.8.0", default-features = false, features = ["v5"] } diff --git a/libs/@local/hash-backend-utils/package.json b/libs/@local/hash-backend-utils/package.json index 027638875c1..f3cc3ecce6a 100644 --- a/libs/@local/hash-backend-utils/package.json +++ b/libs/@local/hash-backend-utils/package.json @@ -4,6 +4,7 @@ "private": true, "description": "HASH backend utilities", "license": "AGPL-3.0", + "type": "module", "exports": { "./*": "./src/*.ts" }, @@ -21,7 +22,7 @@ "test:unit": "vitest --run" }, "dependencies": { - "@blockprotocol/core": "0.1.2", + "@blockprotocol/core": "0.1.3", "@blockprotocol/type-system": "0.1.1", "@linear/sdk": "6.0.0", "@local/hash-graph-client": "0.0.0-private", @@ -38,7 +39,7 @@ "redis": "4.6.12", "slonik": "24.1.2", "wait-on": "6.0.1", - "winston": "3.3.3" + "winston": "3.11.0" }, "devDependencies": { "@local/eslint-config": "0.0.0-private", diff --git a/libs/@local/hash-backend-utils/src/create-graph-client.ts b/libs/@local/hash-backend-utils/src/create-graph-client.ts index 3d74d213cf0..54c2f1358dd 100644 --- a/libs/@local/hash-backend-utils/src/create-graph-client.ts +++ b/libs/@local/hash-backend-utils/src/create-graph-client.ts @@ -102,7 +102,9 @@ export const createGraphClient = ( /* @todo - Do we have any useful information we can extract from `response.request`? */ return Promise.reject( new Error( - `Encountered an error while calling the Graph API, which wasn't identified as coming from the Graph API: ${(secondaryError as Error).message},`, + `Encountered an error while calling the Graph API, which wasn't identified as coming from the Graph API: ${ + (secondaryError as Error).message + },`, ), ); } diff --git a/libs/@local/hash-backend-utils/src/environment.ts b/libs/@local/hash-backend-utils/src/environment.ts index 0de04c5ace0..baa8f115300 100644 --- a/libs/@local/hash-backend-utils/src/environment.ts +++ b/libs/@local/hash-backend-utils/src/environment.ts @@ -1,8 +1,12 @@ -import path from "node:path"; +import path, { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; import { config } from "dotenv-flow"; import waitOn from "wait-on"; +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + export const monorepoRootDir = path.resolve(__dirname, "../../../.."); config({ silent: true, path: monorepoRootDir }); diff --git a/libs/@local/hash-backend-utils/vitest.config.mjs b/libs/@local/hash-backend-utils/vitest.config.js similarity index 100% rename from libs/@local/hash-backend-utils/vitest.config.mjs rename to libs/@local/hash-backend-utils/vitest.config.js diff --git a/libs/@local/hash-graph-client/typescript/package.json b/libs/@local/hash-graph-client/typescript/package.json index 2efb42f7e90..84d88c61cc6 100644 --- a/libs/@local/hash-graph-client/typescript/package.json +++ b/libs/@local/hash-graph-client/typescript/package.json @@ -4,6 +4,7 @@ "private": true, "description": "OpenAPI client for the HASH Graph API.", "license": "AGPL-3.0", + "type": "module", "main": "index.ts", "scripts": { "codegen": "redocly bundle --format=json -o openapi.bundle.json ../../../../apps/hash-graph/openapi/openapi.json && openapi-generator-cli generate && rm openapi.bundle.json" @@ -16,7 +17,7 @@ "@apps/hash-graph": "0.0.0-private", "@local/eslint-config": "0.0.0-private", "@local/tsconfig": "0.0.0-private", - "@redocly/cli": "1.10.4", + "@redocly/cli": "1.10.5", "@types/node": "18.15.13", "@typescript-eslint/parser": "7.2.0", "eslint": "8.57.0", diff --git a/libs/@local/hash-graph-types/rust/Cargo.toml b/libs/@local/hash-graph-types/rust/Cargo.toml index cbda5a50ff8..20c798c48bc 100644 --- a/libs/@local/hash-graph-types/rust/Cargo.toml +++ b/libs/@local/hash-graph-types/rust/Cargo.toml @@ -14,7 +14,7 @@ type-system.workspace = true serde = { workspace = true, features = ["derive"] } -bytes = { version = "1.5.0" } +bytes = { version = "1.6.0" } serde_json = { version = "1.0.114" } utoipa = { version = "4.2.0", optional = true } postgres-types = { version = "0.2.6", default-features = false, features = ["derive", "with-uuid-1", "with-serde_json-1"], optional = true } diff --git a/libs/@local/hash-isomorphic-utils/package.json b/libs/@local/hash-isomorphic-utils/package.json index 0072dbf48dd..0e1a25db5b9 100644 --- a/libs/@local/hash-isomorphic-utils/package.json +++ b/libs/@local/hash-isomorphic-utils/package.json @@ -4,6 +4,7 @@ "private": true, "description": "Temporary catchall place for shared code", "license": "AGPL-3.0", + "type": "module", "exports": { "./*": "./src/*.ts" }, @@ -24,8 +25,8 @@ }, "dependencies": { "@apollo/client": "3.6.9", - "@blockprotocol/core": "0.1.2", - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/core": "0.1.3", + "@blockprotocol/graph": "0.3.4", "@local/advanced-types": "0.0.0-private", "@local/hash-graph-client": "0.0.0-private", "@local/hash-subgraph": "0.0.0-private", diff --git a/libs/@local/hash-isomorphic-utils/src/block-collection.ts b/libs/@local/hash-isomorphic-utils/src/block-collection.ts index f105a05b866..5929b5af869 100644 --- a/libs/@local/hash-isomorphic-utils/src/block-collection.ts +++ b/libs/@local/hash-isomorphic-utils/src/block-collection.ts @@ -36,10 +36,11 @@ const isSpatiallyPositionedProperties = ( }; export const sortBlockCollectionLinks = < - LinkEntity extends HasSpatiallyPositionedContent | HasIndexedContent, + Left extends HasSpatiallyPositionedContent | HasIndexedContent, + Right extends HasSpatiallyPositionedContent | HasIndexedContent, >( - a: LinkEntity, - b: LinkEntity, + a: Left, + b: Right, ) => { if ( isSpatiallyPositionedProperties(a.properties) || diff --git a/libs/@local/hash-isomorphic-utils/src/create-apollo-client.ts b/libs/@local/hash-isomorphic-utils/src/create-apollo-client.ts index 49897f9475b..a9f4827754c 100644 --- a/libs/@local/hash-isomorphic-utils/src/create-apollo-client.ts +++ b/libs/@local/hash-isomorphic-utils/src/create-apollo-client.ts @@ -67,7 +67,9 @@ export const createApolloClient = (params?: { return fetch( operationName - ? `${typeof uri === "string" ? uri : JSON.stringify(uri)}?${operationName}` + ? `${ + typeof uri === "string" ? uri : JSON.stringify(uri) + }?${operationName}` : uri, options, ); diff --git a/libs/@local/hash-isomorphic-utils/src/create-prose-mirror-state.ts b/libs/@local/hash-isomorphic-utils/src/create-prose-mirror-state.ts index a58942e53bc..423060bb714 100644 --- a/libs/@local/hash-isomorphic-utils/src/create-prose-mirror-state.ts +++ b/libs/@local/hash-isomorphic-utils/src/create-prose-mirror-state.ts @@ -1,5 +1,5 @@ import type { OwnedById } from "@local/hash-subgraph"; -import { cloneDeep } from "lodash"; +import cloneDeep from "lodash/cloneDeep"; import { baseKeymap } from "prosemirror-commands"; import { dropCursor } from "prosemirror-dropcursor"; import type { Node, Schema } from "prosemirror-model"; diff --git a/libs/@local/hash-isomorphic-utils/src/entity-store-plugin.ts b/libs/@local/hash-isomorphic-utils/src/entity-store-plugin.ts index 6dd627d31ad..30607ad20ac 100644 --- a/libs/@local/hash-isomorphic-utils/src/entity-store-plugin.ts +++ b/libs/@local/hash-isomorphic-utils/src/entity-store-plugin.ts @@ -7,7 +7,7 @@ import type { } from "@local/hash-subgraph"; import type { Draft } from "immer"; import { castDraft, produce } from "immer"; -import { isEqual } from "lodash"; +import isEqual from "lodash/isEqual"; import type { Node } from "prosemirror-model"; import type { EditorState, Transaction } from "prosemirror-state"; import { Plugin, PluginKey } from "prosemirror-state"; diff --git a/libs/@local/hash-isomorphic-utils/src/generate-system-types.ts b/libs/@local/hash-isomorphic-utils/src/generate-system-types.ts index ac1d9658bbe..0aead66fc2a 100644 --- a/libs/@local/hash-isomorphic-utils/src/generate-system-types.ts +++ b/libs/@local/hash-isomorphic-utils/src/generate-system-types.ts @@ -1,3 +1,7 @@ +import * as fs from "node:fs/promises"; +import path, { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; + import type { CodegenParameters } from "@blockprotocol/graph/codegen"; import { codegen } from "@blockprotocol/graph/codegen"; import type { VersionedUrl } from "@blockprotocol/type-system"; @@ -11,6 +15,9 @@ import { systemEntityTypes, } from "./ontology-type-ids"; +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + const generateTypes = async ( typeMap: Record, label: string, @@ -65,6 +72,36 @@ const generateTypes = async ( console.log(`Done generating ${label} types.`); }; +const replaceInFile = async ( + filePath: string, + search: RegExp, + replace: string, +) => { + const contents = await fs.readFile(filePath, "utf-8"); + const result = contents.replace(search, replace); + + await fs.writeFile(filePath, result, "utf-8"); +}; + +const replaceInDirectory = async ( + directoryPath: string, + search: RegExp, + replace: string, +) => { + const children = await fs.readdir(directoryPath); + + for (const child of children) { + const childPath = path.join(directoryPath, child); + const stats = await fs.stat(childPath); + + if (stats.isDirectory()) { + await replaceInDirectory(childPath, search, replace); + } else if (path.extname(childPath) === ".ts") { + await replaceInFile(childPath, search, replace); + } + } +}; + /** * Generate TypeScript types for the system types. The API and frontend must be running, i.e. `yarn dev` * @@ -80,6 +117,14 @@ const generateSystemTypeTypes = async () => { "Block Protocol", "blockprotocol", ); + + // replace every `@blockprotocol/graph` import with `@local/hash-subgraph` by recursively running through the + // resulting files. + await replaceInDirectory( + path.join(__dirname, "system-types"), + /@blockprotocol\/graph/g, + "@local/hash-subgraph", + ); }; void generateSystemTypeTypes(); diff --git a/libs/@local/hash-isomorphic-utils/src/graphql/type-defs/knowledge/flow.typedef.ts b/libs/@local/hash-isomorphic-utils/src/graphql/type-defs/knowledge/flow.typedef.ts new file mode 100644 index 00000000000..ce3c3a0cb71 --- /dev/null +++ b/libs/@local/hash-isomorphic-utils/src/graphql/type-defs/knowledge/flow.typedef.ts @@ -0,0 +1,148 @@ +import { gql } from "apollo-server-express"; + +export const flowTypedef = gql` + enum FlowRunStatus { + """ + Actively progressing or waiting on something + """ + RUNNING + """ + Returned an error and failed + """ + FAILED + """ + Completed successfully + """ + COMPLETED + """ + Successfully handled a cancellation request + """ + CANCELLED + """ + Was terminated + """ + TERMINATED + """ + Reached a timeout limit + """ + TIMED_OUT + """ + The run was closed in favour of spawning a new run with the same parameters and a fresh event history + See https://docs.temporal.io/workflows#continue-as-new + """ + CONTINUED_AS_NEW + + UNKNOWN + UNSPECIFIED + } + + enum FlowStepStatus { + SCHEDULED + STARTED + COMPLETED + FAILED + TIMED_OUT + CANCEL_REQUESTED + CANCELED + } + + scalar ArbitraryJsonData + + type StepRun { + """ + id for the step + @todo do we also want nodeId to link it to the Step Definition, where there might be multiple steps per node definition + in the case of spawning multiple parallel executions of a particular action? + """ + stepId: String! + """ + The type of step, i.e a name for what action it is performing, e.g. Persist Entities + @todo do we need this? it can be derived from the step definition. + @todo is this actually stepName, and we want a separate stepType of Action, Trigger etc? + """ + stepType: String! + """ + When the step was LAST scheduled for execution - this may have happened previously if a previous execution failed. + See https://docs.temporal.io/activities#activity-execution for execution details + """ + scheduledAt: String! + """ + When execution of a step was LAST started - there may be earlier executions which failed. + Note that this event is not written to the history until execution completes (successfully or unsuccessfully) + """ + startedAt: String + """ + Starting at 1, the number of times execution of this step has been attempted. + """ + attempt: Int! + """ + When the step last execution attempt finished, either successfully or unsuccessfully. + Another execution may yet be scheduled – check retryState. + """ + closedAt: String + """ + If the last execution failed, what retry policy applies. + """ + retryState: String + """ + Details of the last failure, if any. + The step may still be running if it has been retried since the last failure. + """ + lastFailure: ArbitraryJsonData + """ + The status of the step + """ + status: FlowStepStatus! + """ + Inputs to the step + """ + inputs: ArbitraryJsonData + """ + Outputs of the step + """ + outputs: ArbitraryJsonData + } + + type FlowRun { + """ + The identifier for this specific run of a Flow definition + """ + runId: String! + """ + The id for the definition of the Flow this run is executing + """ + flowDefinitionId: String! + """ + Details of the run's status, inputs, outputs etc + """ + status: FlowRunStatus! + """ + When the run was triggered + """ + startedAt: String! + """ + When the run began executing + """ + executedAt: String + """ + When the run stopped + """ + closedAt: String + """ + Inputs to the flow run + """ + inputs: ArbitraryJsonData + """ + Outputs of the flow run + """ + outputs: ArbitraryJsonData + """ + The steps in the flow + """ + steps: [StepRun!]! + } + + extend type Query { + getFlowRuns(flowTypes: [String!]): [FlowRun!]! + } +`; diff --git a/libs/@local/hash-isomorphic-utils/src/graphql/type-defs/schema.ts b/libs/@local/hash-isomorphic-utils/src/graphql/type-defs/schema.ts index 6b3e15a1f88..eea05ea54fb 100644 --- a/libs/@local/hash-isomorphic-utils/src/graphql/type-defs/schema.ts +++ b/libs/@local/hash-isomorphic-utils/src/graphql/type-defs/schema.ts @@ -8,6 +8,7 @@ import { blockCollectionTypedef } from "./knowledge/block-collection.typedef"; import { commentTypedef } from "./knowledge/comment.typedef"; import { entityTypedef } from "./knowledge/entity.typedef"; import { fileTypedef } from "./knowledge/file.typedef"; +import { flowTypedef } from "./knowledge/flow.typedef"; import { hashInstanceTypedef } from "./knowledge/hash-instance.typedef"; import { orgTypedef } from "./knowledge/org.typedef"; import { pageTypedef } from "./knowledge/page.typedef"; @@ -38,15 +39,16 @@ const baseSchema = gql` const ontology = [dataTypeTypedef, propertyTypeTypedef, entityTypeTypedef]; const knowledge = [ - entityTypedef, - blockTypedef, - pageTypedef, blockCollectionTypedef, + blockTypedef, commentTypedef, - userTypedef, - orgTypedef, - hashInstanceTypedef, + entityTypedef, fileTypedef, + flowTypedef, + hashInstanceTypedef, + orgTypedef, + pageTypedef, + userTypedef, ]; // This needs to be called 'schema' to be picked up by codegen - diff --git a/libs/@local/hash-isomorphic-utils/src/save.ts b/libs/@local/hash-isomorphic-utils/src/save.ts index 666dd054223..878d56d5afe 100644 --- a/libs/@local/hash-isomorphic-utils/src/save.ts +++ b/libs/@local/hash-isomorphic-utils/src/save.ts @@ -15,7 +15,7 @@ import { } from "@local/hash-subgraph/stdlib"; import type { LinkEntity } from "@local/hash-subgraph/type-system-patch"; import { generateNKeysBetween } from "fractional-indexing"; -import { isEqual } from "lodash"; +import isEqual from "lodash/isEqual"; import type { Node } from "prosemirror-model"; import { v4 as uuid } from "uuid"; diff --git a/libs/@local/hash-isomorphic-utils/src/simplify-properties.ts b/libs/@local/hash-isomorphic-utils/src/simplify-properties.ts index 8f9aa6633eb..7e570d4b204 100644 --- a/libs/@local/hash-isomorphic-utils/src/simplify-properties.ts +++ b/libs/@local/hash-isomorphic-utils/src/simplify-properties.ts @@ -1,7 +1,7 @@ import type { Entity as BpEntity } from "@blockprotocol/graph"; import { typedEntries } from "@local/advanced-types/typed-entries"; import type { Entity, EntityPropertiesObject } from "@local/hash-subgraph"; -import { camelCase } from "lodash"; +import camelCase from "lodash/camelCase"; /** @see https://stackoverflow.com/a/65015868/17217717 */ type CamelCase = S extends @@ -38,11 +38,15 @@ export type Simplified = Omit & { export const simplifyProperties = ( properties: T, ): SimpleProperties => { - return typedEntries(properties).reduce( - (acc, [key, value]) => ({ + // this function is only called with property objects that follow the HASH URL/bp scheme + return typedEntries(properties).reduce((acc, [key, value]) => { + // fallback to a non-simplified key if the key is not in the expected format + const id = key.split("/").at(-2); + const simplified = id ? camelCase(id) : key; + + return { ...acc, - [camelCase(key.split("/").slice(-2, -1).pop())]: value, - }), - {} as SimpleProperties, - ); + [simplified]: value, + }; + }, {} as SimpleProperties); }; diff --git a/libs/@local/hash-isomorphic-utils/src/stringify-property-value.ts b/libs/@local/hash-isomorphic-utils/src/stringify-property-value.ts index bdc134aa360..cda96c61490 100644 --- a/libs/@local/hash-isomorphic-utils/src/stringify-property-value.ts +++ b/libs/@local/hash-isomorphic-utils/src/stringify-property-value.ts @@ -21,7 +21,9 @@ export const stringifyPropertyValue = (propertyValue: unknown): string => { * If the property value is an array, we stringify each element and * join them with a comma surrounding them with square brackets */ - return `[${propertyValue.map((value) => stringifyPropertyValue(value)).join(", ")}]`; + return `[${propertyValue + .map((value) => stringifyPropertyValue(value)) + .join(", ")}]`; } else { // If the property value is an object, we stringify it return JSON.stringify(propertyValue); diff --git a/libs/@local/hash-isomorphic-utils/src/system-types/canvas.ts b/libs/@local/hash-isomorphic-utils/src/system-types/canvas.ts index 6d129203c7f..8cb30e55b15 100644 --- a/libs/@local/hash-isomorphic-utils/src/system-types/canvas.ts +++ b/libs/@local/hash-isomorphic-utils/src/system-types/canvas.ts @@ -2,7 +2,7 @@ * This file was automatically generated – do not edit it. */ -import type { Entity, LinkData } from "@blockprotocol/graph"; +import type { Entity, LinkData } from "@local/hash-subgraph"; import type { ArchivedPropertyValue, diff --git a/libs/@local/hash-isomorphic-utils/src/system-types/hashinstance.ts b/libs/@local/hash-isomorphic-utils/src/system-types/hashinstance.ts index c1e9d8c388b..a53759fca82 100644 --- a/libs/@local/hash-isomorphic-utils/src/system-types/hashinstance.ts +++ b/libs/@local/hash-isomorphic-utils/src/system-types/hashinstance.ts @@ -2,7 +2,7 @@ * This file was automatically generated – do not edit it. */ -import type { Entity } from "@blockprotocol/graph"; +import type { Entity } from "@local/hash-subgraph"; import type { BooleanDataType } from "./shared"; diff --git a/libs/@local/hash-isomorphic-utils/src/system-types/shared.ts b/libs/@local/hash-isomorphic-utils/src/system-types/shared.ts index 191bb69e563..bab4002edcc 100644 --- a/libs/@local/hash-isomorphic-utils/src/system-types/shared.ts +++ b/libs/@local/hash-isomorphic-utils/src/system-types/shared.ts @@ -2,7 +2,7 @@ * This file was automatically generated – do not edit it. */ -import type { Entity, LinkData } from "@blockprotocol/graph"; +import type { Entity, LinkData } from "@local/hash-subgraph"; export type Actor = Entity; diff --git a/libs/@local/hash-isomorphic-utils/src/util.ts b/libs/@local/hash-isomorphic-utils/src/util.ts index 9e9ed51f55c..ce9c55fbc2f 100644 --- a/libs/@local/hash-isomorphic-utils/src/util.ts +++ b/libs/@local/hash-isomorphic-utils/src/util.ts @@ -1,5 +1,5 @@ // @todo this should be defined elsewhere -import { uniq } from "lodash"; +import uniq from "lodash/uniq"; /** * This behaves differently from the type `{}`, and will error if you set more properties on it. diff --git a/libs/@local/hash-isomorphic-utils/src/wrap-entities-plugin.ts b/libs/@local/hash-isomorphic-utils/src/wrap-entities-plugin.ts index ce0fef2f12e..6f3eb0c02f3 100644 --- a/libs/@local/hash-isomorphic-utils/src/wrap-entities-plugin.ts +++ b/libs/@local/hash-isomorphic-utils/src/wrap-entities-plugin.ts @@ -1,5 +1,5 @@ import { entityStorePluginState } from "@local/hash-isomorphic-utils/entity-store-plugin"; -import { mapValues } from "lodash"; +import mapValues from "lodash/mapValues"; import { keymap } from "prosemirror-keymap"; import type { Node } from "prosemirror-model"; import type { Command, Transaction } from "prosemirror-state"; diff --git a/libs/@local/hash-isomorphic-utils/vitest.config.mjs b/libs/@local/hash-isomorphic-utils/vitest.config.js similarity index 100% rename from libs/@local/hash-isomorphic-utils/vitest.config.mjs rename to libs/@local/hash-isomorphic-utils/vitest.config.js diff --git a/libs/@local/hash-subgraph/package.json b/libs/@local/hash-subgraph/package.json index 5b56c83c974..31444f70d6f 100644 --- a/libs/@local/hash-subgraph/package.json +++ b/libs/@local/hash-subgraph/package.json @@ -2,6 +2,7 @@ "name": "@local/hash-subgraph", "version": "0.0.0-private", "private": true, + "type": "module", "exports": { ".": "./src/main.ts", "./stdlib": "./src/stdlib.ts", @@ -29,7 +30,7 @@ "test:unit": "vitest --run" }, "dependencies": { - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@blockprotocol/type-system": "0.1.1", "@local/advanced-types": "0.0.0-private", "@local/hash-graph-client": "0.0.0-private", diff --git a/libs/@local/hash-subgraph/vitest.config.mjs b/libs/@local/hash-subgraph/vitest.config.js similarity index 100% rename from libs/@local/hash-subgraph/vitest.config.mjs rename to libs/@local/hash-subgraph/vitest.config.js diff --git a/libs/@local/hash-validation/Cargo.toml b/libs/@local/hash-validation/Cargo.toml index b2536089d5a..2f3e2229fb4 100644 --- a/libs/@local/hash-validation/Cargo.toml +++ b/libs/@local/hash-validation/Cargo.toml @@ -16,7 +16,7 @@ type-system.workspace = true chrono = { version = "0.4.35", default-features = false, features = ["std"] } email_address.workspace = true futures.workspace = true -regex = "1.10.3" +regex = "1.10.4" serde_json.workspace = true thiserror = "1.0.58" iso8601-duration = "0.2.0" diff --git a/libs/@local/internal-api-client-generator/typescript/package.json b/libs/@local/internal-api-client-generator/typescript/package.json index d8fe4a4a45d..d1990f4276b 100644 --- a/libs/@local/internal-api-client-generator/typescript/package.json +++ b/libs/@local/internal-api-client-generator/typescript/package.json @@ -16,6 +16,7 @@ }, "license": "Unlicense", "author": "OpenAPI-Generator Contributors", + "type": "module", "main": "index.ts", "scripts": { "build": "tsc --outDir dist/", diff --git a/libs/@local/repo-chores/package.json b/libs/@local/repo-chores/package.json index fa2de6d3282..66b249b2109 100644 --- a/libs/@local/repo-chores/package.json +++ b/libs/@local/repo-chores/package.json @@ -2,6 +2,7 @@ "name": "@local/repo-chores", "version": "0.0.0-private", "private": true, + "type": "module", "scripts": { "exe": "tsx", "fix:eslint": "eslint --fix .", @@ -9,7 +10,7 @@ "lint:tsc": "tsc --noEmit" }, "dependencies": { - "@blockprotocol/core": "0.1.2", + "@blockprotocol/core": "0.1.3", "chalk": "4.1.2", "envalid": "7.3.1", "execa": "5.1.1", diff --git a/libs/@local/repo-chores/scripts/create-block.ts b/libs/@local/repo-chores/scripts/create-block.ts index 90539cb2400..725d57ee5c6 100644 --- a/libs/@local/repo-chores/scripts/create-block.ts +++ b/libs/@local/repo-chores/scripts/create-block.ts @@ -1,4 +1,5 @@ -import path from "node:path"; +import path, { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; import type { JsonObject } from "@blockprotocol/core"; import execa from "execa"; @@ -6,6 +7,9 @@ import fs from "fs-extra"; import { monorepoRootDirPath } from "./shared/monorepo"; +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + const script = async () => { const args = process.argv.slice(2); diff --git a/libs/@local/repo-chores/scripts/shared/monorepo.ts b/libs/@local/repo-chores/scripts/shared/monorepo.ts index c195d181ea9..565c24e9065 100644 --- a/libs/@local/repo-chores/scripts/shared/monorepo.ts +++ b/libs/@local/repo-chores/scripts/shared/monorepo.ts @@ -1,7 +1,11 @@ -import path from "node:path"; +import path, { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; import execa from "execa"; +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + export const monorepoRootDirPath = path.resolve(__dirname, "../../../../.."); type YarnWorkspaceInfo = { diff --git a/libs/@local/status/typescript/package.json b/libs/@local/status/typescript/package.json index a41ee16e728..4917a33e600 100644 --- a/libs/@local/status/typescript/package.json +++ b/libs/@local/status/typescript/package.json @@ -3,6 +3,7 @@ "version": "0.0.0-private", "private": true, "license": "(MIT OR Apache-2.0)", + "type": "module", "exports": { ".": { "types": "./pkg/src/main.ts", diff --git a/libs/@local/temporal-versioning/Cargo.toml b/libs/@local/temporal-versioning/Cargo.toml index 335549f9af9..a2f39511189 100644 --- a/libs/@local/temporal-versioning/Cargo.toml +++ b/libs/@local/temporal-versioning/Cargo.toml @@ -10,7 +10,7 @@ publish = false [dependencies] serde = { workspace = true, features = ["derive"] } -bytes = { version = "1.5.0", optional = true } +bytes = { version = "1.6.0", optional = true } utoipa = { version = "4.2.0", optional = true } postgres-types = { version = "0.2.6", default-features = false, features = ["with-time-0_3"], optional = true } time = { version = "0.3.34", default-features = false, features = ["serde", "parsing", "formatting", "macros"] } diff --git a/libs/@local/tsconfig/legacy-base-tsconfig-to-refactor.json b/libs/@local/tsconfig/legacy-base-tsconfig-to-refactor.json index cf106f58019..97203c75961 100644 --- a/libs/@local/tsconfig/legacy-base-tsconfig-to-refactor.json +++ b/libs/@local/tsconfig/legacy-base-tsconfig-to-refactor.json @@ -4,8 +4,8 @@ "allowJs": true, "esModuleInterop": true, "forceConsistentCasingInFileNames": true, - "lib": ["dom", "es2022"], - "module": "ESNext", + "lib": ["dom", "es2023"], + "module": "esnext", "moduleResolution": "node", "noUncheckedIndexedAccess": true, "resolveJsonModule": true, diff --git a/libs/error-stack/Cargo.toml b/libs/error-stack/Cargo.toml index d2dae27f260..dc834558fad 100644 --- a/libs/error-stack/Cargo.toml +++ b/libs/error-stack/Cargo.toml @@ -32,7 +32,7 @@ trybuild = "1.0.90" tracing = "0.1.40" tracing-subscriber = "0.3.18" insta = { version = "1.36.1", features = ['filters', 'ron'] } -regex = "1.10.3" +regex = "1.10.4" expect-test = "1.4.1" ansi-to-html = "0.2.1" once_cell = "1.19.0" diff --git a/tests/hash-backend-integration/package.json b/tests/hash-backend-integration/package.json index 1b9d4a50343..56f79393ff2 100644 --- a/tests/hash-backend-integration/package.json +++ b/tests/hash-backend-integration/package.json @@ -4,6 +4,7 @@ "private": true, "description": "Integration tests for HASH", "license": "AGPL-3.0", + "type": "module", "scripts": { "codegen": "rimraf './src/**/*.gen.*'; graphql-codegen --config codegen.config.ts", "fix:eslint": "eslint --fix .", @@ -27,9 +28,7 @@ "node-fetch": "2.7.0" }, "devDependencies": { - "@babel/preset-env": "7.23.9", - "@babel/preset-typescript": "7.23.3", - "@blockprotocol/graph": "0.3.4-canary-20240313191438", + "@blockprotocol/graph": "0.3.4", "@graphql-codegen/cli": "5.0.0", "@graphql-codegen/introspection": "2.2.3", "@graphql-codegen/typescript": "2.8.7", diff --git a/tests/hash-backend-integration/src/tests/graph/knowledge/primitive/entity.test.ts b/tests/hash-backend-integration/src/tests/graph/knowledge/primitive/entity.test.ts index e774fee4e57..d832fa86522 100644 --- a/tests/hash-backend-integration/src/tests/graph/knowledge/primitive/entity.test.ts +++ b/tests/hash-backend-integration/src/tests/graph/knowledge/primitive/entity.test.ts @@ -34,7 +34,7 @@ import { getRoots, mapGraphApiSubgraphToSubgraph, } from "@local/hash-subgraph/stdlib"; -import { afterAll, beforeAll, describe, expect, it } from "vitest"; +import { beforeAll, describe, expect, it } from "vitest"; import { resetGraph } from "../../../test-server"; import { @@ -195,17 +195,17 @@ describe("Entity CRU", () => { }, ], }); - }); - afterAll(async () => { - await deleteKratosIdentity({ - kratosIdentityId: testUser.kratosIdentityId, - }); - await deleteKratosIdentity({ - kratosIdentityId: testUser2.kratosIdentityId, - }); + return async () => { + await deleteKratosIdentity({ + kratosIdentityId: testUser.kratosIdentityId, + }); + await deleteKratosIdentity({ + kratosIdentityId: testUser2.kratosIdentityId, + }); - await resetGraph(); + await resetGraph(); + }; }); let createdEntity: Entity; diff --git a/tests/hash-backend-integration/src/tests/graph/knowledge/primitive/link-entity.test.ts b/tests/hash-backend-integration/src/tests/graph/knowledge/primitive/link-entity.test.ts index eaad79ee045..e7a285ea64e 100644 --- a/tests/hash-backend-integration/src/tests/graph/knowledge/primitive/link-entity.test.ts +++ b/tests/hash-backend-integration/src/tests/graph/knowledge/primitive/link-entity.test.ts @@ -25,7 +25,7 @@ import type { } from "@local/hash-subgraph"; import { linkEntityTypeUrl } from "@local/hash-subgraph"; import type { LinkEntity } from "@local/hash-subgraph/type-system-patch"; -import { afterAll, beforeAll, describe, expect, it } from "vitest"; +import { beforeAll, describe, expect, it } from "vitest"; import { resetGraph } from "../../../test-server"; import { createTestImpureGraphContext, createTestUser } from "../../../util"; @@ -194,14 +194,14 @@ describe("Link entity", () => { acquaintanceRightEntity = entity; }), ]); - }); - afterAll(async () => { - await deleteKratosIdentity({ - kratosIdentityId: testUser.kratosIdentityId, - }); + return async () => { + await deleteKratosIdentity({ + kratosIdentityId: testUser.kratosIdentityId, + }); - await resetGraph(); + await resetGraph(); + }; }); let linkEntityFriend: LinkEntity; diff --git a/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/block.test.ts b/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/block.test.ts index 4dfa7dae2db..6f1af22a870 100644 --- a/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/block.test.ts +++ b/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/block.test.ts @@ -20,7 +20,7 @@ import type { EntityTypeWithMetadata, OwnedById, } from "@local/hash-subgraph"; -import { afterAll, beforeAll, describe, expect, it } from "vitest"; +import { beforeAll, describe, expect, it } from "vitest"; import { resetGraph } from "../../../test-server"; import { createTestImpureGraphContext, createTestUser } from "../../../util"; @@ -89,14 +89,14 @@ describe("Block", () => { entityTypeId: dummyEntityType.schema.$id, relationships: createDefaultAuthorizationRelationships(authentication), }); - }); - afterAll(async () => { - await deleteKratosIdentity({ - kratosIdentityId: testUser.kratosIdentityId, - }); + return async () => { + await deleteKratosIdentity({ + kratosIdentityId: testUser.kratosIdentityId, + }); - await resetGraph(); + await resetGraph(); + }; }); it("can create a Block", async () => { diff --git a/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/comment-notification.test.ts b/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/comment-notification.test.ts index baae78ea851..beaadb6a362 100644 --- a/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/comment-notification.test.ts +++ b/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/comment-notification.test.ts @@ -18,7 +18,7 @@ import { systemEntityTypes } from "@local/hash-isomorphic-utils/ontology-type-id import type { TextProperties } from "@local/hash-isomorphic-utils/system-types/shared"; import type { OwnedById } from "@local/hash-subgraph"; import { extractOwnedByIdFromEntityId } from "@local/hash-subgraph"; -import { afterAll, beforeAll, describe, expect, it } from "vitest"; +import { beforeAll, describe, expect, it } from "vitest"; import { resetGraph } from "../../../test-server"; import { @@ -70,17 +70,17 @@ describe("Comment Notification", () => { orgEntityId: testOrg.entity.metadata.recordId.entityId, }, ); - }); - afterAll(async () => { - await deleteKratosIdentity({ - kratosIdentityId: triggerUser.kratosIdentityId, - }); - await deleteKratosIdentity({ - kratosIdentityId: recipientUser.kratosIdentityId, - }); + return async () => { + await deleteKratosIdentity({ + kratosIdentityId: triggerUser.kratosIdentityId, + }); + await deleteKratosIdentity({ + kratosIdentityId: recipientUser.kratosIdentityId, + }); - await resetGraph(); + await resetGraph(); + }; }); it("can create a comment notification when a comment is left on a page", async () => { diff --git a/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/comment.test.ts b/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/comment.test.ts index f84ca203cc1..2a53a737de0 100644 --- a/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/comment.test.ts +++ b/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/comment.test.ts @@ -21,7 +21,7 @@ import { createDefaultAuthorizationRelationships } from "@local/hash-isomorphic- import { systemEntityTypes } from "@local/hash-isomorphic-utils/ontology-type-ids"; import type { TextProperties } from "@local/hash-isomorphic-utils/system-types/shared"; import type { OwnedById } from "@local/hash-subgraph"; -import { afterAll, beforeAll, describe, expect, it } from "vitest"; +import { beforeAll, describe, expect, it } from "vitest"; import { resetGraph } from "../../../test-server"; import { @@ -87,14 +87,14 @@ describe("Comment", () => { }); testBlock = pageBlocks[0]!.rightEntity; - }); - afterAll(async () => { - await deleteKratosIdentity({ - kratosIdentityId: testUser.kratosIdentityId, - }); + return async () => { + await deleteKratosIdentity({ + kratosIdentityId: testUser.kratosIdentityId, + }); - await resetGraph(); + await resetGraph(); + }; }); it("createComment method can create a comment", async () => { diff --git a/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/file.test.ts b/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/file.test.ts index a095933ee99..b815b1bd136 100644 --- a/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/file.test.ts +++ b/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/file.test.ts @@ -8,7 +8,7 @@ import type { User } from "@apps/hash-api/src/graph/knowledge/system-types/user" import { TypeSystemInitializer } from "@blockprotocol/type-system"; import { Logger } from "@local/hash-backend-utils/logger"; import type { EntityId, OwnedById, Timestamp } from "@local/hash-subgraph"; -import { afterAll, beforeAll, describe, expect, it, vi } from "vitest"; +import { beforeAll, describe, expect, it, vi } from "vitest"; import { resetGraph } from "../../../test-server"; import { createTestImpureGraphContext, createTestUser } from "../../../util"; @@ -28,14 +28,14 @@ describe("File", () => { await ensureSystemGraphIsInitialized({ logger, context: graphContext }); testUser = await createTestUser(graphContext, "fileTest", logger); - }); - afterAll(async () => { - await deleteKratosIdentity({ - kratosIdentityId: testUser.kratosIdentityId, - }); + return async () => { + await deleteKratosIdentity({ + kratosIdentityId: testUser.kratosIdentityId, + }); - await resetGraph(); + await resetGraph(); + }; }); it("createFileFromUploadRequest can create a file entity from a file", async () => { diff --git a/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/hash-instance.test.ts b/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/hash-instance.test.ts index a1511c532d5..138bad59c8f 100644 --- a/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/hash-instance.test.ts +++ b/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/hash-instance.test.ts @@ -14,7 +14,7 @@ import { isUserHashInstanceAdmin, } from "@local/hash-backend-utils/hash-instance"; import { Logger } from "@local/hash-backend-utils/logger"; -import { afterAll, beforeAll, describe, expect, it } from "vitest"; +import { beforeAll, describe, expect, it } from "vitest"; import { resetGraph } from "../../../test-server"; import { createTestImpureGraphContext, createTestUser } from "../../../util"; @@ -31,10 +31,10 @@ describe("Hash Instance", () => { beforeAll(async () => { await TypeSystemInitializer.initialize(); await ensureSystemGraphIsInitialized({ logger, context: graphContext }); - }); - afterAll(async () => { - await resetGraph(); + return async () => { + await resetGraph(); + }; }); let hashInstance: HashInstance; diff --git a/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/org-membership.test.ts b/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/org-membership.test.ts index e44e5e95b9a..0edb9e33372 100644 --- a/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/org-membership.test.ts +++ b/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/org-membership.test.ts @@ -11,7 +11,7 @@ import type { User } from "@apps/hash-api/src/graph/knowledge/system-types/user" import type { AuthenticationContext } from "@apps/hash-api/src/graphql/authentication-context"; import { TypeSystemInitializer } from "@blockprotocol/type-system"; import { Logger } from "@local/hash-backend-utils/logger"; -import { afterAll, beforeAll, describe, expect, it } from "vitest"; +import { beforeAll, describe, expect, it } from "vitest"; import { resetGraph } from "../../../test-server"; import { @@ -47,14 +47,14 @@ describe("OrgMembership", () => { "orgMembershipTest", logger, ); - }); - afterAll(async () => { - await deleteKratosIdentity({ - kratosIdentityId: testUser.kratosIdentityId, - }); + return async () => { + await deleteKratosIdentity({ + kratosIdentityId: testUser.kratosIdentityId, + }); - await resetGraph(); + await resetGraph(); + }; }); let testOrgMembership: OrgMembership; diff --git a/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/page.test.ts b/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/page.test.ts index e5959082b20..f3e6023131d 100644 --- a/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/page.test.ts +++ b/tests/hash-backend-integration/src/tests/graph/knowledge/system-types/page.test.ts @@ -29,7 +29,7 @@ import type { import type { OwnedById } from "@local/hash-subgraph"; import type { LinkEntity } from "@local/hash-subgraph/type-system-patch"; import { generateKeyBetween } from "fractional-indexing"; -import { afterAll, beforeAll, describe, expect, it } from "vitest"; +import { beforeAll, describe, expect, it } from "vitest"; import { resetGraph } from "../../../test-server"; import { createTestImpureGraphContext, createTestUser } from "../../../util"; @@ -50,14 +50,14 @@ describe("Page", () => { await ensureSystemGraphIsInitialized({ logger, context: graphContext }); testUser = await createTestUser(graphContext, "pageTest", logger); - }); - afterAll(async () => { - await deleteKratosIdentity({ - kratosIdentityId: testUser.kratosIdentityId, - }); + return async () => { + await deleteKratosIdentity({ + kratosIdentityId: testUser.kratosIdentityId, + }); - await resetGraph(); + await resetGraph(); + }; }); const createTestBlock = async () => { diff --git a/tests/hash-backend-integration/src/tests/graph/ontology/primitive/data-type.test.ts b/tests/hash-backend-integration/src/tests/graph/ontology/primitive/data-type.test.ts index 9285ac359b2..2908633edaa 100644 --- a/tests/hash-backend-integration/src/tests/graph/ontology/primitive/data-type.test.ts +++ b/tests/hash-backend-integration/src/tests/graph/ontology/primitive/data-type.test.ts @@ -17,7 +17,7 @@ import type { OwnedById, } from "@local/hash-subgraph"; import { isOwnedOntologyElementMetadata } from "@local/hash-subgraph"; -import { afterAll, beforeAll, describe, expect, it } from "vitest"; +import { beforeAll, describe, expect, it } from "vitest"; import { resetGraph } from "../../../test-server"; import { @@ -81,17 +81,16 @@ beforeAll(async () => { operation: "create", }, ]); -}); - -afterAll(async () => { - await deleteKratosIdentity({ - kratosIdentityId: testUser.kratosIdentityId, - }); - await deleteKratosIdentity({ - kratosIdentityId: testUser2.kratosIdentityId, - }); - await resetGraph(); + return async () => { + await deleteKratosIdentity({ + kratosIdentityId: testUser.kratosIdentityId, + }); + await deleteKratosIdentity({ + kratosIdentityId: testUser2.kratosIdentityId, + }); + await resetGraph(); + }; }); describe("Data type CRU", () => { diff --git a/tests/hash-backend-integration/src/tests/graph/ontology/primitive/entity-type.test.ts b/tests/hash-backend-integration/src/tests/graph/ontology/primitive/entity-type.test.ts index 4f73218b7ee..efc3cf66033 100644 --- a/tests/hash-backend-integration/src/tests/graph/ontology/primitive/entity-type.test.ts +++ b/tests/hash-backend-integration/src/tests/graph/ontology/primitive/entity-type.test.ts @@ -30,7 +30,7 @@ import { isOwnedOntologyElementMetadata, linkEntityTypeUrl, } from "@local/hash-subgraph"; -import { afterAll, beforeAll, describe, expect, it } from "vitest"; +import { beforeAll, describe, expect, it } from "vitest"; import { resetGraph } from "../../../test-server"; import { @@ -221,17 +221,16 @@ beforeAll(async () => { }, }, }; -}); - -afterAll(async () => { - await deleteKratosIdentity({ - kratosIdentityId: testUser.kratosIdentityId, - }); - await deleteKratosIdentity({ - kratosIdentityId: testUser2.kratosIdentityId, - }); - await resetGraph(); + return async () => { + await deleteKratosIdentity({ + kratosIdentityId: testUser.kratosIdentityId, + }); + await deleteKratosIdentity({ + kratosIdentityId: testUser2.kratosIdentityId, + }); + await resetGraph(); + }; }); describe("Entity type CRU", () => { diff --git a/tests/hash-backend-integration/src/tests/graph/ontology/primitive/property-type.test.ts b/tests/hash-backend-integration/src/tests/graph/ontology/primitive/property-type.test.ts index 653eba3db12..6be26b269ea 100644 --- a/tests/hash-backend-integration/src/tests/graph/ontology/primitive/property-type.test.ts +++ b/tests/hash-backend-integration/src/tests/graph/ontology/primitive/property-type.test.ts @@ -19,7 +19,7 @@ import { import type { ConstructPropertyTypeParams } from "@local/hash-isomorphic-utils/types"; import type { OwnedById, PropertyTypeWithMetadata } from "@local/hash-subgraph"; import { isOwnedOntologyElementMetadata } from "@local/hash-subgraph"; -import { afterAll, beforeAll, describe, expect, it } from "vitest"; +import { beforeAll, describe, expect, it } from "vitest"; import { resetGraph } from "../../../test-server"; import { @@ -70,17 +70,17 @@ beforeAll(async () => { }, ], }; -}); -afterAll(async () => { - await deleteKratosIdentity({ - kratosIdentityId: testUser.kratosIdentityId, - }); - await deleteKratosIdentity({ - kratosIdentityId: testUser2.kratosIdentityId, - }); + return async () => { + await deleteKratosIdentity({ + kratosIdentityId: testUser.kratosIdentityId, + }); + await deleteKratosIdentity({ + kratosIdentityId: testUser2.kratosIdentityId, + }); - await resetGraph(); + await resetGraph(); + }; }); describe("Property type CRU", () => { diff --git a/tests/hash-backend-integration/vitest.config.mjs b/tests/hash-backend-integration/vitest.config.js similarity index 100% rename from tests/hash-backend-integration/vitest.config.mjs rename to tests/hash-backend-integration/vitest.config.js diff --git a/tests/hash-playwright/package.json b/tests/hash-playwright/package.json index 17aa1fac95c..62b96504543 100644 --- a/tests/hash-playwright/package.json +++ b/tests/hash-playwright/package.json @@ -2,12 +2,13 @@ "name": "@tests/hash-playwright", "version": "0.0.0-private", "private": true, + "type": "module", "scripts": { "codegen": "rimraf './src/**/*.gen.*'; graphql-codegen --config codegen.config.ts", "fix:eslint": "eslint --fix .", "lint:eslint": "eslint --report-unused-disable-directives .", "lint:tsc": "tsc --noEmit", - "test:system": "PW_EXPERIMENTAL_SERVICE_WORKER_NETWORK_EVENTS=1 npx playwright test --project chromium" + "test:system": "PW_EXPERIMENTAL_SERVICE_WORKER_NETWORK_EVENTS=1 PW_EXPERIMENTAL_TS_ESM=1 npx playwright test --project chromium" }, "dependencies": { "@local/eslint-config": "0.0.0-private", diff --git a/tests/hash-playwright/tests/browser-plugin/fixtures.ts b/tests/hash-playwright/tests/browser-plugin/fixtures.ts index 62b622f186c..60a40a60fa6 100644 --- a/tests/hash-playwright/tests/browser-plugin/fixtures.ts +++ b/tests/hash-playwright/tests/browser-plugin/fixtures.ts @@ -1,7 +1,11 @@ -import path from "node:path"; +import path, { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; import { type BrowserContext, chromium, test as base } from "@playwright/test"; +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + const monorepoRootDir = path.resolve(__dirname, "../../../../"); export const test = base.extend<{ diff --git a/tests/hash-playwright/tests/shared/get-derived-payload-from-most-recent-email.ts b/tests/hash-playwright/tests/shared/get-derived-payload-from-most-recent-email.ts index 39efb151853..695ea0d4092 100644 --- a/tests/hash-playwright/tests/shared/get-derived-payload-from-most-recent-email.ts +++ b/tests/hash-playwright/tests/shared/get-derived-payload-from-most-recent-email.ts @@ -74,7 +74,9 @@ export const getDerivedPayloadFromMostRecentEmail = async ( if (typeof mostRecentEmailDump !== "object") { throw new Error( - `Expected most recent email to be an object, got ${JSON.stringify(mostRecentEmailDump)}`, + `Expected most recent email to be an object, got ${JSON.stringify( + mostRecentEmailDump, + )}`, ); } diff --git a/yarn.lock b/yarn.lock index c5974bc9ded..185dc07b6a0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -821,20 +821,20 @@ "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" chokidar "^3.4.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.21.4", "@babel/code-frame@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" - integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.21.4", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1": + version "7.24.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" + integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== dependencies: - "@babel/highlight" "^7.23.4" - chalk "^2.4.2" + "@babel/highlight" "^7.24.2" + picocolors "^1.0.0" "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.4", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.3", "@babel/compat-data@^7.23.5": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== -"@babel/core@7.23.9", "@babel/core@^7.11.6", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.16.0", "@babel/core@^7.17.9", "@babel/core@^7.20.2", "@babel/core@^7.21.0", "@babel/core@^7.22.9", "@babel/core@^7.23.9", "@babel/core@^7.7.5": +"@babel/core@7.23.9", "@babel/core@^7.11.6", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.16.0", "@babel/core@^7.17.9", "@babel/core@^7.20.2", "@babel/core@^7.21.0", "@babel/core@^7.21.3", "@babel/core@^7.22.9", "@babel/core@^7.23.9", "@babel/core@^7.7.5": version "7.23.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== @@ -885,14 +885,14 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.12.11", "@babel/generator@^7.14.0", "@babel/generator@^7.18.13", "@babel/generator@^7.21.4", "@babel/generator@^7.22.9", "@babel/generator@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" - integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== +"@babel/generator@^7.12.11", "@babel/generator@^7.14.0", "@babel/generator@^7.18.13", "@babel/generator@^7.21.4", "@babel/generator@^7.22.9", "@babel/generator@^7.23.6", "@babel/generator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.1.tgz#e67e06f68568a4ebf194d1c6014235344f0476d0" + integrity sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A== dependencies: - "@babel/types" "^7.23.6" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" + "@babel/types" "^7.24.0" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" "@babel/generator@~7.21.1": @@ -1040,10 +1040,10 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" - integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz#945681931a52f15ce879fd5b86ce2dae6d3d7f2a" + integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== "@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.22.20": version "7.22.20" @@ -1109,27 +1109,28 @@ "@babel/types" "^7.22.19" "@babel/helpers@^7.21.0", "@babel/helpers@^7.23.9": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.0.tgz#a3dd462b41769c95db8091e49cfe019389a9409b" - integrity sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA== + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.1.tgz#183e44714b9eba36c3038e442516587b1e0a1a94" + integrity sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg== dependencies: "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.0" + "@babel/traverse" "^7.24.1" "@babel/types" "^7.24.0" -"@babel/highlight@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" - integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== +"@babel/highlight@^7.24.2": + version "7.24.2" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" + integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== dependencies: "@babel/helper-validator-identifier" "^7.22.20" chalk "^2.4.2" js-tokens "^4.0.0" + picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.4", "@babel/parser@^7.16.8", "@babel/parser@^7.21.4", "@babel/parser@^7.23.6", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.0.tgz#26a3d1ff49031c53a97d03b604375f028746a9ac" - integrity sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg== +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.4", "@babel/parser@^7.16.8", "@babel/parser@^7.21.4", "@babel/parser@^7.23.6", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.1.tgz#1e416d3627393fab1cb5b0f2f1796a100ae9133a" + integrity sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg== "@babel/parser@~7.21.2": version "7.21.4" @@ -1781,12 +1782,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-react-constant-elements@^7.14.5": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.16.7.tgz#19e9e4c2df2f6c3e6b3aea11778297d81db8df62" - integrity "sha1-Genkwt8vbD5rOuoRd4KX2B2432I= sha512-lF+cfsyTgwWkcw715J88JhMYJ5GpysYNLhLP1PkvkhTRN7B3e74R/1KsDxFxhRpSn0UUD3IWM4GvdBR2PEbbQQ==" +"@babel/plugin-transform-react-constant-elements@^7.21.3": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.24.1.tgz#d493a0918b9fdad7540f5afd9b5eb5c52500d18d" + integrity sha512-QXp1U9x0R7tkiGB0FOk8o74jhnap0FlZ5gNkRIWdG3eP+SvMFg118e1zaWewDzgABb106QSKpVsD3Wgd8t6ifA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-transform-react-display-name@^7.0.0", "@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.23.3": version "7.23.3" @@ -1925,7 +1926,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/preset-env@7.23.9", "@babel/preset-env@^7.15.6", "@babel/preset-env@^7.16.11", "@babel/preset-env@^7.16.4", "@babel/preset-env@^7.20.2": +"@babel/preset-env@7.23.9", "@babel/preset-env@^7.16.11", "@babel/preset-env@^7.16.4", "@babel/preset-env@^7.20.2": version "7.23.9" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.9.tgz#beace3b7994560ed6bf78e4ae2073dff45387669" integrity sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A== @@ -2121,7 +2122,7 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@7.23.3", "@babel/preset-react@^7.14.5", "@babel/preset-react@^7.16.0", "@babel/preset-react@^7.16.7", "@babel/preset-react@^7.18.6": +"@babel/preset-react@7.23.3", "@babel/preset-react@^7.16.0", "@babel/preset-react@^7.16.7", "@babel/preset-react@^7.18.6": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.23.3.tgz#f73ca07e7590f977db07eb54dbe46538cc015709" integrity sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w== @@ -2142,7 +2143,7 @@ "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-transform-typescript" "^7.16.7" -"@babel/preset-typescript@7.23.3", "@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.15.0", "@babel/preset-typescript@^7.16.0", "@babel/preset-typescript@^7.21.0": +"@babel/preset-typescript@7.23.3", "@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.16.0", "@babel/preset-typescript@^7.21.0": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz#14534b34ed5b6d435aa05f1ae1c5e7adcc01d913" integrity sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ== @@ -2200,18 +2201,18 @@ "@babel/parser" "^7.24.0" "@babel/types" "^7.24.0" -"@babel/traverse@^7.1.6", "@babel/traverse@^7.14.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.4", "@babel/traverse@^7.22.8", "@babel/traverse@^7.23.9", "@babel/traverse@^7.24.0": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.0.tgz#4a408fbf364ff73135c714a2ab46a5eab2831b1e" - integrity sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw== +"@babel/traverse@^7.1.6", "@babel/traverse@^7.14.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.4", "@babel/traverse@^7.22.8", "@babel/traverse@^7.23.9", "@babel/traverse@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c" + integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" + "@babel/code-frame" "^7.24.1" + "@babel/generator" "^7.24.1" "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.24.0" + "@babel/parser" "^7.24.1" "@babel/types" "^7.24.0" debug "^4.3.1" globals "^11.1.0" @@ -2232,7 +2233,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.15.6", "@babel/types@^7.16.8", "@babel/types@^7.18.13", "@babel/types@^7.2.0", "@babel/types@^7.21.4", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.24.0", "@babel/types@^7.3.0", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.16.8", "@babel/types@^7.18.13", "@babel/types@^7.2.0", "@babel/types@^7.21.3", "@babel/types@^7.21.4", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.24.0", "@babel/types@^7.3.0", "@babel/types@^7.4.4": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== @@ -2301,6 +2302,14 @@ es-module-lexer "^0.10.5" uuid "^8.3.2" +"@blockprotocol/core@0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@blockprotocol/core/-/core-0.1.3.tgz#e4d240856816120b7b8c198d4fd6ff389305c7c0" + integrity sha512-qmCsr70aHsR7t9WKJ2BFwnYo0KFxb7H7NZ4lFiQAWS9BpJ7xALVdzJdkoz+pWoMSkKhpBvnu/LTy/BLC5zI6zw== + dependencies: + es-module-lexer "^0.10.5" + uuid "^8.3.2" + "@blockprotocol/graph@0.0.13": version "0.0.13" resolved "https://registry.yarnpkg.com/@blockprotocol/graph/-/graph-0.0.13.tgz#28557aa66a4f1262f8d10b0569ac16d283490b44" @@ -2344,6 +2353,19 @@ lit "^2.4.1" typescript "4.9.4" +"@blockprotocol/graph@0.3.4": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@blockprotocol/graph/-/graph-0.3.4.tgz#1d2f66e726dc63a9ebb6ca0c25a8140d088b7b78" + integrity sha512-4H3Z3jrM0fNM6EyS70/HuRy7geApaFtuv9ELRX90s+tmFjiJ9lkZjhaIbu8rdJV3RygDZGG+S3TQjGBFYbR9VQ== + dependencies: + "@blockprotocol/core" "0.1.3" + "@blockprotocol/type-system" "0.1.1" + ajv "^8.11.2" + ajv-formats "^2.1.1" + json-schema-to-typescript "^11.0.2" + lit "^2.4.1" + typescript "4.9.4" + "@blockprotocol/graph@0.3.4-canary-20240313191438": version "0.3.4-canary-20240313191438" resolved "https://registry.yarnpkg.com/@blockprotocol/graph/-/graph-0.3.4-canary-20240313191438.tgz#33552601d61ef7b837dc3b9e61c8765feebe57f0" @@ -2619,6 +2641,11 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity "sha1-u1BFecHK6SPmV2pPXaQ9Jfl729k= sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" +"@colors/colors@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" + integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== + "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -3927,24 +3954,24 @@ resolved "https://registry.yarnpkg.com/@josephg/resolvable/-/resolvable-1.0.1.tgz#69bc4db754d79e1a2f17a650d3466e038d94a5eb" integrity "sha1-abxNt1TXnhovF6ZQ00ZuA42Upes= sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==" -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - integrity "sha1-wa7cYehT8rufXf5tRELTtWWyU7k= sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==" +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== dependencies: - "@jridgewell/set-array" "^1.0.1" + "@jridgewell/set-array" "^1.2.1" "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/trace-mapping" "^0.3.24" "@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity "sha1-IgOxGMFXchrd/mnUe3BGVGMGbXg= sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity "sha1-fGz5mNbSC5FMClWpGuko/yWWXnI= sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== "@jridgewell/source-map@^0.3.3": version "0.3.5" @@ -3967,7 +3994,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.9": version "0.3.25" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== @@ -5340,12 +5367,12 @@ require-from-string "^2.0.2" uri-js "^4.2.2" -"@redocly/cli@1.10.4": - version "1.10.4" - resolved "https://registry.yarnpkg.com/@redocly/cli/-/cli-1.10.4.tgz#2b7f0cf7f20470f6288aec68a7db25738c7fe111" - integrity sha512-Jgy6MOlWOcwu55Y3tUjM2ozfOt6F+nCXsxn2Rb1JAnluh43B7cGDkv+JSQ2D6KWgLGRnXolmpKlKD1/ASOyI/Q== +"@redocly/cli@1.10.5": + version "1.10.5" + resolved "https://registry.yarnpkg.com/@redocly/cli/-/cli-1.10.5.tgz#11906c78af57666876feeabfe15e1fb39c7864ca" + integrity sha512-MwFErrbLmzXa7r6UKfPMfBuWErvTBbZ6xkYo9I8Y4pFOdB98Cy1r2e0zI7PKWSI3+skw2etONdAEvlF/F9TEAQ== dependencies: - "@redocly/openapi-core" "1.10.4" + "@redocly/openapi-core" "1.10.5" abort-controller "^3.0.0" chokidar "^3.5.1" colorette "^1.2.0" @@ -5364,18 +5391,18 @@ styled-components "^6.0.7" yargs "17.0.1" -"@redocly/config@^0.1.1": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@redocly/config/-/config-0.1.3.tgz#af9a0fdb0dd65c31bca58dc86f3c841d62383096" - integrity sha512-DjgGwhyolxDLO7hP1V8h6qQUUTkqN7P/xG2OMgsABJ1Pr40GG32+cqx9oBbKX9iN+JXh6kVUZgBMcPPB1fbyLA== +"@redocly/config@^0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@redocly/config/-/config-0.1.4.tgz#ffb27ff0a4194c12995597eecb464e29800f5589" + integrity sha512-OEdCW1HRpFiZaZNrXQq8LoBxX3APijZaa/Xyoc6r44LnyAPWkjQqvPoBxE7IRqSvMihf8bl+ZRc1gtc1KuFLHw== -"@redocly/openapi-core@1.10.4", "@redocly/openapi-core@^1.0.0-rc.2": - version "1.10.4" - resolved "https://registry.yarnpkg.com/@redocly/openapi-core/-/openapi-core-1.10.4.tgz#fb1c3ba0eaa7d76b3e4d76d711b9eac6aebc1069" - integrity sha512-GzvAuoVtHk75q/HqaRNqRUTZWYKpZ16HCOWIrx2txAvZrMoWCUNRVsELY91W/ilH/Cepj6t/Nh+bpJ7o/mcN/g== +"@redocly/openapi-core@1.10.5", "@redocly/openapi-core@^1.0.0-rc.2": + version "1.10.5" + resolved "https://registry.yarnpkg.com/@redocly/openapi-core/-/openapi-core-1.10.5.tgz#1575fb15bc31da34afa39fbaa4603a45e9bd7cb7" + integrity sha512-RaVwWLbGuzQxK6ezbvPGnz4rtVMTo5DOrxyII/sKJiTexBHplZzUVqrpU6aeRckl3iY9xe9+w07c/kDiLEeWRQ== dependencies: "@redocly/ajv" "^8.11.0" - "@redocly/config" "^0.1.1" + "@redocly/config" "^0.1.4" colorette "^1.2.0" js-levenshtein "^1.1.6" js-yaml "^4.1.0" @@ -7082,109 +7109,111 @@ "@types/express" "^4.7.0" file-system-cache "^2.0.0" -"@svgr/babel-plugin-add-jsx-attribute@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz#bd6d1ff32a31b82b601e73672a789cc41e84fe18" - integrity "sha1-vW0f8yoxuCtgHnNnKnicxB6E/hg= sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA==" +"@svgr/babel-plugin-add-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22" + integrity sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g== -"@svgr/babel-plugin-remove-jsx-attribute@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.0.0.tgz#58654908beebfa069681a83332544b17e5237e89" - integrity "sha1-WGVJCL7r+gaWgagzMlRLF+Ujfok= sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw==" +"@svgr/babel-plugin-remove-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" + integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== -"@svgr/babel-plugin-remove-jsx-empty-expression@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.0.0.tgz#d06dd6e8a8f603f92f9979bb9990a1f85a4f57ba" - integrity "sha1-0G3W6Kj2A/kvmXm7mZCh+FpPV7o= sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA==" +"@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44" + integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== -"@svgr/babel-plugin-replace-jsx-attribute-value@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.0.0.tgz#0b85837577b02c31c09c758a12932820f5245cee" - integrity "sha1-C4WDdXewLDHAnHWKEpMoIPUkXO4= sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ==" +"@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz#8fbb6b2e91fa26ac5d4aa25c6b6e4f20f9c0ae27" + integrity sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ== -"@svgr/babel-plugin-svg-dynamic-title@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.0.0.tgz#28236ec26f7ab9d486a487d36ae52d58ba15676f" - integrity "sha1-KCNuwm96udSGpIfTauUtWLoVZ28= sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg==" +"@svgr/babel-plugin-svg-dynamic-title@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz#1d5ba1d281363fc0f2f29a60d6d936f9bbc657b0" + integrity sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og== -"@svgr/babel-plugin-svg-em-dimensions@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.0.0.tgz#40267c5dea1b43c4f83a0eb6169e08b43d8bafce" - integrity "sha1-QCZ8XeobQ8T4Og62Fp4ItD2Lr84= sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA==" +"@svgr/babel-plugin-svg-em-dimensions@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz#35e08df300ea8b1d41cb8f62309c241b0369e501" + integrity sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g== -"@svgr/babel-plugin-transform-react-native-svg@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.0.0.tgz#eb688d0a5f539e34d268d8a516e81f5d7fede7c9" - integrity "sha1-62iNCl9TnjTSaNilFugfXX/t58k= sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ==" +"@svgr/babel-plugin-transform-react-native-svg@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz#90a8b63998b688b284f255c6a5248abd5b28d754" + integrity sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q== -"@svgr/babel-plugin-transform-svg-component@^6.2.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.2.0.tgz#7ba61d9fc1fb42b0ba1a04e4630019fa7e993c4f" - integrity "sha1-e6Ydn8H7QrC6GgTkYwAZ+n6ZPE8= sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg==" +"@svgr/babel-plugin-transform-svg-component@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz#013b4bfca88779711f0ed2739f3f7efcefcf4f7e" + integrity sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw== -"@svgr/babel-preset@^6.2.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.2.0.tgz#1d3ad8c7664253a4be8e4a0f0e6872f30d8af627" - integrity "sha1-HTrYx2ZCU6S+jkoPDmhy8w2K9ic= sha512-4WQNY0J71JIaL03DRn0vLiz87JXx0b9dYm2aA8XHlQJQoixMl4r/soYHm8dsaJZ3jWtkCiOYy48dp9izvXhDkQ==" - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^6.0.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^6.0.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^6.0.0" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.0.0" - "@svgr/babel-plugin-svg-dynamic-title" "^6.0.0" - "@svgr/babel-plugin-svg-em-dimensions" "^6.0.0" - "@svgr/babel-plugin-transform-react-native-svg" "^6.0.0" - "@svgr/babel-plugin-transform-svg-component" "^6.2.0" - -"@svgr/core@^6.2.1": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.2.1.tgz#195de807a9f27f9e0e0d678e01084b05c54fdf61" - integrity "sha1-GV3oB6nyf54ODWeOAQhLBcVP32E= sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA==" +"@svgr/babel-preset@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-8.1.0.tgz#0e87119aecdf1c424840b9d4565b7137cabf9ece" + integrity sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "8.0.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "8.0.0" + "@svgr/babel-plugin-svg-dynamic-title" "8.0.0" + "@svgr/babel-plugin-svg-em-dimensions" "8.0.0" + "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" + "@svgr/babel-plugin-transform-svg-component" "8.0.0" + +"@svgr/core@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-8.1.0.tgz#41146f9b40b1a10beaf5cc4f361a16a3c1885e88" + integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== dependencies: - "@svgr/plugin-jsx" "^6.2.1" + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" camelcase "^6.2.0" - cosmiconfig "^7.0.1" + cosmiconfig "^8.1.3" + snake-case "^3.0.4" -"@svgr/hast-util-to-babel-ast@^6.2.1": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz#ae065567b74cbe745afae617053adf9a764bea25" - integrity "sha1-rgZVZ7dMvnRa+uYXBTrfmnZL6iU= sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ==" +"@svgr/hast-util-to-babel-ast@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz#6952fd9ce0f470e1aded293b792a2705faf4ffd4" + integrity sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q== dependencies: - "@babel/types" "^7.15.6" - entities "^3.0.1" + "@babel/types" "^7.21.3" + entities "^4.4.0" -"@svgr/plugin-jsx@^6.2.1": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz#5668f1d2aa18c2f1bb7a1fc9f682d3f9aed263bd" - integrity "sha1-Vmjx0qoYwvG7eh/J9oLT+a7SY70= sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g==" +"@svgr/plugin-jsx@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz#96969f04a24b58b174ee4cd974c60475acbd6928" + integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== dependencies: - "@babel/core" "^7.15.5" - "@svgr/babel-preset" "^6.2.0" - "@svgr/hast-util-to-babel-ast" "^6.2.1" - svg-parser "^2.0.2" + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + "@svgr/hast-util-to-babel-ast" "8.0.0" + svg-parser "^2.0.4" -"@svgr/plugin-svgo@^6.2.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-6.2.0.tgz#4cbe6a33ccccdcae4e3b63ded64cc1cbe1faf48c" - integrity "sha1-TL5qM8zM3K5OO2Pe1kzBy+H69Iw= sha512-oDdMQONKOJEbuKwuy4Np6VdV6qoaLLvoY86hjvQEgU82Vx1MSWRyYms6Sl0f+NtqxLI/rDVufATbP/ev996k3Q==" +"@svgr/plugin-svgo@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz#b115b7b967b564f89ac58feae89b88c3decd0f00" + integrity sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA== dependencies: - cosmiconfig "^7.0.1" - deepmerge "^4.2.2" - svgo "^2.5.0" + cosmiconfig "^8.1.3" + deepmerge "^4.3.1" + svgo "^3.0.2" -"@svgr/webpack@6.2.1": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.2.1.tgz#ef5d51c1b6be4e7537fb9f76b3f2b2e22b63c58d" - integrity "sha1-711Rwba+TnU3+592s/Ky4itjxY0= sha512-h09ngMNd13hnePwgXa+Y5CgOjzlCvfWLHg+MBnydEedAnuLRzUHUJmGS3o2OsrhxTOOqEsPOFt5v/f6C5Qulcw==" - dependencies: - "@babel/core" "^7.15.5" - "@babel/plugin-transform-react-constant-elements" "^7.14.5" - "@babel/preset-env" "^7.15.6" - "@babel/preset-react" "^7.14.5" - "@babel/preset-typescript" "^7.15.0" - "@svgr/core" "^6.2.1" - "@svgr/plugin-jsx" "^6.2.1" - "@svgr/plugin-svgo" "^6.2.0" +"@svgr/webpack@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-8.1.0.tgz#16f1b5346f102f89fda6ec7338b96a701d8be0c2" + integrity sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA== + dependencies: + "@babel/core" "^7.21.3" + "@babel/plugin-transform-react-constant-elements" "^7.21.3" + "@babel/preset-env" "^7.20.2" + "@babel/preset-react" "^7.18.6" + "@babel/preset-typescript" "^7.21.0" + "@svgr/core" "8.1.0" + "@svgr/plugin-jsx" "8.1.0" + "@svgr/plugin-svgo" "8.1.0" "@swc/core-darwin-arm64@1.3.56": version "1.3.56" @@ -7911,7 +7940,7 @@ dependencies: "@types/estree" "*" -"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.0": +"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.0", "@types/estree@^1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== @@ -9837,7 +9866,7 @@ async-retry@^1.2.1: dependencies: retry "0.13.1" -async@^3.1.0, async@^3.2.3: +async@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== @@ -10516,13 +10545,13 @@ browserify-zlib@^0.1.4: dependencies: pako "~0.2.0" -browserslist@^4.14.5, browserslist@^4.22.2: - version "4.22.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b" - integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== +browserslist@^4.21.10, browserslist@^4.22.2: + version "4.23.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== dependencies: - caniuse-lite "^1.0.30001565" - electron-to-chromium "^1.4.601" + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" node-releases "^2.0.14" update-browserslist-db "^1.0.13" @@ -10766,10 +10795,10 @@ camelize@^1.0.0: resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== -caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001565: - version "1.0.30001579" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz#45c065216110f46d6274311a4b3fcf6278e0852a" - integrity sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA== +caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001587: + version "1.0.30001599" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001599.tgz#571cf4f3f1506df9bf41fcbb6d10d5d017817bce" + integrity sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA== canvas-hypertxt@^1.0.3: version "1.0.3" @@ -11799,6 +11828,17 @@ css-select@^4.1.3: domutils "^2.6.0" nth-check "^2.0.0" +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + css-to-react-native@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" @@ -11808,19 +11848,32 @@ css-to-react-native@^3.2.0: css-color-keywords "^1.0.0" postcss-value-parser "^4.0.2" -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity "sha1-60hw+2/XcHMn7JXC/yqwm16NuR0= sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==" +css-tree@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" + mdn-data "2.0.30" + source-map-js "^1.0.1" + +css-tree@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" + integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== + dependencies: + mdn-data "2.0.28" + source-map-js "^1.0.1" css-what@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" integrity "sha1-PvqCATH0ZpqKwkCPnDLnx96fTK0= sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==" +css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" @@ -11831,12 +11884,12 @@ cssfilter@0.0.10: resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" integrity "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4= sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" -csso@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity "sha1-6jpWE0bo3J9UbW/r7dUBh884lSk= sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==" +csso@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" + integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== dependencies: - css-tree "^1.1.2" + css-tree "~2.2.0" csstype@^2.6.8: version "2.6.21" @@ -12844,10 +12897,10 @@ ejs@^3.1.8: dependencies: jake "^10.8.5" -electron-to-chromium@^1.4.601: - version "1.4.640" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.640.tgz#76290a36fa4b5f1f4cadaf1fc582478ebb3ac246" - integrity sha512-z/6oZ/Muqk4BaE7P69bXhUhpJbUM9ZJeka43ZwxsDshKtePns4mhBlh8bU5+yrnOnz3fhG82XLzGUXazOmsWnA== +electron-to-chromium@^1.4.668: + version "1.4.711" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.711.tgz#f9fd04007878cc27ac327d5c6ce300f8b516f635" + integrity sha512-hRg81qzvUEibX2lDxnFlVCHACa+LtrCPIsWAxo161LDYIB3jauf57RGsMZV9mvGwE98yGH06icj3zBEoOkxd/w== element-resize-detector@^1.2.2: version "1.2.4" @@ -12939,11 +12992,6 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity "sha1-CY3JDruD2N/6CJ1VJWs1HTTE2lU= sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" -entities@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" - integrity "sha1-K4h8piWF6W2zkDSC0zbBAGwwAdQ= sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==" - entities@^4.2.0, entities@^4.4.0: version "4.5.0" resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" @@ -17616,7 +17664,7 @@ log-update@^6.0.0: strip-ansi "^7.1.0" wrap-ansi "^9.0.0" -logform@^2.2.0, logform@^2.3.2, logform@^2.4.0: +logform@^2.3.2, logform@^2.4.0: version "2.5.1" resolved "https://registry.yarnpkg.com/logform/-/logform-2.5.1.tgz#44c77c34becd71b3a42a3970c77929e52c6ed48b" integrity sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg== @@ -18150,10 +18198,15 @@ mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0: resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz#56c506d065fbf769515235e577b5a261552d56e9" integrity "sha1-VsUG0GX792lRUjXld7WiYVUtVuk= sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==" -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity "sha1-cRP8QoGRfWPOKbQ0RvcB5owlulA= sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" +mdn-data@2.0.28: + version "2.0.28" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" + integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== + +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== mdurl@^1.0.0: version "1.0.1" @@ -19468,10 +19521,10 @@ nprogress@^0.2.0: resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" integrity "sha1-y480xTIT2JVyP8urkH6UIq28r7E= sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" -nth-check@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" - integrity "sha1-Lv4WL1w9oGoolZ+9PbddvuqfD8I= sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==" +nth-check@^2.0.0, nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: boolbase "^1.0.0" @@ -23265,11 +23318,6 @@ ssri@^10.0.0: dependencies: minipass "^7.0.3" -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity "sha1-g26zyDgv4pNv6vVEYxAXzn1Ho88= sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - stack-trace@0.0.x: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" @@ -23388,7 +23436,7 @@ string-to-stream@^1.1.0: inherits "^2.0.1" readable-stream "^2.1.0" -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -23406,6 +23454,15 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" @@ -23526,7 +23583,7 @@ stringify-object@^5.0.0: is-obj "^3.0.0" is-regexp "^3.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -23547,6 +23604,13 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^7.0.1, strip-ansi@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -23744,23 +23808,23 @@ suppress-exit-code@3.1.0: dependencies: execa "^6.1.0" -svg-parser@^2.0.2: +svg-parser@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" - integrity "sha1-/cLinhOVFzYUC3bLEiyO5mMOtrU= sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== -svgo@^2.5.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity "sha1-T/gMzmcQ3CeV8MfHQQHmdkz8zSQ= sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==" +svgo@^3.0.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.2.0.tgz#7a5dff2938d8c6096e00295c2390e8e652fa805d" + integrity sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ== dependencies: "@trysound/sax" "0.2.0" commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" + css-select "^5.1.0" + css-tree "^2.3.1" + css-what "^6.1.0" + csso "^5.0.5" picocolors "^1.0.0" - stable "^0.1.8" swagger2openapi@^7.0.6: version "7.0.8" @@ -23953,21 +24017,21 @@ terser-webpack-plugin@5.3.6: serialize-javascript "^6.0.0" terser "^5.14.1" -terser-webpack-plugin@^5.3.1, terser-webpack-plugin@^5.3.7: - version "5.3.7" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz#ef760632d24991760f339fe9290deb936ad1ffc7" - integrity sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw== +terser-webpack-plugin@^5.3.1, terser-webpack-plugin@^5.3.10: + version "5.3.10" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" + integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== dependencies: - "@jridgewell/trace-mapping" "^0.3.17" + "@jridgewell/trace-mapping" "^0.3.20" jest-worker "^27.4.5" schema-utils "^3.1.1" serialize-javascript "^6.0.1" - terser "^5.16.5" + terser "^5.26.0" -terser@^5.10.0, terser@^5.14.1, terser@^5.15.1, terser@^5.16.5: - version "5.20.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.20.0.tgz#ea42aea62578703e33def47d5c5b93c49772423e" - integrity sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ== +terser@^5.10.0, terser@^5.14.1, terser@^5.15.1, terser@^5.26.0: + version "5.29.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.29.2.tgz#c17d573ce1da1b30f21a877bffd5655dd86fdb35" + integrity sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -25522,19 +25586,19 @@ webpack-virtual-modules@^0.5.0: resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== -webpack@5, webpack@5.88.1, webpack@^5.72.0, webpack@^5.75.0, webpack@^5.76.0: - version "5.88.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.88.1.tgz#21eba01e81bd5edff1968aea726e2fbfd557d3f8" - integrity sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ== +webpack@5, webpack@5.90.3, webpack@^5.72.0, webpack@^5.75.0, webpack@^5.76.0: + version "5.90.3" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.3.tgz#37b8f74d3ded061ba789bb22b31e82eed75bd9ac" + integrity sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA== dependencies: "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.0" + "@types/estree" "^1.0.5" "@webassemblyjs/ast" "^1.11.5" "@webassemblyjs/wasm-edit" "^1.11.5" "@webassemblyjs/wasm-parser" "^1.11.5" acorn "^8.7.1" acorn-import-assertions "^1.9.0" - browserslist "^4.14.5" + browserslist "^4.21.10" chrome-trace-event "^1.0.2" enhanced-resolve "^5.15.0" es-module-lexer "^1.2.1" @@ -25548,7 +25612,7 @@ webpack@5, webpack@5.88.1, webpack@^5.72.0, webpack@^5.75.0, webpack@^5.76.0: neo-async "^2.6.2" schema-utils "^3.2.0" tapable "^2.1.1" - terser-webpack-plugin "^5.3.7" + terser-webpack-plugin "^5.3.10" watchpack "^2.4.0" webpack-sources "^3.2.3" @@ -25697,7 +25761,7 @@ wildcard@^2.0.0: resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" integrity "sha1-p30g5SAMb6qsl55LOq3Hs91/j+w= sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" -winston-transport@^4.4.0, winston-transport@^4.5.0: +winston-transport@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa" integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q== @@ -25706,27 +25770,12 @@ winston-transport@^4.4.0, winston-transport@^4.5.0: readable-stream "^3.6.0" triple-beam "^1.3.0" -winston@3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.3.3.tgz#ae6172042cafb29786afa3d09c8ff833ab7c9170" - integrity "sha1-rmFyBCyvspeGr6PQnI/4M6t8kXA= sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==" - dependencies: - "@dabh/diagnostics" "^2.0.2" - async "^3.1.0" - is-stream "^2.0.0" - logform "^2.2.0" - one-time "^1.0.0" - readable-stream "^3.4.0" - stack-trace "0.0.x" - triple-beam "^1.3.0" - winston-transport "^4.4.0" - -winston@^3.6.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.9.0.tgz#2bbdeb8167a75fac6d9a0c6d002890cd908016c2" - integrity sha512-jW51iW/X95BCW6MMtZWr2jKQBP4hV5bIDq9QrIjfDk6Q9QuxvTKEAlpUNAzP+HYHFFCeENhph16s0zEunu4uuQ== +winston@3.11.0, winston@^3.6.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/winston/-/winston-3.11.0.tgz#2d50b0a695a2758bb1c95279f0a88e858163ed91" + integrity sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g== dependencies: - "@colors/colors" "1.5.0" + "@colors/colors" "^1.6.0" "@dabh/diagnostics" "^2.0.2" async "^3.2.3" is-stream "^2.0.0" @@ -25784,7 +25833,7 @@ worker-timers@^7.0.78: worker-timers-broker "^6.1.2" worker-timers-worker "^7.0.66" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -25810,6 +25859,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"