@vigla/svelte 0.0.0-stage → 5.57.4
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/action.d.ts +2 -0
- package/animate.d.ts +2 -0
- package/compiler/index.js +43266 -0
- package/compiler/index.js.map +1 -0
- package/compiler/package.json +3 -0
- package/compiler.d.ts +2 -0
- package/dist/compiler/diagnostics.d.ts +70 -0
- package/dist/compiler/diagnostics.d.ts.map +1 -0
- package/dist/compiler/diagnostics.js +166 -0
- package/dist/compiler/diagnostics.js.map +1 -0
- package/dist/compiler/index.d.ts +72 -0
- package/dist/compiler/index.d.ts.map +1 -0
- package/dist/compiler/index.js +178 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/compiler/options.d.ts +7 -0
- package/dist/compiler/options.d.ts.map +1 -0
- package/dist/compiler/options.js +126 -0
- package/dist/compiler/options.js.map +1 -0
- package/dist/compiler/preprocess/decode.d.ts +3 -0
- package/dist/compiler/preprocess/decode.d.ts.map +1 -0
- package/dist/compiler/preprocess/decode.js +60 -0
- package/dist/compiler/preprocess/decode.js.map +1 -0
- package/dist/compiler/preprocess/index.d.ts +27 -0
- package/dist/compiler/preprocess/index.d.ts.map +1 -0
- package/dist/compiler/preprocess/index.js +208 -0
- package/dist/compiler/preprocess/index.js.map +1 -0
- package/dist/compiler/preprocess/mapped.d.ts +25 -0
- package/dist/compiler/preprocess/mapped.d.ts.map +1 -0
- package/dist/compiler/preprocess/mapped.js +129 -0
- package/dist/compiler/preprocess/mapped.js.map +1 -0
- package/dist/compiler/proxy.d.ts +3 -0
- package/dist/compiler/proxy.d.ts.map +1 -0
- package/dist/compiler/proxy.js +133 -0
- package/dist/compiler/proxy.js.map +1 -0
- package/dist/entries/action.d.ts +2 -0
- package/dist/entries/action.d.ts.map +1 -0
- package/dist/entries/action.js +1 -0
- package/dist/entries/action.js.map +1 -0
- package/dist/entries/animate.d.ts +2 -0
- package/dist/entries/animate.d.ts.map +1 -0
- package/dist/entries/animate.js +2 -0
- package/dist/entries/animate.js.map +1 -0
- package/dist/entries/attachments.d.ts +2 -0
- package/dist/entries/attachments.d.ts.map +1 -0
- package/dist/entries/attachments.js +2 -0
- package/dist/entries/attachments.js.map +1 -0
- package/dist/entries/context.d.ts +15 -0
- package/dist/entries/context.d.ts.map +1 -0
- package/dist/entries/context.js +32 -0
- package/dist/entries/context.js.map +1 -0
- package/dist/entries/easing.d.ts +2 -0
- package/dist/entries/easing.d.ts.map +1 -0
- package/dist/entries/easing.js +2 -0
- package/dist/entries/easing.js.map +1 -0
- package/dist/entries/events.d.ts +2 -0
- package/dist/entries/events.d.ts.map +1 -0
- package/dist/entries/events.js +2 -0
- package/dist/entries/events.js.map +1 -0
- package/dist/entries/index-server.d.ts +4 -0
- package/dist/entries/index-server.d.ts.map +1 -0
- package/dist/entries/index-server.js +11 -0
- package/dist/entries/index-server.js.map +1 -0
- package/dist/entries/index.d.ts +10 -0
- package/dist/entries/index.d.ts.map +1 -0
- package/dist/entries/index.js +24 -0
- package/dist/entries/index.js.map +1 -0
- package/dist/entries/internal/client.d.ts +4 -0
- package/dist/entries/internal/client.d.ts.map +1 -0
- package/dist/entries/internal/client.js +9 -0
- package/dist/entries/internal/client.js.map +1 -0
- package/dist/entries/internal/disclose-version.d.ts +2 -0
- package/dist/entries/internal/disclose-version.d.ts.map +1 -0
- package/dist/entries/internal/disclose-version.js +4 -0
- package/dist/entries/internal/disclose-version.js.map +1 -0
- package/dist/entries/internal/index.d.ts +2 -0
- package/dist/entries/internal/index.d.ts.map +1 -0
- package/dist/entries/internal/index.js +2 -0
- package/dist/entries/internal/index.js.map +1 -0
- package/dist/entries/internal/server.d.ts +2 -0
- package/dist/entries/internal/server.d.ts.map +1 -0
- package/dist/entries/internal/server.js +7 -0
- package/dist/entries/internal/server.js.map +1 -0
- package/dist/entries/internal/tracing.d.ts +2 -0
- package/dist/entries/internal/tracing.d.ts.map +1 -0
- package/dist/entries/internal/tracing.js +2 -0
- package/dist/entries/internal/tracing.js.map +1 -0
- package/dist/entries/motion-server.d.ts +2 -0
- package/dist/entries/motion-server.d.ts.map +1 -0
- package/dist/entries/motion-server.js +2 -0
- package/dist/entries/motion-server.js.map +1 -0
- package/dist/entries/motion.d.ts +2 -0
- package/dist/entries/motion.d.ts.map +1 -0
- package/dist/entries/motion.js +2 -0
- package/dist/entries/motion.js.map +1 -0
- package/dist/entries/proxy.d.ts +6 -0
- package/dist/entries/proxy.d.ts.map +1 -0
- package/dist/entries/proxy.js +77 -0
- package/dist/entries/proxy.js.map +1 -0
- package/dist/entries/reactivity-server.d.ts +2 -0
- package/dist/entries/reactivity-server.d.ts.map +1 -0
- package/dist/entries/reactivity-server.js +2 -0
- package/dist/entries/reactivity-server.js.map +1 -0
- package/dist/entries/reactivity.d.ts +2 -0
- package/dist/entries/reactivity.d.ts.map +1 -0
- package/dist/entries/reactivity.js +2 -0
- package/dist/entries/reactivity.js.map +1 -0
- package/dist/entries/report.d.ts +3 -0
- package/dist/entries/report.d.ts.map +1 -0
- package/dist/entries/report.js +66 -0
- package/dist/entries/report.js.map +1 -0
- package/dist/entries/server.d.ts +8 -0
- package/dist/entries/server.d.ts.map +1 -0
- package/dist/entries/server.js +48 -0
- package/dist/entries/server.js.map +1 -0
- package/dist/entries/store-client.d.ts +12 -0
- package/dist/entries/store-client.d.ts.map +1 -0
- package/dist/entries/store-client.js +63 -0
- package/dist/entries/store-client.js.map +1 -0
- package/dist/entries/store-server.d.ts +12 -0
- package/dist/entries/store-server.d.ts.map +1 -0
- package/dist/entries/store-server.js +30 -0
- package/dist/entries/store-server.js.map +1 -0
- package/dist/entries/store.d.ts +25 -0
- package/dist/entries/store.d.ts.map +1 -0
- package/dist/entries/store.js +139 -0
- package/dist/entries/store.js.map +1 -0
- package/dist/entries/transition.d.ts +2 -0
- package/dist/entries/transition.d.ts.map +1 -0
- package/dist/entries/transition.js +2 -0
- package/dist/entries/transition.js.map +1 -0
- package/dist/entries/window-server.d.ts +2 -0
- package/dist/entries/window-server.d.ts.map +1 -0
- package/dist/entries/window-server.js +2 -0
- package/dist/entries/window-server.js.map +1 -0
- package/dist/entries/window.d.ts +2 -0
- package/dist/entries/window.d.ts.map +1 -0
- package/dist/entries/window.js +2 -0
- package/dist/entries/window.js.map +1 -0
- package/dist/front/ast.d.ts +290 -0
- package/dist/front/ast.d.ts.map +1 -0
- package/dist/front/ast.js +1 -0
- package/dist/front/ast.js.map +1 -0
- package/dist/front/diagnostics.d.ts +13 -0
- package/dist/front/diagnostics.d.ts.map +1 -0
- package/dist/front/diagnostics.js +38 -0
- package/dist/front/diagnostics.js.map +1 -0
- package/dist/front/ignores.d.ts +12 -0
- package/dist/front/ignores.d.ts.map +1 -0
- package/dist/front/ignores.js +75 -0
- package/dist/front/ignores.js.map +1 -0
- package/dist/front/index.d.ts +17 -0
- package/dist/front/index.d.ts.map +1 -0
- package/dist/front/index.js +65 -0
- package/dist/front/index.js.map +1 -0
- package/dist/front/legacy.d.ts +5 -0
- package/dist/front/legacy.d.ts.map +1 -0
- package/dist/front/legacy.js +408 -0
- package/dist/front/legacy.js.map +1 -0
- package/dist/front/locate.d.ts +4 -0
- package/dist/front/locate.d.ts.map +1 -0
- package/dist/front/locate.js +19 -0
- package/dist/front/locate.js.map +1 -0
- package/dist/front/lower.d.ts +39 -0
- package/dist/front/lower.d.ts.map +1 -0
- package/dist/front/lower.js +470 -0
- package/dist/front/lower.js.map +1 -0
- package/dist/front/parse/attribute.d.ts +12 -0
- package/dist/front/parse/attribute.d.ts.map +1 -0
- package/dist/front/parse/attribute.js +288 -0
- package/dist/front/parse/attribute.js.map +1 -0
- package/dist/front/parse/bracket.d.ts +3 -0
- package/dist/front/parse/bracket.d.ts.map +1 -0
- package/dist/front/parse/bracket.js +102 -0
- package/dist/front/parse/bracket.js.map +1 -0
- package/dist/front/parse/characters.d.ts +4 -0
- package/dist/front/parse/characters.d.ts.map +1 -0
- package/dist/front/parse/characters.js +6 -0
- package/dist/front/parse/characters.js.map +1 -0
- package/dist/front/parse/decode.d.ts +2 -0
- package/dist/front/parse/decode.d.ts.map +1 -0
- package/dist/front/parse/decode.js +89 -0
- package/dist/front/parse/decode.js.map +1 -0
- package/dist/front/parse/element.d.ts +3 -0
- package/dist/front/parse/element.d.ts.map +1 -0
- package/dist/front/parse/element.js +311 -0
- package/dist/front/parse/element.js.map +1 -0
- package/dist/front/parse/entities.d.ts +2 -0
- package/dist/front/parse/entities.d.ts.map +1 -0
- package/dist/front/parse/entities.js +2234 -0
- package/dist/front/parse/entities.js.map +1 -0
- package/dist/front/parse/expression.d.ts +5 -0
- package/dist/front/parse/expression.d.ts.map +1 -0
- package/dist/front/parse/expression.js +86 -0
- package/dist/front/parse/expression.js.map +1 -0
- package/dist/front/parse/html.d.ts +8 -0
- package/dist/front/parse/html.d.ts.map +1 -0
- package/dist/front/parse/html.js +146 -0
- package/dist/front/parse/html.js.map +1 -0
- package/dist/front/parse/identifier.d.ts +4 -0
- package/dist/front/parse/identifier.d.ts.map +1 -0
- package/dist/front/parse/identifier.js +24 -0
- package/dist/front/parse/identifier.js.map +1 -0
- package/dist/front/parse/index.d.ts +13 -0
- package/dist/front/parse/index.d.ts.map +1 -0
- package/dist/front/parse/index.js +74 -0
- package/dist/front/parse/index.js.map +1 -0
- package/dist/front/parse/js.d.ts +27 -0
- package/dist/front/parse/js.d.ts.map +1 -0
- package/dist/front/parse/js.js +241 -0
- package/dist/front/parse/js.js.map +1 -0
- package/dist/front/parse/options.d.ts +3 -0
- package/dist/front/parse/options.d.ts.map +1 -0
- package/dist/front/parse/options.js +198 -0
- package/dist/front/parse/options.js.map +1 -0
- package/dist/front/parse/parser.d.ts +50 -0
- package/dist/front/parse/parser.d.ts.map +1 -0
- package/dist/front/parse/parser.js +157 -0
- package/dist/front/parse/parser.js.map +1 -0
- package/dist/front/parse/pattern.d.ts +4 -0
- package/dist/front/parse/pattern.d.ts.map +1 -0
- package/dist/front/parse/pattern.js +53 -0
- package/dist/front/parse/pattern.js.map +1 -0
- package/dist/front/parse/script.d.ts +4 -0
- package/dist/front/parse/script.d.ts.map +1 -0
- package/dist/front/parse/script.js +60 -0
- package/dist/front/parse/script.js.map +1 -0
- package/dist/front/parse/style.d.ts +7 -0
- package/dist/front/parse/style.d.ts.map +1 -0
- package/dist/front/parse/style.js +397 -0
- package/dist/front/parse/style.js.map +1 -0
- package/dist/front/parse/tag.d.ts +3 -0
- package/dist/front/parse/tag.d.ts.map +1 -0
- package/dist/front/parse/tag.js +591 -0
- package/dist/front/parse/tag.js.map +1 -0
- package/dist/front/print/css.d.ts +5 -0
- package/dist/front/print/css.d.ts.map +1 -0
- package/dist/front/print/css.js +234 -0
- package/dist/front/print/css.js.map +1 -0
- package/dist/front/print/index.d.ts +18 -0
- package/dist/front/print/index.d.ts.map +1 -0
- package/dist/front/print/index.js +24 -0
- package/dist/front/print/index.js.map +1 -0
- package/dist/front/print/layout.d.ts +11 -0
- package/dist/front/print/layout.d.ts.map +1 -0
- package/dist/front/print/layout.js +73 -0
- package/dist/front/print/layout.js.map +1 -0
- package/dist/front/print/template.d.ts +5 -0
- package/dist/front/print/template.d.ts.map +1 -0
- package/dist/front/print/template.js +455 -0
- package/dist/front/print/template.js.map +1 -0
- package/dist/front/runes.d.ts +13 -0
- package/dist/front/runes.d.ts.map +1 -0
- package/dist/front/runes.js +253 -0
- package/dist/front/runes.js.map +1 -0
- package/dist/front/stores.d.ts +5 -0
- package/dist/front/stores.d.ts.map +1 -0
- package/dist/front/stores.js +84 -0
- package/dist/front/stores.js.map +1 -0
- package/dist/front/typescript.d.ts +2 -0
- package/dist/front/typescript.d.ts.map +1 -0
- package/dist/front/typescript.js +182 -0
- package/dist/front/typescript.js.map +1 -0
- package/dist/front/validate/anchors.d.ts +15 -0
- package/dist/front/validate/anchors.d.ts.map +1 -0
- package/dist/front/validate/anchors.js +43 -0
- package/dist/front/validate/anchors.js.map +1 -0
- package/dist/front/validate/index.d.ts +16 -0
- package/dist/front/validate/index.d.ts.map +1 -0
- package/dist/front/validate/index.js +139 -0
- package/dist/front/validate/index.js.map +1 -0
- package/dist/front/validate/legacy.d.ts +9 -0
- package/dist/front/validate/legacy.d.ts.map +1 -0
- package/dist/front/validate/legacy.js +102 -0
- package/dist/front/validate/legacy.js.map +1 -0
- package/dist/front/validate/report.d.ts +14 -0
- package/dist/front/validate/report.d.ts.map +1 -0
- package/dist/front/validate/report.js +29 -0
- package/dist/front/validate/report.js.map +1 -0
- package/dist/front/validate/template.d.ts +31 -0
- package/dist/front/validate/template.d.ts.map +1 -0
- package/dist/front/validate/template.js +507 -0
- package/dist/front/validate/template.js.map +1 -0
- package/dist/front/wording.d.ts +4 -0
- package/dist/front/wording.d.ts.map +1 -0
- package/dist/front/wording.js +110 -0
- package/dist/front/wording.js.map +1 -0
- package/dist/shared/format.d.ts +3 -0
- package/dist/shared/format.d.ts.map +1 -0
- package/dist/shared/format.js +7 -0
- package/dist/shared/format.js.map +1 -0
- package/easing.d.ts +2 -0
- package/elements.d.ts +1220 -0
- package/index.d.ts +2 -0
- package/motion.d.ts +2 -0
- package/package.json +128 -5
- package/src/compiler/diagnostics.ts +233 -0
- package/src/compiler/index.ts +292 -0
- package/src/compiler/options.ts +140 -0
- package/src/compiler/preprocess/decode.ts +85 -0
- package/src/compiler/preprocess/index.ts +299 -0
- package/src/compiler/preprocess/mapped.ts +146 -0
- package/src/compiler/proxy.ts +154 -0
- package/src/entries/action.ts +1 -0
- package/src/entries/animate.ts +1 -0
- package/src/entries/attachments.ts +1 -0
- package/src/entries/context.ts +50 -0
- package/src/entries/easing.ts +1 -0
- package/src/entries/events.ts +1 -0
- package/src/entries/index-server.ts +17 -0
- package/src/entries/index.ts +41 -0
- package/src/entries/internal/client.ts +15 -0
- package/src/entries/internal/disclose-version.ts +4 -0
- package/src/entries/internal/index.ts +3 -0
- package/src/entries/internal/server.ts +8 -0
- package/src/entries/internal/tracing.ts +1 -0
- package/src/entries/motion-server.ts +1 -0
- package/src/entries/motion.ts +1 -0
- package/src/entries/proxy.ts +86 -0
- package/src/entries/reactivity-server.ts +9 -0
- package/src/entries/reactivity.ts +9 -0
- package/src/entries/report.ts +81 -0
- package/src/entries/server.ts +76 -0
- package/src/entries/store-client.ts +80 -0
- package/src/entries/store-server.ts +44 -0
- package/src/entries/store.ts +201 -0
- package/src/entries/transition.ts +1 -0
- package/src/entries/window-server.ts +1 -0
- package/src/entries/window.ts +1 -0
- package/src/front/ast.ts +369 -0
- package/src/front/diagnostics.ts +53 -0
- package/src/front/ignores.ts +84 -0
- package/src/front/index.ts +86 -0
- package/src/front/legacy.ts +414 -0
- package/src/front/locate.ts +20 -0
- package/src/front/lower.ts +509 -0
- package/src/front/parse/attribute.ts +319 -0
- package/src/front/parse/bracket.ts +99 -0
- package/src/front/parse/characters.ts +19 -0
- package/src/front/parse/decode.ts +87 -0
- package/src/front/parse/element.ts +354 -0
- package/src/front/parse/entities.ts +2233 -0
- package/src/front/parse/expression.ts +85 -0
- package/src/front/parse/html.ts +158 -0
- package/src/front/parse/identifier.ts +29 -0
- package/src/front/parse/index.ts +88 -0
- package/src/front/parse/js.ts +284 -0
- package/src/front/parse/options.ts +194 -0
- package/src/front/parse/parser.ts +189 -0
- package/src/front/parse/pattern.ts +57 -0
- package/src/front/parse/script.ts +74 -0
- package/src/front/parse/style.ts +399 -0
- package/src/front/parse/tag.ts +601 -0
- package/src/front/print/css.ts +239 -0
- package/src/front/print/index.ts +40 -0
- package/src/front/print/layout.ts +87 -0
- package/src/front/print/template.ts +448 -0
- package/src/front/runes.ts +267 -0
- package/src/front/stores.ts +98 -0
- package/src/front/typescript.ts +178 -0
- package/src/front/validate/anchors.ts +54 -0
- package/src/front/validate/index.ts +174 -0
- package/src/front/validate/legacy.ts +119 -0
- package/src/front/validate/report.ts +38 -0
- package/src/front/validate/template.ts +549 -0
- package/src/front/wording.ts +112 -0
- package/src/shared/format.ts +8 -0
- package/store.d.ts +2 -0
- package/svelte-html.d.ts +53 -0
- package/transition.d.ts +2 -0
- package/types/compiler/interfaces.d.ts +2 -0
- package/types/compiler/preprocess.d.ts +2 -0
- package/types/index.d.ts +1453 -0
- package/README.md +0 -3
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { get, writable, type Readable, type Writable } from './store.ts';
|
|
2
|
+
|
|
3
|
+
export { derived, get, readable, readonly, writable } from './store.ts';
|
|
4
|
+
export type {
|
|
5
|
+
Readable,
|
|
6
|
+
StartStopNotifier,
|
|
7
|
+
Subscriber,
|
|
8
|
+
Unsubscriber,
|
|
9
|
+
Updater,
|
|
10
|
+
Writable
|
|
11
|
+
} from './store.ts';
|
|
12
|
+
|
|
13
|
+
export function toStore<T>(read: () => T, write: (value: T) => void): Writable<T>;
|
|
14
|
+
export function toStore<T>(read: () => T): Readable<T>;
|
|
15
|
+
export function toStore<T>(read: () => T, write?: (value: T) => void): Readable<T> | Writable<T> {
|
|
16
|
+
const store = writable(read());
|
|
17
|
+
return write === undefined
|
|
18
|
+
? { subscribe: store.subscribe, subscribeSync: store.subscribeSync }
|
|
19
|
+
: {
|
|
20
|
+
subscribe: store.subscribe,
|
|
21
|
+
subscribeSync: store.subscribeSync,
|
|
22
|
+
set: write,
|
|
23
|
+
update: (fn) => write(fn(read()))
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function fromStore<T>(store: Writable<T>): { current: T };
|
|
28
|
+
export function fromStore<T>(store: Readable<T>): { readonly current: T };
|
|
29
|
+
export function fromStore<T>(store: Readable<T>): { readonly current: T } {
|
|
30
|
+
return 'set' in store
|
|
31
|
+
? {
|
|
32
|
+
get current() {
|
|
33
|
+
return get(store);
|
|
34
|
+
},
|
|
35
|
+
set current(value: T) {
|
|
36
|
+
(store as Writable<T>).set(value);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
: {
|
|
40
|
+
get current() {
|
|
41
|
+
return get(store);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { untrack } from 'vigla/internal/index-client';
|
|
2
|
+
import type { Subscribable } from 'vigla';
|
|
3
|
+
|
|
4
|
+
export type Subscriber<T> = (value: T) => void;
|
|
5
|
+
export type Unsubscriber = () => void;
|
|
6
|
+
export type Updater<T> = (value: T) => T;
|
|
7
|
+
export type StartStopNotifier<T> = (
|
|
8
|
+
set: (value: T) => void,
|
|
9
|
+
update: (fn: Updater<T>) => void
|
|
10
|
+
) => void | Unsubscriber;
|
|
11
|
+
|
|
12
|
+
export interface Readable<T> extends Subscribable<T> {
|
|
13
|
+
subscribe(this: void, run: Subscriber<T>, invalidate?: () => void): Unsubscriber;
|
|
14
|
+
subscribeSync?(run: Subscriber<T>): Unsubscriber;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface Writable<T> extends Readable<T> {
|
|
18
|
+
set(this: void, value: T): void;
|
|
19
|
+
update(this: void, updater: Updater<T>): void;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
interface Subscription<T> {
|
|
23
|
+
readonly run: Subscriber<T>;
|
|
24
|
+
readonly invalidate: () => void;
|
|
25
|
+
readonly sync: boolean;
|
|
26
|
+
version: number;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export type Stores = Readable<unknown> | readonly Readable<unknown>[];
|
|
30
|
+
export type StoresValues<S> =
|
|
31
|
+
S extends Readable<infer T> ? T : { [K in keyof S]: S[K] extends Readable<infer T> ? T : never };
|
|
32
|
+
|
|
33
|
+
const notifications: (() => void)[] = [];
|
|
34
|
+
let publishing = false;
|
|
35
|
+
const noop = (): void => {};
|
|
36
|
+
|
|
37
|
+
function changed<T>(before: T, after: T): boolean {
|
|
38
|
+
return before !== before
|
|
39
|
+
? after === after
|
|
40
|
+
: before !== after ||
|
|
41
|
+
(before !== null && typeof before === 'object') ||
|
|
42
|
+
typeof before === 'function';
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function subscribe<T>(
|
|
46
|
+
store: Readable<T> | null | undefined,
|
|
47
|
+
run: Subscriber<T>,
|
|
48
|
+
invalidate?: () => void,
|
|
49
|
+
sync = false
|
|
50
|
+
): Unsubscriber {
|
|
51
|
+
if (store == null) {
|
|
52
|
+
run(undefined as T);
|
|
53
|
+
invalidate?.();
|
|
54
|
+
return noop;
|
|
55
|
+
}
|
|
56
|
+
const release = untrack(() =>
|
|
57
|
+
sync && store.subscribeSync ? store.subscribeSync(run) : store.subscribe(run, invalidate)
|
|
58
|
+
);
|
|
59
|
+
return typeof release === 'function'
|
|
60
|
+
? release
|
|
61
|
+
: () => (release as { unsubscribe(): void }).unsubscribe();
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export function writable<T = undefined>(value?: T, start?: StartStopNotifier<T>): Writable<T> {
|
|
65
|
+
let current = value as T;
|
|
66
|
+
let stop: Unsubscriber | undefined;
|
|
67
|
+
let version = 0;
|
|
68
|
+
const subscribers = new Set<Subscription<T>>();
|
|
69
|
+
const set = (next: T): void => {
|
|
70
|
+
if (!changed(current, next)) return;
|
|
71
|
+
current = next;
|
|
72
|
+
if (stop === undefined) return;
|
|
73
|
+
const publication = ++version;
|
|
74
|
+
const drain = !publishing;
|
|
75
|
+
publishing = true;
|
|
76
|
+
try {
|
|
77
|
+
for (const subscriber of subscribers) {
|
|
78
|
+
subscriber.invalidate();
|
|
79
|
+
if (!subscriber.sync) {
|
|
80
|
+
const value = current;
|
|
81
|
+
notifications.push(() => subscriber.run(value));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
for (const subscriber of subscribers) {
|
|
85
|
+
if (subscriber.sync && subscriber.version < publication) {
|
|
86
|
+
subscriber.version = publication;
|
|
87
|
+
subscriber.run(current);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (drain) {
|
|
91
|
+
for (let index = 0; index < notifications.length; index++) notifications[index]?.();
|
|
92
|
+
}
|
|
93
|
+
} finally {
|
|
94
|
+
if (drain) {
|
|
95
|
+
notifications.length = 0;
|
|
96
|
+
publishing = false;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
const update = (fn: Updater<T>): void => set(fn(current));
|
|
101
|
+
const listen = (run: Subscriber<T>, invalidate: () => void, sync: boolean): Unsubscriber => {
|
|
102
|
+
const subscriber = { run, invalidate, sync, version };
|
|
103
|
+
subscribers.add(subscriber);
|
|
104
|
+
if (subscribers.size === 1) stop = start?.(set, update) || noop;
|
|
105
|
+
run(current);
|
|
106
|
+
return () => {
|
|
107
|
+
subscribers.delete(subscriber);
|
|
108
|
+
if (subscribers.size === 0 && stop !== undefined) {
|
|
109
|
+
stop();
|
|
110
|
+
stop = undefined;
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
return {
|
|
115
|
+
set,
|
|
116
|
+
update,
|
|
117
|
+
subscribe: (run, invalidate = noop) => listen(run, invalidate, false),
|
|
118
|
+
subscribeSync: (run) => listen(run, noop, true)
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export function readable<T = undefined>(value?: T, start?: StartStopNotifier<T>): Readable<T> {
|
|
123
|
+
const store = writable(value, start);
|
|
124
|
+
return { subscribe: store.subscribe, subscribeSync: store.subscribeSync };
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export function derived<S extends Stores, T>(
|
|
128
|
+
stores: S,
|
|
129
|
+
fn: (
|
|
130
|
+
values: StoresValues<S>,
|
|
131
|
+
set: (value: T) => void,
|
|
132
|
+
update: (fn: Updater<T>) => void
|
|
133
|
+
) => Unsubscriber | void,
|
|
134
|
+
initial?: T
|
|
135
|
+
): Readable<T>;
|
|
136
|
+
export function derived<S extends Stores, T>(
|
|
137
|
+
stores: S,
|
|
138
|
+
fn: (values: StoresValues<S>) => T,
|
|
139
|
+
initial?: T
|
|
140
|
+
): Readable<T>;
|
|
141
|
+
export function derived<S extends Stores, T>(
|
|
142
|
+
stores: S,
|
|
143
|
+
fn: (
|
|
144
|
+
values: StoresValues<S>,
|
|
145
|
+
set: (value: T) => void,
|
|
146
|
+
update: (fn: Updater<T>) => void
|
|
147
|
+
) => T | Unsubscriber | void,
|
|
148
|
+
initial?: T
|
|
149
|
+
): Readable<T> {
|
|
150
|
+
const inputs: readonly Readable<unknown>[] = Array.isArray(stores)
|
|
151
|
+
? stores
|
|
152
|
+
: [stores as Readable<unknown>];
|
|
153
|
+
if (inputs.some((input) => !input))
|
|
154
|
+
throw new Error('derived() expects stores as input, got a falsy value');
|
|
155
|
+
return readable(initial, (set, update) => {
|
|
156
|
+
const values: unknown[] = [];
|
|
157
|
+
const pending = new Set<number>();
|
|
158
|
+
let active = false;
|
|
159
|
+
let cleanup: Unsubscriber = noop;
|
|
160
|
+
const sync = (): void => {
|
|
161
|
+
if (pending.size > 0) return;
|
|
162
|
+
cleanup();
|
|
163
|
+
const value = (Array.isArray(stores) ? values : values[0]) as StoresValues<S>;
|
|
164
|
+
const result = fn(value, set, update);
|
|
165
|
+
if (fn.length < 2) set(result as T);
|
|
166
|
+
else cleanup = typeof result === 'function' ? (result as Unsubscriber) : noop;
|
|
167
|
+
};
|
|
168
|
+
const releases = inputs.map((input, index) =>
|
|
169
|
+
subscribe(
|
|
170
|
+
input,
|
|
171
|
+
(value) => {
|
|
172
|
+
values[index] = value;
|
|
173
|
+
pending.delete(index);
|
|
174
|
+
if (active) sync();
|
|
175
|
+
},
|
|
176
|
+
() => pending.add(index)
|
|
177
|
+
)
|
|
178
|
+
);
|
|
179
|
+
active = true;
|
|
180
|
+
sync();
|
|
181
|
+
return () => {
|
|
182
|
+
for (const release of releases) release();
|
|
183
|
+
cleanup();
|
|
184
|
+
active = false;
|
|
185
|
+
};
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
export function readonly<T>(store: Readable<T>): Readable<T> {
|
|
190
|
+
const sync = store.subscribeSync;
|
|
191
|
+
return {
|
|
192
|
+
subscribe: (run, invalidate) => store.subscribe(run, invalidate),
|
|
193
|
+
...(sync ? { subscribeSync: (run: Subscriber<T>) => sync.call(store, run) } : {})
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
export function get<T>(store: Readable<T>): T {
|
|
198
|
+
let value: T;
|
|
199
|
+
subscribe(store, (current) => (value = current))();
|
|
200
|
+
return value!;
|
|
201
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from 'vigla/transition';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from 'vigla/internal/window-server';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from 'vigla/internal/window-client';
|
package/src/front/ast.ts
ADDED
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
import type * as ES from 'estree';
|
|
2
|
+
|
|
3
|
+
export interface Located {
|
|
4
|
+
start: number;
|
|
5
|
+
end: number;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface Position {
|
|
9
|
+
line: number;
|
|
10
|
+
column: number;
|
|
11
|
+
character: number;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface NameLocation {
|
|
15
|
+
start: Position;
|
|
16
|
+
end: Position;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type Expression = ES.Expression & Partial<Located>;
|
|
20
|
+
|
|
21
|
+
export type Pattern = ES.Pattern & Partial<Located>;
|
|
22
|
+
|
|
23
|
+
export interface JSComment extends Located {
|
|
24
|
+
type: 'Line' | 'Block';
|
|
25
|
+
value: string;
|
|
26
|
+
loc?: { start: { line: number; column: number }; end: { line: number; column: number } };
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface Fragment {
|
|
30
|
+
type: 'Fragment';
|
|
31
|
+
nodes: TemplateNode[];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface Text extends Located {
|
|
35
|
+
type: 'Text';
|
|
36
|
+
raw: string;
|
|
37
|
+
data: string;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface Comment extends Located {
|
|
41
|
+
type: 'Comment';
|
|
42
|
+
data: string;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface ExpressionTag extends Located {
|
|
46
|
+
type: 'ExpressionTag';
|
|
47
|
+
expression: Expression;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface HtmlTag extends Located {
|
|
51
|
+
type: 'HtmlTag';
|
|
52
|
+
expression: Expression;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface ConstTag extends Located {
|
|
56
|
+
type: 'ConstTag';
|
|
57
|
+
declaration: ES.VariableDeclaration &
|
|
58
|
+
Located & { declarations: [ES.VariableDeclarator & Located] };
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export interface DeclarationTag extends Located {
|
|
62
|
+
type: 'DeclarationTag';
|
|
63
|
+
declaration: ES.VariableDeclaration & Located;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface DebugTag extends Located {
|
|
67
|
+
type: 'DebugTag';
|
|
68
|
+
identifiers: (ES.Identifier & Located)[];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface RenderTag extends Located {
|
|
72
|
+
type: 'RenderTag';
|
|
73
|
+
expression: (ES.SimpleCallExpression | ES.ChainExpression) & Located;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export interface AttachTag extends Located {
|
|
77
|
+
type: 'AttachTag';
|
|
78
|
+
expression: Expression;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export type AttributeValue = true | ExpressionTag | (Text | ExpressionTag)[];
|
|
82
|
+
|
|
83
|
+
export interface Attribute extends Located {
|
|
84
|
+
type: 'Attribute';
|
|
85
|
+
name: string;
|
|
86
|
+
name_loc: NameLocation | null;
|
|
87
|
+
value: AttributeValue;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export interface SpreadAttribute extends Located {
|
|
91
|
+
type: 'SpreadAttribute';
|
|
92
|
+
expression: Expression;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export type DirectiveType =
|
|
96
|
+
| 'AnimateDirective'
|
|
97
|
+
| 'BindDirective'
|
|
98
|
+
| 'ClassDirective'
|
|
99
|
+
| 'LetDirective'
|
|
100
|
+
| 'OnDirective'
|
|
101
|
+
| 'TransitionDirective'
|
|
102
|
+
| 'UseDirective';
|
|
103
|
+
|
|
104
|
+
export interface Directive extends Located {
|
|
105
|
+
type: DirectiveType;
|
|
106
|
+
name: string;
|
|
107
|
+
name_loc: NameLocation | null;
|
|
108
|
+
expression: Expression | null;
|
|
109
|
+
modifiers: string[];
|
|
110
|
+
intro?: boolean;
|
|
111
|
+
outro?: boolean;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export interface StyleDirective extends Located {
|
|
115
|
+
type: 'StyleDirective';
|
|
116
|
+
name: string;
|
|
117
|
+
name_loc: NameLocation | null;
|
|
118
|
+
modifiers: string[];
|
|
119
|
+
value: AttributeValue;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export type AttributeLike = Attribute | SpreadAttribute | Directive | StyleDirective | AttachTag;
|
|
123
|
+
|
|
124
|
+
export type ElementType =
|
|
125
|
+
| 'RegularElement'
|
|
126
|
+
| 'Component'
|
|
127
|
+
| 'TitleElement'
|
|
128
|
+
| 'SlotElement'
|
|
129
|
+
| 'SvelteHead'
|
|
130
|
+
| 'SvelteOptions'
|
|
131
|
+
| 'SvelteWindow'
|
|
132
|
+
| 'SvelteDocument'
|
|
133
|
+
| 'SvelteBody'
|
|
134
|
+
| 'SvelteElement'
|
|
135
|
+
| 'SvelteComponent'
|
|
136
|
+
| 'SvelteSelf'
|
|
137
|
+
| 'SvelteFragment'
|
|
138
|
+
| 'SvelteBoundary';
|
|
139
|
+
|
|
140
|
+
export interface ElementLike extends Located {
|
|
141
|
+
type: ElementType;
|
|
142
|
+
name: string;
|
|
143
|
+
name_loc: NameLocation;
|
|
144
|
+
attributes: AttributeLike[];
|
|
145
|
+
fragment: Fragment;
|
|
146
|
+
tag?: Expression;
|
|
147
|
+
expression?: Expression;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
export interface IfBlock extends Located {
|
|
151
|
+
type: 'IfBlock';
|
|
152
|
+
elseif: boolean;
|
|
153
|
+
test: Expression;
|
|
154
|
+
consequent: Fragment;
|
|
155
|
+
alternate: Fragment | null;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
export interface EachBlock extends Located {
|
|
159
|
+
type: 'EachBlock';
|
|
160
|
+
expression: Expression;
|
|
161
|
+
context: Pattern | null;
|
|
162
|
+
body: Fragment;
|
|
163
|
+
fallback?: Fragment;
|
|
164
|
+
index?: string;
|
|
165
|
+
key?: Expression;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export interface AwaitBlock extends Located {
|
|
169
|
+
type: 'AwaitBlock';
|
|
170
|
+
expression: Expression;
|
|
171
|
+
value: Pattern | null;
|
|
172
|
+
error: Pattern | null;
|
|
173
|
+
pending: Fragment | null;
|
|
174
|
+
then: Fragment | null;
|
|
175
|
+
catch: Fragment | null;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
export interface KeyBlock extends Located {
|
|
179
|
+
type: 'KeyBlock';
|
|
180
|
+
expression: Expression;
|
|
181
|
+
fragment: Fragment;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export interface SnippetBlock extends Located {
|
|
185
|
+
type: 'SnippetBlock';
|
|
186
|
+
expression: ES.Identifier & Located;
|
|
187
|
+
typeParams?: string;
|
|
188
|
+
parameters: Pattern[];
|
|
189
|
+
body: Fragment;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
export type Tag = ExpressionTag | HtmlTag | ConstTag | DeclarationTag | DebugTag | RenderTag;
|
|
193
|
+
|
|
194
|
+
export type Block = IfBlock | EachBlock | AwaitBlock | KeyBlock | SnippetBlock;
|
|
195
|
+
|
|
196
|
+
export type TemplateNode = Text | Comment | Tag | Block | ElementLike;
|
|
197
|
+
|
|
198
|
+
export interface Script extends Located {
|
|
199
|
+
type: 'Script';
|
|
200
|
+
context: 'default' | 'module';
|
|
201
|
+
content: ES.Program & Located;
|
|
202
|
+
attributes: AttributeLike[];
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
export interface CustomElementProp {
|
|
206
|
+
type?: 'String' | 'Number' | 'Boolean' | 'Array' | 'Object';
|
|
207
|
+
reflect?: boolean;
|
|
208
|
+
attribute?: string;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
export interface CustomElementOptions {
|
|
212
|
+
tag?: string;
|
|
213
|
+
shadow?: 'open' | 'none' | ES.ObjectExpression;
|
|
214
|
+
props?: Record<string, CustomElementProp>;
|
|
215
|
+
extend?: Expression;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
export interface SvelteOptions extends Located {
|
|
219
|
+
attributes: AttributeLike[];
|
|
220
|
+
runes?: boolean;
|
|
221
|
+
immutable?: boolean;
|
|
222
|
+
accessors?: boolean;
|
|
223
|
+
preserveWhitespace?: boolean;
|
|
224
|
+
namespace?: 'html' | 'svg' | 'mathml';
|
|
225
|
+
css?: 'injected';
|
|
226
|
+
customElement?: CustomElementOptions;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
export interface Root extends Located {
|
|
230
|
+
type: 'Root';
|
|
231
|
+
css: Css.StyleSheet | null;
|
|
232
|
+
js: never[];
|
|
233
|
+
fragment: Fragment;
|
|
234
|
+
options: SvelteOptions | null;
|
|
235
|
+
comments: JSComment[];
|
|
236
|
+
instance?: Script;
|
|
237
|
+
module?: Script;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
export namespace Css {
|
|
241
|
+
export interface Comment extends Located {
|
|
242
|
+
type: 'CSSComment';
|
|
243
|
+
value: string;
|
|
244
|
+
position?: number;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
export interface StyleSheet extends Located {
|
|
248
|
+
type: 'StyleSheet';
|
|
249
|
+
attributes: AttributeLike[];
|
|
250
|
+
children: (Rule | Atrule)[];
|
|
251
|
+
comments: Comment[];
|
|
252
|
+
content: {
|
|
253
|
+
start: number;
|
|
254
|
+
end: number;
|
|
255
|
+
styles: string;
|
|
256
|
+
comment: import('./ast.ts').Comment | null;
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
export interface Atrule extends Located {
|
|
261
|
+
type: 'Atrule';
|
|
262
|
+
name: string;
|
|
263
|
+
prelude: string;
|
|
264
|
+
block: Block | null;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
export interface Rule extends Located {
|
|
268
|
+
type: 'Rule';
|
|
269
|
+
prelude: SelectorList;
|
|
270
|
+
block: Block;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
export interface SelectorList extends Located {
|
|
274
|
+
type: 'SelectorList';
|
|
275
|
+
children: ComplexSelector[];
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
export interface ComplexSelector extends Located {
|
|
279
|
+
type: 'ComplexSelector';
|
|
280
|
+
children: RelativeSelector[];
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
export interface RelativeSelector extends Located {
|
|
284
|
+
type: 'RelativeSelector';
|
|
285
|
+
combinator: Combinator | null;
|
|
286
|
+
selectors: SimpleSelector[];
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
export interface Combinator extends Located {
|
|
290
|
+
type: 'Combinator';
|
|
291
|
+
name: string;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
export interface Named extends Located {
|
|
295
|
+
name: string;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
export interface TypeSelector extends Named {
|
|
299
|
+
type: 'TypeSelector';
|
|
300
|
+
namespace?: string;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
export interface IdSelector extends Named {
|
|
304
|
+
type: 'IdSelector';
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
export interface ClassSelector extends Named {
|
|
308
|
+
type: 'ClassSelector';
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
export interface NestingSelector extends Named {
|
|
312
|
+
type: 'NestingSelector';
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
export interface PseudoElementSelector extends Named {
|
|
316
|
+
type: 'PseudoElementSelector';
|
|
317
|
+
args?: SelectorList;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
export interface PseudoClassSelector extends Named {
|
|
321
|
+
type: 'PseudoClassSelector';
|
|
322
|
+
args: SelectorList | null;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
export interface AttributeSelector extends Named {
|
|
326
|
+
type: 'AttributeSelector';
|
|
327
|
+
matcher: string | null;
|
|
328
|
+
value: string | null;
|
|
329
|
+
flags: string | null;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
export interface Nth extends Located {
|
|
333
|
+
type: 'Nth';
|
|
334
|
+
value: string;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
export interface Percentage extends Located {
|
|
338
|
+
type: 'Percentage';
|
|
339
|
+
value: string;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
export type SimpleSelector =
|
|
343
|
+
| TypeSelector
|
|
344
|
+
| IdSelector
|
|
345
|
+
| ClassSelector
|
|
346
|
+
| NestingSelector
|
|
347
|
+
| PseudoElementSelector
|
|
348
|
+
| PseudoClassSelector
|
|
349
|
+
| AttributeSelector
|
|
350
|
+
| Nth
|
|
351
|
+
| Percentage;
|
|
352
|
+
|
|
353
|
+
export interface Block extends Located {
|
|
354
|
+
type: 'Block';
|
|
355
|
+
children: (Declaration | Rule | Atrule)[];
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
export interface Declaration extends Located {
|
|
359
|
+
type: 'Declaration';
|
|
360
|
+
property: string;
|
|
361
|
+
value: string;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
export interface StyleSheetFile extends Located {
|
|
365
|
+
type: 'StyleSheetFile';
|
|
366
|
+
children: (Rule | Atrule)[];
|
|
367
|
+
comments: Comment[];
|
|
368
|
+
}
|
|
369
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { CompileError, errorMessage, warningMessage, type Diagnostic } from 'vigla/compiler';
|
|
2
|
+
import { warningCodes as codes, wording } from './wording.ts';
|
|
3
|
+
|
|
4
|
+
export type At = number | { readonly start?: number | null; readonly end?: number | null };
|
|
5
|
+
|
|
6
|
+
export type Args = Readonly<Record<string, string | null | undefined>>;
|
|
7
|
+
|
|
8
|
+
function span(at: At): { start: number; end: number } {
|
|
9
|
+
if (typeof at === 'number') return { start: at, end: at };
|
|
10
|
+
const start = at.start ?? 0;
|
|
11
|
+
return { start, end: at.end ?? start };
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function diagnostic(code: string, at: At, args: Args = {}): Diagnostic {
|
|
15
|
+
return { code, message: errorMessage(code, args, wording), ...span(at) };
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function fail(code: string, at: At, args: Args = {}): never {
|
|
19
|
+
throw new CompileError(diagnostic(code, at, args));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const legacyMessages: Readonly<Record<string, (args: Args) => string>> = {
|
|
23
|
+
component_event_directive_invalid: ({ name }) =>
|
|
24
|
+
`\`on:${name}\` on a component is Svelte 4 event syntax, which is not supported — pass a callback prop such as \`on${name}={...}\` instead`,
|
|
25
|
+
let_directive_invalid: () =>
|
|
26
|
+
'`let:` directives belong to Svelte 4 slots, which are not supported — use snippets instead',
|
|
27
|
+
svelte_fragment_invalid: () =>
|
|
28
|
+
'`<svelte:fragment>` belongs to Svelte 4 slots, which are not supported — use snippets instead',
|
|
29
|
+
slot_attribute_unsupported: () =>
|
|
30
|
+
"The `slot` attribute assigns content to a component's Svelte 4 slot, which is not supported — pass a snippet instead",
|
|
31
|
+
runes_mode_required: () =>
|
|
32
|
+
'Components must use runes mode — `runes: false` and legacy mode are not supported'
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export function legacy(code: string, at: At, args: Args = {}): never {
|
|
36
|
+
const own = legacyMessages[code];
|
|
37
|
+
const message = own === undefined ? warningMessage(code, args, wording) : own(args);
|
|
38
|
+
throw new CompileError({ code, message, ...span(at) });
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function unsupported(what: string, at: At): never {
|
|
42
|
+
throw new CompileError({
|
|
43
|
+
code: 'unsupported',
|
|
44
|
+
message: `${what} is not supported yet`,
|
|
45
|
+
...span(at)
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function warning(code: string, at: At, args: Args = {}): Diagnostic {
|
|
50
|
+
return { code, message: warningMessage(code, args, wording), ...span(at) };
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export const warningCodes: readonly string[] = codes;
|