diff --git a/src/lib/editorcontext/sprig.d.ts b/src/lib/editorcontext/sprig.d.ts
new file mode 100644
index 0000000..ba51f4b
--- /dev/null
+++ b/src/lib/editorcontext/sprig.d.ts
@@ -0,0 +1,79 @@
+/**
+ * normal sprig api
+ * 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;
+ }
+}
diff --git a/src/lib/text-editor/context/sprigsy.d.ts b/src/lib/editorcontext/sprigsy.d.ts
similarity index 79%
rename from src/lib/text-editor/context/sprigsy.d.ts
rename to src/lib/editorcontext/sprigsy.d.ts
index 6ffda06..a3050e1 100644
--- a/src/lib/text-editor/context/sprigsy.d.ts
+++ b/src/lib/editorcontext/sprigsy.d.ts
@@ -1,5 +1,4 @@
/**
- * THIS SHOULD NOT BE HERE
* API for sprigsy
* this is provided because your project has sprigsy v2 enabeled
*/
@@ -9,6 +8,6 @@ declare namespace sprigsy {
* Retrieve a sprite key for the sprite name
* @param name Sprite name
*/
- spriteKeyFor(name: string): string
+ spriteKeyFor(name: string): string;
}
}
diff --git a/src/lib/provider/Provider.ts b/src/lib/provider/Provider.ts
index 6e3f077..cd3eb64 100644
--- a/src/lib/provider/Provider.ts
+++ b/src/lib/provider/Provider.ts
@@ -1,26 +1,30 @@
-import { buildProject } from '$lib/build/esbuild'
+import { buildProject } from "$lib/build/esbuild"
enum Capability {
- BuildToVite,
- ProjectDB
+ BuildToVite,
+ ProjectDB
}
export default abstract class Provider {
- constructor() {}
+ constructor(
+
+ ) {
+
+ }
- abstract capabilities(): Capability[]
+ abstract capabilities(): Capability[]
- /**
- * Builds HTML project
- */
- async buildHTML(input: string): Promise {
- throw new TypeError('BuildToVite capability is not available')
- }
+ /**
+ * Builds HTML project
+ */
+ async buildHTML(input: string): Promise {
+ throw new TypeError("BuildToVite capability is not available")
+ }
- /**
- * Build JS
- */
- async buildJS(input: string): Promise {
- return (await buildProject(input, true)).code
- }
-}
+ /**
+ * Build JS
+ */
+ async buildJS(input: string): Promise {
+ return (await buildProject(input, true)).code
+ }
+}
\ No newline at end of file
diff --git a/src/lib/text-editor/Tooltip.svelte b/src/lib/text-editor/Tooltip.svelte
deleted file mode 100644
index 14a57c7..0000000
--- a/src/lib/text-editor/Tooltip.svelte
+++ /dev/null
@@ -1,6 +0,0 @@
-
\ No newline at end of file
diff --git a/src/lib/text-editor/babel.ts b/src/lib/text-editor/babel.ts
deleted file mode 100644
index 0220cb7..0000000
--- a/src/lib/text-editor/babel.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-import { debounce } from '@std/async'
-import { parse } from '@babel/parser'
-
-let traverse: typeof import("@babel/traverse")['default']
-
-export async function setupBabel() {
- traverse = (await import("@babel/traverse")).default
-}
-
-const disallowedIdentifiers = ['window', 'globalThis']
-type ASTState = {
- disallowedWarnings: { identifier: string; loc: [number, number, number, number] }[]
- errors: { reason: string; loc: [number, number, number, number] }[]
-}
-
-export default debounce((code: string) => {
- let ast
- try {
- ast = parse(code, {
- plugins: ['typescript']
- })
- } catch {
- return
- }
- const state: ASTState = { disallowedWarnings: [], errors: [] }
- traverse(ast, {
- MemberExpression: {
- enter: (path, state) => {
- if (path.node.optional) {
- state.errors.push({
- reason:
- 'optional chaining (?.) will work in the editor but it will not work on the sprig console',
- loc: [
- path.node.loc?.start.line!,
- path.node.loc?.start.column!,
- path.node.loc?.end.line!,
- path.node.loc?.end.column!
- ]
- })
- }
- }
- },
- Identifier: {
- enter: (path, state) => {
- if (disallowedIdentifiers.includes(path.node.name)) {
- state.disallowedWarnings.push({
- identifier: path.node.name,
- loc: [
- path.node.loc?.start?.line!,
- path.node.loc?.start?.column!,
- path.node.loc?.end?.line!,
- path.node.loc?.end?.column!
- ]
- })
- }
- }
- },
- }, undefined, state)
- state.disallowedWarnings.forEach((v) => {
- monaco.editor.setModelMarkers(editor.getModel()!, editor.getId(), [
- {
- message: `'${v.identifier}' is not allowed.`,
- severity: monaco.MarkerSeverity.Error,
- startLineNumber: v.loc[0],
- startColumn: v.loc[1] + 1,
- endLineNumber: v.loc[2],
- endColumn: v.loc[3] + 1
- }
- ])
- })
-}, 300)
diff --git a/src/lib/text-editor/context/sprig.d.ts b/src/lib/text-editor/context/sprig.d.ts
deleted file mode 100644
index b16fe56..0000000
--- a/src/lib/text-editor/context/sprig.d.ts
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * basic sprig API
- * this is provided because your project type is base
- */
-declare global {
- 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
- }
- }
-
-}
-
-export {};
\ No newline at end of file
diff --git a/src/lib/text-editor/extensions/babel.ts b/src/lib/text-editor/extensions/babel.ts
deleted file mode 100644
index e69de29..0000000
diff --git a/src/lib/text-editor/extensions/typescript.ts b/src/lib/text-editor/extensions/typescript.ts
deleted file mode 100644
index 02977ef..0000000
--- a/src/lib/text-editor/extensions/typescript.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-import { javascript } from '@codemirror/lang-javascript'
-import { autocompletion } from '@codemirror/autocomplete'
-import Tooltip from '../Tooltip.svelte'
-import { mount, unmount } from 'svelte'
-import {
- createDefaultMapFromCDN,
- createSystem,
- createVirtualTypeScriptEnvironment
-} from '@typescript/vfs'
-import ts from 'typescript'
-import { tsFacet, tsLinter, tsHover, tsAutocomplete, tsSync } from '@valtown/codemirror-ts'
-
-import sprigDeclarations from '$lib/text-editor/context/sprig.d.ts?raw'
-
-const fsMap = await createDefaultMapFromCDN({ target: ts.ScriptTarget.ES2022 }, '5.7.3', true, ts)
-fsMap.set('lib.sprig.d.ts', sprigDeclarations)
-const system = createSystem(fsMap)
-const compilerOpts = {}
-const env = createVirtualTypeScriptEnvironment(system, ['lib.sprig.d.ts'], ts, compilerOpts)
-
-console.log(fsMap.entries().toArray())
-const path = 'index.ts'
-
-export const typescriptExtensions = [
- javascript({
- jsx: false,
- typescript: true
- }),
- tsFacet.of({ env, path }),
- tsSync(),
- tsLinter(),
- autocompletion({
- override: [tsAutocomplete()],
-
- }),
- tsHover({
- renderTooltip: (info) => {
- console.log("rendering tooltip")
- let tooltip: Tooltip;
- const div = document.createElement('div')
- return {
- dom: div,
- mount() {
- tooltip = mount(Tooltip, {
- target: div,
- intro: true,
- props: {
- info
- }
- })
- },
- destroy() {
- unmount(tooltip, { outro: true })
- }
- }
- }
- })
-]
-
-export {
- env
-}
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 5f8f30a..3b7359a 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -1,6 +1,6 @@
{@render children()}
diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts
index 9c1daa0..0a06f03 100644
--- a/src/routes/+layout.ts
+++ b/src/routes/+layout.ts
@@ -1,3 +1,2 @@
-export const csr = true
-export const prerender = true
-export const ssr = false
+export const csr = true;
+export const prerender = true;
\ No newline at end of file
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index 7d9d521..eae1fe2 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -1,11 +1,8 @@
@@ -59,5 +56,3 @@
This will have the game screen
{/if}
-
-
\ No newline at end of file
diff --git a/svelte.config.js b/svelte.config.js
index 89d00e0..4fbc867 100644
--- a/svelte.config.js
+++ b/svelte.config.js
@@ -1,17 +1,18 @@
-import adapter from '@sveltejs/adapter-static'
-import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'
+import adapter from '@sveltejs/adapter-static';
+import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
/** @type {import('@sveltejs/kit').Config} */
const config = {
// Consult https://svelte.dev/docs/kit/integrations
// for more information about preprocessors
preprocess: vitePreprocess(),
+
kit: {
// 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://svelte.dev/docs/kit/adapters for more information about adapters.
adapter: adapter()
}
-}
+};
-export default config
+export default config;
diff --git a/vite.config.ts b/vite.config.ts
index 0848c3c..8a4c5fd 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,9 +1,9 @@
-import { sveltekit } from '@sveltejs/kit/vite'
-import { defineConfig } from 'vite'
+import { sveltekit } from '@sveltejs/kit/vite';
+import { defineConfig } from 'vite';
export default defineConfig({
plugins: [sveltekit()],
build: {
target: ['es2022']
}
-})
+});