From d69737050a9f8d8b418a13c88d5d3124467199c8 Mon Sep 17 00:00:00 2001 From: Chad Freeman Date: Sun, 12 Jan 2025 12:56:21 -0500 Subject: [PATCH] Upgrade Project --- .gitignore | 4 + .prettierrc | 2 +- README.md | 48 ++++++--- bun.lockb | Bin 102561 -> 56090 bytes package.json | 44 ++++----- postcss.config.js | 3 +- src/app.css | 24 ++++- src/app.d.ts | 2 +- src/app.html | 2 +- src/lib/CodeEditor.svelte | 66 ++++++++----- src/lib/build/index.ts | 23 +++++ src/lib/components/Tab.svelte | 38 ++++++++ src/lib/editorcontext/global.d.ts | 11 --- src/lib/editorcontext/sprig.d.ts | 150 ++++++++++++++--------------- src/lib/editorcontext/sprigsy.d.ts | 16 +-- src/routes/+layout.svelte | 5 +- src/routes/+layout.ts | 3 +- src/routes/+page.svelte | 58 ++++++++++- svelte.config.js | 6 +- tailwind.config.ts | 11 --- tsconfig.json | 4 +- 21 files changed, 331 insertions(+), 189 deletions(-) create mode 100644 src/lib/build/index.ts create mode 100644 src/lib/components/Tab.svelte delete mode 100644 src/lib/editorcontext/global.d.ts delete mode 100644 tailwind.config.ts diff --git a/.gitignore b/.gitignore index 79518f7..201b5ec 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,8 @@ node_modules # Output .output .vercel +.netlify +.wrangler /.svelte-kit /build @@ -19,3 +21,5 @@ Thumbs.db # Vite vite.config.js.timestamp-* vite.config.ts.timestamp-* + +old/ \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index 7ebb855..3f7802c 100644 --- a/.prettierrc +++ b/.prettierrc @@ -3,7 +3,7 @@ "singleQuote": true, "trailingComma": "none", "printWidth": 100, - "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], + "plugins": ["prettier-plugin-svelte"], "overrides": [ { "files": "*.svelte", diff --git a/README.md b/README.md index af774db..b5b2950 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,38 @@ -# Sprigsy editor +# sv -# planned for v1 -- [ ] ability to play project -- [ ] monaco code editor -- [ ] export project for sprig -- [ ] docs site -- [ ] typescript support (esbuild prob) +Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli). +## Creating a project -# planned for v2 -- [ ] sprite manager -- [ ] level manager -- [ ] build project as a standalone `.html` file -- [ ] run on device -- [ ] downloadable version \ No newline at end of file +If you're seeing this, you've probably already done this step. Congrats! + +```bash +# create a new project in the current directory +npx sv create + +# create a new project in my-app +npx sv create my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +To create a production version of your app: + +```bash +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment. diff --git a/bun.lockb b/bun.lockb index c65ac98975ae9491f2201ec3b5c54d5201d37dfb..97762e5b95b3e1a3e0dbf4099a5e1debbacd98ea 100755 GIT binary patch literal 56090 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

k())a<5OaDK3R0= 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 Lp?odqKm79-#QpPv literal 102561 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 - + %sveltekit.head% diff --git a/src/lib/CodeEditor.svelte b/src/lib/CodeEditor.svelte index 993fbff..8e50f54 100644 --- a/src/lib/CodeEditor.svelte +++ b/src/lib/CodeEditor.svelte @@ -1,10 +1,11 @@ - + +

+ {#each Object.entries(tabs) as [tabID]} + + + + (tab = tabID)} + class:tab-active={tabID == tab}>{@render tabs[tabID]()} + {/each} +
diff --git a/src/lib/editorcontext/global.d.ts b/src/lib/editorcontext/global.d.ts deleted file mode 100644 index a7f242b..0000000 --- a/src/lib/editorcontext/global.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -// for some reason this doesn't work, I can't figure out why - -declare global { - declare function tune(template: TemplateStringsArray, ...params: string[]): string - interface Window { - setTimeout: import('./sprig').sprig.FullSprigAPI['setTimeout']; - setInterval: sprig.FullSprigAPI['setInterval']; - clearTimeout: sprig.FullSprigAPI['clearTimeout']; - clearInterval: sprig.FullSprigAPI['clearInterval']; - } -} \ No newline at end of file diff --git a/src/lib/editorcontext/sprig.d.ts b/src/lib/editorcontext/sprig.d.ts index 49772f3..ba51f4b 100644 --- a/src/lib/editorcontext/sprig.d.ts +++ b/src/lib/editorcontext/sprig.d.ts @@ -1,79 +1,79 @@ /** * normal sprig api - * this is provided because your project type is + * this is provided because your project type is */ declare namespace sprig { - export declare const VALID_INPUTS: readonly ["w", "s", "a", "d", "i", "j", "k", "l"]; - export type InputKey = typeof VALID_INPUTS[number]; - export interface AddTextOptions { - x?: number; - y?: number; - color?: string; - } - export declare class SpriteType { - type: string; - x: number; - y: number; - readonly dx: number; - readonly dy: number; - remove(): void; - } - export type Rgba = [number, number, number, number]; - export interface TextElement { - x: number; - y: number; - color: Rgba; - content: string; - } - export interface GameState { - legend: [string, string][]; - texts: TextElement[]; - dimensions: { - width: number; - height: number; - }; - sprites: SpriteType[]; - solids: string[]; - pushable: Record; - background: string | null; - } - export interface PlayTuneRes { - end(): void; - isPlaying(): boolean; - } - // export declare const tones: Record; - // export declare const instruments: readonly ["sine", "triangle", "square", "sawtooth"]; - export type InstrumentType = typeof instruments[number]; - // export declare const instrumentKey: Record; - // export declare const reverseInstrumentKey: Record<"sine" | "triangle" | "square" | "sawtooth", string>; - export type Tune = [number, ...(InstrumentType | number | string)[]][]; - export interface FullSprigAPI { - map(template: TemplateStringsArray, ...params: string[]): string; - bitmap(template: TemplateStringsArray, ...params: string[]): string; - color(template: TemplateStringsArray, ...params: string[]): string; - tune(template: TemplateStringsArray, ...params: string[]): string; - setMap(string: string): void; - addText(str: string, opts?: AddTextOptions): void; - clearText(): void; - addSprite(x: number, y: number, type: string): void; - getGrid(): SpriteType[][]; - getTile(x: number, y: number): SpriteType[]; - tilesWith(...matchingTypes: string[]): SpriteType[][]; - clearTile(x: number, y: number): void; - setSolids(types: string[]): void; - setPushables(map: Record): void; - setBackground(type: string): void; - getFirst(type: string): SpriteType | undefined; - getAll(type: string): SpriteType[]; - width(): number; - height(): number; - setLegend(...bitmaps: [string, string][]): void; - onInput(key: InputKey, fn: () => void): void; - afterInput(fn: () => void): void; - playTune(text: string, n?: number): PlayTuneRes; - setTimeout(fn: TimerHandler, ms: number): number; - setInterval(fn: TimerHandler, ms: number): number; - clearTimeout(id: number): void; - clearInterval(id: number): void; - } -} \ No newline at end of file + export declare const VALID_INPUTS: readonly ['w', 's', 'a', 'd', 'i', 'j', 'k', 'l']; + export type InputKey = (typeof VALID_INPUTS)[number]; + export interface AddTextOptions { + x?: number; + y?: number; + color?: string; + } + export declare class SpriteType { + type: string; + x: number; + y: number; + readonly dx: number; + readonly dy: number; + remove(): void; + } + export type Rgba = [number, number, number, number]; + export interface TextElement { + x: number; + y: number; + color: Rgba; + content: string; + } + export interface GameState { + legend: [string, string][]; + texts: TextElement[]; + dimensions: { + width: number; + height: number; + }; + sprites: SpriteType[]; + solids: string[]; + pushable: Record; + background: string | null; + } + export interface PlayTuneRes { + end(): void; + isPlaying(): boolean; + } + // export declare const tones: Record; + // export declare const instruments: readonly ["sine", "triangle", "square", "sawtooth"]; + export type InstrumentType = (typeof instruments)[number]; + // export declare const instrumentKey: Record; + // export declare const reverseInstrumentKey: Record<"sine" | "triangle" | "square" | "sawtooth", string>; + export type Tune = [number, ...(InstrumentType | number | string)[]][]; + export interface FullSprigAPI { + map(template: TemplateStringsArray, ...params: string[]): string; + bitmap(template: TemplateStringsArray, ...params: string[]): string; + color(template: TemplateStringsArray, ...params: string[]): string; + tune(template: TemplateStringsArray, ...params: string[]): string; + setMap(string: string): void; + addText(str: string, opts?: AddTextOptions): void; + clearText(): void; + addSprite(x: number, y: number, type: string): void; + getGrid(): SpriteType[][]; + getTile(x: number, y: number): SpriteType[]; + tilesWith(...matchingTypes: string[]): SpriteType[][]; + clearTile(x: number, y: number): void; + setSolids(types: string[]): void; + setPushables(map: Record): void; + setBackground(type: string): void; + getFirst(type: string): SpriteType | undefined; + getAll(type?: string): SpriteType[]; + width(): number; + height(): number; + setLegend(...bitmaps: [string, string][]): void; + onInput(key: InputKey, fn: () => void): void; + afterInput(fn: () => void): void; + playTune(text: string, n?: number): PlayTuneRes; + setTimeout(fn: TimerHandler, ms: number): number; + setInterval(fn: TimerHandler, ms: number): number; + clearTimeout(id: number): void; + clearInterval(id: number): void; + } +} diff --git a/src/lib/editorcontext/sprigsy.d.ts b/src/lib/editorcontext/sprigsy.d.ts index 73d1eda..a3050e1 100644 --- a/src/lib/editorcontext/sprigsy.d.ts +++ b/src/lib/editorcontext/sprigsy.d.ts @@ -1,11 +1,13 @@ /** * API for sprigsy - * this is provided because your project has sprigsy v2 enabeled + * this is provided because your project has sprigsy v2 enabeled */ declare namespace sprigsy { - /** - * Retrieve a sprite key for the sprite name - * @param name Sprite name - */ - function spriteKeyFor(name: string): string -} \ No newline at end of file + export interface FullSprigsyAPI { + /** + * Retrieve a sprite key for the sprite name + * @param name Sprite name + */ + spriteKeyFor(name: string): string; + } +} diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index e551b53..3b7359a 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,5 +1,6 @@ - - +{@render children()} diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts index 6dd7c0a..2223a9d 100644 --- a/src/routes/+layout.ts +++ b/src/routes/+layout.ts @@ -1,2 +1 @@ -export const prerender = true; -export const ssr = false \ No newline at end of file +export const csr = true; \ No newline at end of file diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 025a4a4..eae1fe2 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,8 +1,58 @@ -
- +
+ + {#if tab === 'code'} + + {:else if ['tunes', 'sprites', 'maps'].includes(tab)} + Not implemented + {:else if tab === 'settings'} + (Settings tab) + {:else if tab === 'test'} + This will have the game screen + {/if}
diff --git a/svelte.config.js b/svelte.config.js index 2466eee..4fbc867 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -3,14 +3,14 @@ import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; /** @type {import('@sveltejs/kit').Config} */ const config = { - // Consult https://kit.svelte.dev/docs/integrations#preprocessors + // Consult https://svelte.dev/docs/kit/integrations // for more information about preprocessors preprocess: vitePreprocess(), kit: { - // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. + // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list. // If your environment is not supported, or you settled on a specific environment, switch out the adapter. - // See https://kit.svelte.dev/docs/adapters for more information about adapters. + // See https://svelte.dev/docs/kit/adapters for more information about adapters. adapter: adapter() } }; diff --git a/tailwind.config.ts b/tailwind.config.ts deleted file mode 100644 index 584efba..0000000 --- a/tailwind.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { Config } from 'tailwindcss'; - -export default { - content: ['./src/**/*.{html,js,svelte,ts}'], - - theme: { - extend: {} - }, - - plugins: [ ] -} as Config; diff --git a/tsconfig.json b/tsconfig.json index fc93cbd..0b2d886 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,8 +11,8 @@ "strict": true, "moduleResolution": "bundler" } - // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias - // except $lib which is handled by https://kit.svelte.dev/docs/configuration#files + // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias + // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files // // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes // from the referenced tsconfig.json - TypeScript does not merge them in