Setup system-svelte

This commit is contained in:
2023-09-17 15:02:07 +01:00
parent 1a6df18e8b
commit 4220ae5bdc
7 changed files with 193 additions and 11 deletions

View File

@ -0,0 +1,3 @@
## @snort/system-svelte
Svelte hooks for @snort/system

View File

@ -0,0 +1,25 @@
{
"name": "@snort/system-svelte",
"version": "1.0.0",
"description": "Svelte functions for @snort/system",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"repository": "https://git.v0l.io/Kieran/snort",
"author": "Kieran",
"license": "MIT",
"scripts": {
"build": "rm -rf dist && tsc"
},
"files": [
"src",
"dist"
],
"dependencies": {
"@snort/shared": "^1.0.6",
"@snort/system": "^1.0.21",
"svelte": "^4.2.0"
},
"devDependencies": {
"typescript": "^5.2.2"
}
}

View File

@ -0,0 +1 @@
export * from "./request-builder";

View File

@ -0,0 +1,20 @@
import { type NoteStore, type RequestBuilder, type StoreSnapshot, type SystemInterface } from "@snort/system";
import { getContext } from "svelte";
export function useRequestBuilder<T extends NoteStore>(type: new () => T, rb: RequestBuilder) {
const system = getContext("snort") as SystemInterface;
type TSnap = StoreSnapshot<ReturnType<T["getSnapshotData"]>>;
return {
subscribe: (set: (value: TSnap) => void) => {
const q = system.Query(type, rb);
q.uncancel();
const release = q.feed.hook(() => {
set(q.feed.snapshot as TSnap);
});
return () => {
q.cancel();
release();
};
},
};
}

View File

@ -0,0 +1,18 @@
{
"compilerOptions": {
"baseUrl": "src",
"target": "ES2020",
"moduleResolution": "node",
"esModuleInterop": true,
"noImplicitOverride": true,
"module": "CommonJS",
"strict": true,
"declaration": true,
"declarationMap": true,
"inlineSourceMap": true,
"outDir": "dist",
"skipLibCheck": true
},
"include": ["src/**/*.ts"],
"files": ["src/index.ts"]
}