diff --git a/.gitignore b/.gitignore index 6139c75..f50c4d0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ node_modules - dist -test \ No newline at end of file +test +docs.json \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index d829a28..752fea0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1 +1 @@ -# 1.0.0 (unreleased) \ No newline at end of file +# 1.0.0 (unreleased) diff --git a/README.md b/README.md index 73ae130..7e6a015 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,13 @@ kiboom is a Kaboom.js plugin that mainly provides a set of new "factory" functions, made for create new easily modifiable objects. ## Installation + ``` npm install kiboom ``` ## Usage + ```js import kaboom from "kaboom"; import { kiboom } from "kiboom"; @@ -18,4 +20,4 @@ kaboom({ // New methods makeSprite(); makeText(); -``` \ No newline at end of file +``` diff --git a/dprint.json b/dprint.json index 1fc2e57..4547502 100644 --- a/dprint.json +++ b/dprint.json @@ -10,7 +10,9 @@ }, "excludes": [ "**/node_modules", - "**/*-lock.json" + "**/*-lock.yaml", + "**/docs", + "**/dist" ], "plugins": [ "https://plugins.dprint.dev/typescript-0.90.0.wasm", diff --git a/package.json b/package.json index 4d34fd2..44bbb75 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,9 @@ "scripts": { "build": "dts-bundle-generator -o dist/first.d.ts src/types.ts && node scripts/buildAll.js", "doc": "typedoc", - "test": "esbuild --bundle test/main.ts --outfile=test/game.js --servedir=test --sourcemap" + "doc:json": "typedoc --json docs.json", + "test": "esbuild --bundle test/main.ts --outfile=test/game.js --servedir=test --sourcemap", + "fmt": "dprint fmt" }, "exports": { ".": { @@ -42,12 +44,12 @@ "author": "", "license": "ISC", "dependencies": { - "dprint": "^0.45.0", "kaboom": "^3000.1.17" }, "devDependencies": { "@types/json-schema": "^7.0.15", "@types/node": "^20.12.5", + "dprint": "^0.45.1", "dts-bundle-generator": "^9.3.1", "esbuild": "^0.20.2", "puppeteer": "^22.6.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e8a91a3..b7b27fd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,9 +5,6 @@ settings: excludeLinksFromLockfile: false dependencies: - dprint: - specifier: ^0.45.0 - version: 0.45.0 kaboom: specifier: ^3000.1.17 version: 3000.1.17 @@ -19,6 +16,9 @@ devDependencies: '@types/node': specifier: ^20.12.5 version: 20.12.5 + dprint: + specifier: ^0.45.1 + version: 0.45.1 dts-bundle-generator: specifier: ^9.3.1 version: 9.3.1 @@ -69,60 +69,60 @@ packages: picocolors: 1.0.0 dev: true - /@dprint/darwin-arm64@0.45.0: - resolution: {integrity: sha512-pkSSmixIKXr5t32bhXIUbpIBm8F8uhsJcUUvfkFNsRbQvNwRp71ribZpE8dKl0ZFOlAFeWD6WLE8smp/QtiGUA==} + /@dprint/darwin-arm64@0.45.1: + resolution: {integrity: sha512-pH0/uKLJ5SJPoHhOwLWFMhCmL0BY3FzWQbull8OGMK/FRkIPgOl2adZSovtUZpUMGWyDOzIWH1fW9X2DuMhnEg==} cpu: [arm64] os: [darwin] requiresBuild: true - dev: false + dev: true optional: true - /@dprint/darwin-x64@0.45.0: - resolution: {integrity: sha512-PHcXSrRO53KH9N+YPbPtr40NnDo2t7hO7KLMfl2ktRNLjrmKg6F8XDDsr2C7Z11k3jyEEU2Jq8hhpaKHwNapmQ==} + /@dprint/darwin-x64@0.45.1: + resolution: {integrity: sha512-YUj421LmBLDlxpIER3pORKfQmpmXD50n5mClHjpZrnl17WTiHtQ+jHvDJdJoxH2eS66W0mQyxLoGo5SfFfiM7A==} cpu: [x64] os: [darwin] requiresBuild: true - dev: false + dev: true optional: true - /@dprint/linux-arm64-glibc@0.45.0: - resolution: {integrity: sha512-NgIpvZHpiQaY4DxSygxknxBtvKE2KLK9dEbUNKNE098yTHhGq7ouPsoM7RtsO34RHJ3tEZLLJEuBHn20XP8LMg==} + /@dprint/linux-arm64-glibc@0.45.1: + resolution: {integrity: sha512-lJ7s/pOQWRJ0mstjZQnVyX2/3QRXZ9cpFHJDZ7e81Y8QSn/iqxTrnK0DPgxUrDG8hYKQmWQdQLU4sP5DKBz0Jg==} cpu: [arm64] os: [linux] requiresBuild: true - dev: false + dev: true optional: true - /@dprint/linux-arm64-musl@0.45.0: - resolution: {integrity: sha512-Y8p+FC0RNyKCGQjy99Uh1LSPrlQtUTvo4brdvU1THF3pyWu6Bg1p6NiP5a6SjE/6t9CMKZJz39zPreQtnDkSDA==} + /@dprint/linux-arm64-musl@0.45.1: + resolution: {integrity: sha512-un2awe1L1sAJLsCPSEUrE0/cgupdzbYFoyBOutyU1zHR9KQn47AtIDw+chvuinU4xleHDuEGyXGuJ6NE+Ky6vw==} cpu: [arm64] os: [linux] requiresBuild: true - dev: false + dev: true optional: true - /@dprint/linux-x64-glibc@0.45.0: - resolution: {integrity: sha512-u03NCZIpJhE5gIl9Q7jNL4sOPBFd/8BLVBiuLoLtbiTZQ+NNudHKgGNATJBU67q1MKpqKnt8/gQm139cJkHhrw==} + /@dprint/linux-x64-glibc@0.45.1: + resolution: {integrity: sha512-5Civht90S/g8zlyYB7n4oH78p+sLbNqeFCFuImJRK7uRxZwCRya7lji6RwlB6DQ7qngVqovTHj9RLOYfZzfVlg==} cpu: [x64] os: [linux] requiresBuild: true - dev: false + dev: true optional: true - /@dprint/linux-x64-musl@0.45.0: - resolution: {integrity: sha512-DQN8LPtxismkeU1X+sQywa80kWwCBcpQh9fXoJcvTEHrgzHBqbG2SEsUZpM12oKEua1KE/iBh+vgZ+4I3TdI2A==} + /@dprint/linux-x64-musl@0.45.1: + resolution: {integrity: sha512-p2/gjnHDd8GRCvtey5HZO4o/He6pSmY/zpcCuIXprFW9P0vNlEj3DFhz4FPpOKXM+csrsVWWs2E0T/xr5QZtVg==} cpu: [x64] os: [linux] requiresBuild: true - dev: false + dev: true optional: true - /@dprint/win32-x64@0.45.0: - resolution: {integrity: sha512-aZHIWG2jIlEp4BER1QG6YYqPd6TxT9S77AeUkWJixNiMEo+33mPRVCBcugRWI/WJWveX8yWFVXkToORtnSFeEA==} + /@dprint/win32-x64@0.45.1: + resolution: {integrity: sha512-2l78XM7KsW46P2Yv6uPB3fE+y92EsBlrCxi+RVQ0pbznPFdMdkLyGgaCuh683zdld14jHlaADpIQ7YchGAEMAg==} cpu: [x64] os: [win32] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/aix-ppc64@0.20.2: @@ -579,19 +579,19 @@ packages: resolution: {integrity: sha512-YJe4CT5SA8on3Spa+UDtNhEqtuV6Epwz3OZ4HQVLhlRccpZ9/PAYk0/cy/oKxFKRrZPBUPyxympQci4yWNWZ9g==} dev: true - /dprint@0.45.0: - resolution: {integrity: sha512-3444h7V47XoA16qgIWjw3CV/Eo/rQbT/XTGlbJ/6vJ+apQyuo0+M3Ai0GS3wu7X9HBUDcA0zIHA3mOxWNz6toA==} + /dprint@0.45.1: + resolution: {integrity: sha512-OYefcDgxd6jSdig/Cfkw1vdvyiOIRruCPnqGBbXpc95buDt9kvwL+Lic1OHc+SaQSsQub0BUZMd5+TNgy8Sh3A==} hasBin: true requiresBuild: true optionalDependencies: - '@dprint/darwin-arm64': 0.45.0 - '@dprint/darwin-x64': 0.45.0 - '@dprint/linux-arm64-glibc': 0.45.0 - '@dprint/linux-arm64-musl': 0.45.0 - '@dprint/linux-x64-glibc': 0.45.0 - '@dprint/linux-x64-musl': 0.45.0 - '@dprint/win32-x64': 0.45.0 - dev: false + '@dprint/darwin-arm64': 0.45.1 + '@dprint/darwin-x64': 0.45.1 + '@dprint/linux-arm64-glibc': 0.45.1 + '@dprint/linux-arm64-musl': 0.45.1 + '@dprint/linux-x64-glibc': 0.45.1 + '@dprint/linux-x64-musl': 0.45.1 + '@dprint/win32-x64': 0.45.1 + dev: true /dts-bundle-generator@9.3.1: resolution: {integrity: sha512-1/nMT7LFOkXbrL1ZvLpzrjNbfX090LZ64nLIXVmet557mshFCGP/oTiQiZenafJZ6GsmRQLTYKSlQnkxK8tsTw==} diff --git a/src/components/childrens.ts b/src/components/childrens.ts index f1b52db..c95c95a 100644 --- a/src/components/childrens.ts +++ b/src/components/childrens.ts @@ -1,6 +1,6 @@ import { Comp, EmptyComp } from "kaboom"; -type ChildrenDefinition = { +export type ChildrenDefinition = { [name: string]: () => T; }; diff --git a/src/index.ts b/src/index.ts index 99c2133..dc330b9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,5 @@ +import { children } from "./components/childrens"; +import { custom } from "./components/custom"; import { extendMaker, makeMaker } from "./factory/makers"; import { makeOptions } from "./factory/options"; import { makeArea } from "./objects/makeArea"; @@ -8,18 +10,18 @@ import { makeRect } from "./objects/makeRect"; import { makeRender } from "./objects/makeRender"; import { makeSprite } from "./objects/makeSprite"; import { makeText } from "./objects/makeText"; -import { createOptions } from "./options/createOptions"; import { createKaboomPlugin } from "./plugin"; +import { kiScene } from "./scenes/kiScene"; import { KiboomPlugin } from "./types"; const { run: kiboom } = createKaboomPlugin(() => { return { - // kiScene, + kiScene, // createKaboomPlugin, // components - // custom, - // children, + custom: custom, + children: children, // objects makeObject, diff --git a/src/options/createOptions.ts b/src/options/createOptions.ts deleted file mode 100644 index aa0bbb2..0000000 --- a/src/options/createOptions.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { ObjOpt } from "../objects/makeObject"; - -export function createOptions( - defaultOptions: T, - userOpt?: T2, -) { - return Object.assign(defaultOptions, userOpt); -} - -export const createOptions2 = < - TDefault extends {}, - TUser extends {}, ->( - defaultOpt: TDefault, - userOpt: TUser, -) => { - return Object.assign(defaultOpt, userOpt); -}; diff --git a/src/scenes/SceneState.ts b/src/scenes/SceneState.ts index 1a9c42a..c4cd7e6 100644 --- a/src/scenes/SceneState.ts +++ b/src/scenes/SceneState.ts @@ -44,4 +44,4 @@ export class SceneState { k.go(scene, ...args); } -} \ No newline at end of file +} diff --git a/src/scenes/kiScene.ts b/src/scenes/kiScene.ts index 9d81851..f84add4 100644 --- a/src/scenes/kiScene.ts +++ b/src/scenes/kiScene.ts @@ -1,5 +1,5 @@ -import { SceneState } from "./SceneState"; import { getK } from "../plugin"; +import { SceneState } from "./SceneState"; export const kiScene = ( name: string, diff --git a/src/types.ts b/src/types.ts index 8d419fe..582b157 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,12 +1,15 @@ import type { AreaComp, + Comp, + EmptyComp, GameObj, KaboomCtx, RectComp, SpriteComp, TextComp, } from "kaboom"; -import { extendMaker, makeMaker } from "./factory/makers"; +import { ChildrenDefinition } from "./components/childrens"; +import { extendMaker } from "./factory/makers"; import type { AreaOpt } from "./objects/makeArea"; import type { BackgroundOpt } from "./objects/makeBg"; import type { CircleOpt } from "./objects/makeCircle"; @@ -15,6 +18,7 @@ import type { RectOpt } from "./objects/makeRect"; import type { RenderComps, RenderOpt } from "./objects/makeRender"; import type { SpriteOpt } from "./objects/makeSprite"; import type { TextOpt } from "./objects/makeText"; +import { SceneState } from "./scenes/SceneState"; import { ApplierFN, MakerFN, OptionalOptionFN, OptionFN } from "./utils/types"; export declare function kiboom(k: KaboomCtx): KiboomPlugin; @@ -164,4 +168,24 @@ export interface KiboomPlugin { componentsApply: ApplierFN, baseDefaultOpt?: OptionalOptionFN, ): MakerFN; + + /** + * Create an scene with an SceneManager + * + * @alpha In development + */ + kiScene( + name: string, + def: (sceneData: SceneState, ...args: any[]) => void, + ): () => void; + + /** + * A component for define a custom component + */ + custom(custom: () => T): Comp & T; + + /** + * A component for define a childrens + */ + children(childrens: ChildrenDefinition): EmptyComp; }