@akashjs/runtime 0.2.0 → 0.2.1
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/dist/animate.d.cts +145 -0
- package/dist/animate.d.ts +145 -0
- package/dist/{chunk-V7VG23IO.cjs → chunk-3AL2DVPZ.cjs} +3 -3
- package/dist/{chunk-V7VG23IO.cjs.map → chunk-3AL2DVPZ.cjs.map} +1 -1
- package/dist/{chunk-CHF5LH56.cjs → chunk-6NX6JRSV.cjs} +3 -3
- package/dist/{chunk-CHF5LH56.cjs.map → chunk-6NX6JRSV.cjs.map} +1 -1
- package/dist/chunk-772SU4MG.js +2 -0
- package/dist/chunk-772SU4MG.js.map +1 -0
- package/dist/chunk-7LQZF3XA.cjs +2 -0
- package/dist/chunk-7LQZF3XA.cjs.map +1 -0
- package/dist/{chunk-DYJUCZXA.js → chunk-BT6HNBE7.js} +4 -4
- package/dist/chunk-BT6HNBE7.js.map +1 -0
- package/dist/{chunk-CGKMCVEZ.js → chunk-D6QQYZIC.js} +2 -2
- package/dist/{chunk-CGKMCVEZ.js.map → chunk-D6QQYZIC.js.map} +1 -1
- package/dist/{chunk-R3W5W647.cjs → chunk-H4SAK7A5.cjs} +2 -2
- package/dist/{chunk-R3W5W647.cjs.map → chunk-H4SAK7A5.cjs.map} +1 -1
- package/dist/{chunk-VFOAULHK.js → chunk-IM2VW4TK.js} +3 -3
- package/dist/{chunk-VFOAULHK.js.map → chunk-IM2VW4TK.js.map} +1 -1
- package/dist/chunk-NQVWTQ2I.cjs +5 -0
- package/dist/chunk-NQVWTQ2I.cjs.map +1 -0
- package/dist/{chunk-5EFX654I.cjs → chunk-NVZLEJXB.cjs} +2 -2
- package/dist/{chunk-5EFX654I.cjs.map → chunk-NVZLEJXB.cjs.map} +1 -1
- package/dist/{chunk-DPJ6RJ7A.js → chunk-ODDXU5DO.js} +2 -2
- package/dist/chunk-ODDXU5DO.js.map +1 -0
- package/dist/{chunk-EUKRTV4W.js → chunk-POLTPHUA.js} +3 -3
- package/dist/{chunk-EUKRTV4W.js.map → chunk-POLTPHUA.js.map} +1 -1
- package/dist/{chunk-4HAE7H7W.cjs → chunk-YIB4EKVI.cjs} +2 -2
- package/dist/chunk-YIB4EKVI.cjs.map +1 -0
- package/dist/{chunk-SRPWGLOQ.js → chunk-Z5LQV5ND.js} +2 -2
- package/dist/{chunk-SRPWGLOQ.js.map → chunk-Z5LQV5ND.js.map} +1 -1
- package/dist/component-C1WnFcRp.d.cts +59 -0
- package/dist/component-C1WnFcRp.d.ts +59 -0
- package/dist/context-2uQ6fuxu.d.cts +57 -0
- package/dist/context-2uQ6fuxu.d.ts +57 -0
- package/dist/core.cjs +1 -1
- package/dist/core.d.cts +65 -0
- package/dist/core.d.ts +65 -0
- package/dist/core.js +1 -1
- package/dist/index.cjs +8 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3218 -0
- package/dist/index.d.ts +3218 -0
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/dist/machine.cjs +1 -1
- package/dist/machine.d.cts +87 -0
- package/dist/machine.d.ts +87 -0
- package/dist/machine.js +1 -1
- package/dist/offline.cjs +1 -1
- package/dist/offline.d.cts +73 -0
- package/dist/offline.d.ts +73 -0
- package/dist/offline.js +1 -1
- package/dist/pwa.cjs +1 -1
- package/dist/pwa.d.cts +80 -0
- package/dist/pwa.d.ts +80 -0
- package/dist/pwa.js +1 -1
- package/dist/signals-C7XfOHHR.d.cts +55 -0
- package/dist/signals-C7XfOHHR.d.ts +55 -0
- package/dist/ssr.cjs +1 -1
- package/dist/ssr.d.cts +78 -0
- package/dist/ssr.d.ts +78 -0
- package/dist/ssr.js +1 -1
- package/dist/store.cjs +1 -1
- package/dist/store.d.cts +88 -0
- package/dist/store.d.ts +88 -0
- package/dist/store.js +1 -1
- package/dist/sync.cjs +1 -1
- package/dist/sync.d.cts +128 -0
- package/dist/sync.d.ts +128 -0
- package/dist/sync.js +1 -1
- package/dist/test.cjs +2 -2
- package/dist/test.d.cts +109 -0
- package/dist/test.d.ts +109 -0
- package/dist/test.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-4HAE7H7W.cjs.map +0 -1
- package/dist/chunk-DPJ6RJ7A.js.map +0 -1
- package/dist/chunk-DYJUCZXA.js.map +0 -1
- package/dist/chunk-P5GADKQS.cjs +0 -2
- package/dist/chunk-P5GADKQS.cjs.map +0 -1
- package/dist/chunk-Q5BER4ZB.js +0 -2
- package/dist/chunk-Q5BER4ZB.js.map +0 -1
- package/dist/chunk-QDCIW4YE.cjs +0 -5
- package/dist/chunk-QDCIW4YE.cjs.map +0 -1
package/dist/machine.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunkNVZLEJXB_cjs=require('./chunk-NVZLEJXB.cjs');require('./chunk-3AL2DVPZ.cjs');Object.defineProperty(exports,"createMachine",{enumerable:true,get:function(){return chunkNVZLEJXB_cjs.a}});//# sourceMappingURL=machine.cjs.map
|
|
2
2
|
//# sourceMappingURL=machine.cjs.map
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { R as ReadonlySignal } from './signals-C7XfOHHR.cjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* State machines for complex UI flows.
|
|
5
|
+
*
|
|
6
|
+
* Finite state machines with typed states, events, guards,
|
|
7
|
+
* actions, and reactive current state signal.
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* const checkout = createMachine({
|
|
11
|
+
* initial: 'cart',
|
|
12
|
+
* states: {
|
|
13
|
+
* cart: { on: { CHECKOUT: 'shipping' } },
|
|
14
|
+
* shipping: { on: { NEXT: 'payment', BACK: 'cart' } },
|
|
15
|
+
* payment: { on: { PAY: 'processing', BACK: 'shipping' } },
|
|
16
|
+
* processing: { on: { SUCCESS: 'complete', FAIL: 'payment' } },
|
|
17
|
+
* complete: { type: 'final' },
|
|
18
|
+
* },
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* checkout.state(); // 'cart'
|
|
22
|
+
* checkout.send('CHECKOUT');
|
|
23
|
+
* checkout.state(); // 'shipping'
|
|
24
|
+
* checkout.matches('shipping'); // true
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
interface MachineConfig<TState extends string, TEvent extends string, TContext = unknown> {
|
|
29
|
+
/** Initial state */
|
|
30
|
+
initial: TState;
|
|
31
|
+
/** Initial context data */
|
|
32
|
+
context?: TContext;
|
|
33
|
+
/** State definitions */
|
|
34
|
+
states: Record<TState, StateConfig<TState, TEvent, TContext>>;
|
|
35
|
+
}
|
|
36
|
+
interface StateConfig<TState extends string, TEvent extends string, TContext = unknown> {
|
|
37
|
+
/** Transitions: event → target state */
|
|
38
|
+
on?: Partial<Record<TEvent, TState | TransitionConfig<TState, TEvent, TContext>>>;
|
|
39
|
+
/** Entry action — runs when entering this state */
|
|
40
|
+
entry?: (ctx: MachineContext<TContext>) => void;
|
|
41
|
+
/** Exit action — runs when leaving this state */
|
|
42
|
+
exit?: (ctx: MachineContext<TContext>) => void;
|
|
43
|
+
/** Final state — machine stops accepting events */
|
|
44
|
+
type?: 'final';
|
|
45
|
+
}
|
|
46
|
+
interface TransitionConfig<TState extends string, TEvent extends string, TContext = unknown> {
|
|
47
|
+
/** Target state */
|
|
48
|
+
target: TState;
|
|
49
|
+
/** Guard — transition only if this returns true */
|
|
50
|
+
guard?: (ctx: MachineContext<TContext>) => boolean;
|
|
51
|
+
/** Action — runs during the transition */
|
|
52
|
+
action?: (ctx: MachineContext<TContext>) => void;
|
|
53
|
+
}
|
|
54
|
+
interface MachineContext<TContext> {
|
|
55
|
+
/** The context data (mutable) */
|
|
56
|
+
data: TContext;
|
|
57
|
+
/** The current event that triggered the transition */
|
|
58
|
+
event: string;
|
|
59
|
+
/** Optional payload passed with the event via send(event, payload) */
|
|
60
|
+
payload?: unknown;
|
|
61
|
+
}
|
|
62
|
+
interface Machine<TState extends string, TEvent extends string, TContext = unknown> {
|
|
63
|
+
/** Current state (reactive signal) */
|
|
64
|
+
state: ReadonlySignal<TState>;
|
|
65
|
+
/** Context data (reactive signal) */
|
|
66
|
+
context: ReadonlySignal<TContext>;
|
|
67
|
+
/** Send an event to the machine */
|
|
68
|
+
send(event: TEvent, payload?: Record<string, unknown>): void;
|
|
69
|
+
/** Check if currently in a specific state */
|
|
70
|
+
matches(state: TState): boolean;
|
|
71
|
+
/** Whether the machine is in a final state */
|
|
72
|
+
done: ReadonlySignal<boolean>;
|
|
73
|
+
/** Reset to initial state */
|
|
74
|
+
reset(): void;
|
|
75
|
+
/** State history */
|
|
76
|
+
history: ReadonlySignal<TState[]>;
|
|
77
|
+
/** Can a specific event be sent in the current state? */
|
|
78
|
+
can(event: TEvent): boolean;
|
|
79
|
+
/** Get all possible events from current state */
|
|
80
|
+
nextEvents: ReadonlySignal<TEvent[]>;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Create a finite state machine.
|
|
84
|
+
*/
|
|
85
|
+
declare function createMachine<TState extends string, TEvent extends string, TContext = unknown>(config: MachineConfig<TState, TEvent, TContext>): Machine<TState, TEvent, TContext>;
|
|
86
|
+
|
|
87
|
+
export { type Machine, type MachineConfig, type MachineContext, type StateConfig, type TransitionConfig, createMachine };
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { R as ReadonlySignal } from './signals-C7XfOHHR.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* State machines for complex UI flows.
|
|
5
|
+
*
|
|
6
|
+
* Finite state machines with typed states, events, guards,
|
|
7
|
+
* actions, and reactive current state signal.
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* const checkout = createMachine({
|
|
11
|
+
* initial: 'cart',
|
|
12
|
+
* states: {
|
|
13
|
+
* cart: { on: { CHECKOUT: 'shipping' } },
|
|
14
|
+
* shipping: { on: { NEXT: 'payment', BACK: 'cart' } },
|
|
15
|
+
* payment: { on: { PAY: 'processing', BACK: 'shipping' } },
|
|
16
|
+
* processing: { on: { SUCCESS: 'complete', FAIL: 'payment' } },
|
|
17
|
+
* complete: { type: 'final' },
|
|
18
|
+
* },
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* checkout.state(); // 'cart'
|
|
22
|
+
* checkout.send('CHECKOUT');
|
|
23
|
+
* checkout.state(); // 'shipping'
|
|
24
|
+
* checkout.matches('shipping'); // true
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
interface MachineConfig<TState extends string, TEvent extends string, TContext = unknown> {
|
|
29
|
+
/** Initial state */
|
|
30
|
+
initial: TState;
|
|
31
|
+
/** Initial context data */
|
|
32
|
+
context?: TContext;
|
|
33
|
+
/** State definitions */
|
|
34
|
+
states: Record<TState, StateConfig<TState, TEvent, TContext>>;
|
|
35
|
+
}
|
|
36
|
+
interface StateConfig<TState extends string, TEvent extends string, TContext = unknown> {
|
|
37
|
+
/** Transitions: event → target state */
|
|
38
|
+
on?: Partial<Record<TEvent, TState | TransitionConfig<TState, TEvent, TContext>>>;
|
|
39
|
+
/** Entry action — runs when entering this state */
|
|
40
|
+
entry?: (ctx: MachineContext<TContext>) => void;
|
|
41
|
+
/** Exit action — runs when leaving this state */
|
|
42
|
+
exit?: (ctx: MachineContext<TContext>) => void;
|
|
43
|
+
/** Final state — machine stops accepting events */
|
|
44
|
+
type?: 'final';
|
|
45
|
+
}
|
|
46
|
+
interface TransitionConfig<TState extends string, TEvent extends string, TContext = unknown> {
|
|
47
|
+
/** Target state */
|
|
48
|
+
target: TState;
|
|
49
|
+
/** Guard — transition only if this returns true */
|
|
50
|
+
guard?: (ctx: MachineContext<TContext>) => boolean;
|
|
51
|
+
/** Action — runs during the transition */
|
|
52
|
+
action?: (ctx: MachineContext<TContext>) => void;
|
|
53
|
+
}
|
|
54
|
+
interface MachineContext<TContext> {
|
|
55
|
+
/** The context data (mutable) */
|
|
56
|
+
data: TContext;
|
|
57
|
+
/** The current event that triggered the transition */
|
|
58
|
+
event: string;
|
|
59
|
+
/** Optional payload passed with the event via send(event, payload) */
|
|
60
|
+
payload?: unknown;
|
|
61
|
+
}
|
|
62
|
+
interface Machine<TState extends string, TEvent extends string, TContext = unknown> {
|
|
63
|
+
/** Current state (reactive signal) */
|
|
64
|
+
state: ReadonlySignal<TState>;
|
|
65
|
+
/** Context data (reactive signal) */
|
|
66
|
+
context: ReadonlySignal<TContext>;
|
|
67
|
+
/** Send an event to the machine */
|
|
68
|
+
send(event: TEvent, payload?: Record<string, unknown>): void;
|
|
69
|
+
/** Check if currently in a specific state */
|
|
70
|
+
matches(state: TState): boolean;
|
|
71
|
+
/** Whether the machine is in a final state */
|
|
72
|
+
done: ReadonlySignal<boolean>;
|
|
73
|
+
/** Reset to initial state */
|
|
74
|
+
reset(): void;
|
|
75
|
+
/** State history */
|
|
76
|
+
history: ReadonlySignal<TState[]>;
|
|
77
|
+
/** Can a specific event be sent in the current state? */
|
|
78
|
+
can(event: TEvent): boolean;
|
|
79
|
+
/** Get all possible events from current state */
|
|
80
|
+
nextEvents: ReadonlySignal<TEvent[]>;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Create a finite state machine.
|
|
84
|
+
*/
|
|
85
|
+
declare function createMachine<TState extends string, TEvent extends string, TContext = unknown>(config: MachineConfig<TState, TEvent, TContext>): Machine<TState, TEvent, TContext>;
|
|
86
|
+
|
|
87
|
+
export { type Machine, type MachineConfig, type MachineContext, type StateConfig, type TransitionConfig, createMachine };
|
package/dist/machine.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{a as createMachine}from'./chunk-
|
|
1
|
+
export{a as createMachine}from'./chunk-Z5LQV5ND.js';import'./chunk-POLTPHUA.js';//# sourceMappingURL=machine.js.map
|
|
2
2
|
//# sourceMappingURL=machine.js.map
|
package/dist/offline.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunkH4SAK7A5_cjs=require('./chunk-H4SAK7A5.cjs');require('./chunk-3AL2DVPZ.cjs');Object.defineProperty(exports,"createOfflineStore",{enumerable:true,get:function(){return chunkH4SAK7A5_cjs.a}});//# sourceMappingURL=offline.cjs.map
|
|
2
2
|
//# sourceMappingURL=offline.cjs.map
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { R as ReadonlySignal } from './signals-C7XfOHHR.cjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Offline-first store with IndexedDB persistence and background sync.
|
|
5
|
+
*
|
|
6
|
+
* Data persists across page reloads. Changes made offline queue up
|
|
7
|
+
* and sync automatically when connection returns. Conflict resolution
|
|
8
|
+
* via configurable strategies (last-write-wins, merge, custom).
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* const todos = createOfflineStore('todos', {
|
|
12
|
+
* sync: { url: '/api/todos', strategy: 'last-write-wins' },
|
|
13
|
+
* });
|
|
14
|
+
*
|
|
15
|
+
* todos.add({ id: '1', text: 'Buy milk', done: false });
|
|
16
|
+
* todos.items(); // reactive list
|
|
17
|
+
* todos.syncing(); // boolean
|
|
18
|
+
* todos.pending(); // number of unsynced changes
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
type ConflictStrategy = 'last-write-wins' | 'client-wins' | 'server-wins' | 'manual';
|
|
23
|
+
interface OfflineStoreOptions<T> {
|
|
24
|
+
/** Sync configuration */
|
|
25
|
+
sync?: {
|
|
26
|
+
/** Server URL for sync */
|
|
27
|
+
url: string;
|
|
28
|
+
/** Conflict resolution strategy (default: 'last-write-wins') */
|
|
29
|
+
strategy?: ConflictStrategy;
|
|
30
|
+
/** Sync interval in ms (default: 30000) */
|
|
31
|
+
interval?: number;
|
|
32
|
+
/** Custom fetch */
|
|
33
|
+
fetch?: typeof globalThis.fetch;
|
|
34
|
+
/** Auth headers */
|
|
35
|
+
headers?: Record<string, string>;
|
|
36
|
+
};
|
|
37
|
+
/** Key field for items (default: 'id') */
|
|
38
|
+
keyField?: string;
|
|
39
|
+
/** Version for schema migrations */
|
|
40
|
+
version?: number;
|
|
41
|
+
}
|
|
42
|
+
interface OfflineStore<T extends Record<string, unknown>> {
|
|
43
|
+
/** All items (reactive) */
|
|
44
|
+
items: ReadonlySignal<T[]>;
|
|
45
|
+
/** Get a single item by key */
|
|
46
|
+
get(key: string): T | undefined;
|
|
47
|
+
/** Add or update an item */
|
|
48
|
+
put(item: T): void;
|
|
49
|
+
/** Add a new item */
|
|
50
|
+
add(item: T): void;
|
|
51
|
+
/** Update an existing item */
|
|
52
|
+
update(key: string, partial: Partial<T>): void;
|
|
53
|
+
/** Remove an item by key */
|
|
54
|
+
remove(key: string): void;
|
|
55
|
+
/** Clear all items */
|
|
56
|
+
clear(): void;
|
|
57
|
+
/** Number of unsynced changes */
|
|
58
|
+
pending: ReadonlySignal<number>;
|
|
59
|
+
/** Whether sync is in progress */
|
|
60
|
+
syncing: ReadonlySignal<boolean>;
|
|
61
|
+
/** Whether online */
|
|
62
|
+
online: ReadonlySignal<boolean>;
|
|
63
|
+
/** Force a sync now */
|
|
64
|
+
sync(): Promise<void>;
|
|
65
|
+
/** Dispose the store (stop sync, close DB) */
|
|
66
|
+
dispose(): void;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Create an offline-first store backed by IndexedDB.
|
|
70
|
+
*/
|
|
71
|
+
declare function createOfflineStore<T extends Record<string, unknown>>(name: string, options?: OfflineStoreOptions<T>): OfflineStore<T>;
|
|
72
|
+
|
|
73
|
+
export { type ConflictStrategy, type OfflineStore, type OfflineStoreOptions, createOfflineStore };
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { R as ReadonlySignal } from './signals-C7XfOHHR.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Offline-first store with IndexedDB persistence and background sync.
|
|
5
|
+
*
|
|
6
|
+
* Data persists across page reloads. Changes made offline queue up
|
|
7
|
+
* and sync automatically when connection returns. Conflict resolution
|
|
8
|
+
* via configurable strategies (last-write-wins, merge, custom).
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* const todos = createOfflineStore('todos', {
|
|
12
|
+
* sync: { url: '/api/todos', strategy: 'last-write-wins' },
|
|
13
|
+
* });
|
|
14
|
+
*
|
|
15
|
+
* todos.add({ id: '1', text: 'Buy milk', done: false });
|
|
16
|
+
* todos.items(); // reactive list
|
|
17
|
+
* todos.syncing(); // boolean
|
|
18
|
+
* todos.pending(); // number of unsynced changes
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
type ConflictStrategy = 'last-write-wins' | 'client-wins' | 'server-wins' | 'manual';
|
|
23
|
+
interface OfflineStoreOptions<T> {
|
|
24
|
+
/** Sync configuration */
|
|
25
|
+
sync?: {
|
|
26
|
+
/** Server URL for sync */
|
|
27
|
+
url: string;
|
|
28
|
+
/** Conflict resolution strategy (default: 'last-write-wins') */
|
|
29
|
+
strategy?: ConflictStrategy;
|
|
30
|
+
/** Sync interval in ms (default: 30000) */
|
|
31
|
+
interval?: number;
|
|
32
|
+
/** Custom fetch */
|
|
33
|
+
fetch?: typeof globalThis.fetch;
|
|
34
|
+
/** Auth headers */
|
|
35
|
+
headers?: Record<string, string>;
|
|
36
|
+
};
|
|
37
|
+
/** Key field for items (default: 'id') */
|
|
38
|
+
keyField?: string;
|
|
39
|
+
/** Version for schema migrations */
|
|
40
|
+
version?: number;
|
|
41
|
+
}
|
|
42
|
+
interface OfflineStore<T extends Record<string, unknown>> {
|
|
43
|
+
/** All items (reactive) */
|
|
44
|
+
items: ReadonlySignal<T[]>;
|
|
45
|
+
/** Get a single item by key */
|
|
46
|
+
get(key: string): T | undefined;
|
|
47
|
+
/** Add or update an item */
|
|
48
|
+
put(item: T): void;
|
|
49
|
+
/** Add a new item */
|
|
50
|
+
add(item: T): void;
|
|
51
|
+
/** Update an existing item */
|
|
52
|
+
update(key: string, partial: Partial<T>): void;
|
|
53
|
+
/** Remove an item by key */
|
|
54
|
+
remove(key: string): void;
|
|
55
|
+
/** Clear all items */
|
|
56
|
+
clear(): void;
|
|
57
|
+
/** Number of unsynced changes */
|
|
58
|
+
pending: ReadonlySignal<number>;
|
|
59
|
+
/** Whether sync is in progress */
|
|
60
|
+
syncing: ReadonlySignal<boolean>;
|
|
61
|
+
/** Whether online */
|
|
62
|
+
online: ReadonlySignal<boolean>;
|
|
63
|
+
/** Force a sync now */
|
|
64
|
+
sync(): Promise<void>;
|
|
65
|
+
/** Dispose the store (stop sync, close DB) */
|
|
66
|
+
dispose(): void;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Create an offline-first store backed by IndexedDB.
|
|
70
|
+
*/
|
|
71
|
+
declare function createOfflineStore<T extends Record<string, unknown>>(name: string, options?: OfflineStoreOptions<T>): OfflineStore<T>;
|
|
72
|
+
|
|
73
|
+
export { type ConflictStrategy, type OfflineStore, type OfflineStoreOptions, createOfflineStore };
|
package/dist/offline.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{a as createOfflineStore}from'./chunk-
|
|
1
|
+
export{a as createOfflineStore}from'./chunk-D6QQYZIC.js';import'./chunk-POLTPHUA.js';//# sourceMappingURL=offline.js.map
|
|
2
2
|
//# sourceMappingURL=offline.js.map
|
package/dist/pwa.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunk6NX6JRSV_cjs=require('./chunk-6NX6JRSV.cjs');require('./chunk-3AL2DVPZ.cjs');Object.defineProperty(exports,"generateSWScript",{enumerable:true,get:function(){return chunk6NX6JRSV_cjs.b}});Object.defineProperty(exports,"registerServiceWorker",{enumerable:true,get:function(){return chunk6NX6JRSV_cjs.a}});Object.defineProperty(exports,"subscribePush",{enumerable:true,get:function(){return chunk6NX6JRSV_cjs.c}});//# sourceMappingURL=pwa.cjs.map
|
|
2
2
|
//# sourceMappingURL=pwa.cjs.map
|
package/dist/pwa.d.cts
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { R as ReadonlySignal } from './signals-C7XfOHHR.cjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* PWA / Service Worker support.
|
|
5
|
+
*
|
|
6
|
+
* Register service workers, configure caching strategies,
|
|
7
|
+
* handle updates, and manage push notifications.
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* const sw = registerServiceWorker('/sw.js', {
|
|
11
|
+
* onUpdate: () => toast.info('New version available!'),
|
|
12
|
+
* });
|
|
13
|
+
* sw.ready; // Promise<ServiceWorkerRegistration>
|
|
14
|
+
* sw.update(); // check for updates
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
interface SWOptions {
|
|
19
|
+
/** Callback when a new version is available */
|
|
20
|
+
onUpdate?: (registration: ServiceWorkerRegistration) => void;
|
|
21
|
+
/** Callback when the SW is ready */
|
|
22
|
+
onReady?: (registration: ServiceWorkerRegistration) => void;
|
|
23
|
+
/** Callback on registration error */
|
|
24
|
+
onError?: (error: Error) => void;
|
|
25
|
+
/** Auto-reload on update (default: false) */
|
|
26
|
+
autoReload?: boolean;
|
|
27
|
+
/** Scope of the service worker */
|
|
28
|
+
scope?: string;
|
|
29
|
+
}
|
|
30
|
+
interface SWRegistration {
|
|
31
|
+
/** Whether the SW is registered */
|
|
32
|
+
registered: ReadonlySignal<boolean>;
|
|
33
|
+
/** Whether an update is available */
|
|
34
|
+
updateAvailable: ReadonlySignal<boolean>;
|
|
35
|
+
/** Whether the app is running offline */
|
|
36
|
+
offline: ReadonlySignal<boolean>;
|
|
37
|
+
/** The raw SW registration (available after ready) */
|
|
38
|
+
ready: Promise<ServiceWorkerRegistration>;
|
|
39
|
+
/** Check for updates */
|
|
40
|
+
update(): Promise<void>;
|
|
41
|
+
/** Skip waiting and activate new SW */
|
|
42
|
+
skipWaiting(): void;
|
|
43
|
+
/** Unregister the service worker */
|
|
44
|
+
unregister(): Promise<boolean>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Register a service worker with update detection.
|
|
48
|
+
*/
|
|
49
|
+
declare function registerServiceWorker(swUrl: string, options?: SWOptions): SWRegistration;
|
|
50
|
+
type CacheStrategy = 'cache-first' | 'network-first' | 'stale-while-revalidate' | 'network-only' | 'cache-only';
|
|
51
|
+
interface CacheRoute {
|
|
52
|
+
/** URL pattern to match (string or regex) */
|
|
53
|
+
match: string | RegExp;
|
|
54
|
+
/** Caching strategy */
|
|
55
|
+
strategy: CacheStrategy;
|
|
56
|
+
/** Cache name */
|
|
57
|
+
cacheName?: string;
|
|
58
|
+
/** Max entries in cache */
|
|
59
|
+
maxEntries?: number;
|
|
60
|
+
/** Max age in seconds */
|
|
61
|
+
maxAgeSeconds?: number;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Generate a service worker script from cache route configs.
|
|
65
|
+
*
|
|
66
|
+
* ```ts
|
|
67
|
+
* const swScript = generateSWScript([
|
|
68
|
+
* { match: /\.(?:js|css)$/, strategy: 'cache-first', cacheName: 'assets' },
|
|
69
|
+
* { match: '/api/', strategy: 'network-first', maxAgeSeconds: 300 },
|
|
70
|
+
* { match: /\.(?:png|jpg|svg)$/, strategy: 'cache-first', cacheName: 'images' },
|
|
71
|
+
* ]);
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
declare function generateSWScript(routes: CacheRoute[]): string;
|
|
75
|
+
/**
|
|
76
|
+
* Request push notification permission and subscribe.
|
|
77
|
+
*/
|
|
78
|
+
declare function subscribePush(registration: ServiceWorkerRegistration, vapidPublicKey: string): Promise<PushSubscription | null>;
|
|
79
|
+
|
|
80
|
+
export { type CacheRoute, type CacheStrategy, type SWOptions, type SWRegistration, generateSWScript, registerServiceWorker, subscribePush };
|
package/dist/pwa.d.ts
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { R as ReadonlySignal } from './signals-C7XfOHHR.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* PWA / Service Worker support.
|
|
5
|
+
*
|
|
6
|
+
* Register service workers, configure caching strategies,
|
|
7
|
+
* handle updates, and manage push notifications.
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* const sw = registerServiceWorker('/sw.js', {
|
|
11
|
+
* onUpdate: () => toast.info('New version available!'),
|
|
12
|
+
* });
|
|
13
|
+
* sw.ready; // Promise<ServiceWorkerRegistration>
|
|
14
|
+
* sw.update(); // check for updates
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
interface SWOptions {
|
|
19
|
+
/** Callback when a new version is available */
|
|
20
|
+
onUpdate?: (registration: ServiceWorkerRegistration) => void;
|
|
21
|
+
/** Callback when the SW is ready */
|
|
22
|
+
onReady?: (registration: ServiceWorkerRegistration) => void;
|
|
23
|
+
/** Callback on registration error */
|
|
24
|
+
onError?: (error: Error) => void;
|
|
25
|
+
/** Auto-reload on update (default: false) */
|
|
26
|
+
autoReload?: boolean;
|
|
27
|
+
/** Scope of the service worker */
|
|
28
|
+
scope?: string;
|
|
29
|
+
}
|
|
30
|
+
interface SWRegistration {
|
|
31
|
+
/** Whether the SW is registered */
|
|
32
|
+
registered: ReadonlySignal<boolean>;
|
|
33
|
+
/** Whether an update is available */
|
|
34
|
+
updateAvailable: ReadonlySignal<boolean>;
|
|
35
|
+
/** Whether the app is running offline */
|
|
36
|
+
offline: ReadonlySignal<boolean>;
|
|
37
|
+
/** The raw SW registration (available after ready) */
|
|
38
|
+
ready: Promise<ServiceWorkerRegistration>;
|
|
39
|
+
/** Check for updates */
|
|
40
|
+
update(): Promise<void>;
|
|
41
|
+
/** Skip waiting and activate new SW */
|
|
42
|
+
skipWaiting(): void;
|
|
43
|
+
/** Unregister the service worker */
|
|
44
|
+
unregister(): Promise<boolean>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Register a service worker with update detection.
|
|
48
|
+
*/
|
|
49
|
+
declare function registerServiceWorker(swUrl: string, options?: SWOptions): SWRegistration;
|
|
50
|
+
type CacheStrategy = 'cache-first' | 'network-first' | 'stale-while-revalidate' | 'network-only' | 'cache-only';
|
|
51
|
+
interface CacheRoute {
|
|
52
|
+
/** URL pattern to match (string or regex) */
|
|
53
|
+
match: string | RegExp;
|
|
54
|
+
/** Caching strategy */
|
|
55
|
+
strategy: CacheStrategy;
|
|
56
|
+
/** Cache name */
|
|
57
|
+
cacheName?: string;
|
|
58
|
+
/** Max entries in cache */
|
|
59
|
+
maxEntries?: number;
|
|
60
|
+
/** Max age in seconds */
|
|
61
|
+
maxAgeSeconds?: number;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Generate a service worker script from cache route configs.
|
|
65
|
+
*
|
|
66
|
+
* ```ts
|
|
67
|
+
* const swScript = generateSWScript([
|
|
68
|
+
* { match: /\.(?:js|css)$/, strategy: 'cache-first', cacheName: 'assets' },
|
|
69
|
+
* { match: '/api/', strategy: 'network-first', maxAgeSeconds: 300 },
|
|
70
|
+
* { match: /\.(?:png|jpg|svg)$/, strategy: 'cache-first', cacheName: 'images' },
|
|
71
|
+
* ]);
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
declare function generateSWScript(routes: CacheRoute[]): string;
|
|
75
|
+
/**
|
|
76
|
+
* Request push notification permission and subscribe.
|
|
77
|
+
*/
|
|
78
|
+
declare function subscribePush(registration: ServiceWorkerRegistration, vapidPublicKey: string): Promise<PushSubscription | null>;
|
|
79
|
+
|
|
80
|
+
export { type CacheRoute, type CacheStrategy, type SWOptions, type SWRegistration, generateSWScript, registerServiceWorker, subscribePush };
|
package/dist/pwa.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{b as generateSWScript,a as registerServiceWorker,c as subscribePush}from'./chunk-
|
|
1
|
+
export{b as generateSWScript,a as registerServiceWorker,c as subscribePush}from'./chunk-IM2VW4TK.js';import'./chunk-POLTPHUA.js';//# sourceMappingURL=pwa.js.map
|
|
2
2
|
//# sourceMappingURL=pwa.js.map
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fine-grained reactivity system.
|
|
3
|
+
*
|
|
4
|
+
* Inspired by SolidJS/Preact Signals. Provides signal(), computed(),
|
|
5
|
+
* effect(), and untrack() primitives with automatic dependency tracking
|
|
6
|
+
* and glitch-free diamond dependency resolution.
|
|
7
|
+
*/
|
|
8
|
+
interface Signal<T> {
|
|
9
|
+
/** Read the current value (tracks dependency if inside a reactive scope) */
|
|
10
|
+
(): T;
|
|
11
|
+
/** Set a new value */
|
|
12
|
+
set(value: T): void;
|
|
13
|
+
/** Update the value using the previous value */
|
|
14
|
+
update(fn: (prev: T) => T): void;
|
|
15
|
+
/** Read without tracking (no dependency registered) */
|
|
16
|
+
peek(): T;
|
|
17
|
+
}
|
|
18
|
+
type ReadonlySignal<T> = () => T;
|
|
19
|
+
declare function signal<T>(initialValue: T, options?: {
|
|
20
|
+
equals?: (a: T, b: T) => boolean;
|
|
21
|
+
}): Signal<T>;
|
|
22
|
+
declare function computed<T>(fn: () => T, options?: {
|
|
23
|
+
equals?: (a: T, b: T) => boolean;
|
|
24
|
+
}): ReadonlySignal<T>;
|
|
25
|
+
declare function effect(fn: () => void | (() => void), options?: {
|
|
26
|
+
render?: boolean;
|
|
27
|
+
}): () => void;
|
|
28
|
+
/** Execute a function without tracking any signal reads */
|
|
29
|
+
declare function untrack<T>(fn: () => T): T;
|
|
30
|
+
/**
|
|
31
|
+
* Create an effect callback that only tracks specific signals.
|
|
32
|
+
* All other signal reads inside the callback are untracked.
|
|
33
|
+
*
|
|
34
|
+
* ```ts
|
|
35
|
+
* effect(on(url, (currentUrl, prevUrl) => {
|
|
36
|
+
* fetch(currentUrl, options()); // options() not tracked
|
|
37
|
+
* }));
|
|
38
|
+
*
|
|
39
|
+
* effect(on([url, page], ([u, p], prev) => {
|
|
40
|
+
* fetch(`${u}?page=${p}`);
|
|
41
|
+
* }));
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
declare function on<T>(dep: () => T, fn: (value: T, prev: T | undefined) => void | (() => void), options?: {
|
|
45
|
+
defer?: boolean;
|
|
46
|
+
}): () => void | (() => void);
|
|
47
|
+
declare function on<T extends readonly (() => unknown)[]>(deps: [...T], fn: (values: {
|
|
48
|
+
[K in keyof T]: ReturnType<T[K]>;
|
|
49
|
+
}, prev: {
|
|
50
|
+
[K in keyof T]: ReturnType<T[K]>;
|
|
51
|
+
} | undefined) => void | (() => void), options?: {
|
|
52
|
+
defer?: boolean;
|
|
53
|
+
}): () => void | (() => void);
|
|
54
|
+
|
|
55
|
+
export { type ReadonlySignal as R, type Signal as S, computed as c, effect as e, on as o, signal as s, untrack as u };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fine-grained reactivity system.
|
|
3
|
+
*
|
|
4
|
+
* Inspired by SolidJS/Preact Signals. Provides signal(), computed(),
|
|
5
|
+
* effect(), and untrack() primitives with automatic dependency tracking
|
|
6
|
+
* and glitch-free diamond dependency resolution.
|
|
7
|
+
*/
|
|
8
|
+
interface Signal<T> {
|
|
9
|
+
/** Read the current value (tracks dependency if inside a reactive scope) */
|
|
10
|
+
(): T;
|
|
11
|
+
/** Set a new value */
|
|
12
|
+
set(value: T): void;
|
|
13
|
+
/** Update the value using the previous value */
|
|
14
|
+
update(fn: (prev: T) => T): void;
|
|
15
|
+
/** Read without tracking (no dependency registered) */
|
|
16
|
+
peek(): T;
|
|
17
|
+
}
|
|
18
|
+
type ReadonlySignal<T> = () => T;
|
|
19
|
+
declare function signal<T>(initialValue: T, options?: {
|
|
20
|
+
equals?: (a: T, b: T) => boolean;
|
|
21
|
+
}): Signal<T>;
|
|
22
|
+
declare function computed<T>(fn: () => T, options?: {
|
|
23
|
+
equals?: (a: T, b: T) => boolean;
|
|
24
|
+
}): ReadonlySignal<T>;
|
|
25
|
+
declare function effect(fn: () => void | (() => void), options?: {
|
|
26
|
+
render?: boolean;
|
|
27
|
+
}): () => void;
|
|
28
|
+
/** Execute a function without tracking any signal reads */
|
|
29
|
+
declare function untrack<T>(fn: () => T): T;
|
|
30
|
+
/**
|
|
31
|
+
* Create an effect callback that only tracks specific signals.
|
|
32
|
+
* All other signal reads inside the callback are untracked.
|
|
33
|
+
*
|
|
34
|
+
* ```ts
|
|
35
|
+
* effect(on(url, (currentUrl, prevUrl) => {
|
|
36
|
+
* fetch(currentUrl, options()); // options() not tracked
|
|
37
|
+
* }));
|
|
38
|
+
*
|
|
39
|
+
* effect(on([url, page], ([u, p], prev) => {
|
|
40
|
+
* fetch(`${u}?page=${p}`);
|
|
41
|
+
* }));
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
declare function on<T>(dep: () => T, fn: (value: T, prev: T | undefined) => void | (() => void), options?: {
|
|
45
|
+
defer?: boolean;
|
|
46
|
+
}): () => void | (() => void);
|
|
47
|
+
declare function on<T extends readonly (() => unknown)[]>(deps: [...T], fn: (values: {
|
|
48
|
+
[K in keyof T]: ReturnType<T[K]>;
|
|
49
|
+
}, prev: {
|
|
50
|
+
[K in keyof T]: ReturnType<T[K]>;
|
|
51
|
+
} | undefined) => void | (() => void), options?: {
|
|
52
|
+
defer?: boolean;
|
|
53
|
+
}): () => void | (() => void);
|
|
54
|
+
|
|
55
|
+
export { type ReadonlySignal as R, type Signal as S, computed as c, effect as e, on as o, signal as s, untrack as u };
|
package/dist/ssr.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var chunkUOD4PYAN_cjs=require('./chunk-UOD4PYAN.cjs');require('./chunk-
|
|
1
|
+
'use strict';var chunkUOD4PYAN_cjs=require('./chunk-UOD4PYAN.cjs');require('./chunk-3AL2DVPZ.cjs');Object.defineProperty(exports,"escapeHtml",{enumerable:true,get:function(){return chunkUOD4PYAN_cjs.a}});Object.defineProperty(exports,"isServerRendering",{enumerable:true,get:function(){return chunkUOD4PYAN_cjs.b}});Object.defineProperty(exports,"nodeToHtml",{enumerable:true,get:function(){return chunkUOD4PYAN_cjs.i}});Object.defineProperty(exports,"renderNodes",{enumerable:true,get:function(){return chunkUOD4PYAN_cjs.j}});Object.defineProperty(exports,"renderToStream",{enumerable:true,get:function(){return chunkUOD4PYAN_cjs.e}});Object.defineProperty(exports,"renderToString",{enumerable:true,get:function(){return chunkUOD4PYAN_cjs.c}});Object.defineProperty(exports,"renderToStringSync",{enumerable:true,get:function(){return chunkUOD4PYAN_cjs.d}});Object.defineProperty(exports,"ssrElement",{enumerable:true,get:function(){return chunkUOD4PYAN_cjs.f}});Object.defineProperty(exports,"ssrRaw",{enumerable:true,get:function(){return chunkUOD4PYAN_cjs.h}});Object.defineProperty(exports,"ssrText",{enumerable:true,get:function(){return chunkUOD4PYAN_cjs.g}});//# sourceMappingURL=ssr.cjs.map
|
|
2
2
|
//# sourceMappingURL=ssr.cjs.map
|