diff --git a/.changeset/bitter-dancers-lead.md b/.changeset/bitter-dancers-lead.md new file mode 100644 index 00000000..215e7785 --- /dev/null +++ b/.changeset/bitter-dancers-lead.md @@ -0,0 +1,7 @@ +--- +"@graphprotocol/hypergraph-react": minor +"@graphprotocol/hypergraph": minor +--- + +rename Type.Text to Type.String + \ No newline at end of file diff --git a/apps/create-hypergraph/template-nextjs/app/schema.ts b/apps/create-hypergraph/template-nextjs/app/schema.ts index ed50614a..d3805876 100644 --- a/apps/create-hypergraph/template-nextjs/app/schema.ts +++ b/apps/create-hypergraph/template-nextjs/app/schema.ts @@ -1,10 +1,10 @@ import { Entity, Type } from '@graphprotocol/hypergraph'; export class Address extends Entity.Class
('Address')({ - name: Type.Text, - description: Type.Text, + name: Type.String, + description: Type.String, }) {} export class Project extends Entity.Class('Project')({ - name: Type.Text, + name: Type.String, }) {} diff --git a/apps/create-hypergraph/template-vite-react/src/schema.ts b/apps/create-hypergraph/template-vite-react/src/schema.ts index ed50614a..d3805876 100644 --- a/apps/create-hypergraph/template-vite-react/src/schema.ts +++ b/apps/create-hypergraph/template-vite-react/src/schema.ts @@ -1,10 +1,10 @@ import { Entity, Type } from '@graphprotocol/hypergraph'; export class Address extends Entity.Class
('Address')({ - name: Type.Text, - description: Type.Text, + name: Type.String, + description: Type.String, }) {} export class Project extends Entity.Class('Project')({ - name: Type.Text, + name: Type.String, }) {} diff --git a/apps/events/src/schema.ts b/apps/events/src/schema.ts index 8c0d13af..c60a3909 100644 --- a/apps/events/src/schema.ts +++ b/apps/events/src/schema.ts @@ -1,38 +1,38 @@ import { Entity, Type } from '@graphprotocol/hypergraph'; export class User extends Entity.Class('User')({ - name: Type.Text, + name: Type.String, }) {} export class Todo extends Entity.Class('Todo')({ - name: Type.Text, + name: Type.String, completed: Type.Boolean, assignees: Type.Relation(User), }) {} export class Todo2 extends Entity.Class('Todo2')({ - name: Type.Text, + name: Type.String, checked: Type.Boolean, assignees: Type.Relation(User), due: Type.Date, amount: Type.Number, point: Type.Point, - website: Type.Text, + website: Type.String, }) {} export class JobOffer extends Entity.Class('JobOffer')({ - name: Type.Text, + name: Type.String, salary: Type.Number, }) {} export class Company extends Entity.Class('Company')({ - name: Type.Text, - // address: Type.Text, + name: Type.String, + // address: Type.String, jobOffers: Type.Relation(JobOffer), }) {} export class Event extends Entity.Class('Event')({ - name: Type.Text, - description: Type.optional(Type.Text), + name: Type.String, + description: Type.optional(Type.String), sponsors: Type.Relation(Company), }) {} diff --git a/docs/docs/filtering-query-results.md b/docs/docs/filtering-query-results.md index dd9f8e55..d47ef8be 100644 --- a/docs/docs/filtering-query-results.md +++ b/docs/docs/filtering-query-results.md @@ -8,7 +8,7 @@ Note: Filtering is not yet supported for public data. ```tsx export class Event extends Entity.Class("Event")({ - name: Type.Text, + name: Type.String, cancelled: Type.Boolean, }) {} @@ -29,7 +29,7 @@ The filter API supports different filters for different property types and offer exists: true/false, // filter by existence of the property } -// text filter +// string filter { is: "text", // exact match contains: "text", @@ -131,7 +131,7 @@ const { data } = useQuery(Person, { ```tsx // schema export class Todo extends Entity.Class('Todo')({ - name: Type.Text, + name: Type.String, checked: Type.Boolean, assignees: Type.Relation(User), }) @@ -174,7 +174,7 @@ const { data } = useQuery(Person, { ```tsx // schema export class Todo extends Entity.Class('Todo')({ - name: Type.Text, + name: Type.String, checked: Type.Boolean, assignees: Type.Relation(User, { entity: { diff --git a/docs/docs/schema.md b/docs/docs/schema.md index a3971d7c..81154c9e 100644 --- a/docs/docs/schema.md +++ b/docs/docs/schema.md @@ -10,8 +10,8 @@ Here is an example of a schema for an Event app with the properties `name` and ` import { Entity, Type } from '@graphprotocol/hypergraph'; export class Event extends Entity.Class('Event')({ - name: Type.Text, - description: Type.Text, + name: Type.String, + description: Type.String, }) {} ``` @@ -23,19 +23,19 @@ In order to define relations between Types, you can use the `Type.Relation` type import { Entity, Type } from '@graphprotocol/hypergraph'; export class Company extends Entity.Class('Company')({ - name: Type.Text, + name: Type.String, }) {} export class Event extends Entity.Class('Event')({ - name: Type.Text, - description: Type.Text, + name: Type.String, + description: Type.String, sponsors: Type.Relation(Company), }) {} ``` ## Available Types -- `Type.Text` (string) +- `Type.String` (string) - `Type.Number` (number) - `Type.Date` (date) - `Type.Boolean` (boolean) @@ -48,7 +48,7 @@ Example: import { Entity, Type } from '@graphprotocol/hypergraph'; export class Company extends Entity.Class('Company')({ - name: Type.Text, + name: Type.String, employees: Type.Number, founded: Type.Date, active: Type.Boolean, @@ -64,8 +64,8 @@ You can make a field optional by wrapping it in `Type.optional`. import { Entity, Type } from '@graphprotocol/hypergraph'; export class Company extends Entity.Class('Company')({ - name: Type.Text, - description: Type.optional(Type.Text), + name: Type.String, + description: Type.optional(Type.String), founded: Type.optional(Type.Date), }) {} ``` diff --git a/packages/hypergraph-react/test/HypergraphSpaceContext.test.tsx b/packages/hypergraph-react/test/HypergraphSpaceContext.test.tsx index ce242c39..565ff4bd 100644 --- a/packages/hypergraph-react/test/HypergraphSpaceContext.test.tsx +++ b/packages/hypergraph-react/test/HypergraphSpaceContext.test.tsx @@ -20,17 +20,17 @@ afterEach(() => { describe('HypergraphSpaceContext', () => { class Person extends Entity.Class('Person')({ - name: Type.Text, + name: Type.String, age: Type.Number, }) {} class User extends Entity.Class('User')({ - name: Type.Text, - email: Type.Text, + name: Type.String, + email: Type.String, }) {} class Event extends Entity.Class('Event')({ - name: Type.Text, + name: Type.String, }) {} const spaceId = '1e5e39da-a00d-4fd8-b53b-98095337112f'; diff --git a/packages/hypergraph-react/test/prepare-publish.test.ts b/packages/hypergraph-react/test/prepare-publish.test.ts index a0dccf1b..f1a31b83 100644 --- a/packages/hypergraph-react/test/prepare-publish.test.ts +++ b/packages/hypergraph-react/test/prepare-publish.test.ts @@ -21,22 +21,22 @@ afterEach(() => { describe('preparePublish', () => { // Test entity classes class Person extends Entity.Class('Person')({ - name: Type.Text, + name: Type.String, age: Type.Number, - email: Type.optional(Type.Text), + email: Type.optional(Type.String), isActive: Type.Boolean, birthDate: Type.Date, location: Type.Point, }) {} class Company extends Entity.Class('Company')({ - name: Type.Text, + name: Type.String, employees: Type.Relation(Person), }) {} // Entity class for testing optional types class OptionalFieldsEntity extends Entity.Class('OptionalFieldsEntity')({ - name: Type.Text, // required field + name: Type.String, // required field optionalNumber: Type.optional(Type.Number), optionalBoolean: Type.optional(Type.Boolean), optionalDate: Type.optional(Type.Date), @@ -323,7 +323,7 @@ describe('preparePublish', () => { it('should throw error when mapping entry is not found', async () => { class UnmappedEntity extends Entity.Class('UnmappedEntity')({ - name: Type.Text, + name: Type.String, }) {} const entity = { diff --git a/packages/hypergraph/src/entity/findMany.ts b/packages/hypergraph/src/entity/findMany.ts index 3509dc1c..85195d7c 100644 --- a/packages/hypergraph/src/entity/findMany.ts +++ b/packages/hypergraph/src/entity/findMany.ts @@ -15,7 +15,7 @@ import type { EntityFieldFilter, EntityFilter, EntityNumberFilter, - EntityTextFilter, + EntityStringFilter, } from './types.js'; const documentChangeListener: { @@ -298,19 +298,19 @@ export function findMany( if (typeof fieldValue === 'string') { if ('startsWith' in fieldFilter) { - const textFilter = fieldFilter as EntityTextFilter; + const textFilter = fieldFilter as EntityStringFilter; if (textFilter.startsWith !== undefined && !fieldValue.startsWith(textFilter.startsWith)) { return false; } } if ('endsWith' in fieldFilter) { - const textFilter = fieldFilter as EntityTextFilter; + const textFilter = fieldFilter as EntityStringFilter; if (textFilter.endsWith !== undefined && !fieldValue.endsWith(textFilter.endsWith)) { return false; } } if ('contains' in fieldFilter) { - const textFilter = fieldFilter as EntityTextFilter; + const textFilter = fieldFilter as EntityStringFilter; if (textFilter.contains !== undefined && !fieldValue.includes(textFilter.contains)) { return false; } diff --git a/packages/hypergraph/src/entity/types.ts b/packages/hypergraph/src/entity/types.ts index ee662e56..2ba4ab01 100644 --- a/packages/hypergraph/src/entity/types.ts +++ b/packages/hypergraph/src/entity/types.ts @@ -59,14 +59,14 @@ export type EntityNumberFilter = { or?: EntityNumberFilter[]; }; -export type EntityTextFilter = { +export type EntityStringFilter = { is?: string; startsWith?: string; endsWith?: string; contains?: string; equals?: string; - not?: EntityTextFilter; - or?: EntityTextFilter[]; + not?: EntityStringFilter; + or?: EntityStringFilter[]; }; export type CrossFieldFilter = { diff --git a/packages/hypergraph/src/mapping/Mapping.ts b/packages/hypergraph/src/mapping/Mapping.ts index f769505e..2b090704 100644 --- a/packages/hypergraph/src/mapping/Mapping.ts +++ b/packages/hypergraph/src/mapping/Mapping.ts @@ -94,7 +94,7 @@ export type SchemaDataTypeRelation = typeof SchemaDataTypeRelation.Type; /** * @since 0.2.0 */ -export const SchemaDataTypePrimitive = EffectSchema.Literal('Text', 'Number', 'Boolean', 'Date', 'Point'); +export const SchemaDataTypePrimitive = EffectSchema.Literal('String', 'Number', 'Boolean', 'Date', 'Point'); /** * @since 0.2.0 */ @@ -195,7 +195,7 @@ export const Schema = EffectSchema.Struct({ { name: 'Account', knowledgeGraphId: null, - properties: [{ name: 'username', knowledgeGraphId: null, dataType: 'Text' }], + properties: [{ name: 'username', knowledgeGraphId: null, dataType: 'String' }], }, ], }, @@ -204,7 +204,7 @@ export const Schema = EffectSchema.Struct({ { name: 'Account', knowledgeGraphId: 'a5fd07b1-120f-46c6-b46f-387ef98396a6', - properties: [{ name: 'name', knowledgeGraphId: 'a126ca53-0c8e-48d5-b888-82c734c38935', dataType: 'Text' }], + properties: [{ name: 'name', knowledgeGraphId: 'a126ca53-0c8e-48d5-b888-82c734c38935', dataType: 'String' }], }, ], }, diff --git a/packages/hypergraph/src/type-utils/type-utils.ts b/packages/hypergraph/src/type-utils/type-utils.ts index c61cb20a..6b590b99 100644 --- a/packages/hypergraph/src/type-utils/type-utils.ts +++ b/packages/hypergraph/src/type-utils/type-utils.ts @@ -3,9 +3,9 @@ import * as Type from '../type/type.js'; // biome-ignore lint/suspicious/noExplicitAny: TODO export const isStringOrOptionalStringType = (type: any) => { if (type.ast && type.ast._tag === 'PropertySignatureDeclaration' && type.ast.isOptional) { - return type.from === Type.Text; + return type.from === Type.String; } - return type === Type.Text; + return type === Type.String; }; // biome-ignore lint/suspicious/noExplicitAny: TODO diff --git a/packages/hypergraph/src/type/type.ts b/packages/hypergraph/src/type/type.ts index 56b7b63d..0e9dcd1e 100644 --- a/packages/hypergraph/src/type/type.ts +++ b/packages/hypergraph/src/type/type.ts @@ -2,7 +2,8 @@ import * as Schema from 'effect/Schema'; import { Field } from '../entity/entity.js'; import type { AnyNoContext, EntityWithRelation } from '../entity/types.js'; -export const Text = Schema.String; +// biome-ignore lint/suspicious/noShadowRestrictedNames: is part of a namespaces module and therefor ok +export const String = Schema.String; // biome-ignore lint/suspicious/noShadowRestrictedNames: is part of a namespaces module and therefor ok export const Number = Schema.Number; // biome-ignore lint/suspicious/noShadowRestrictedNames: is part of a namespaces module and therefor ok diff --git a/packages/hypergraph/test/entity/entity.test.ts b/packages/hypergraph/test/entity/entity.test.ts index 7008d364..45b8affd 100644 --- a/packages/hypergraph/test/entity/entity.test.ts +++ b/packages/hypergraph/test/entity/entity.test.ts @@ -8,21 +8,21 @@ import { idToAutomergeId } from '../../src/utils/automergeId.js'; describe('Entity', () => { class Person extends Entity.Class('Person')({ - name: Type.Text, + name: Type.String, age: Type.Number, }) {} class User extends Entity.Class('User')({ - name: Type.Text, - email: Type.Text, + name: Type.String, + email: Type.String, }) {} class Badge extends Entity.Class('Badge')({ - name: Type.Text, + name: Type.String, }) {} class Event extends Entity.Class('Event')({ - name: Type.Text, + name: Type.String, }) {} const spaceId = '1e5e39da-a00d-4fd8-b53b-98095337112f'; diff --git a/packages/hypergraph/test/entity/findMany.test.ts b/packages/hypergraph/test/entity/findMany.test.ts index cb90e5d2..7e90962a 100644 --- a/packages/hypergraph/test/entity/findMany.test.ts +++ b/packages/hypergraph/test/entity/findMany.test.ts @@ -9,15 +9,15 @@ import { idToAutomergeId } from '../../src/utils/automergeId.js'; describe('findMany with filters', () => { // Define entity classes for testing class Person extends Entity.Class('Person')({ - name: Type.Text, + name: Type.String, age: Type.Number, isActive: Type.Boolean, }) {} class Product extends Entity.Class('Product')({ - name: Type.Text, + name: Type.String, price: Type.Number, - category: Type.Text, + category: Type.String, }) {} const spaceId = '1e5e39da-a00d-4fd8-b53b-98095337112f'; @@ -34,7 +34,7 @@ describe('findMany with filters', () => { handle.doneLoading(); }); - describe('Text filters', () => { + describe('String filters', () => { it('should filter entities by exact text match', () => { // Create test entities Entity.create(handle, Person)({ name: 'John', age: 30, isActive: true }); diff --git a/packages/hypergraph/test/mapping/Mapping.test.ts b/packages/hypergraph/test/mapping/Mapping.test.ts index 28ec6885..effab26f 100644 --- a/packages/hypergraph/test/mapping/Mapping.test.ts +++ b/packages/hypergraph/test/mapping/Mapping.test.ts @@ -16,7 +16,7 @@ describe('Mapping', () => { expect(mapSchemaDataTypeToGRC20PropDataType('Number')).toEqual('NUMBER'); expect(mapSchemaDataTypeToGRC20PropDataType('Date')).toEqual('TIME'); expect(mapSchemaDataTypeToGRC20PropDataType('Point')).toEqual('POINT'); - expect(mapSchemaDataTypeToGRC20PropDataType('Text')).toEqual('TEXT'); + expect(mapSchemaDataTypeToGRC20PropDataType('String')).toEqual('TEXT'); expect(mapSchemaDataTypeToGRC20PropDataType('Relation(Event)')).toEqual('RELATION'); }); }); @@ -27,7 +27,7 @@ describe('Mapping', () => { { name: 'Account', knowledgeGraphId: null, - properties: [{ name: 'username', dataType: 'Text', knowledgeGraphId: null }], + properties: [{ name: 'username', dataType: 'String', knowledgeGraphId: null }], }, { name: 'Event', @@ -65,7 +65,7 @@ describe('Mapping', () => { properties: [ { name: 'username', - dataType: 'Text', + dataType: 'String', knowledgeGraphId: null, }, { @@ -81,12 +81,12 @@ describe('Mapping', () => { properties: [ { name: 'name', - dataType: 'Text', + dataType: 'String', knowledgeGraphId: null, }, { name: 'description', - dataType: 'Text', + dataType: 'String', knowledgeGraphId: null, }, { @@ -130,7 +130,7 @@ describe('Mapping', () => { properties: [ { name: 'username', - dataType: 'Text', + dataType: 'String', knowledgeGraphId: '994edcff-6996-4a77-9797-a13e5e3efad8', }, { @@ -146,12 +146,12 @@ describe('Mapping', () => { properties: [ { name: 'name', - dataType: 'Text', + dataType: 'String', knowledgeGraphId: '3808e060-fb4a-4d08-8069-35b8c8a1902b', }, { name: 'description', - dataType: 'Text', + dataType: 'String', knowledgeGraphId: null, }, { @@ -195,7 +195,7 @@ describe('Mapping', () => { properties: [ { name: 'username', - dataType: 'Text', + dataType: 'String', knowledgeGraphId: null, }, ], @@ -206,7 +206,7 @@ describe('Mapping', () => { properties: [ { name: 'name', - dataType: 'Text', + dataType: 'String', knowledgeGraphId: null, }, { @@ -248,7 +248,7 @@ describe('Mapping', () => { properties: [ { name: 'username', - dataType: 'Text', + dataType: 'String', knowledgeGraphId: null, }, ], @@ -259,7 +259,7 @@ describe('Mapping', () => { properties: [ { name: 'name', - dataType: 'Text', + dataType: 'String', knowledgeGraphId: null, }, { @@ -301,7 +301,7 @@ describe('Mapping', () => { properties: [ { name: 'username', - dataType: 'Text', + dataType: 'String', knowledgeGraphId: '994edcff-6996-4a77-9797-a13e5e3efad8', }, ], @@ -312,7 +312,7 @@ describe('Mapping', () => { properties: [ { name: 'name', - dataType: 'Text', + dataType: 'String', knowledgeGraphId: null, }, { @@ -328,7 +328,7 @@ describe('Mapping', () => { properties: [ { name: 'title', - dataType: 'Text', + dataType: 'String', knowledgeGraphId: null, }, { @@ -383,12 +383,12 @@ describe('Mapping', () => { { name: 'Account', knowledgeGraphId: null, - properties: [{ name: 'username', dataType: 'Text', knowledgeGraphId: null }], + properties: [{ name: 'username', dataType: 'String', knowledgeGraphId: null }], }, { name: 'Account', knowledgeGraphId: null, - properties: [{ name: 'image', dataType: 'Text', knowledgeGraphId: null }], + properties: [{ name: 'image', dataType: 'String', knowledgeGraphId: null }], }, ], }), @@ -402,8 +402,8 @@ describe('Mapping', () => { name: 'Account', knowledgeGraphId: null, properties: [ - { name: 'username', dataType: 'Text', knowledgeGraphId: null }, - { name: 'username', dataType: 'Text', knowledgeGraphId: null }, + { name: 'username', dataType: 'String', knowledgeGraphId: null }, + { name: 'username', dataType: 'String', knowledgeGraphId: null }, ], }, ],