diff --git a/.changeset/chilled-jars-raise.md b/.changeset/chilled-jars-raise.md new file mode 100644 index 00000000..d51f699d --- /dev/null +++ b/.changeset/chilled-jars-raise.md @@ -0,0 +1,15 @@ +--- +"@dojoengine/sdk": patch +"@dojoengine/core": patch +"@dojoengine/create-burner": patch +"@dojoengine/create-dojo": patch +"@dojoengine/predeployed-connector": patch +"@dojoengine/react": patch +"@dojoengine/state": patch +"@dojoengine/torii-client": patch +"@dojoengine/torii-wasm": patch +"@dojoengine/utils": patch +"@dojoengine/utils-wasm": patch +--- + +fix: createDojoStore have now proper types diff --git a/examples/example-vite-experimental-sdk/src/main.ts b/examples/example-vite-experimental-sdk/src/main.ts index 86b99261..73659410 100644 --- a/examples/example-vite-experimental-sdk/src/main.ts +++ b/examples/example-vite-experimental-sdk/src/main.ts @@ -46,7 +46,7 @@ async function main() { .addOrderBy(ModelsMapping.Moves, "remaining", "Asc") .includeHashedKeys() .build(), - ({ data, error }: { data: any; error: Error }) => { + ({ data, error }) => { if (data) { console.log(data); } diff --git a/examples/example-vite-phaser-sdk/package.json b/examples/example-vite-phaser-sdk/package.json index 466ffdaa..e66fc52d 100644 --- a/examples/example-vite-phaser-sdk/package.json +++ b/examples/example-vite-phaser-sdk/package.json @@ -15,7 +15,7 @@ "homepage": "https://github.com/phaserjs/template-vite-ts#readme", "scripts": { "dev": "node log.js dev & vite --config vite/config.dev.mjs", - "build": "node log.js build & vite build --config vite/config.prod.mjs", + "build": "tsc && node log.js build & vite build --config vite/config.prod.mjs", "dev-nolog": "vite --config vite/config.dev.mjs", "build-nolog": "vite build --config vite/config.prod.mjs" }, @@ -23,6 +23,7 @@ "terser": "^5.31.0", "typescript": "^5.4.5", "vite": "^5.3.1", + "vite-plugin-top-level-await": "^1.4.4", "vite-plugin-wasm": "^3.4.1" }, "dependencies": { diff --git a/examples/example-vite-phaser-sdk/src/dojo/context.ts b/examples/example-vite-phaser-sdk/src/dojo/context.ts index 3872dce7..87c78409 100644 --- a/examples/example-vite-phaser-sdk/src/dojo/context.ts +++ b/examples/example-vite-phaser-sdk/src/dojo/context.ts @@ -29,6 +29,8 @@ export class DojoContext { // Select only the specific model data for the given entityId const entities = this.store.getEntity(entityId.toString()); - return entities?.models?.[namespace]?.[modelName]; + return entities?.models?.[namespace]?.[modelName] as + | SchemaType[N][M] + | undefined; } } diff --git a/examples/example-vite-phaser-sdk/src/main.ts b/examples/example-vite-phaser-sdk/src/main.ts index 9c6b9edc..1e8f4ed6 100644 --- a/examples/example-vite-phaser-sdk/src/main.ts +++ b/examples/example-vite-phaser-sdk/src/main.ts @@ -57,7 +57,7 @@ async function main() { const context = new DojoContext(sdk, dojoProvider, useDojoStore); const game = new Game(config); [Boot, Preloader, MainMenu, MainGame, GameOver].map((s) => { - game.scene.add(s, new s(context)); + game.scene.add(s.toString(), new s(context)); }); return game; } diff --git a/examples/example-vite-phaser-sdk/src/scenes/Boot.ts b/examples/example-vite-phaser-sdk/src/scenes/Boot.ts index 74165bc0..484c4f41 100644 --- a/examples/example-vite-phaser-sdk/src/scenes/Boot.ts +++ b/examples/example-vite-phaser-sdk/src/scenes/Boot.ts @@ -1,10 +1,7 @@ import { Scene } from "phaser"; -import { DojoContext } from "../dojo/context"; -import { predeployedAccounts } from "../../../../packages/predeployed-connector/dist"; -import { dojoConfig } from "../../dojoConfig"; export class Boot extends Scene { - constructor(private ctx: DojoContext) { + constructor() { super("Boot"); } diff --git a/examples/example-vite-phaser-sdk/src/scenes/Game.ts b/examples/example-vite-phaser-sdk/src/scenes/Game.ts index 68522b30..2133c238 100644 --- a/examples/example-vite-phaser-sdk/src/scenes/Game.ts +++ b/examples/example-vite-phaser-sdk/src/scenes/Game.ts @@ -68,8 +68,12 @@ export class Game extends Scene { ) .includeHashedKeys() .build(), - ({ data }: { data: ParsedEntity }) => { - this.ctx.store.updateEntity(data[Object.keys(data)[0]]); + ({ data }) => { + if (data) { + this.ctx.store.updateEntity( + data[0] as ParsedEntity + ); + } } ); } @@ -112,47 +116,35 @@ export class Game extends Scene { this.scene.start("MainMenu"); }); - this.keys = this.input.keyboard!.addKeys("W,A,S,D"); + this.keys = this.input.keyboard!.addKeys("W,A,S,D") as MoveKeys; - this.keys.W.on( - "down", - async (event: typeof Phaser.Input.Keyboard.Events) => { - await this.ctx.client.actions.move( - this.account, - new CairoCustomEnum({ Up: "()" }) - ); - } - ); - this.keys.S.on( - "down", - async (event: typeof Phaser.Input.Keyboard.Events) => { - await this.ctx.client.actions.move( - this.account, - new CairoCustomEnum({ Down: "()" }) - ); - } - ); - this.keys.A.on( - "down", - async (event: typeof Phaser.Input.Keyboard.Events) => { - await this.ctx.client.actions.move( - this.account, - new CairoCustomEnum({ Left: "()" }) - ); - } - ); - this.keys.D.on( - "down", - async (event: typeof Phaser.Input.Keyboard.Events) => { - await this.ctx.client.actions.move( - this.account, - new CairoCustomEnum({ Right: "()" }) - ); - } - ); + this.keys.W.on("down", async () => { + await this.ctx.client.actions.move( + this.account, + new CairoCustomEnum({ Up: "()" }) + ); + }); + this.keys.S.on("down", async () => { + await this.ctx.client.actions.move( + this.account, + new CairoCustomEnum({ Down: "()" }) + ); + }); + this.keys.A.on("down", async () => { + await this.ctx.client.actions.move( + this.account, + new CairoCustomEnum({ Left: "()" }) + ); + }); + this.keys.D.on("down", async () => { + await this.ctx.client.actions.move( + this.account, + new CairoCustomEnum({ Right: "()" }) + ); + }); } - async update(time: number, delta: number): Promise { + async update(): Promise { const position = this.ctx.useModel( this.entityId, ModelsMapping.Position diff --git a/examples/example-vite-phaser-sdk/src/scenes/GameOver.ts b/examples/example-vite-phaser-sdk/src/scenes/GameOver.ts index 753dfffd..2384e6a2 100644 --- a/examples/example-vite-phaser-sdk/src/scenes/GameOver.ts +++ b/examples/example-vite-phaser-sdk/src/scenes/GameOver.ts @@ -1,12 +1,11 @@ import { Scene } from "phaser"; -import { DojoContext } from "../dojo/context"; export class GameOver extends Scene { camera: Phaser.Cameras.Scene2D.Camera; background: Phaser.GameObjects.Image; gameover_text: Phaser.GameObjects.Text; - constructor(private ctx: DojoContext) { + constructor() { super("GameOver"); } @@ -48,7 +47,3 @@ export class GameOver extends Scene { // }); } } - -function handleButtonClick() { - console.log(this); -} diff --git a/examples/example-vite-phaser-sdk/src/scenes/MainMenu.ts b/examples/example-vite-phaser-sdk/src/scenes/MainMenu.ts index 55d264f7..1f438665 100644 --- a/examples/example-vite-phaser-sdk/src/scenes/MainMenu.ts +++ b/examples/example-vite-phaser-sdk/src/scenes/MainMenu.ts @@ -2,7 +2,11 @@ import { Scene, GameObjects } from "phaser"; import { DojoContext } from "../dojo/context"; import { PredeployedAccountsConnector } from "@dojoengine/predeployed-connector"; import { getEntityIdFromKeys } from "@dojoengine/utils"; -import { ClauseBuilder, ToriiQueryBuilder } from "@dojoengine/sdk"; +import { + ClauseBuilder, + ParsedEntity, + ToriiQueryBuilder, +} from "@dojoengine/sdk"; import { addAddressPadding } from "starknet"; import { SchemaType } from "../typescript/models.gen"; @@ -50,9 +54,9 @@ export class MainMenu extends Scene { .includeHashedKeys() .build() ); - this.ctx.store.setEntities([ - entities[Object.keys(entities)[0]], - ]); + this.ctx.store.setEntities( + entities as ParsedEntity[] + ); this.scene.start("Game", { wallet, entityId, entities }); }); diff --git a/examples/example-vite-phaser-sdk/src/scenes/Preloader.ts b/examples/example-vite-phaser-sdk/src/scenes/Preloader.ts index 70ccb000..eab5dd83 100644 --- a/examples/example-vite-phaser-sdk/src/scenes/Preloader.ts +++ b/examples/example-vite-phaser-sdk/src/scenes/Preloader.ts @@ -1,10 +1,9 @@ import { Scene } from "phaser"; -import { DojoContext } from "../dojo/context"; import { predeployedAccounts } from "@dojoengine/predeployed-connector"; import { dojoConfig } from "../../dojoConfig"; export class Preloader extends Scene { - constructor(private ctx: DojoContext) { + constructor() { super("Preloader"); } diff --git a/examples/example-vite-phaser-sdk/src/typescript/contracts.gen.ts b/examples/example-vite-phaser-sdk/src/typescript/contracts.gen.ts index 2c87232b..8f8fb725 100644 --- a/examples/example-vite-phaser-sdk/src/typescript/contracts.gen.ts +++ b/examples/example-vite-phaser-sdk/src/typescript/contracts.gen.ts @@ -1,6 +1,5 @@ import { DojoProvider } from "@dojoengine/core"; import { Account, AccountInterface, CairoCustomEnum } from "starknet"; -import * as models from "./models.gen"; export function setupWorld(provider: DojoProvider) { const build_actions_move_calldata = (direction: CairoCustomEnum) => { diff --git a/examples/example-vite-phaser-sdk/src/typescript/models.gen.ts b/examples/example-vite-phaser-sdk/src/typescript/models.gen.ts index 3208eca1..004351f6 100644 --- a/examples/example-vite-phaser-sdk/src/typescript/models.gen.ts +++ b/examples/example-vite-phaser-sdk/src/typescript/models.gen.ts @@ -106,11 +106,11 @@ export const schema: SchemaType = { Position: { fieldOrder: ["player", "vec"], player: "", - vec: { fieldOrder: ["x", "y"], x: 0, y: 0 }, + vec: { x: 0, y: 0 }, }, PositionValue: { fieldOrder: ["vec"], - vec: { fieldOrder: ["x", "y"], x: 0, y: 0 }, + vec: { x: 0, y: 0 }, }, Vec2: { fieldOrder: ["x", "y"], diff --git a/examples/example-vite-phaser-sdk/tsconfig.json b/examples/example-vite-phaser-sdk/tsconfig.json index 7ca6d95b..9013d69a 100644 --- a/examples/example-vite-phaser-sdk/tsconfig.json +++ b/examples/example-vite-phaser-sdk/tsconfig.json @@ -1,16 +1,15 @@ { "compilerOptions": { - "target": "ES2020", + "target": "ESNext", "useDefineForClassFields": true, "module": "ESNext", - "lib": ["ES2020", "DOM", "DOM.Iterable"], + "lib": ["ESNext", "DOM"], "skipLibCheck": true, /* Bundler mode */ "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, + "noEmitOnError": true, /* Linting */ "strict": true, "strictPropertyInitialization": false, diff --git a/examples/example-vite-phaser-sdk/tsconfig.tsbuildinfo b/examples/example-vite-phaser-sdk/tsconfig.tsbuildinfo new file mode 100644 index 00000000..e84253ba --- /dev/null +++ b/examples/example-vite-phaser-sdk/tsconfig.tsbuildinfo @@ -0,0 +1 @@ +{"root":["./src/main.ts","./src/vite-env.d.ts","./src/dojo/context.ts","./src/scenes/boot.ts","./src/scenes/game.ts","./src/scenes/gameover.ts","./src/scenes/mainmenu.ts","./src/scenes/preloader.ts","./src/typescript/contracts.gen.ts","./src/typescript/models.gen.ts"],"errors":true,"version":"5.7.2"} \ No newline at end of file diff --git a/examples/example-vite-phaser-sdk/vite/config.prod.mjs b/examples/example-vite-phaser-sdk/vite/config.prod.mjs index 41752655..02507acd 100644 --- a/examples/example-vite-phaser-sdk/vite/config.prod.mjs +++ b/examples/example-vite-phaser-sdk/vite/config.prod.mjs @@ -1,4 +1,5 @@ import { defineConfig } from "vite"; +import topLevelAwait from "vite-plugin-top-level-await"; import wasm from "vite-plugin-wasm"; @@ -44,5 +45,5 @@ export default defineConfig({ server: { port: 5173, }, - plugins: [phasermsg(), wasm()], + plugins: [phasermsg(), wasm(), topLevelAwait()], }); diff --git a/packages/sdk/src/experimental/index.ts b/packages/sdk/src/experimental/index.ts index 68bf253f..45dc66c3 100644 --- a/packages/sdk/src/experimental/index.ts +++ b/packages/sdk/src/experimental/index.ts @@ -1,9 +1,14 @@ import * as torii from "@dojoengine/torii-client"; -import { SchemaType, SDKConfig } from "../types"; +import { SchemaType, SDKConfig, StandardizedQueryResult } from "../types"; import { parseEntities } from "../parseEntities"; import { parseHistoricalEvents } from "../parseHistoricalEvents"; import { intoEntityKeysClause } from "./convertClauseToEntityKeysClause"; +export type ToriiSubscriptionCallback = (response: { + data?: StandardizedQueryResult | StandardizedQueryResult[]; + error?: Error; +}) => void; + export async function init(options: SDKConfig) { const client = await torii.createClient(options.client); @@ -17,7 +22,10 @@ export async function init(options: SDKConfig) { ? parseHistoricalEvents(events) : parseEntities(events); }, - subscribeEntities: async (query: torii.Query, callback: Function) => { + subscribeEntities: async ( + query: torii.Query, + callback: ToriiSubscriptionCallback + ) => { if ( query.dont_include_hashed_keys && query.clause && @@ -56,7 +64,7 @@ export async function init(options: SDKConfig) { }, subscribeEvents: async ( query: torii.Query, - callback: Function, + callback: ToriiSubscriptionCallback, historical: boolean = false ) => { if ( diff --git a/packages/sdk/src/react/provider.tsx b/packages/sdk/src/react/provider.tsx index 237ddac4..e7c6ac8e 100644 --- a/packages/sdk/src/react/provider.tsx +++ b/packages/sdk/src/react/provider.tsx @@ -2,7 +2,13 @@ import { ReactNode, useContext, createContext } from "react"; import { SchemaType, SDK } from "../types"; import { DojoConfig, DojoProvider } from "@dojoengine/core"; import { createDojoStore } from "./hooks"; -import { DojoStore } from "../state"; +import { GameState } from "../state"; + +// Define the hook type +export type DojoStoreHook = ( + selector: (state: GameState) => U, + equals?: (a: U, b: U) => boolean +) => U; /** * Interface defining the shape of the Dojo context. @@ -20,7 +26,7 @@ export interface DojoContextType< /** The Dojo provider */ provider: DojoProvider; /** The dojo zustand store */ - useDojoStore: DojoStore; + useDojoStore: DojoStoreHook; } /** diff --git a/packages/sdk/src/state/index.ts b/packages/sdk/src/state/index.ts index ca2081e4..4aebd1df 100644 --- a/packages/sdk/src/state/index.ts +++ b/packages/sdk/src/state/index.ts @@ -1,4 +1,4 @@ -import { StoreApi, UseBoundStore } from "zustand"; +import { StoreApi } from "zustand"; import { createStore } from "zustand/vanilla"; import { createDojoStoreFactory } from "./zustand"; @@ -42,9 +42,7 @@ export interface GameState { } // Define the store type -export type DojoStore = UseBoundStore< - StoreApi> ->; +export type DojoStore = StoreApi>; /** * Factory function to create a Vanilla Zustand store based on a given SchemaType. diff --git a/packages/sdk/src/state/zustand.ts b/packages/sdk/src/state/zustand.ts index 7de63e2b..c8e2055e 100644 --- a/packages/sdk/src/state/zustand.ts +++ b/packages/sdk/src/state/zustand.ts @@ -1,12 +1,6 @@ -import { createStore } from "zustand"; +import { type StateCreator, type StoreApi } from "zustand"; import { immer } from "zustand/middleware/immer"; -import { - Draft, - Patch, - WritableDraft, - applyPatches, - produceWithPatches, -} from "immer"; +import { Draft, WritableDraft, applyPatches, produceWithPatches } from "immer"; import { enablePatches } from "immer"; import { subscribeWithSelector } from "zustand/middleware"; @@ -15,6 +9,17 @@ import { GameState } from "."; enablePatches(); +// Define middleware types +type ImmerMiddleware = [["zustand/immer", never]]; +type SubscribeMiddleware = [["zustand/subscribeWithSelector", never]]; +type Middlewares = [...SubscribeMiddleware, ...ImmerMiddleware]; + +type CreateStore = { + ( + initializer: StateCreator + ): StoreApi; +}; + /** * Factory function to create a Zustand store based on a given SchemaType. * @@ -22,9 +27,9 @@ enablePatches(); * @returns A Zustand hook tailored to the provided schema. */ export function createDojoStoreFactory( - storeCreatorFn: typeof createStore + storeCreatorFn: CreateStore ) { - const useStore = storeCreatorFn>()( + const useStore = storeCreatorFn, Middlewares>( subscribeWithSelector( immer((set, get) => ({ entities: {}, @@ -130,16 +135,14 @@ export function createDojoStoreFactory( waitForEntityChange: (entityId, predicate, timeout = 6000) => { return new Promise | undefined>( (resolve, reject) => { - const unsubscribe = useStore.subscribe( - (state) => state.entities[entityId], - (entity) => { - if (predicate(entity)) { - clearTimeout(timer); - unsubscribe(); - resolve(entity); - } + const unsubscribe = useStore.subscribe((state) => { + const entity = state.entities[entityId]; + if (predicate(entity)) { + clearTimeout(timer); + unsubscribe(); + resolve(entity); } - ); + }); const timer = setTimeout(() => { unsubscribe(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b1bddae2..77d7cc4f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -132,7 +132,7 @@ importers: version: 3.0.11 bun-types: specifier: latest - version: 1.1.45 + version: 1.2.0 graphql: specifier: ^16.9.0 version: 16.10.0 @@ -395,6 +395,9 @@ importers: vite: specifier: ^5.3.1 version: 5.4.11(@types/node@22.10.7)(terser@5.37.0) + vite-plugin-top-level-await: + specifier: ^1.4.4 + version: 1.4.4(@swc/helpers@0.5.5)(rollup@4.31.0)(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0)) vite-plugin-wasm: specifier: ^3.4.1 version: 3.4.1(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0)) @@ -914,7 +917,7 @@ importers: version: 2.1.1 drizzle-orm: specifier: ^0.38.3 - version: 0.38.3(@libsql/client@0.14.0)(@types/react@18.3.18)(bun-types@1.1.45)(react@18.3.1) + version: 0.38.3(@libsql/client@0.14.0)(@types/react@18.3.18)(bun-types@1.2.0)(react@18.3.1) lucide-react: specifier: ^0.469.0 version: 0.469.0(react@18.3.1) @@ -7468,8 +7471,8 @@ packages: buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - bun-types@1.1.45: - resolution: {integrity: sha512-8NT3BYwkyO8nzTG1k+q86VEvucw7s5W1fjRIGs0Y6/XNbTZn+mHEU39LFnuDLj4UmGCMpWCQtXUhLd6cko49Ww==} + bun-types@1.2.0: + resolution: {integrity: sha512-KEaJxyZfbV/c4eyG0vyehDpYmBGreNiQbZIqvVHJwZ4BmeuWlNZ7EAzMN2Zcd7ailmS/tGVW0BgYbGf+lGEpWw==} bundle-require@5.1.0: resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} @@ -21488,7 +21491,7 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - bun-types@1.1.45: + bun-types@1.2.0: dependencies: '@types/node': 20.12.14 '@types/ws': 8.5.13 @@ -22364,11 +22367,11 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.38.3(@libsql/client@0.14.0)(@types/react@18.3.18)(bun-types@1.1.45)(react@18.3.1): + drizzle-orm@0.38.3(@libsql/client@0.14.0)(@types/react@18.3.18)(bun-types@1.2.0)(react@18.3.1): optionalDependencies: '@libsql/client': 0.14.0 '@types/react': 18.3.18 - bun-types: 1.1.45 + bun-types: 1.2.0 react: 18.3.1 dset@3.1.4: {} @@ -22854,7 +22857,7 @@ snapshots: '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.7.2) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1))(eslint@8.57.1) + eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1) eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) eslint-plugin-react: 7.37.3(eslint@8.57.1) @@ -22874,7 +22877,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1))(eslint@8.57.1): + eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.0 @@ -22890,14 +22893,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.7.2) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1))(eslint@8.57.1) + eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1) transitivePeerDependencies: - supports-color @@ -22912,7 +22915,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 diff --git a/scripts/build-examples.sh b/scripts/build-examples.sh index db4b7019..9baa70ac 100755 --- a/scripts/build-examples.sh +++ b/scripts/build-examples.sh @@ -16,6 +16,7 @@ examples=( "examples/example-vite-svelte-recs" "examples/example-vite-react-sql" "examples/example-vite-experimental-sdk" + "examples/example-vite-phaser-sdk" ) # Iterate over each example directory and run the build command