diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 921b695b..9358046e 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -8,7 +8,14 @@ "Bash(pnpm test:*)", "Bash(pnpm vitest:*)", "Bash(pnpm changeset:*)", - "Bash(npx tsc:*)" + "Bash(npx tsc:*)", + "Bash(find:*)", + "Bash(grep:*)", + "WebFetch(domain:raw.githubusercontent.com)", + "Bash(node -e:*)", + "Bash(pnpm build:*)", + "mcp__chrome-devtools__list_pages", + "Bash(pnpm lint:*)" ], "deny": [], "ask": [] diff --git a/apps/connect/package.json b/apps/connect/package.json index e00de11a..3c6aa97a 100644 --- a/apps/connect/package.json +++ b/apps/connect/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@base-ui-components/react": "1.0.0-beta.2", - "@graphprotocol/grc-20": "^0.27.0", + "@graphprotocol/grc-20": "^0.32.3", "@graphprotocol/hypergraph": "workspace:*", "@graphprotocol/hypergraph-react": "workspace:*", "@heroicons/react": "^2.2.0", diff --git a/apps/events/package.json b/apps/events/package.json index 18fa6dba..d89916d9 100644 --- a/apps/events/package.json +++ b/apps/events/package.json @@ -10,7 +10,7 @@ "test:script": "tsx test-script.ts" }, "dependencies": { - "@graphprotocol/grc-20": "^0.27.0", + "@graphprotocol/grc-20": "^0.32.3", "@graphprotocol/hypergraph": "workspace:*", "@graphprotocol/hypergraph-react": "workspace:*", "@noble/hashes": "^1.8.0", diff --git a/apps/events/src/Boot.tsx b/apps/events/src/Boot.tsx index 8a576efb..23adee75 100644 --- a/apps/events/src/Boot.tsx +++ b/apps/events/src/Boot.tsx @@ -17,7 +17,7 @@ export function Boot() { diff --git a/apps/events/src/components/create-events.tsx b/apps/events/src/components/create-events.tsx index f3d1fb87..cd149979 100644 --- a/apps/events/src/components/create-events.tsx +++ b/apps/events/src/components/create-events.tsx @@ -1,4 +1,4 @@ -import { Graph, type Op } from '@graphprotocol/grc-20'; +import { Graph, type GrcOp } from '@graphprotocol/grc-20'; import type { Connect } from '@graphprotocol/hypergraph'; import { publishOps, useHypergraphApp } from '@graphprotocol/hypergraph-react'; import { mapping } from '../mapping'; @@ -12,7 +12,7 @@ const createEvents = async ({ space: string; }) => { try { - const ops: Array = []; + const ops: Array = []; const { id: jobOfferTypeId, ops: createJobOfferTypeOps } = Graph.createEntity({ name: 'My Test Job Offer', @@ -20,7 +20,8 @@ const createEvents = async ({ values: [ { property: mapping.JobOffer.properties?.salary as string, - value: '80000', + type: 'float64', + value: 80000, }, ], }); @@ -32,7 +33,8 @@ const createEvents = async ({ values: [ { property: mapping.JobOffer.properties?.salary as string, - value: '90000', + type: 'float64', + value: 90000, }, ], }); diff --git a/apps/events/src/components/create-properties-and-types-event.tsx b/apps/events/src/components/create-properties-and-types-event.tsx index ed5c4828..d007b3e9 100644 --- a/apps/events/src/components/create-properties-and-types-event.tsx +++ b/apps/events/src/components/create-properties-and-types-event.tsx @@ -1,4 +1,4 @@ -import { Graph, type Op } from '@graphprotocol/grc-20'; +import { Graph, type GrcOp } from '@graphprotocol/grc-20'; import type { Connect } from '@graphprotocol/hypergraph'; import { publishOps, useHypergraphApp } from '@graphprotocol/hypergraph-react'; import { useState } from 'react'; @@ -12,9 +12,9 @@ const createPropertiesAndTypesEvent = async ({ smartSessionClient: Connect.SmartSessionClient; space: string; }) => { - const ops: Array = []; + const ops: Array = []; const { id: salaryPropertyId, ops: createSalaryPropertyOps } = Graph.createProperty({ - dataType: 'NUMBER', + dataType: 'FLOAT64', name: 'Salary', }); ops.push(...createSalaryPropertyOps); diff --git a/apps/events/src/components/create-properties-and-types-todos.tsx b/apps/events/src/components/create-properties-and-types-todos.tsx index 1460375a..8d7d14ec 100644 --- a/apps/events/src/components/create-properties-and-types-todos.tsx +++ b/apps/events/src/components/create-properties-and-types-todos.tsx @@ -1,4 +1,4 @@ -import { Graph, type Op } from '@graphprotocol/grc-20'; +import { Graph, type GrcOp } from '@graphprotocol/grc-20'; import type { Connect } from '@graphprotocol/hypergraph'; import { publishOps, useHypergraphApp } from '@graphprotocol/hypergraph-react'; import { useState } from 'react'; @@ -12,7 +12,7 @@ const createPropertiesAndTypesTodos = async ({ smartSessionClient: Connect.SmartSessionClient; space: string; }) => { - const ops: Array = []; + const ops: Array = []; const { id: checkedPropertyId, ops: createCheckedPropertyOps } = Graph.createProperty({ dataType: 'BOOLEAN', name: 'Checked', @@ -44,13 +44,13 @@ const createPropertiesAndTypesTodos = async ({ ops.push(...createPointPropertyOps); const { id: amountPropertyId, ops: createAmountPropertyOps } = Graph.createProperty({ - dataType: 'NUMBER', + dataType: 'FLOAT64', name: 'Amount', }); ops.push(...createAmountPropertyOps); const { id: websitePropertyId, ops: createWebsitePropertyOps } = Graph.createProperty({ - dataType: 'STRING', + dataType: 'TEXT', name: 'Website', }); ops.push(...createWebsitePropertyOps); diff --git a/apps/events/src/routes/podcasts.lazy.tsx b/apps/events/src/routes/podcasts.lazy.tsx index 6cdeec79..089ea723 100644 --- a/apps/events/src/routes/podcasts.lazy.tsx +++ b/apps/events/src/routes/podcasts.lazy.tsx @@ -1,6 +1,6 @@ -import { Person, PersonHostTest, Podcast, Topic } from '@/schema'; import { useEntities, useEntity, usePublicSpaces } from '@graphprotocol/hypergraph-react'; import { createLazyFileRoute } from '@tanstack/react-router'; +import { Person, PersonHostTest, Podcast, Topic } from '@/schema'; export const Route = createLazyFileRoute('/podcasts')({ component: RouteComponent, diff --git a/apps/events/test-script.ts b/apps/events/test-script.ts index f7b71774..8dfa5845 100644 --- a/apps/events/test-script.ts +++ b/apps/events/test-script.ts @@ -1,7 +1,7 @@ import { SystemIds } from '@graphprotocol/grc-20'; import { Config, Entity, Id, Type } from '@graphprotocol/hypergraph'; -Config.setApiOrigin('https://testnet-api.geobrowser.io'); +Config.setApiOrigin('https://testnet-api-staging.geobrowser.io'); const BOUNTY_TYPE_ID = Id('327976dea5ad45769b83b7e7ec6337cf'); const REWARD_PROPERTY_ID = Id('e8e7301136354e84b46b767e7cd530a8'); diff --git a/apps/next-example/package.json b/apps/next-example/package.json index 1d65a049..a90662c3 100644 --- a/apps/next-example/package.json +++ b/apps/next-example/package.json @@ -11,7 +11,7 @@ }, "type": "module", "dependencies": { - "@graphprotocol/grc-20": "^0.27.0", + "@graphprotocol/grc-20": "^0.32.3", "@graphprotocol/hypergraph": "workspace:*", "@graphprotocol/hypergraph-react": "workspace:*", "next": "15.5.9", diff --git a/apps/privy-login-example/package.json b/apps/privy-login-example/package.json index 6e94b491..a54180ab 100644 --- a/apps/privy-login-example/package.json +++ b/apps/privy-login-example/package.json @@ -9,7 +9,7 @@ "typesync": "hypergraph typesync" }, "dependencies": { - "@graphprotocol/grc-20": "^0.27.0", + "@graphprotocol/grc-20": "^0.32.3", "@graphprotocol/hypergraph": "workspace:*", "@graphprotocol/hypergraph-react": "workspace:*", "@noble/hashes": "^1.8.0", diff --git a/apps/privy-login-example/src/components/create-events.tsx b/apps/privy-login-example/src/components/create-events.tsx index f3d1fb87..cd149979 100644 --- a/apps/privy-login-example/src/components/create-events.tsx +++ b/apps/privy-login-example/src/components/create-events.tsx @@ -1,4 +1,4 @@ -import { Graph, type Op } from '@graphprotocol/grc-20'; +import { Graph, type GrcOp } from '@graphprotocol/grc-20'; import type { Connect } from '@graphprotocol/hypergraph'; import { publishOps, useHypergraphApp } from '@graphprotocol/hypergraph-react'; import { mapping } from '../mapping'; @@ -12,7 +12,7 @@ const createEvents = async ({ space: string; }) => { try { - const ops: Array = []; + const ops: Array = []; const { id: jobOfferTypeId, ops: createJobOfferTypeOps } = Graph.createEntity({ name: 'My Test Job Offer', @@ -20,7 +20,8 @@ const createEvents = async ({ values: [ { property: mapping.JobOffer.properties?.salary as string, - value: '80000', + type: 'float64', + value: 80000, }, ], }); @@ -32,7 +33,8 @@ const createEvents = async ({ values: [ { property: mapping.JobOffer.properties?.salary as string, - value: '90000', + type: 'float64', + value: 90000, }, ], }); diff --git a/apps/privy-login-example/src/components/create-properties-and-types-event.tsx b/apps/privy-login-example/src/components/create-properties-and-types-event.tsx index ed5c4828..d007b3e9 100644 --- a/apps/privy-login-example/src/components/create-properties-and-types-event.tsx +++ b/apps/privy-login-example/src/components/create-properties-and-types-event.tsx @@ -1,4 +1,4 @@ -import { Graph, type Op } from '@graphprotocol/grc-20'; +import { Graph, type GrcOp } from '@graphprotocol/grc-20'; import type { Connect } from '@graphprotocol/hypergraph'; import { publishOps, useHypergraphApp } from '@graphprotocol/hypergraph-react'; import { useState } from 'react'; @@ -12,9 +12,9 @@ const createPropertiesAndTypesEvent = async ({ smartSessionClient: Connect.SmartSessionClient; space: string; }) => { - const ops: Array = []; + const ops: Array = []; const { id: salaryPropertyId, ops: createSalaryPropertyOps } = Graph.createProperty({ - dataType: 'NUMBER', + dataType: 'FLOAT64', name: 'Salary', }); ops.push(...createSalaryPropertyOps); diff --git a/apps/privy-login-example/src/components/create-properties-and-types-todos.tsx b/apps/privy-login-example/src/components/create-properties-and-types-todos.tsx index 1460375a..8d7d14ec 100644 --- a/apps/privy-login-example/src/components/create-properties-and-types-todos.tsx +++ b/apps/privy-login-example/src/components/create-properties-and-types-todos.tsx @@ -1,4 +1,4 @@ -import { Graph, type Op } from '@graphprotocol/grc-20'; +import { Graph, type GrcOp } from '@graphprotocol/grc-20'; import type { Connect } from '@graphprotocol/hypergraph'; import { publishOps, useHypergraphApp } from '@graphprotocol/hypergraph-react'; import { useState } from 'react'; @@ -12,7 +12,7 @@ const createPropertiesAndTypesTodos = async ({ smartSessionClient: Connect.SmartSessionClient; space: string; }) => { - const ops: Array = []; + const ops: Array = []; const { id: checkedPropertyId, ops: createCheckedPropertyOps } = Graph.createProperty({ dataType: 'BOOLEAN', name: 'Checked', @@ -44,13 +44,13 @@ const createPropertiesAndTypesTodos = async ({ ops.push(...createPointPropertyOps); const { id: amountPropertyId, ops: createAmountPropertyOps } = Graph.createProperty({ - dataType: 'NUMBER', + dataType: 'FLOAT64', name: 'Amount', }); ops.push(...createAmountPropertyOps); const { id: websitePropertyId, ops: createWebsitePropertyOps } = Graph.createProperty({ - dataType: 'STRING', + dataType: 'TEXT', name: 'Website', }); ops.push(...createWebsitePropertyOps); diff --git a/package.json b/package.json index 734fc0fd..93f6bd63 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "@changesets/cli": "^2.29.8", "@effect/language-service": "^0.40.0", "@effect/vitest": "^0.25.1", - "@graphprotocol/grc-20": "^0.27.0", + "@graphprotocol/grc-20": "^0.32.3", "babel-plugin-annotate-pure-calls": "^0.5.0", "glob": "^11.0.3", "pkg-pr-new": "^0.0.56", diff --git a/packages/hypergraph-react/package.json b/packages/hypergraph-react/package.json index 60f4af1f..4ff0ea17 100644 --- a/packages/hypergraph-react/package.json +++ b/packages/hypergraph-react/package.json @@ -47,7 +47,7 @@ "@automerge/automerge": "^3.1.1", "@automerge/automerge-repo": "^2.2.0", "@automerge/automerge-repo-react-hooks": "^2.2.0", - "@graphprotocol/grc-20": "^0.27.0", + "@graphprotocol/grc-20": "^0.32.3", "@noble/hashes": "^1.8.0", "@tanstack/react-query": "^5.85.5", "effect": "^3.17.13", diff --git a/packages/hypergraph-react/src/internal/generate-delete-ops.tsx b/packages/hypergraph-react/src/internal/generate-delete-ops.tsx index 65fcc7eb..a1bc5489 100644 --- a/packages/hypergraph-react/src/internal/generate-delete-ops.tsx +++ b/packages/hypergraph-react/src/internal/generate-delete-ops.tsx @@ -1,4 +1,4 @@ -import type { Op } from '@graphprotocol/grc-20'; +import type { GrcOp } from '@graphprotocol/grc-20'; import { Config } from '@graphprotocol/hypergraph'; import { gql, request } from 'graphql-request'; @@ -51,7 +51,7 @@ export const generateDeleteOps = async ({ id }: { id: string; space: string }) = if (result.entity === null) { throw new Error('Entity not found'); } - const ops: Op[] = []; + const ops: GrcOp[] = []; // for (const attribute of result.entity.currentVersion.version.triples.nodes) { // ops.push(Triple.remove({ attributeId: attribute.attributeId, entityId: id })); // } diff --git a/packages/hypergraph-react/src/internal/use-delete-entity-public.tsx b/packages/hypergraph-react/src/internal/use-delete-entity-public.tsx index 0f13b059..69d13a09 100644 --- a/packages/hypergraph-react/src/internal/use-delete-entity-public.tsx +++ b/packages/hypergraph-react/src/internal/use-delete-entity-public.tsx @@ -1,41 +1,16 @@ -import { Graph, type Op } from '@graphprotocol/grc-20'; +import { Graph } from '@graphprotocol/grc-20'; import type { Connect } from '@graphprotocol/hypergraph'; -import { Config, Constants } from '@graphprotocol/hypergraph'; +import { Constants } from '@graphprotocol/hypergraph'; import { useQueryClient } from '@tanstack/react-query'; import * as Option from 'effect/Option'; import type * as Schema from 'effect/Schema'; import * as SchemaAST from 'effect/SchemaAST'; -import request, { gql } from 'graphql-request'; import { publishOps } from '../publish-ops.js'; type DeleteEntityPublicParams = { space: string; }; -const deleteEntityQueryDocument = gql` -query entityToDelete($entityId: UUID!, $spaceId: UUID!) { - entity(id: $entityId) { - valuesList(filter: {spaceId: {is: $spaceId}}) { - propertyId - } - relationsList(filter: {spaceId: {is: $spaceId}}) { - id - } - } -} -`; - -type EntityToDeleteQueryResult = { - entity: { - valuesList: { - propertyId: string; - }[]; - relationsList: { - id: string; - }[]; - }; -} | null; - export const useDeleteEntityPublic = ( type: S, { space }: DeleteEntityPublicParams, @@ -44,28 +19,7 @@ export const useDeleteEntityPublic = ( return async ({ id, walletClient }: { id: string; walletClient: Connect.SmartSessionClient }) => { try { - const result = await request( - `${Config.getApiOrigin()}/v2/graphql`, - deleteEntityQueryDocument, - { - spaceId: space, - entityId: id, - }, - ); - if (!result) { - return { success: false, error: 'Entity not found' }; - } - const { valuesList, relationsList } = result.entity; - const ops: Op[] = []; - const { ops: unsetEntityValuesOps } = Graph.unsetEntityValues({ - id, - properties: valuesList.map(({ propertyId }) => propertyId), - }); - ops.push(...unsetEntityValuesOps); - for (const relation of relationsList) { - const { ops: deleteRelationOps } = Graph.deleteRelation({ id: relation.id }); - ops.push(...deleteRelationOps); - } + const { ops } = Graph.deleteEntity({ id }); const { cid, txResult } = await publishOps({ ops, diff --git a/packages/hypergraph-react/src/prepare-publish.ts b/packages/hypergraph-react/src/prepare-publish.ts index c7ebd50e..1e11e976 100644 --- a/packages/hypergraph-react/src/prepare-publish.ts +++ b/packages/hypergraph-react/src/prepare-publish.ts @@ -1,4 +1,11 @@ -import { Graph, type Id, type Op, type PropertiesParam, type RelationsParam } from '@graphprotocol/grc-20'; +import { + Graph, + type GrcOp, + type Id, + type PropertiesParam, + type PropertyValueParam, + type RelationsParam, +} from '@graphprotocol/grc-20'; import { Config, Constants, type Entity, Utils } from '@graphprotocol/hypergraph'; import * as Option from 'effect/Option'; import type * as Schema from 'effect/Schema'; @@ -15,9 +22,9 @@ query entityToPublish($entityId: UUID!, $spaceId: UUID!) { entity(id: $entityId) { valuesList(filter: {spaceId: {is: $spaceId}}) { propertyId - string + text boolean - number + float time point } @@ -32,9 +39,9 @@ type EntityToPublishQueryResult = { entity: { valuesList: { propertyId: string; - string: string; + text: string; boolean: boolean; - number: number; + float: number; time: string; point: string; }[]; @@ -57,7 +64,7 @@ export const preparePublish = async ({ }, ); - const ops: Op[] = []; + const ops: GrcOp[] = []; const values: PropertiesParam = []; const relations: RelationsParam = {}; const type = entity.__schema; @@ -89,17 +96,22 @@ export const preparePublish = async ({ } throw new Error(`Value for ${String(prop.name)} is undefined`); } - let serializedValue: string = entity[prop.name]; + let typedValue: PropertyValueParam; if (propertyType.value === 'boolean') { - serializedValue = Graph.serializeBoolean(entity[prop.name]); + typedValue = { property: propertyId.value, type: 'bool', value: entity[prop.name] as boolean }; } else if (propertyType.value === 'date') { - serializedValue = Graph.serializeDate(entity[prop.name]); + const dateValue = entity[prop.name] as Date; + typedValue = { property: propertyId.value, type: 'date', value: dateValue.toISOString().split('T')[0] }; } else if (propertyType.value === 'point') { - serializedValue = Graph.serializePoint(entity[prop.name]); + const [lon, lat] = entity[prop.name] as [number, number]; + typedValue = { property: propertyId.value, type: 'point', lon, lat }; } else if (propertyType.value === 'number') { - serializedValue = Graph.serializeNumber(entity[prop.name]); + typedValue = { property: propertyId.value, type: 'float64', value: entity[prop.name] as number }; + } else { + // string (text) + typedValue = { property: propertyId.value, type: 'text', value: entity[prop.name] as string }; } - values.push({ property: propertyId.value, value: serializedValue }); + values.push(typedValue); } } @@ -133,25 +145,36 @@ export const preparePublish = async ({ throw new Error(`Value for ${String(prop.name)} is undefined`); } const existingValueEntry = data.entity.valuesList.find((value) => value.propertyId === propertyId.value); - let existingValue: string | boolean | number | undefined = existingValueEntry?.string; - let serializedValue: string = entity[prop.name]; + let hasChanged = false; + let typedValue: PropertyValueParam; + if (propertyType.value === 'boolean') { - existingValue = - existingValueEntry?.boolean !== undefined ? Graph.serializeBoolean(existingValueEntry?.boolean) : undefined; - serializedValue = Graph.serializeBoolean(entity[prop.name]); + const newValue = entity[prop.name] as boolean; + hasChanged = existingValueEntry?.boolean !== newValue; + typedValue = { property: propertyId.value, type: 'bool', value: newValue }; } else if (propertyType.value === 'date') { - existingValue = existingValueEntry?.time; - serializedValue = Graph.serializeDate(entity[prop.name]); + const dateValue = entity[prop.name] as Date; + const newValue = dateValue.toISOString().split('T')[0]; + hasChanged = existingValueEntry?.time !== newValue; + typedValue = { property: propertyId.value, type: 'date', value: newValue }; } else if (propertyType.value === 'point') { - existingValue = existingValueEntry?.point; - serializedValue = Graph.serializePoint(entity[prop.name]); + const [lon, lat] = entity[prop.name] as [number, number]; + const newValue = `${lon},${lat}`; + hasChanged = existingValueEntry?.point !== newValue; + typedValue = { property: propertyId.value, type: 'point', lon, lat }; } else if (propertyType.value === 'number') { - existingValue = - existingValueEntry?.number !== undefined ? Graph.serializeNumber(existingValueEntry?.number) : undefined; - serializedValue = Graph.serializeNumber(entity[prop.name]); + const newValue = entity[prop.name] as number; + hasChanged = existingValueEntry?.float !== newValue; + typedValue = { property: propertyId.value, type: 'float64', value: newValue }; + } else { + // string (text) + const newValue = entity[prop.name] as string; + hasChanged = existingValueEntry?.text !== newValue; + typedValue = { property: propertyId.value, type: 'text', value: newValue }; } - if (existingValue !== serializedValue) { - values.push({ property: propertyId.value, value: serializedValue }); + + if (hasChanged) { + values.push(typedValue); } } } diff --git a/packages/hypergraph-react/src/publish-ops.ts b/packages/hypergraph-react/src/publish-ops.ts index 098fe0db..9ecf0f7b 100644 --- a/packages/hypergraph-react/src/publish-ops.ts +++ b/packages/hypergraph-react/src/publish-ops.ts @@ -1,11 +1,11 @@ -import type { Op } from '@graphprotocol/grc-20'; +import type { GrcOp } from '@graphprotocol/grc-20'; import { Ipfs } from '@graphprotocol/grc-20'; import { Config, Connect } from '@graphprotocol/hypergraph'; import type { Hash } from 'viem'; type PublishParams = { name: string; - ops: Op[]; + ops: GrcOp[]; walletClient: Connect.SmartSessionClient; space: string; }; diff --git a/packages/hypergraph-react/test/prepare-publish.test.ts b/packages/hypergraph-react/test/prepare-publish.test.ts index 434d7bf7..0f2fc0ff 100644 --- a/packages/hypergraph-react/test/prepare-publish.test.ts +++ b/packages/hypergraph-react/test/prepare-publish.test.ts @@ -1,5 +1,5 @@ import { Repo } from '@automerge/automerge-repo'; -import { Graph, Id } from '@graphprotocol/grc-20'; +import { Id } from '@graphprotocol/grc-20'; import { Config, Entity, store, Type } from '@graphprotocol/hypergraph'; import '@testing-library/jest-dom/vitest'; import request from 'graphql-request'; @@ -241,8 +241,8 @@ describe('preparePublish', () => { mockRequest.mockResolvedValue({ entity: { valuesList: [ - { propertyId: 'ed49ed7b17b34df6b0b511f78d82e151', string: 'Old Name' }, - { propertyId: 'a427183d35194c96b80a5a0c64daed41', number: 25 }, + { propertyId: 'ed49ed7b17b34df6b0b511f78d82e151', text: 'Old Name' }, + { propertyId: 'a427183d35194c96b80a5a0c64daed41', float: 25 }, { propertyId: 'e425955442b146e484c3f8681987770f', boolean: false }, ], relationsList: [], @@ -279,11 +279,11 @@ describe('preparePublish', () => { mockRequest.mockResolvedValue({ entity: { valuesList: [ - { propertyId: 'ed49ed7b17b34df6b0b511f78d82e151', string: 'Same Name' }, - { propertyId: 'a427183d35194c96b80a5a0c64daed41', number: 30 }, - { propertyId: 'e425955442b146e484c3f8681987770f', boolean: Graph.serializeBoolean(true) }, - { propertyId: 'b5c0e2c79ac9415e8ffe34f8b530f126', time: Graph.serializeDate(new Date('1993-01-01')) }, - { propertyId: '45e707a5436442fbbb0b927a5a8bc061', point: Graph.serializePoint([0, 0]) }, + { propertyId: 'ed49ed7b17b34df6b0b511f78d82e151', text: 'Same Name' }, + { propertyId: 'a427183d35194c96b80a5a0c64daed41', float: 30 }, + { propertyId: 'e425955442b146e484c3f8681987770f', boolean: true }, + { propertyId: 'b5c0e2c79ac9415e8ffe34f8b530f126', time: '1993-01-01' }, + { propertyId: '45e707a5436442fbbb0b927a5a8bc061', point: '0,0' }, ], relationsList: [], }, @@ -597,9 +597,9 @@ describe('preparePublish', () => { mockRequest.mockResolvedValue({ entity: { valuesList: [ - { propertyId: '2a8b9c7d4e5f6a7b8c9d0e1f2a3b4c5d', value: 'Existing Entity' }, - { propertyId: 'eaf9f4f856474228aff58725368fc87c', value: Graph.serializeNumber(50) }, - { propertyId: '2742d8b630594adbb439fdfcd588dccb', value: Graph.serializeBoolean(true) }, + { propertyId: '2a8b9c7d4e5f6a7b8c9d0e1f2a3b4c5d', text: 'Existing Entity' }, + { propertyId: 'eaf9f4f856474228aff58725368fc87c', float: 50 }, + { propertyId: '2742d8b630594adbb439fdfcd588dccb', boolean: true }, ], relationsList: [], }, @@ -628,9 +628,9 @@ describe('preparePublish', () => { mockRequest.mockResolvedValue({ entity: { valuesList: [ - { propertyId: '2a8b9c7d4e5f6a7b8c9d0e1f2a3b4c5d', value: 'Existing Entity' }, - { propertyId: 'eaf9f4f856474228aff58725368fc87c', value: Graph.serializeNumber(75) }, - { propertyId: '9b53690fea6d4bd8b4d39ea01e7f837f', value: Graph.serializeDate(new Date('2023-01-01')) }, + { propertyId: '2a8b9c7d4e5f6a7b8c9d0e1f2a3b4c5d', text: 'Existing Entity' }, + { propertyId: 'eaf9f4f856474228aff58725368fc87c', float: 75 }, + { propertyId: '9b53690fea6d4bd8b4d39ea01e7f837f', time: '2023-01-01' }, ], relationsList: [], }, diff --git a/packages/hypergraph/package.json b/packages/hypergraph/package.json index 01820722..409c0459 100644 --- a/packages/hypergraph/package.json +++ b/packages/hypergraph/package.json @@ -72,7 +72,7 @@ "@effect/platform-node": "^0.96.1", "@effect/printer": "^0.45.0", "@effect/printer-ansi": "^0.45.0", - "@graphprotocol/grc-20": "^0.27.0", + "@graphprotocol/grc-20": "^0.32.3", "@noble/ciphers": "^1.3.0", "@noble/curves": "^1.9.7", "@noble/hashes": "^1.8.0", diff --git a/packages/hypergraph/src/entity/find-many-public.ts b/packages/hypergraph/src/entity/find-many-public.ts index ba29c2b5..c87744df 100644 --- a/packages/hypergraph/src/entity/find-many-public.ts +++ b/packages/hypergraph/src/entity/find-many-public.ts @@ -86,9 +86,9 @@ query ${queryName}(${variableDefinitions}) { name${spaceIdsSelection} valuesList${valuesListFilter} { propertyId - string + text boolean - number + float time point } @@ -99,9 +99,9 @@ query ${queryName}(${variableDefinitions}) { type ValuesList = { propertyId: string; - string: string; + text: string; boolean: boolean; - number: number; + float: number; time: string; point: string; }[]; diff --git a/packages/hypergraph/src/entity/find-one-public.ts b/packages/hypergraph/src/entity/find-one-public.ts index 6736f159..58cb6807 100644 --- a/packages/hypergraph/src/entity/find-one-public.ts +++ b/packages/hypergraph/src/entity/find-one-public.ts @@ -39,9 +39,9 @@ query entity($id: UUID!, $spaceId: UUID!) { name${spaceIdsSelection} valuesList(filter: {spaceId: {is: $spaceId}}) { propertyId - string + text boolean - number + float time point }${relationsSelectionBlock} diff --git a/packages/hypergraph/src/entity/search-many-public.ts b/packages/hypergraph/src/entity/search-many-public.ts index 5f3e924e..0932a03c 100644 --- a/packages/hypergraph/src/entity/search-many-public.ts +++ b/packages/hypergraph/src/entity/search-many-public.ts @@ -41,9 +41,9 @@ query searchEntities($query: String!, $spaceId: UUID!, $typeIds: [UUID!]!, $firs name${spaceIdsSelection} valuesList(filter: {spaceId: {is: $spaceId}}) { propertyId - string + text boolean - number + float time point } diff --git a/packages/hypergraph/src/mapping/Mapping.ts b/packages/hypergraph/src/mapping/Mapping.ts index b155a889..f136b583 100644 --- a/packages/hypergraph/src/mapping/Mapping.ts +++ b/packages/hypergraph/src/mapping/Mapping.ts @@ -1,4 +1,4 @@ -import { type CreatePropertyParams, Graph, Id as Grc20Id, type Op } from '@graphprotocol/grc-20'; +import { type CreatePropertyParams, Graph, Id as Grc20Id, type GrcOp } from '@graphprotocol/grc-20'; import { Data, Array as EffectArray, Schema as EffectSchema, Option, pipe } from 'effect'; import { GeoIdSchema } from '../utils/geo-id.js'; import { namesAreUnique, toCamelCase, toPascalCase } from './Utils.js'; @@ -331,17 +331,17 @@ export function allRelationPropertyTypesExist(types: ReadonlyArray): ); } -export type GenerateMappingResult = [mapping: Mapping, ops: ReadonlyArray]; +export type GenerateMappingResult = [mapping: Mapping, ops: ReadonlyArray]; // Helper types for internal processing type PropertyIdMapping = { propName: string; id: Grc20Id }; type TypeIdMapping = Map; type ProcessedProperty = - | { type: 'resolved'; mapping: PropertyIdMapping; ops: Array } + | { type: 'resolved'; mapping: PropertyIdMapping; ops: Array } | { type: 'deferred'; property: SchemaTypePropertyRelation }; type ProcessedType = - | { type: 'complete'; entry: MappingEntry & { typeName: string }; ops: Array } + | { type: 'complete'; entry: MappingEntry & { typeName: string }; ops: Array } | { type: 'deferred'; schemaType: SchemaType; @@ -666,7 +666,7 @@ export function generateMapping(input: Schema): GenerateMappingResult { const { entries: deferredEntries, ops: secondPassOps } = pipe( deferredTypes, EffectArray.reduce( - { entries: [] as Array, ops: [] as Array }, + { entries: [] as Array, ops: [] as Array }, (acc, deferred) => { // Resolve all deferred relation properties for this type const resolvedRelations = pipe( @@ -793,7 +793,7 @@ export function mapSchemaDataTypeToGRC20PropDataType(dataType: SchemaDataType): return 'TIME'; } case dataType === 'Number': { - return 'NUMBER'; + return 'FLOAT64'; } case dataType === 'Point': { return 'POINT'; @@ -802,7 +802,7 @@ export function mapSchemaDataTypeToGRC20PropDataType(dataType: SchemaDataType): return 'RELATION'; } default: { - return 'STRING'; + return 'TEXT'; } } } diff --git a/packages/hypergraph/src/space/find-many-public.ts b/packages/hypergraph/src/space/find-many-public.ts index ecaebf87..a879392e 100644 --- a/packages/hypergraph/src/space/find-many-public.ts +++ b/packages/hypergraph/src/space/find-many-public.ts @@ -18,7 +18,7 @@ const spaceFields = ` propertyId: { is: "${SystemIds.IMAGE_URL_PROPERTY}"} }) { propertyId - string + text } } } @@ -56,7 +56,7 @@ type SpacesQueryResult = { toEntity?: { valuesList?: { propertyId: string; - string: string | null; + text: string | null; }[]; } | null; }[]; @@ -77,7 +77,7 @@ const decodeSpace = EffectSchema.decodeUnknownEither(PublicSpaceSchema); const getAvatarFromSpace = (space: SpaceQueryEntry) => { const firstRelation = space.page?.relationsList?.[0]; const firstValue = firstRelation?.toEntity?.valuesList?.[0]; - const avatar = firstValue?.string; + const avatar = firstValue?.text; if (typeof avatar === 'string') { return avatar; } diff --git a/packages/hypergraph/src/utils/convert-property-value.ts b/packages/hypergraph/src/utils/convert-property-value.ts index ab99f230..d8eed826 100644 --- a/packages/hypergraph/src/utils/convert-property-value.ts +++ b/packages/hypergraph/src/utils/convert-property-value.ts @@ -3,21 +3,21 @@ import * as Option from 'effect/Option'; import * as SchemaAST from 'effect/SchemaAST'; export const convertPropertyValue = ( - property: { propertyId: string; string: string; boolean: boolean; number: number; time: string; point: string }, + property: { propertyId: string; text: string; boolean: boolean; float: number; time: string; point: string }, type: SchemaAST.AST, ) => { const propertyType = SchemaAST.getAnnotation(Constants.PropertyTypeSymbol)(type); if (Option.isSome(propertyType)) { if (propertyType.value === 'string') { - return property.string; + return property.text; } if (propertyType.value === 'boolean') { // Handle case where boolean is stored as string in the API if (property.boolean != null) { return Boolean(property.boolean); } - if (property.string != null && (property.string === '1' || property.string === '0')) { - return property.string === '1'; + if (property.text != null && (property.text === '1' || property.text === '0')) { + return property.text === '1'; } return undefined; } @@ -26,18 +26,18 @@ export const convertPropertyValue = ( if (property.point != null) { return property.point; } - if (property.string != null) { - return property.string; + if (property.text != null) { + return property.text; } return undefined; } if (propertyType.value === 'number') { // Handle case where number is stored as string in the API - if (property.number != null) { - return Number(property.number); + if (property.float != null) { + return Number(property.float); } - if (property.string != null && property.string !== '' && !Number.isNaN(Number(property.string))) { - return Number(property.string); + if (property.text != null && property.text !== '' && !Number.isNaN(Number(property.text))) { + return Number(property.text); } return undefined; } @@ -46,8 +46,8 @@ export const convertPropertyValue = ( if (property.time != null) { return property.time; } - if (property.string != null) { - return property.string; + if (property.text != null) { + return property.text; } return undefined; } diff --git a/packages/hypergraph/src/utils/convert-relations.ts b/packages/hypergraph/src/utils/convert-relations.ts index 16f6a9ec..12ca1c9c 100644 --- a/packages/hypergraph/src/utils/convert-relations.ts +++ b/packages/hypergraph/src/utils/convert-relations.ts @@ -10,9 +10,9 @@ import { getRelationAlias } from './relation-query-helpers.js'; type ValueList = { propertyId: string; - string: string; + text: string; boolean: boolean; - number: number; + float: number; time: string; point: string; }[]; diff --git a/packages/hypergraph/src/utils/relation-query-helpers.ts b/packages/hypergraph/src/utils/relation-query-helpers.ts index fe0ea54c..fe56e202 100644 --- a/packages/hypergraph/src/utils/relation-query-helpers.ts +++ b/packages/hypergraph/src/utils/relation-query-helpers.ts @@ -109,9 +109,9 @@ const buildRelationsListFragment = (info: RelationTypeIdInfo, level: 1 | 2, spac entity { valuesList${valuesListFilter} { propertyId - string + text boolean - number + float time point } @@ -121,9 +121,9 @@ const buildRelationsListFragment = (info: RelationTypeIdInfo, level: 1 | 2, spac name valuesList${valuesListFilter} { propertyId - string + text boolean - number + float time point } diff --git a/packages/hypergraph/src/utils/translate-filter-to-graphql.ts b/packages/hypergraph/src/utils/translate-filter-to-graphql.ts index 48dd672d..b9004d6e 100644 --- a/packages/hypergraph/src/utils/translate-filter-to-graphql.ts +++ b/packages/hypergraph/src/utils/translate-filter-to-graphql.ts @@ -1,4 +1,3 @@ -import { Graph } from '@graphprotocol/grc-20'; import { Constants, type Entity } from '@graphprotocol/hypergraph'; import * as Option from 'effect/Option'; import type * as Schema from 'effect/Schema'; @@ -10,7 +9,7 @@ type GraphqlFilterEntry = some: | { propertyId: { is: string }; - string: { is: string } | { startsWith: string } | { endsWith: string } | { includes: string }; + text: { is: string } | { startsWith: string } | { endsWith: string } | { includes: string }; } | { propertyId: { is: string }; @@ -18,7 +17,7 @@ type GraphqlFilterEntry = } | { propertyId: { is: string }; - number: { is: string } | { greaterThan: string } | { lessThan: string }; + float: { is: number } | { greaterThan: number } | { lessThan: number }; }; }; } @@ -132,7 +131,7 @@ export function translateFilterToGraphql( values: { some: { propertyId: { is: propertyId.value }, - string: fieldFilter.is + text: fieldFilter.is ? { is: fieldFilter.is } : fieldFilter.startsWith ? { startsWith: fieldFilter.startsWith } @@ -160,11 +159,11 @@ export function translateFilterToGraphql( values: { some: { propertyId: { is: propertyId.value }, - number: fieldFilter.is - ? { is: Graph.serializeNumber(fieldFilter.is) } + float: fieldFilter.is + ? { is: fieldFilter.is } : fieldFilter.greaterThan - ? { greaterThan: Graph.serializeNumber(fieldFilter.greaterThan) } - : { lessThan: Graph.serializeNumber(fieldFilter.lessThan) }, + ? { greaterThan: fieldFilter.greaterThan } + : { lessThan: fieldFilter.lessThan }, }, }, }); diff --git a/packages/hypergraph/test/entity/find-many-public.test.ts b/packages/hypergraph/test/entity/find-many-public.test.ts index 3a6a3ad0..c361f814 100644 --- a/packages/hypergraph/test/entity/find-many-public.test.ts +++ b/packages/hypergraph/test/entity/find-many-public.test.ts @@ -38,12 +38,12 @@ const Parent = Entity.Schema( const buildValueEntry = ( propertyId: string, - value: Partial<{ string: string; boolean: boolean; number: number; time: string; point: string }> = {}, + value: Partial<{ text: string; boolean: boolean; float: number; time: string; point: string }> = {}, ) => ({ propertyId, - string: value.string ?? '', + text: value.text ?? '', boolean: value.boolean ?? false, - number: value.number ?? 0, + float: value.float ?? 0, time: value.time ?? new Date(0).toISOString(), point: value.point ?? '0,0', }); @@ -55,7 +55,7 @@ describe('findManyPublic parseResult', () => { { id: 'parent-valid', name: 'Parent valid', - valuesList: [buildValueEntry(TITLE_PROPERTY_ID, { string: 'Parent valid' })], + valuesList: [buildValueEntry(TITLE_PROPERTY_ID, { text: 'Parent valid' })], spaceIds: [], }, { @@ -85,7 +85,7 @@ describe('findManyPublic parseResult', () => { { id: 'parent-with-invalid-child', name: 'Parent with invalid child', - valuesList: [buildValueEntry(TITLE_PROPERTY_ID, { string: 'Parent with invalid child' })], + valuesList: [buildValueEntry(TITLE_PROPERTY_ID, { text: 'Parent with invalid child' })], spaceIds: [], [relationAlias]: { nodes: [ @@ -123,7 +123,7 @@ describe('findManyPublic parseResult', () => { { id: 'parent-with-spaces', name: 'Parent with spaces', - valuesList: [buildValueEntry(TITLE_PROPERTY_ID, { string: 'Parent with spaces' })], + valuesList: [buildValueEntry(TITLE_PROPERTY_ID, { text: 'Parent with spaces' })], spaceIds: ['space-1', null, 'space-2'], }, ], diff --git a/packages/hypergraph/test/entity/find-one-public.test.ts b/packages/hypergraph/test/entity/find-one-public.test.ts index 7f6bb61c..18235d39 100644 --- a/packages/hypergraph/test/entity/find-one-public.test.ts +++ b/packages/hypergraph/test/entity/find-one-public.test.ts @@ -44,12 +44,12 @@ const Parent = Entity.Schema( const buildValueEntry = ( propertyId: string, - value: Partial<{ string: string; boolean: boolean; number: number; time: string; point: string }> = {}, + value: Partial<{ text: string; boolean: boolean; float: number; time: string; point: string }> = {}, ) => ({ propertyId, - string: value.string ?? '', + text: value.text ?? '', boolean: value.boolean ?? false, - number: value.number ?? 0, + float: value.float ?? 0, time: value.time ?? new Date(0).toISOString(), point: value.point ?? '0,0', }); @@ -84,7 +84,7 @@ describe('findOnePublic', () => { const entity = { id: 'parent-2', name: 'Parent 2', - valuesList: [buildValueEntry(TITLE_PROPERTY_ID, { string: 'Parent 2' })], + valuesList: [buildValueEntry(TITLE_PROPERTY_ID, { text: 'Parent 2' })], [relationAlias]: { nodes: [ { diff --git a/packages/hypergraph/test/mapping/Mapping.test.ts b/packages/hypergraph/test/mapping/Mapping.test.ts index afceb766..090ee428 100644 --- a/packages/hypergraph/test/mapping/Mapping.test.ts +++ b/packages/hypergraph/test/mapping/Mapping.test.ts @@ -13,10 +13,10 @@ describe('Mapping', () => { describe('mapSchemaDataTypeToGRC20PropDataType', () => { it('should be able to map the schema dataType to the correct GRC-20 dataType', () => { expect(mapSchemaDataTypeToGRC20PropDataType('Boolean')).toEqual('BOOLEAN'); - expect(mapSchemaDataTypeToGRC20PropDataType('Number')).toEqual('NUMBER'); + expect(mapSchemaDataTypeToGRC20PropDataType('Number')).toEqual('FLOAT64'); expect(mapSchemaDataTypeToGRC20PropDataType('Date')).toEqual('TIME'); expect(mapSchemaDataTypeToGRC20PropDataType('Point')).toEqual('POINT'); - expect(mapSchemaDataTypeToGRC20PropDataType('String')).toEqual('STRING'); + expect(mapSchemaDataTypeToGRC20PropDataType('String')).toEqual('TEXT'); expect(mapSchemaDataTypeToGRC20PropDataType('Relation(Event)')).toEqual('RELATION'); }); }); diff --git a/packages/hypergraph/test/space/find-many-public.test.ts b/packages/hypergraph/test/space/find-many-public.test.ts index 29004744..5d2512f6 100644 --- a/packages/hypergraph/test/space/find-many-public.test.ts +++ b/packages/hypergraph/test/space/find-many-public.test.ts @@ -33,7 +33,7 @@ const buildQuerySpace = ({ : [ { propertyId: '8a743832c0944a62b6650c3cc2f9c7bc', - string: avatar, + text: avatar, }, ], }, diff --git a/packages/hypergraph/test/utils/translate-filter-to-graphql.test.ts b/packages/hypergraph/test/utils/translate-filter-to-graphql.test.ts index a2102eea..856ac0fe 100644 --- a/packages/hypergraph/test/utils/translate-filter-to-graphql.test.ts +++ b/packages/hypergraph/test/utils/translate-filter-to-graphql.test.ts @@ -1,4 +1,4 @@ -import { Graph, Id } from '@graphprotocol/grc-20'; +import { Id } from '@graphprotocol/grc-20'; import { Entity, Type } from '@graphprotocol/hypergraph'; import type * as Schema from 'effect/Schema'; import { describe, expect, it } from 'vitest'; @@ -48,7 +48,7 @@ describe('translateFilterToGraphql string filters', () => { values: { some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, - string: { is: 'test' }, + text: { is: 'test' }, }, }, }); @@ -65,7 +65,7 @@ describe('translateFilterToGraphql string filters', () => { values: { some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, - string: { includes: 'test' }, + text: { includes: 'test' }, }, }, }); @@ -82,7 +82,7 @@ describe('translateFilterToGraphql string filters', () => { values: { some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, - string: { startsWith: 'test' }, + text: { startsWith: 'test' }, }, }, }); @@ -99,7 +99,7 @@ describe('translateFilterToGraphql string filters', () => { values: { some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, - string: { endsWith: 'test' }, + text: { endsWith: 'test' }, }, }, }); @@ -137,7 +137,7 @@ describe('translateFilterToGraphql number filters', () => { values: { some: { propertyId: { is: 'ee92053442ce4113a63b8f3c889dd772' }, - number: { is: Graph.serializeNumber(1) }, + float: { is: 1 }, }, }, }); @@ -154,7 +154,7 @@ describe('translateFilterToGraphql number filters', () => { values: { some: { propertyId: { is: 'ee92053442ce4113a63b8f3c889dd772' }, - number: { greaterThan: Graph.serializeNumber(1) }, + float: { greaterThan: 1 }, }, }, }); @@ -189,7 +189,7 @@ describe('translateFilterToGraphql id filters', () => { values: { some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, - string: { is: 'test' }, + text: { is: 'test' }, }, }, }, @@ -252,7 +252,7 @@ describe('translateFilterToGraphql multiple filters', () => { values: { some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, - string: { is: 'test' }, + text: { is: 'test' }, }, }, }, @@ -268,7 +268,7 @@ describe('translateFilterToGraphql multiple filters', () => { values: { some: { propertyId: { is: 'ee92053442ce4113a63b8f3c889dd772' }, - number: { greaterThan: Graph.serializeNumber(1) }, + float: { greaterThan: 1 }, }, }, }, @@ -288,10 +288,10 @@ describe('translateFilterToGraphql with OR operator', () => { expect(result).toEqual({ or: [ { - values: { some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, string: { is: 'test' } } }, + values: { some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, text: { is: 'test' } } }, }, { - values: { some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, string: { is: 'test2' } } }, + values: { some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, text: { is: 'test2' } } }, }, ], }); @@ -307,7 +307,7 @@ describe('translateFilterToGraphql with OR operator', () => { expect(result).toEqual({ or: [ { - values: { some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, string: { is: 'test' } } }, + values: { some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, text: { is: 'test' } } }, }, { values: { some: { propertyId: { is: 'd2d64cd3a33747849e3025bea0349471' }, boolean: { is: true } } }, @@ -326,7 +326,7 @@ describe('translateFilterToGraphql with NOT operator', () => { const result = translateFilterToGraphql(filter, Todo); expect(result).toEqual({ - not: { values: { some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, string: { is: 'test' } } } }, + not: { values: { some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, text: { is: 'test' } } } }, }); }); @@ -340,7 +340,7 @@ describe('translateFilterToGraphql with NOT operator', () => { expect(result).toEqual({ not: { and: [ - { values: { some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, string: { is: 'test' } } } }, + { values: { some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, text: { is: 'test' } } } }, { values: { some: { propertyId: { is: 'd2d64cd3a33747849e3025bea0349471' }, boolean: { is: true } } } }, ], }, @@ -361,14 +361,14 @@ describe('translateFilterToGraphql with complex nested filters', () => { { not: { values: { - some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, string: { is: 'Jane Doe' } }, + some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, text: { is: 'Jane Doe' } }, }, }, }, { not: { values: { - some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, string: { is: 'John Doe' } }, + some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, text: { is: 'John Doe' } }, }, }, }, @@ -395,7 +395,7 @@ describe('translateFilterToGraphql with complex nested filters', () => { values: { some: { propertyId: { is: 'ee92053442ce4113a63b8f3c889dd772' }, - number: { is: Graph.serializeNumber(42) }, + float: { is: 42 }, }, }, }, @@ -404,14 +404,14 @@ describe('translateFilterToGraphql with complex nested filters', () => { { not: { values: { - some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, string: { is: 'Jane Doe' } }, + some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, text: { is: 'Jane Doe' } }, }, }, }, { not: { values: { - some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, string: { is: 'John Doe' } }, + some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, text: { is: 'John Doe' } }, }, }, }, @@ -422,12 +422,12 @@ describe('translateFilterToGraphql with complex nested filters', () => { or: [ { values: { - some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, string: { is: 'Jane Doe' } }, + some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, text: { is: 'Jane Doe' } }, }, }, { values: { - some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, string: { is: 'John Doe' } }, + some: { propertyId: { is: 'a126ca530c8e48d5b88882c734c38935' }, text: { is: 'John Doe' } }, }, }, ], diff --git a/packages/typesync-studio/package.json b/packages/typesync-studio/package.json index d583f929..1b8ddc2d 100644 --- a/packages/typesync-studio/package.json +++ b/packages/typesync-studio/package.json @@ -14,7 +14,7 @@ }, "dependencies": { "@base-ui-components/react": "1.0.0-beta.2", - "@graphprotocol/grc-20": "^0.27.0", + "@graphprotocol/grc-20": "^0.32.3", "@graphprotocol/hypergraph": "workspace:*", "@graphprotocol/hypergraph-react": "workspace:*", "@graphql-typed-document-node/core": "^3.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 68b89238..f69d29a6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,8 +27,8 @@ importers: specifier: ^0.25.1 version: 0.25.1(effect@3.17.13)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) '@graphprotocol/grc-20': - specifier: ^0.27.0 - version: 0.27.0(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@4.0.17))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@4.0.17) + specifier: ^0.32.3 + version: 0.32.3(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@4.0.17))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@4.0.17) babel-plugin-annotate-pure-calls: specifier: ^0.5.0 version: 0.5.0(@babel/core@7.28.3) @@ -51,8 +51,8 @@ importers: specifier: 1.0.0-beta.2 version: 1.0.0-beta.2(@types/react@19.1.10)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@graphprotocol/grc-20': - specifier: ^0.27.0 - version: 0.27.0(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@3.25.76))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) + specifier: ^0.32.3 + version: 0.32.3(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@3.25.76))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) '@graphprotocol/hypergraph': specifier: workspace:* version: link:../../packages/hypergraph/publish @@ -142,8 +142,8 @@ importers: apps/events: dependencies: '@graphprotocol/grc-20': - specifier: ^0.27.0 - version: 0.27.0(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@3.25.76))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) + specifier: ^0.32.3 + version: 0.32.3(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@3.25.76))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) '@graphprotocol/hypergraph': specifier: workspace:* version: link:../../packages/hypergraph/publish @@ -260,8 +260,8 @@ importers: apps/next-example: dependencies: '@graphprotocol/grc-20': - specifier: ^0.27.0 - version: 0.27.0(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@4.0.17))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@4.0.17) + specifier: ^0.32.3 + version: 0.32.3(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@4.0.17))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@4.0.17) '@graphprotocol/hypergraph': specifier: workspace:* version: link:../../packages/hypergraph/publish @@ -294,8 +294,8 @@ importers: apps/privy-login-example: dependencies: '@graphprotocol/grc-20': - specifier: ^0.27.0 - version: 0.27.0(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@3.25.76))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) + specifier: ^0.32.3 + version: 0.32.3(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@3.25.76))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) '@graphprotocol/hypergraph': specifier: workspace:* version: link:../../packages/hypergraph/publish @@ -735,8 +735,8 @@ importers: specifier: ^0.45.0 version: 0.45.0(@effect/typeclass@0.31.10(effect@3.17.13))(effect@3.17.13) '@graphprotocol/grc-20': - specifier: ^0.27.0 - version: 0.27.0(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@4.0.17))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) + specifier: ^0.32.3 + version: 0.32.3(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@4.0.17))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) '@noble/ciphers': specifier: ^1.3.0 version: 1.3.0 @@ -815,8 +815,8 @@ importers: specifier: ^2.2.0 version: 2.2.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@graphprotocol/grc-20': - specifier: ^0.27.0 - version: 0.27.0(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@3.25.76))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) + specifier: ^0.32.3 + version: 0.32.3(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@3.25.76))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) '@noble/hashes': specifier: ^1.8.0 version: 1.8.0 @@ -871,8 +871,8 @@ importers: specifier: 1.0.0-beta.2 version: 1.0.0-beta.2(@types/react@19.1.10)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@graphprotocol/grc-20': - specifier: ^0.27.0 - version: 0.27.0(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@4.0.17))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@4.0.17) + specifier: ^0.32.3 + version: 0.32.3(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@4.0.17))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@4.0.17) '@graphprotocol/hypergraph': specifier: workspace:* version: link:../hypergraph/publish @@ -1833,8 +1833,8 @@ packages: cpu: [x64] os: [win32] - '@bufbuild/protobuf@1.10.1': - resolution: {integrity: sha512-wJ8ReQbHxsAfXhrf9ixl0aYbZorRuOWpBNzm8pL8ftmSxQx/wnJD5Eg861NwJU/czy2VXFIebCeZnZrI9rktIQ==} + '@bokuweb/zstd-wasm@0.0.27': + resolution: {integrity: sha512-GDm2uOTK3ESjnYmSeLQifJnBsRCWajKLvN32D2ZcQaaCIJI/Hse9s74f7APXjHit95S10UImsRGkTsbwHmrtmg==} '@cbor-extract/cbor-extract-darwin-arm64@2.2.0': resolution: {integrity: sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==} @@ -3031,11 +3031,15 @@ packages: '@floating-ui/utils@0.2.10': resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + '@geoprotocol/grc-20@0.1.7': + resolution: {integrity: sha512-BJGUwG6exJnLkoRzCwzohybxgtwsYwuzEcnyJ2YPQQ1WwDXp7o8oNwLVUjzwEqjEabw1oIRpSnDNrH/LqSEaYA==} + engines: {node: '>=18'} + '@gerrit0/mini-shiki@3.12.2': resolution: {integrity: sha512-HKZPmO8OSSAAo20H2B3xgJdxZaLTwtlMwxg0967scnrDlPwe6j5+ULGHyIqwgTbFCn9yv/ff8CmfWZLE9YKBzA==} - '@graphprotocol/grc-20@0.27.0': - resolution: {integrity: sha512-FUSZdYWu/Dk6i27YZ8NKbyl1PkFJEjMsPLSIF1iXl8MsHIt8S3qKHvwgoWhRAMPiojyevJTGpjNHGmBVRczJIA==} + '@graphprotocol/grc-20@0.32.3': + resolution: {integrity: sha512-fNZkOQSvVFcXrMB8t2UYo+onqywn6PEexHtZBRQtY4aofCJDY0X3bgnT89CVTkT8aO6PrLCna5ix0rNzgAqrqA==} '@graphql-codegen/add@5.0.3': resolution: {integrity: sha512-SxXPmramkth8XtBlAHu4H4jYcYXM/o3p01+psU+0NADQowA8jtYkK6MW5rV6T+CxkEaNZItfSmZRPgIuypcqnA==} @@ -3790,8 +3794,8 @@ packages: resolution: {integrity: sha512-TtxJSRD8Ohxp6bKkhrm27JRHAxPczQA7idtcTOMYI+wQRRrfgqxHv1cFbCApcSnNjtXkmzFozn6jQtFrOmbjPQ==} engines: {node: '>=14'} - '@oxc-project/types@0.107.0': - resolution: {integrity: sha512-QFDRbYfV2LVx8tyqtyiah3jQPUj1mK2+RYwxyFWyGoys6XJnwTdlzO6rdNNHOPorHAu5Uo34oWRKcvNpbJarmQ==} + '@oxc-project/types@0.108.0': + resolution: {integrity: sha512-7lf13b2IA/kZO6xgnIZA88sq3vwrxWk+2vxf6cc+omwYCRTiA5e63Beqf3fz/v8jEviChWWmFYBwzfSeyrsj7Q==} '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} @@ -4391,79 +4395,79 @@ packages: peerDependencies: viem: ^2.0.0 - '@rolldown/binding-android-arm64@1.0.0-beta.59': - resolution: {integrity: sha512-6yLLgyswYwiCfls9+hoNFY9F8TQdwo15hpXDHzlAR0X/GojeKF+AuNcXjYNbOJ4zjl/5D6lliE8CbpB5t1OWIQ==} + '@rolldown/binding-android-arm64@1.0.0-beta.60': + resolution: {integrity: sha512-hOW6iQXtpG4uCW1zGK56+KhEXGttSkTp2ykncW/nkOIF/jOKTqbM944Q73HVeMXP1mPRvE2cZwNp3xeLIeyIGQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.59': - resolution: {integrity: sha512-hqGXRc162qCCIOAcHN2Cw4eXiVTwYsMFLOhAy1IG2CxY+dwc/l4Ga+dLPkLor3Ikqy5WDn+7kxHbbh6EmshEpQ==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.60': + resolution: {integrity: sha512-vyDA4HXY2mP8PPtl5UE17uGPxUNG4m1wkfa3kAkR8JWrFbarV97UmLq22IWrNhtBPa89xqerzLK8KoVmz5JqCQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.59': - resolution: {integrity: sha512-ezvvGuhteE15JmMhJW0wS7BaXmhwLy1YHeEwievYaPC1PgGD86wgBKfOpHr9tSKllAXbCe0BeeMvasscWLhKdA==} + '@rolldown/binding-darwin-x64@1.0.0-beta.60': + resolution: {integrity: sha512-WnxyqxAKP2BsxouwGY/RCF5UFw/LA4QOHhJ7VEl+UCelHokiwqNHRbryLAyRy3TE1FZ5eae+vAFcaetAu/kWLw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.59': - resolution: {integrity: sha512-4fhKVJiEYVd5n6no/mrL3LZ9kByfCGwmONOrdtvx8DJGDQhehH/q3RfhG3V/4jGKhpXgbDjpIjkkFdybCTcgew==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.60': + resolution: {integrity: sha512-JtyWJ+zXOHof5gOUYwdTWI2kL6b8q9eNwqB/oD4mfUFaC/COEB2+47JMhcq78dey9Ahmec3DZKRDZPRh9hNAMQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.59': - resolution: {integrity: sha512-T3Y52sW6JAhvIqArBw+wtjNU1Ieaz4g0NBxyjSJoW971nZJBZygNlSYx78G4cwkCmo1dYTciTPDOnQygLV23pA==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.60': + resolution: {integrity: sha512-LrMoKqpHx+kCaNSk84iSBd4yVOymLIbxJQtvFjDN2CjQraownR+IXcwYDblFcj9ivmS54T3vCboXBbm3s1zbPQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.59': - resolution: {integrity: sha512-NIW40jQDSQap2KDdmm9z3B/4OzWJ6trf8dwx3FD74kcQb3v34ThsBFTtzE5KjDuxnxgUlV+DkAu+XgSMKrgufw==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.60': + resolution: {integrity: sha512-sqI+Vdx1gmXJMsXN3Fsewm3wlt7RHvRs1uysSp//NLsCoh9ZFEUr4ZzGhWKOg6Rvf+njNu/vCsz96x7wssLejQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.59': - resolution: {integrity: sha512-CCKEk+H+8c0WGe/8n1E20n85Tq4Pv+HNAbjP1KfUXW+01aCWSMjU56ChNrM2tvHnXicfm7QRNoZyfY8cWh7jLQ==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.60': + resolution: {integrity: sha512-8xlqGLDtTP8sBfYwneTDu8+PRm5reNEHAuI/+6WPy9y350ls0KTFd3EJCOWEXWGW0F35ko9Fn9azmurBTjqOrQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.59': - resolution: {integrity: sha512-VlfwJ/HCskPmQi8R0JuAFndySKVFX7yPhE658o27cjSDWWbXVtGkSbwaxstii7Q+3Rz87ZXN+HLnb1kd4R9Img==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.60': + resolution: {integrity: sha512-iR4nhVouVZK1CiGGGyz+prF5Lw9Lmz30Rl36Hajex+dFVFiegka604zBwzTp5Tl0BZnr50ztnVJ30tGrBhDr8Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.59': - resolution: {integrity: sha512-kuO92hTRyGy0Ts3Nsqll0rfO8eFsEJe9dGQGktkQnZ2hrJrDVN0y419dMgKy/gB2S2o7F2dpWhpfQOBehZPwVA==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.60': + resolution: {integrity: sha512-HbfNcqNeqxFjSMf1Kpe8itr2e2lr0Bm6HltD2qXtfU91bSSikVs9EWsa1ThshQ1v2ZvxXckGjlVLtah6IoslPg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.59': - resolution: {integrity: sha512-PXAebvNL4sYfCqi8LdY4qyFRacrRoiPZLo3NoUmiTxm7MPtYYR8CNtBGNokqDmMuZIQIecRaD/jbmFAIDz7DxQ==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.60': + resolution: {integrity: sha512-BiiamFcgTJ+ZFOUIMO9AHXUo9WXvHVwGfSrJ+Sv0AsTd2w3VN7dJGiH3WRcxKFetljJHWvGbM4fdpY5lf6RIvw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.59': - resolution: {integrity: sha512-yJoklQg7XIZq8nAg0bbkEXcDK6sfpjxQGxpg2Nd6ERNtvg+eOaEBRgPww0BVTrYFQzje1pB5qPwC2VnJHT3koQ==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.60': + resolution: {integrity: sha512-6roXGbHMdR2ucnxXuwbmQvk8tuYl3VGu0yv13KxspyKBxxBd4RS6iykzLD6mX2gMUHhfX8SVWz7n/62gfyKHow==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.59': - resolution: {integrity: sha512-ljZ4+McmCbIuZwEBaoGtiG8Rq2nJjaXEnLEIx+usWetXn1ECjXY0LAhkELxOV6ytv4ensEmoJJ8nXg47hRMjlw==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.60': + resolution: {integrity: sha512-JBOm8/DC/CKnHyMHoJFdvzVHxUixid4dGkiTqGflxOxO43uSJMpl77pSPXvzwZ/VXwqblU2V0/PanyCBcRLowQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.59': - resolution: {integrity: sha512-bMY4tTIwbdZljW+xe/ln1hvs0SRitahQSXfWtvgAtIzgSX9Ar7KqJzU7lRm33YTRFIHLULRi53yNjw9nJGd6uQ==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.60': + resolution: {integrity: sha512-MKF0B823Efp+Ot8KsbwIuGhKH58pf+2rSM6VcqyNMlNBHheOM0Gf7JmEu+toc1jgN6fqjH7Et+8hAzsLVkIGfA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -4471,8 +4475,8 @@ packages: '@rolldown/pluginutils@1.0.0-beta.32': resolution: {integrity: sha512-QReCdvxiUZAPkvp1xpAg62IeNzykOFA6syH2CnClif4YmALN1XKpB39XneL80008UbtMShthSVDKmrx05N1q/g==} - '@rolldown/pluginutils@1.0.0-beta.59': - resolution: {integrity: sha512-aoh6LAJRyhtazs98ydgpNOYstxUlsOV1KJXcpf/0c0vFcUA8uyd/hwKRhqE/AAPNqAho9RliGsvitCoOzREoVA==} + '@rolldown/pluginutils@1.0.0-beta.60': + resolution: {integrity: sha512-Jz4aqXRPVtqkH1E3jRDzLO5cgN5JwW+WG0wXGE4NiJd25nougv/AHzxmKCzmVQUYnxLmTM0M4wrZp+LlC2FKLg==} '@rollup/plugin-inject@5.0.5': resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} @@ -5872,17 +5876,6 @@ packages: zod: optional: true - abitype@1.0.9: - resolution: {integrity: sha512-oN0S++TQmlwWuB+rkA6aiEefLv3SP+2l/tC5mux/TLj6qdA6rF15Vbpex4fHovLsMkwLwTIRj8/Q8vXCS3GfOg==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - abitype@1.1.0: resolution: {integrity: sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A==} peerDependencies: @@ -11059,8 +11052,8 @@ packages: vue-tsc: optional: true - rolldown@1.0.0-beta.59: - resolution: {integrity: sha512-Slm000Gd8/AO9z4Kxl4r8mp/iakrbAuJ1L+7ddpkNxgQ+Vf37WPvY63l3oeyZcfuPD1DRrUYBsRPIXSOhvOsmw==} + rolldown@1.0.0-beta.60: + resolution: {integrity: sha512-YYgpv7MiTp9LdLj1fzGzCtij8Yi2OKEc3HQtfbIxW4yuSgpQz9518I69U72T5ErPA/ATOXqlcisiLrWy+5V9YA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -13996,7 +13989,7 @@ snapshots: '@biomejs/cli-win32-x64@2.2.0': optional: true - '@bufbuild/protobuf@1.10.1': {} + '@bokuweb/zstd-wasm@0.0.27': {} '@cbor-extract/cbor-extract-darwin-arm64@2.2.0': optional: true @@ -15864,6 +15857,10 @@ snapshots: '@floating-ui/utils@0.2.10': {} + '@geoprotocol/grc-20@0.1.7': + dependencies: + '@bokuweb/zstd-wasm': 0.0.27 + '@gerrit0/mini-shiki@3.12.2': dependencies: '@shikijs/engine-oniguruma': 3.12.2 @@ -15872,9 +15869,9 @@ snapshots: '@shikijs/types': 3.12.2 '@shikijs/vscode-textmate': 10.0.2 - '@graphprotocol/grc-20@0.27.0(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@3.25.76))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@graphprotocol/grc-20@0.32.3(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@3.25.76))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@bufbuild/protobuf': 1.10.1 + '@geoprotocol/grc-20': 0.1.7 effect: 3.17.13 fflate: 0.8.2 fractional-indexing-jittered: 1.0.0 @@ -15889,9 +15886,9 @@ snapshots: - utf-8-validate - zod - '@graphprotocol/grc-20@0.27.0(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@4.0.17))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@graphprotocol/grc-20@0.32.3(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@4.0.17))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@bufbuild/protobuf': 1.10.1 + '@geoprotocol/grc-20': 0.1.7 effect: 3.17.13 fflate: 0.8.2 fractional-indexing-jittered: 1.0.0 @@ -15906,9 +15903,9 @@ snapshots: - utf-8-validate - zod - '@graphprotocol/grc-20@0.27.0(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@4.0.17))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@4.0.17)': + '@graphprotocol/grc-20@0.32.3(bufferutil@4.0.9)(ox@0.8.7(typescript@5.9.2)(zod@4.0.17))(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@4.0.17)': dependencies: - '@bufbuild/protobuf': 1.10.1 + '@geoprotocol/grc-20': 0.1.7 effect: 3.17.13 fflate: 0.8.2 fractional-indexing-jittered: 1.0.0 @@ -16887,7 +16884,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.36.0': {} - '@oxc-project/types@0.107.0': {} + '@oxc-project/types@0.108.0': {} '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -17091,7 +17088,7 @@ snapshots: '@privy-io/api-base': 1.6.1 bs58: 5.0.0 libphonenumber-js: 1.12.14 - viem: 2.35.1(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.37.6(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) zod: 3.25.76 transitivePeerDependencies: - bufferutil @@ -17592,7 +17589,7 @@ snapshots: dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.35.1(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.37.6(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.22.4) transitivePeerDependencies: - bufferutil - typescript @@ -17603,7 +17600,7 @@ snapshots: dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.35.1(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.37.6(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - bufferutil - typescript @@ -17614,7 +17611,7 @@ snapshots: dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.35.1(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.37.6(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.22.4) transitivePeerDependencies: - bufferutil - typescript @@ -17625,7 +17622,7 @@ snapshots: dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.35.1(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.37.6(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - bufferutil - typescript @@ -17638,7 +17635,7 @@ snapshots: '@reown/appkit-wallet': 1.7.20(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10) '@walletconnect/universal-provider': 2.21.7(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) valtio: 2.1.5(@types/react@19.1.10)(react@19.1.1) - viem: 2.35.1(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.37.6(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -17672,7 +17669,7 @@ snapshots: '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10) '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) valtio: 1.13.2(@types/react@19.1.10)(react@19.1.1) - viem: 2.35.1(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.37.6(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -17928,7 +17925,7 @@ snapshots: '@walletconnect/logger': 2.1.2 '@walletconnect/universal-provider': 2.21.7(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) valtio: 2.1.5(@types/react@19.1.10)(react@19.1.1) - viem: 2.35.1(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.37.6(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -17965,7 +17962,7 @@ snapshots: '@walletconnect/logger': 2.1.2 '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) valtio: 1.13.2(@types/react@19.1.10)(react@19.1.1) - viem: 2.35.1(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.37.6(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -18073,7 +18070,7 @@ snapshots: '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) bs58: 6.0.0 valtio: 1.13.2(@types/react@19.1.10)(react@19.1.1) - viem: 2.35.1(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.37.6(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -18109,50 +18106,50 @@ snapshots: tslib: 2.8.1 viem: 2.34.0(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@rolldown/binding-android-arm64@1.0.0-beta.59': + '@rolldown/binding-android-arm64@1.0.0-beta.60': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.59': + '@rolldown/binding-darwin-arm64@1.0.0-beta.60': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.59': + '@rolldown/binding-darwin-x64@1.0.0-beta.60': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.59': + '@rolldown/binding-freebsd-x64@1.0.0-beta.60': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.59': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.60': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.59': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.60': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.59': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.60': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.59': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.60': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.59': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.60': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.59': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.60': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.59': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.60': dependencies: '@napi-rs/wasm-runtime': 1.1.1 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.59': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.60': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.59': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.60': optional: true '@rolldown/pluginutils@1.0.0-beta.32': {} - '@rolldown/pluginutils@1.0.0-beta.59': {} + '@rolldown/pluginutils@1.0.0-beta.60': {} '@rollup/plugin-inject@5.0.5(rollup@4.47.1)': dependencies: @@ -20039,32 +20036,16 @@ snapshots: '@xtuc/long@4.2.2': {} - abitype@1.0.8(typescript@5.9.2)(zod@3.22.4): - optionalDependencies: - typescript: 5.9.2 - zod: 3.22.4 - abitype@1.0.8(typescript@5.9.2)(zod@3.25.76): optionalDependencies: typescript: 5.9.2 zod: 3.25.76 - abitype@1.0.9(typescript@5.9.2)(zod@3.22.4): + abitype@1.1.0(typescript@5.9.2)(zod@3.22.4): optionalDependencies: typescript: 5.9.2 zod: 3.22.4 - abitype@1.0.9(typescript@5.9.2)(zod@3.25.76): - optionalDependencies: - typescript: 5.9.2 - zod: 3.25.76 - - abitype@1.0.9(typescript@5.9.2)(zod@4.0.17): - optionalDependencies: - typescript: 5.9.2 - zod: 4.0.17 - optional: true - abitype@1.1.0(typescript@5.9.2)(zod@3.25.76): optionalDependencies: typescript: 5.9.2 @@ -24712,11 +24693,11 @@ snapshots: ox@0.6.7(typescript@5.9.2)(zod@3.25.76): dependencies: '@adraffy/ens-normalize': 1.11.0 - '@noble/curves': 1.8.1 - '@noble/hashes': 1.7.1 - '@scure/bip32': 1.6.2 - '@scure/bip39': 1.5.4 - abitype: 1.0.8(typescript@5.9.2)(zod@3.25.76) + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.1.0(typescript@5.9.2)(zod@3.25.76) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.2 @@ -24730,7 +24711,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.0.9(typescript@5.9.2)(zod@3.25.76) + abitype: 1.1.0(typescript@5.9.2)(zod@3.25.76) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.2 @@ -24741,18 +24722,18 @@ snapshots: dependencies: '@adraffy/ens-normalize': 1.11.0 '@noble/ciphers': 1.3.0 - '@noble/curves': 1.9.2 + '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.0.8(typescript@5.9.2)(zod@3.25.76) + abitype: 1.1.0(typescript@5.9.2)(zod@3.25.76) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - zod - ox@0.8.7(typescript@5.9.2)(zod@3.22.4): + ox@0.8.7(typescript@5.9.2)(zod@3.25.76): dependencies: '@adraffy/ens-normalize': 1.11.0 '@noble/ciphers': 1.3.0 @@ -24760,14 +24741,14 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.0.9(typescript@5.9.2)(zod@3.22.4) + abitype: 1.1.0(typescript@5.9.2)(zod@3.25.76) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - zod - ox@0.8.7(typescript@5.9.2)(zod@3.25.76): + ox@0.8.7(typescript@5.9.2)(zod@4.0.17): dependencies: '@adraffy/ens-normalize': 1.11.0 '@noble/ciphers': 1.3.0 @@ -24775,28 +24756,28 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.0.9(typescript@5.9.2)(zod@3.25.76) + abitype: 1.1.0(typescript@5.9.2)(zod@4.0.17) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - zod + optional: true - ox@0.8.7(typescript@5.9.2)(zod@4.0.17): + ox@0.9.3(typescript@5.9.2)(zod@3.22.4): dependencies: '@adraffy/ens-normalize': 1.11.0 '@noble/ciphers': 1.3.0 - '@noble/curves': 1.9.7 + '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.0.9(typescript@5.9.2)(zod@4.0.17) + abitype: 1.1.0(typescript@5.9.2)(zod@3.22.4) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - zod - optional: true ox@0.9.3(typescript@5.9.2)(zod@3.25.76): dependencies: @@ -26202,7 +26183,7 @@ snapshots: hash-base: 3.0.5 inherits: 2.0.4 - rolldown-plugin-dts@0.15.7(rolldown@1.0.0-beta.59)(typescript@5.9.2): + rolldown-plugin-dts@0.15.7(rolldown@1.0.0-beta.60)(typescript@5.9.2): dependencies: '@babel/generator': 7.28.3 '@babel/parser': 7.28.3 @@ -26212,31 +26193,31 @@ snapshots: debug: 4.4.1 dts-resolver: 2.1.1 get-tsconfig: 4.10.1 - rolldown: 1.0.0-beta.59 + rolldown: 1.0.0-beta.60 optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - oxc-resolver - supports-color - rolldown@1.0.0-beta.59: + rolldown@1.0.0-beta.60: dependencies: - '@oxc-project/types': 0.107.0 - '@rolldown/pluginutils': 1.0.0-beta.59 + '@oxc-project/types': 0.108.0 + '@rolldown/pluginutils': 1.0.0-beta.60 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.59 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.59 - '@rolldown/binding-darwin-x64': 1.0.0-beta.59 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.59 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.59 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.59 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.59 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.59 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.59 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.59 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.59 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.59 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.59 + '@rolldown/binding-android-arm64': 1.0.0-beta.60 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.60 + '@rolldown/binding-darwin-x64': 1.0.0-beta.60 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.60 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.60 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.60 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.60 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.60 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.60 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.60 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.60 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.60 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.60 rollup@4.39.0: dependencies: @@ -27145,8 +27126,8 @@ snapshots: diff: 8.0.2 empathic: 2.0.0 hookable: 5.5.3 - rolldown: 1.0.0-beta.59 - rolldown-plugin-dts: 0.15.7(rolldown@1.0.0-beta.59)(typescript@5.9.2) + rolldown: 1.0.0-beta.60 + rolldown-plugin-dts: 0.15.7(rolldown@1.0.0-beta.60)(typescript@5.9.2) semver: 7.7.2 tinyexec: 1.0.1 tinyglobby: 0.2.14 @@ -27670,15 +27651,15 @@ snapshots: - utf-8-validate - zod - viem@2.35.1(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.22.4): + viem@2.35.1(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76): dependencies: '@noble/curves': 1.9.6 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.0.8(typescript@5.9.2)(zod@3.22.4) + abitype: 1.0.8(typescript@5.9.2)(zod@3.25.76) isows: 1.0.7(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.8.7(typescript@5.9.2)(zod@3.22.4) + ox: 0.8.7(typescript@5.9.2)(zod@3.25.76) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) optionalDependencies: typescript: 5.9.2 @@ -27687,15 +27668,15 @@ snapshots: - utf-8-validate - zod - viem@2.35.1(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76): + viem@2.37.6(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.22.4): dependencies: - '@noble/curves': 1.9.6 + '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.0.8(typescript@5.9.2)(zod@3.25.76) + abitype: 1.1.0(typescript@5.9.2)(zod@3.22.4) isows: 1.0.7(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.8.7(typescript@5.9.2)(zod@3.25.76) + ox: 0.9.3(typescript@5.9.2)(zod@3.22.4) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) optionalDependencies: typescript: 5.9.2