@nil-/xit 0.4.19 → 0.4.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/bundler.js +271 -267
- package/assets/index.js +680 -1012
- package/assets/svelte/events.js +1 -1
- package/assets/svelte/index.js +60 -2266
- package/assets/svelte/internal/client.js +2567 -1639
- package/assets/svelte/internal/disclose-version.js +1 -2
- package/assets/svelte/motion.js +158 -204
- package/assets/svelte/reactivity.js +262 -239
- package/assets/svelte/store.js +3085 -113
- package/components/loaders/Helpers.d.ts +8 -22
- package/components/loaders/Reactive.svelte +1 -13
- package/components/loaders/Reactive.svelte.d.ts +29 -0
- package/components/loaders/ReadOnly.svelte +4 -37
- package/components/loaders/ReadOnly.svelte.d.ts +29 -0
- package/index.d.ts +23 -16
- package/index.js +31 -1
- package/package.json +1 -1
- package/test/Frame.svelte +4 -5
- package/test/Save.svelte +1 -1
|
@@ -1,25 +1,13 @@
|
|
|
1
1
|
import type { Writable } from "svelte/store";
|
|
2
2
|
import type { CoDec } from "../..";
|
|
3
|
-
type MapType = {
|
|
4
|
-
boolean: boolean;
|
|
5
|
-
number: number;
|
|
6
|
-
double: number;
|
|
7
|
-
string: string;
|
|
8
|
-
buffer: Uint8Array;
|
|
9
|
-
json: any;
|
|
10
|
-
};
|
|
11
3
|
type Prettify<T> = {
|
|
12
4
|
[K in keyof T]: T[K];
|
|
13
5
|
} & {};
|
|
14
6
|
interface ToType {
|
|
15
|
-
output:
|
|
16
|
-
type: infer T extends keyof MapType;
|
|
17
|
-
} ? MapType[T] : never;
|
|
7
|
+
output: Uint8Array;
|
|
18
8
|
}
|
|
19
9
|
interface ToWritableType {
|
|
20
|
-
output:
|
|
21
|
-
type: infer T extends keyof MapType;
|
|
22
|
-
} ? Writable<MapType[T]> : never;
|
|
10
|
+
output: Writable<Uint8Array>;
|
|
23
11
|
}
|
|
24
12
|
interface ExtractValue {
|
|
25
13
|
output: this extends {
|
|
@@ -65,21 +53,19 @@ interface ExtractFrames {
|
|
|
65
53
|
})["output"]
|
|
66
54
|
] : Frames extends readonly [] ? [] : never : never;
|
|
67
55
|
}
|
|
68
|
-
type ValueDetail<T
|
|
56
|
+
type ValueDetail<T> = T extends Uint8Array ? {
|
|
69
57
|
key: string;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
codec: CoDec<any>;
|
|
58
|
+
default: Uint8Array;
|
|
59
|
+
codec: never;
|
|
73
60
|
} : {
|
|
74
61
|
key: string;
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
codec?: never;
|
|
62
|
+
default: T;
|
|
63
|
+
codec?: CoDec<T>;
|
|
78
64
|
};
|
|
79
65
|
export type FrameDetails = {
|
|
80
66
|
readonly id: string;
|
|
81
67
|
readonly tag?: string;
|
|
82
|
-
readonly values: readonly ValueDetail<
|
|
68
|
+
readonly values: readonly ValueDetail<any>[];
|
|
83
69
|
};
|
|
84
70
|
export type ReactiveFrames<T> = (ExtractFrames & {
|
|
85
71
|
frames: T;
|
|
@@ -28,19 +28,7 @@
|
|
|
28
28
|
}
|
|
29
29
|
unsubs.push(frame_data.unsub);
|
|
30
30
|
for (const value of frame.values) {
|
|
31
|
-
|
|
32
|
-
data[index][value.key] = frame_data.values.boolean(value.key, value.default);
|
|
33
|
-
} else if (value.type == "double") {
|
|
34
|
-
data[index][value.key] = frame_data.values.double(value.key, value.default);
|
|
35
|
-
} else if (value.type == "number") {
|
|
36
|
-
data[index][value.key] = frame_data.values.number(value.key, value.default);
|
|
37
|
-
} else if (value.type == "string") {
|
|
38
|
-
data[index][value.key] = frame_data.values.string(value.key, value.default);
|
|
39
|
-
} else if (value.type == "buffer") {
|
|
40
|
-
data[index][value.key] = frame_data.values.buffer(value.key, value.default);
|
|
41
|
-
} else if (value.type == "json") {
|
|
42
|
-
data[index][value.key] = frame_data.values.json(value.key, value.default, value.codec);
|
|
43
|
-
}
|
|
31
|
+
data[index][value.key] = frame_data.values(value.key, value.default, value.codec);
|
|
44
32
|
}
|
|
45
33
|
};
|
|
46
34
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { FrameDetails, ReactiveFrames } from "./Helpers";
|
|
2
|
+
import type { Snippet } from "svelte";
|
|
3
|
+
declare function $$render<const T extends readonly FrameDetails[]>(): {
|
|
4
|
+
props: {
|
|
5
|
+
frames: T;
|
|
6
|
+
loaded_data: Snippet<[ReactiveFrames<T>]>;
|
|
7
|
+
};
|
|
8
|
+
exports: {};
|
|
9
|
+
bindings: "";
|
|
10
|
+
slots: {};
|
|
11
|
+
events: {};
|
|
12
|
+
};
|
|
13
|
+
declare class __sveltets_Render<const T extends readonly FrameDetails[]> {
|
|
14
|
+
props(): ReturnType<typeof $$render<T>>['props'];
|
|
15
|
+
events(): ReturnType<typeof $$render<T>>['events'];
|
|
16
|
+
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
17
|
+
bindings(): "";
|
|
18
|
+
exports(): {};
|
|
19
|
+
}
|
|
20
|
+
interface $$IsomorphicComponent {
|
|
21
|
+
new <const T extends readonly FrameDetails[]>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
22
|
+
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
23
|
+
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
24
|
+
<const T extends readonly FrameDetails[]>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
25
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
26
|
+
}
|
|
27
|
+
declare const Reactive: $$IsomorphicComponent;
|
|
28
|
+
type Reactive<const T extends readonly FrameDetails[]> = InstanceType<typeof Reactive<T>>;
|
|
29
|
+
export default Reactive;
|
|
@@ -29,43 +29,10 @@
|
|
|
29
29
|
unsubs.push(frame_data.unsub);
|
|
30
30
|
for (const value of frame.values) {
|
|
31
31
|
const { key } = value;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
.subscribe((v) => (data[index][key] = v))
|
|
37
|
-
);
|
|
38
|
-
} else if (value.type == "double") {
|
|
39
|
-
unsubs.push(
|
|
40
|
-
frame_data.values
|
|
41
|
-
.double(value.key, value.default)
|
|
42
|
-
.subscribe((v) => (data[index][key] = v))
|
|
43
|
-
);
|
|
44
|
-
} else if (value.type == "number") {
|
|
45
|
-
unsubs.push(
|
|
46
|
-
frame_data.values
|
|
47
|
-
.number(value.key, value.default)
|
|
48
|
-
.subscribe((v) => (data[index][key] = v))
|
|
49
|
-
);
|
|
50
|
-
} else if (value.type == "string") {
|
|
51
|
-
unsubs.push(
|
|
52
|
-
frame_data.values
|
|
53
|
-
.string(value.key, value.default)
|
|
54
|
-
.subscribe((v) => (data[index][key] = v))
|
|
55
|
-
);
|
|
56
|
-
} else if (value.type == "buffer") {
|
|
57
|
-
unsubs.push(
|
|
58
|
-
frame_data.values
|
|
59
|
-
.buffer(value.key, value.default)
|
|
60
|
-
.subscribe((v) => (data[index] = v))
|
|
61
|
-
);
|
|
62
|
-
} else if (value.type == "json") {
|
|
63
|
-
unsubs.push(
|
|
64
|
-
frame_data.values
|
|
65
|
-
.json(value.key, value.default, value.codec)
|
|
66
|
-
.subscribe((v) => (data[index][key] = v))
|
|
67
|
-
);
|
|
68
|
-
}
|
|
32
|
+
unsubs.push(
|
|
33
|
+
frame_data.values(value.key, value.default, value.codec)
|
|
34
|
+
.subscribe((v) => (data[index][key] = v))
|
|
35
|
+
);
|
|
69
36
|
}
|
|
70
37
|
};
|
|
71
38
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { FrameDetails, ReadOnlyFrames } from "./Helpers";
|
|
2
|
+
import type { Snippet } from "svelte";
|
|
3
|
+
declare function $$render<const T extends readonly FrameDetails[]>(): {
|
|
4
|
+
props: {
|
|
5
|
+
frames: T;
|
|
6
|
+
loaded_data: Snippet<[ReadOnlyFrames<T>]>;
|
|
7
|
+
};
|
|
8
|
+
exports: {};
|
|
9
|
+
bindings: "";
|
|
10
|
+
slots: {};
|
|
11
|
+
events: {};
|
|
12
|
+
};
|
|
13
|
+
declare class __sveltets_Render<const T extends readonly FrameDetails[]> {
|
|
14
|
+
props(): ReturnType<typeof $$render<T>>['props'];
|
|
15
|
+
events(): ReturnType<typeof $$render<T>>['events'];
|
|
16
|
+
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
17
|
+
bindings(): "";
|
|
18
|
+
exports(): {};
|
|
19
|
+
}
|
|
20
|
+
interface $$IsomorphicComponent {
|
|
21
|
+
new <const T extends readonly FrameDetails[]>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
22
|
+
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
23
|
+
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
24
|
+
<const T extends readonly FrameDetails[]>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
25
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
26
|
+
}
|
|
27
|
+
declare const ReadOnly: $$IsomorphicComponent;
|
|
28
|
+
type ReadOnly<const T extends readonly FrameDetails[]> = InstanceType<typeof ReadOnly<T>>;
|
|
29
|
+
export default ReadOnly;
|
package/index.d.ts
CHANGED
|
@@ -11,21 +11,12 @@ export type CoDec<T> = {
|
|
|
11
11
|
decode: (a: Uint8Array) => T;
|
|
12
12
|
};
|
|
13
13
|
export type Values = {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
number: (t: string, v: number) => Writable<number>;
|
|
17
|
-
string: (t: string, v: string) => Writable<string>;
|
|
18
|
-
buffer: (t: string, v: Uint8Array) => Writable<Uint8Array>;
|
|
19
|
-
json: <T, C extends CoDec<T>>(t: string, v: T, codec: C) => Writable<T>;
|
|
14
|
+
(id: string, data: Uint8Array): Writable<Uint8Array>;
|
|
15
|
+
<T, C extends CoDec<T>>(id: string, data: T, codec: C): Writable<T>;
|
|
20
16
|
};
|
|
21
17
|
export type Signals = {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
double: (t: string) => (v: number) => void;
|
|
25
|
-
number: (t: string) => (v: number) => void;
|
|
26
|
-
string: (t: string) => (v: string) => void;
|
|
27
|
-
buffer: (t: string) => (v: Uint8Array) => void;
|
|
28
|
-
json: <T, E extends CoDec<T>["encode"]>(t: string, encoder: E) => (v: T) => void;
|
|
18
|
+
(id: string): (v?: Uint8Array) => void;
|
|
19
|
+
<E>(t: string, encoder: (v: E) => Uint8Array): (v: E) => void;
|
|
29
20
|
};
|
|
30
21
|
export type Frame = {
|
|
31
22
|
values: Values;
|
|
@@ -43,8 +34,24 @@ export type Context = {
|
|
|
43
34
|
load_frame_ui: (f: string, tag?: string) => Promise<Action<HTMLElement>>;
|
|
44
35
|
load_frame_data: (f: string, tag?: string) => Promise<Frame>;
|
|
45
36
|
};
|
|
46
|
-
export declare const
|
|
47
|
-
encode: (o: any) => Uint8Array<
|
|
48
|
-
decode: (o: Uint8Array
|
|
37
|
+
export declare const codec_json_from_string: {
|
|
38
|
+
encode: (o: any) => Uint8Array<ArrayBuffer>;
|
|
39
|
+
decode: (o: Uint8Array) => any;
|
|
40
|
+
};
|
|
41
|
+
export declare const codec_bool: {
|
|
42
|
+
encode: (o: boolean) => Uint8Array<ArrayBuffer>;
|
|
43
|
+
decode: (o: Uint8Array) => boolean;
|
|
44
|
+
};
|
|
45
|
+
export declare const codec_number: {
|
|
46
|
+
encode: (o: number) => Uint8Array<ArrayBuffer>;
|
|
47
|
+
decode: (o: Uint8Array) => number;
|
|
48
|
+
};
|
|
49
|
+
export declare const codec_double: {
|
|
50
|
+
encode: (o: number) => Uint8Array<ArrayBuffer>;
|
|
51
|
+
decode: (o: Uint8Array) => number;
|
|
52
|
+
};
|
|
53
|
+
export declare const codec_string: {
|
|
54
|
+
encode: (o: string) => Uint8Array<ArrayBuffer>;
|
|
55
|
+
decode: (o: Uint8Array) => string;
|
|
49
56
|
};
|
|
50
57
|
export declare const xit: () => Context;
|
package/index.js
CHANGED
|
@@ -1,8 +1,38 @@
|
|
|
1
1
|
import { getContext } from "svelte";
|
|
2
|
-
export const
|
|
2
|
+
export const codec_json_from_string = {
|
|
3
3
|
encode: (o) => new TextEncoder().encode(JSON.stringify(o)),
|
|
4
4
|
decode: (o) => JSON.parse(new TextDecoder().decode(o))
|
|
5
5
|
};
|
|
6
|
+
export const codec_bool = {
|
|
7
|
+
encode: (o) => new Uint8Array([o ? 1 : 0]),
|
|
8
|
+
decode: (o) => o[0] === 1
|
|
9
|
+
};
|
|
10
|
+
export const codec_number = {
|
|
11
|
+
encode: (o) => {
|
|
12
|
+
const buf = new ArrayBuffer(8);
|
|
13
|
+
// Use BigInt for int64, little-endian
|
|
14
|
+
new DataView(buf).setBigInt64(0, BigInt(o), true);
|
|
15
|
+
return new Uint8Array(buf);
|
|
16
|
+
},
|
|
17
|
+
decode: (o) => {
|
|
18
|
+
if (o.byteLength !== 8)
|
|
19
|
+
throw new Error("Invalid buffer size for int64");
|
|
20
|
+
// Truncate to Number (may lose precision for large values)
|
|
21
|
+
return Number(new DataView(o.buffer, o.byteOffset, o.byteLength).getBigInt64(0, true));
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
export const codec_double = {
|
|
25
|
+
encode: (o) => {
|
|
26
|
+
const buf = new ArrayBuffer(8);
|
|
27
|
+
new DataView(buf).setFloat64(0, o);
|
|
28
|
+
return new Uint8Array(buf);
|
|
29
|
+
},
|
|
30
|
+
decode: (o) => new DataView(o.buffer, o.byteOffset, o.byteLength).getFloat64(0)
|
|
31
|
+
};
|
|
32
|
+
export const codec_string = {
|
|
33
|
+
encode: (o) => new TextEncoder().encode(o),
|
|
34
|
+
decode: (o) => new TextDecoder().decode(o)
|
|
35
|
+
};
|
|
6
36
|
export const xit = () => {
|
|
7
37
|
return getContext("nil.xit");
|
|
8
38
|
};
|
package/package.json
CHANGED
package/test/Frame.svelte
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import { xit, type Action } from "..";
|
|
2
|
+
import { codec_string, xit, type Action } from "..";
|
|
3
3
|
import { derived, get } from "svelte/store";
|
|
4
4
|
|
|
5
5
|
import type { Snippet } from "svelte";
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
const frame_info = async (tag: string) => {
|
|
32
32
|
const { values, unsub } = await load_frame_data("frame_info", tag);
|
|
33
33
|
const load = async (key: string) => {
|
|
34
|
-
const v = values
|
|
34
|
+
const v = values(key, "", codec_string);
|
|
35
35
|
return Promise.all(
|
|
36
36
|
get(v)
|
|
37
37
|
.split(",")
|
|
@@ -66,15 +66,14 @@
|
|
|
66
66
|
return { inputs, outputs, expects };
|
|
67
67
|
};
|
|
68
68
|
|
|
69
|
-
const tags_str = values
|
|
70
|
-
tags_str.subscribe(console.log);
|
|
69
|
+
const tags_str = values("tags", "", codec_string);
|
|
71
70
|
const tags = derived(tags_str, v => v.split(','));
|
|
72
71
|
|
|
73
72
|
if ($tags.length > 0) {
|
|
74
73
|
selected = 0;
|
|
75
74
|
}
|
|
76
75
|
|
|
77
|
-
const finalize = signals
|
|
76
|
+
const finalize = signals("finalize", codec_string.encode);
|
|
78
77
|
|
|
79
78
|
let a_inputs = $state([] as ActionItem[]);
|
|
80
79
|
let a_outputs = $state([] as ActionItem[]);
|