@slux/solid 0.0.0-stage → 0.1.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/CHANGELOG.md +45 -0
- package/LICENSE +21 -0
- package/README.md +282 -2
- package/dist/atom.cjs +2 -0
- package/dist/atom.cjs.map +1 -0
- package/dist/atom.d.cts +11 -0
- package/dist/atom.d.ts +11 -0
- package/dist/atom.js +2 -0
- package/dist/atom.js.map +1 -0
- package/dist/e~0.js +2 -0
- package/dist/e~0.js.map +1 -0
- package/dist/flux.cjs +2 -0
- package/dist/flux.cjs.map +1 -0
- package/dist/flux.d.cts +7 -0
- package/dist/flux.d.ts +7 -0
- package/dist/flux.js +2 -0
- package/dist/flux.js.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +29 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/proxy.cjs +2 -0
- package/dist/proxy.cjs.map +1 -0
- package/dist/proxy.d.cts +6 -0
- package/dist/proxy.d.ts +6 -0
- package/dist/proxy.js +2 -0
- package/dist/proxy.js.map +1 -0
- package/dist/rxjs.cjs +2 -0
- package/dist/rxjs.cjs.map +1 -0
- package/dist/rxjs.d.cts +6 -0
- package/dist/rxjs.d.ts +6 -0
- package/dist/rxjs.js +2 -0
- package/dist/rxjs.js.map +1 -0
- package/dist/state-machine.cjs +2 -0
- package/dist/state-machine.cjs.map +1 -0
- package/dist/state-machine.d.cts +9 -0
- package/dist/state-machine.d.ts +9 -0
- package/dist/state-machine.js +2 -0
- package/dist/state-machine.js.map +1 -0
- package/dist/store.cjs +2 -0
- package/dist/store.cjs.map +1 -0
- package/dist/store.d.cts +8 -0
- package/dist/store.d.ts +8 -0
- package/dist/store.js +2 -0
- package/dist/store.js.map +1 -0
- package/package.json +159 -3
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# @slux/solid
|
|
2
|
+
|
|
3
|
+
## 0.1.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 207e315: 基于 `v0.1.0` 之后的改动,完善包文档、交互示例和发布流程。
|
|
8
|
+
|
|
9
|
+
- 为 25 个包的 README 补充统一导航;文档站增加各包更新日志、版本发行说明和可在站内体验的示例入口。
|
|
10
|
+
- 整理示例应用的共享外壳与主题交互,并将示例图标替换为透明背景的 SVG。
|
|
11
|
+
- 修正自动导入 API 清单生成规则,排除需要显式调用的 `createAutoImportApis` 工厂函数,并统一 Viewfly 清单顺序。
|
|
12
|
+
- 发布工作流改为 GitHub OIDC 授信发布:预先打包各包、独立执行发布任务,并在发布成功后创建 GitHub Release 草稿。
|
|
13
|
+
|
|
14
|
+
- Updated dependencies [207e315]
|
|
15
|
+
- @slux/atom@0.1.1
|
|
16
|
+
- @slux/core@0.1.1
|
|
17
|
+
- @slux/flux@0.1.1
|
|
18
|
+
- @slux/proxy@0.1.1
|
|
19
|
+
- @slux/rxjs@0.1.1
|
|
20
|
+
- @slux/shared@0.1.1
|
|
21
|
+
- @slux/state-machine@0.1.1
|
|
22
|
+
- @slux/store@0.1.1
|
|
23
|
+
|
|
24
|
+
## 0.1.0
|
|
25
|
+
|
|
26
|
+
### Minor Changes
|
|
27
|
+
|
|
28
|
+
- 首次公开发布 slux 的 25 个包,统一版本为 0.1.0。
|
|
29
|
+
|
|
30
|
+
- 提供框架无关的响应式核心与共享工具,以及 Store、Atom、Proxy、Flux、状态机和 RxJS 六种状态组织方式。
|
|
31
|
+
- 提供持久化、历史记录、跨标签页同步、遥测和开发工具五类 Store 扩展。
|
|
32
|
+
- 提供 React、Vue、Solid、Svelte、Angular、Preact、Ripple、Inferno、Octane、Vitarx、ActView 和 Viewfly 绑定。
|
|
33
|
+
- 提供各包文档与对应示例,并接入发布检查和文档部署工作流。
|
|
34
|
+
|
|
35
|
+
### Patch Changes
|
|
36
|
+
|
|
37
|
+
- Updated dependencies
|
|
38
|
+
- @slux/atom@0.1.0
|
|
39
|
+
- @slux/core@0.1.0
|
|
40
|
+
- @slux/flux@0.1.0
|
|
41
|
+
- @slux/proxy@0.1.0
|
|
42
|
+
- @slux/rxjs@0.1.0
|
|
43
|
+
- @slux/shared@0.1.0
|
|
44
|
+
- @slux/state-machine@0.1.0
|
|
45
|
+
- @slux/store@0.1.0
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 itmanyong
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,283 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @slux/solid
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
把 `@slux/core` 的响应式状态接入 Solid 1.9 的细粒度响应式系统。核心绑定 `useSignal` 返回 Solid 原生 `Accessor<T>`(内部由 `createSignal` 提供),在 JSX 或响应式计算里调用 `value()` 读取;主入口另提供 core `Scope` 的 Context 封装与 `createAutoImportApis`。六个范式各通过独立子入口提供同样返回 `Accessor` 的绑定。
|
|
4
|
+
|
|
5
|
+
跨框架一致的子入口划分、Flux / 状态机 / RxJS 的写入与桥接生命周期、Scope 显式覆盖语义与 SSR 通用约束见仓库根 [README](../../README.md) 的「框架适配 · 通用约定」;仓库内构建与验证命令见「本地开发」,本文不再重复。
|
|
6
|
+
|
|
7
|
+
## 特性与适用场景
|
|
8
|
+
|
|
9
|
+
| 场景 | 是否适合 | 说明 |
|
|
10
|
+
| ---------------------------------------------------------------------- | -------- | ------------------------------------------------------------------- |
|
|
11
|
+
| 在 Solid 1.9 组件或 `createRoot` 里把 signal、computed 读成 `Accessor` | 适合 | `useSignal` 返回 `Accessor<T>`,值变化写入 Solid signal,细粒度更新 |
|
|
12
|
+
| 在 JSX / `createComputed` / `createMemo` 中持续追踪 | 适合 | 调用 accessor 即建立追踪,订阅随 owner 清理 |
|
|
13
|
+
| 消费 atom、store、proxy、flux、state-machine、rxjs 六种范式 | 适合 | 六个 `/xxx` 子入口分别导出对应绑定 |
|
|
14
|
+
| 在组件或 `createRoot` 之外调用,或期望自动套用 Scope 覆盖 | 不适合 | `getOwner()` 为假时抛错;`useSignal` 始终读全局来源 |
|
|
15
|
+
|
|
16
|
+
## 安装
|
|
17
|
+
|
|
18
|
+
```sh
|
|
19
|
+
pnpm add @slux/solid @slux/core solid-js
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
| 项 | 值 | 来源 |
|
|
23
|
+
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- |
|
|
24
|
+
| Solid peer | `^1.9.0`(`solid-js`) | `package.json` `peerDependencies` |
|
|
25
|
+
| 必需 peer | `@slux/core`(`workspace:^`) | 同上 |
|
|
26
|
+
| 可选 peer | `@slux/atom`、`@slux/store`、`@slux/proxy`、`@slux/flux`、`@slux/state-machine`、`@slux/rxjs`(均 `workspace:^` 且 `optional: true`) | `peerDependenciesMeta` |
|
|
27
|
+
| 运行时依赖 | `@slux/shared`(随包安装) | `dependencies` |
|
|
28
|
+
|
|
29
|
+
范式包是**可选 peer,只安装实际使用的**:用哪个子入口就装哪个包;`@slux/core` 是全部入口的必需依赖。客户端构建需启用 Solid 的 `browser` 导出条件,Node 默认加载服务端运行时。
|
|
30
|
+
|
|
31
|
+
`package.json` 的 `exports` 子入口(每个都提供 ESM `import` 与 CJS `require`,并带 `.d.ts` / `.d.cts`):
|
|
32
|
+
|
|
33
|
+
| 子入口 | 说明 |
|
|
34
|
+
| --------------------------- | ---------------------------------------------------------------------- |
|
|
35
|
+
| `@slux/solid` | 主入口:`useSignal`、`useStore`、Scope Context、`createAutoImportApis` |
|
|
36
|
+
| `@slux/solid/atom` | atom 绑定 |
|
|
37
|
+
| `@slux/solid/store` | store 绑定 |
|
|
38
|
+
| `@slux/solid/proxy` | proxy 绑定 |
|
|
39
|
+
| `@slux/solid/flux` | flux 绑定 |
|
|
40
|
+
| `@slux/solid/state-machine` | 状态机绑定 |
|
|
41
|
+
| `@slux/solid/rxjs` | RxJS 桥接绑定 |
|
|
42
|
+
| `@slux/solid/package.json` | 包元信息 |
|
|
43
|
+
|
|
44
|
+
> 源码事实:主入口 `src/index.ts` 额外 `export { useStore } from "./store.js"`,与 `/store` 子入口是同一实现;`store.ts` 只 `import type { StoreApi }`,不引入 `@slux/store` 运行时依赖。
|
|
45
|
+
|
|
46
|
+
## 快速开始
|
|
47
|
+
|
|
48
|
+
```tsx
|
|
49
|
+
import { signal } from "@slux/core";
|
|
50
|
+
import { useSignal } from "@slux/solid";
|
|
51
|
+
|
|
52
|
+
const count = signal(0);
|
|
53
|
+
function Counter() {
|
|
54
|
+
const value = useSignal(count); // Accessor<number>
|
|
55
|
+
return <button onClick={() => count.set((n) => n + 1)}>{value()}</button>;
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
`useSignal` 只负责读取与订阅,写入用 core 的 `set`。accessor 在 JSX 或响应式计算里调用才持续追踪;它不接受 setter 参数(只读)。
|
|
60
|
+
|
|
61
|
+
## 主入口 API
|
|
62
|
+
|
|
63
|
+
### `useSignal`
|
|
64
|
+
|
|
65
|
+
```ts
|
|
66
|
+
function useSignal<T>(source: Subscribable<T>): Accessor<T>;
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
| 行为 | 说明 |
|
|
70
|
+
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
|
71
|
+
| 返回形式 | `createSignal(source.get())` 的读取端 `Accessor<T>`;`Accessor` 来自 `solid-js` |
|
|
72
|
+
| 调用位置 | 必须在组件或 `createRoot` 中;`getOwner()` 为假时抛 `Error("useSignal 必须在 Solid 组件或 createRoot 中调用")` |
|
|
73
|
+
| 服务端 | `isServer`(`solid-js/web`)为真时直接返回初值 accessor,**不订阅、不建 core effect** |
|
|
74
|
+
| 客户端订阅 | `source.subscribe((next) => setValue(() => next))` 把变化送入 Solid signal;另起 core `effect(() => source.get())` 刷新惰性 computed |
|
|
75
|
+
| 补读 | 建立订阅后 `setValue(() => source.get())`,对齐首次通知期间的写入 |
|
|
76
|
+
| 清理 | `onCleanup(() => { unsubscribe(); dispose(); })`,随 owner(组件卸载或 `createRoot` 的 `dispose`)执行 |
|
|
77
|
+
| 函数值 | `setValue(() => next)` 用 thunk 写入,函数值按原引用保存,不被执行 |
|
|
78
|
+
| **不读 Scope** | 源码未引用 `useScope()`,始终读全局 `source.get()` / `subscribe`;覆盖需显式 `useScope()?.get(source)` |
|
|
79
|
+
|
|
80
|
+
自定义来源只需满足 `Subscribable<T>`(`get()` + `subscribe(cb)`,后者返回取消函数)。
|
|
81
|
+
|
|
82
|
+
### Scope Context
|
|
83
|
+
|
|
84
|
+
| 导出 | 签名 / 类型 | 说明 |
|
|
85
|
+
| -------------------- | ----------------------------------------------------------- | --------------------------------------------------------------------------------- |
|
|
86
|
+
| `ScopeContext` | `Context<Scope>`(`createContext` 产出,默认 `undefined`) | 可配合 `useContext` 读取 |
|
|
87
|
+
| `ScopeProvider` | `(props: ScopeProviderProps) => JSX.Element` | 调用 `ScopeContext.Provider`,`value` 取 `props.scope`,`children` 用 getter 传入 |
|
|
88
|
+
| `useScope` | `() => Scope \| undefined` | `useContext(ScopeContext)`,无提供者时 `undefined` |
|
|
89
|
+
| `ScopeProviderProps` | `{ readonly scope: Scope; readonly children: JSX.Element }` | Provider 属性类型(公开类型导出) |
|
|
90
|
+
|
|
91
|
+
Provider 在初始化时读取 `props.scope`,替换 Scope 需重新创建子树;读取 `useScope()` 不改变全局信号语义。
|
|
92
|
+
|
|
93
|
+
## 子入口 API
|
|
94
|
+
|
|
95
|
+
六个子入口的绑定**全部委托 `useSignal`**(atom 的 `useAtomValue` 直接 `useSignal(atom)`,store / proxy 构造 `{ get, subscribe }` 再传入,flux / 状态机 / rxjs 直接 `useSignal(原实例)`),统一返回 `Accessor<...>`,并继承主入口的 owner 约束、服务端不订阅、订阅清理与 Scope 边界。写入仍走原实例,绑定不返回写入 tuple 或 selector。
|
|
96
|
+
|
|
97
|
+
| 子入口 | 导出 | 签名要点 | 返回值 | 写入方式 |
|
|
98
|
+
| ---------------- | --------------------------------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------ | ----------------------------------- |
|
|
99
|
+
| `/atom` | `useAtomValue`、`useSetAtom`、`useAtom` | `<T>(atom)` | `Accessor<T>`、`(value: T) => void`、`[Accessor<T>, setter]` | `set(value)` 或 `atom.update(fn)` |
|
|
100
|
+
| `/store` | `useStore` | `(store, selector?, equals?)` | `Accessor<T \| U>` | `store.setState(...)` |
|
|
101
|
+
| `/proxy` | `useSnapshot` | `<T extends object>(proxy: T)` | `Accessor<Snapshot<T>>` | 直接修改原 proxy |
|
|
102
|
+
| `/flux` | `useFluxStore` | `<State, Action extends FluxAction>(store)` | `Accessor<State>` | `store.dispatch(action)` |
|
|
103
|
+
| `/state-machine` | `useMachine` | `<Context, Event extends { type: string }, State extends string>(machine)` | `Accessor<MachineSnapshot<Context, State>>` | `machine.send(event)` |
|
|
104
|
+
| `/rxjs` | `useObservable` | `<T>(source: ObservableState<T>)` | `Accessor<T>` | 上游 Observable,创建者 `dispose()` |
|
|
105
|
+
|
|
106
|
+
### `/atom`
|
|
107
|
+
|
|
108
|
+
```tsx
|
|
109
|
+
import { atom, derived } from "@slux/atom";
|
|
110
|
+
import { useAtom, useAtomValue } from "@slux/solid/atom";
|
|
111
|
+
|
|
112
|
+
const count = atom(0);
|
|
113
|
+
const doubled = derived((get) => get(count) * 2);
|
|
114
|
+
function Counter() {
|
|
115
|
+
const [value, set] = useAtom(count); // [Accessor<number>, (v: number) => void]
|
|
116
|
+
const double = useAtomValue(doubled); // Accessor<number>
|
|
117
|
+
return <button onClick={() => set(value() + 1)}>{double()}</button>;
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
`useAtomValue` 可读基础、派生与 writable atom(`AnyReadableAtom<T>`);`useSetAtom` 返回 `(value) => atom.set(value)`,**只做替换、不订阅**;`useAtom` 组合前两者。派生 atom 不可传给 `useSetAtom`(类型上被禁止)。
|
|
122
|
+
|
|
123
|
+
### `/store`
|
|
124
|
+
|
|
125
|
+
```tsx
|
|
126
|
+
import { createStore } from "@slux/store";
|
|
127
|
+
import { useStore } from "@slux/solid/store";
|
|
128
|
+
|
|
129
|
+
const store = createStore(() => ({ count: 0, other: 0 }));
|
|
130
|
+
function Counter() {
|
|
131
|
+
const count = useStore(store, (state) => state.count); // Accessor<number>
|
|
132
|
+
const whole = useStore(store); // Accessor<{ count: number; other: number }>
|
|
133
|
+
return <span>{count()}</span>;
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
`useStore(store)` 返回完整状态;带 `selector, equals?` 时返回选值,`equals` 默认 `Object.is`,判定相等时保留上次选值引用。快照读 `store.getState()` 当前值;owner 清理只退订,不销毁 store。
|
|
138
|
+
|
|
139
|
+
### `/proxy`
|
|
140
|
+
|
|
141
|
+
```tsx
|
|
142
|
+
import { observable } from "@slux/proxy";
|
|
143
|
+
import { useSnapshot } from "@slux/solid/proxy";
|
|
144
|
+
|
|
145
|
+
const state = observable({ user: { name: "Alice" } });
|
|
146
|
+
const snap = useSnapshot(state); // Accessor<Snapshot<...>>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
`useSnapshot` 用 `@slux/proxy` 的 `snapshot` / `subscribe` 桥接;嵌套与深层变更都会发布新快照,快照深层只读,修改走原 proxy,订阅不按组件读取的属性筛选。
|
|
150
|
+
|
|
151
|
+
### `/flux`、`/state-machine`、`/rxjs`
|
|
152
|
+
|
|
153
|
+
```tsx
|
|
154
|
+
import { createFluxStore } from "@slux/flux";
|
|
155
|
+
import { fromObservable } from "@slux/rxjs";
|
|
156
|
+
import { Subject } from "rxjs";
|
|
157
|
+
import { useFluxStore } from "@slux/solid/flux";
|
|
158
|
+
import { useObservable } from "@slux/solid/rxjs";
|
|
159
|
+
|
|
160
|
+
const flux = createFluxStore((state: number, action: { type: "add"; amount: number }) => state + action.amount, 0);
|
|
161
|
+
const observable = fromObservable(new Subject<number>(), 0);
|
|
162
|
+
// 组件内:
|
|
163
|
+
const fluxValue = useFluxStore(flux); // Accessor<number>
|
|
164
|
+
const observableValue = useObservable(observable); // Accessor<number>
|
|
165
|
+
// useMachine(machine) → Accessor<MachineSnapshot<Context, State>>,含 value / context,写入 machine.send(event)
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
`useObservable` 只接收 `fromObservable(source, initialValue)` 产出的 `ObservableState<T>`,不接受原始 RxJS `Observable`;完成与错误读 `source.status` / `source.error`。owner 清理只解除自身绑定,桥接 `dispose()` 由创建者负责。
|
|
169
|
+
|
|
170
|
+
## 专属语义与边界
|
|
171
|
+
|
|
172
|
+
### SSR 与 hydration
|
|
173
|
+
|
|
174
|
+
- 服务端导出条件(`isServer === true`)下,`useSignal` 在 `createSignal(source.get())` 后直接返回,**不建立 `subscribe`、不留 core effect**;SSR 输出全局初值。
|
|
175
|
+
- 该初值不是 Scope 覆盖值:`useSignal` 不读取 `useScope()`。需要请求级覆盖时显式 `useScope()?.get(source)`,并为客户端准备相同的初始数据。
|
|
176
|
+
- 全部子入口经 `useSignal` 桥接,SSR 行为一致:读各自来源当前值、不创建消费订阅。客户端构建需启用 Solid 的 `browser` 导出条件,Node 默认加载服务端运行时。
|
|
177
|
+
|
|
178
|
+
### 订阅与清理
|
|
179
|
+
|
|
180
|
+
- 订阅与 core `effect` 由 `onCleanup` 随 owner 释放:组件卸载或 `createRoot` 的 `dispose()` 同时执行 `unsubscribe()` 与 `dispose()`,不销毁原状态实例。
|
|
181
|
+
- 只有在 JSX 或 Solid 响应式计算(`createComputed` / `createEffect` / `createMemo` 等)里调用 accessor 才建立持续追踪;单纯保存 accessor 不订阅。`setValue(() => next)` 以 thunk 写入,函数值按原引用保存,`Object.is` 相等的值不让下游重算。
|
|
182
|
+
- 绑定不捕获异常:`source.get()` 抛错会在初始化或 `effect` 求值时向上传播,订阅与 `effect` 错误沿用 `@slux/core` 的同步执行与错误汇总语义。
|
|
183
|
+
|
|
184
|
+
### Scope 显式覆盖契约
|
|
185
|
+
|
|
186
|
+
`scope.set()` 不触发全局订阅,`runInScope()` 不改写全局 signal 读写,computed 不会在 Scope 内自动重算;这些沿用 core 契约,见根 README 通用约定。本包 Context 只负责传递 Scope,绑定本身不自动应用覆盖值。
|
|
187
|
+
|
|
188
|
+
## 自动导入
|
|
189
|
+
|
|
190
|
+
```ts
|
|
191
|
+
import AutoImport from "unplugin-auto-import/vite";
|
|
192
|
+
import { createAutoImportApis } from "@slux/solid";
|
|
193
|
+
|
|
194
|
+
export default { plugins: [AutoImport({ imports: [createAutoImportApis()] })] };
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
`createAutoImportApis(prefix?)` 返回 `unplugin-auto-import` 的 `ImportsMap`,来源名 `@slux/solid`。`src/auto-import-api.ts` 当前登记:`ScopeContext`、`ScopeProvider`、`useScope`、`useSignal`、`useStore`(仅主入口 API,**不含** `createAutoImportApis` 自身与各子入口绑定)。传入前缀时按 `@slux/shared` 的 `createAutoImports` 规则生成别名。
|
|
198
|
+
|
|
199
|
+
## 类型导出
|
|
200
|
+
|
|
201
|
+
主入口只导出一个类型:`ScopeProviderProps`(`src/scope.ts`)=`{ readonly scope: Scope; readonly children: JSX.Element }`。六个子入口只导出运行时函数,不额外导出类型。`Accessor` 来自 `solid-js`,`Subscribable` / `Scope` 来自 `@slux/core`,`Snapshot` 来自 `@slux/proxy`,`FluxStore` / `MachineSnapshot` / `ObservableState` 来自各自范式包,均按包名从原包导入。
|
|
202
|
+
|
|
203
|
+
## 不适用的场景
|
|
204
|
+
|
|
205
|
+
- 在组件或 `createRoot` 之外调用读取函数:会抛错,需在响应式 owner 内调用。
|
|
206
|
+
- 期望绑定自动套用 Scope 覆盖值、把覆盖写回全局,或 SSR 自动序列化 / 恢复请求状态:绑定只读全局来源,需调用方自行准备客户端初始数据与 Scope,见根 README 通用约定。
|
|
207
|
+
- 需要脱离 Solid owner 的长期订阅:直接用 `@slux/core` 的 `effect`。
|
|
208
|
+
|
|
209
|
+
## 版本、许可与反馈
|
|
210
|
+
|
|
211
|
+
- 版本:`0.1.0`(`package.json`)。
|
|
212
|
+
- 许可:[MIT](../../LICENSE) © itmanyong。
|
|
213
|
+
- 仓库:`github.com/itmanyong/slux`(`packages/solid`)。
|
|
214
|
+
- 问题反馈:[GitHub Issues](https://github.com/itmanyong/slux/issues)。
|
|
215
|
+
|
|
216
|
+
<!-- package-navigation:start -->
|
|
217
|
+
|
|
218
|
+
## 包导航
|
|
219
|
+
|
|
220
|
+
### 核心层
|
|
221
|
+
|
|
222
|
+
响应式运行时与零依赖工具,其余各层都建立在 core 之上。
|
|
223
|
+
|
|
224
|
+
| 包名 | 版本 | 在线文档 | 功能 |
|
|
225
|
+
| ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | ---------------------- |
|
|
226
|
+
| [`@slux/core`](https://github.com/itmanyong/slux/tree/main/packages/core) | [](https://www.npmjs.com/package/@slux/core) [](https://npmx.dev/package/@slux/core) | [在线文档](https://itmanyong.github.io/slux/packages/core) | 框架无关的响应式运行时 |
|
|
227
|
+
| [`@slux/shared`](https://github.com/itmanyong/slux/tree/main/packages/shared) | [](https://www.npmjs.com/package/@slux/shared) [](https://npmx.dev/package/@slux/shared) | [在线文档](https://itmanyong.github.io/slux/packages/shared) | 零依赖的共享工具 |
|
|
228
|
+
|
|
229
|
+
### 范式层
|
|
230
|
+
|
|
231
|
+
六种组织状态的方式,共享 core 的运行时,可在同一个依赖图中混用。
|
|
232
|
+
|
|
233
|
+
| 包名 | 版本 | 在线文档 | 功能 |
|
|
234
|
+
| ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | ---------------------------------- |
|
|
235
|
+
| [`@slux/store`](https://github.com/itmanyong/slux/tree/main/packages/store) | [](https://www.npmjs.com/package/@slux/store) [](https://npmx.dev/package/@slux/store) | [在线文档](https://itmanyong.github.io/slux/packages/store) | 状态与 action 集中管理,支持中间件 |
|
|
236
|
+
| [`@slux/atom`](https://github.com/itmanyong/slux/tree/main/packages/atom) | [](https://www.npmjs.com/package/@slux/atom) [](https://npmx.dev/package/@slux/atom) | [在线文档](https://itmanyong.github.io/slux/packages/atom) | 细粒度原子状态与派生 |
|
|
237
|
+
| [`@slux/proxy`](https://github.com/itmanyong/slux/tree/main/packages/proxy) | [](https://www.npmjs.com/package/@slux/proxy) [](https://npmx.dev/package/@slux/proxy) | [在线文档](https://itmanyong.github.io/slux/packages/proxy) | 可变代理写入与只读快照 |
|
|
238
|
+
| [`@slux/flux`](https://github.com/itmanyong/slux/tree/main/packages/flux) | [](https://www.npmjs.com/package/@slux/flux) [](https://npmx.dev/package/@slux/flux) | [在线文档](https://itmanyong.github.io/slux/packages/flux) | reducer + dispatch 范式 |
|
|
239
|
+
| [`@slux/state-machine`](https://github.com/itmanyong/slux/tree/main/packages/state-machine) | [](https://www.npmjs.com/package/@slux/state-machine) [](https://npmx.dev/package/@slux/state-machine) | [在线文档](https://itmanyong.github.io/slux/packages/state-machine) | 平面有限状态机 |
|
|
240
|
+
| [`@slux/rxjs`](https://github.com/itmanyong/slux/tree/main/packages/rxjs) | [](https://www.npmjs.com/package/@slux/rxjs) [](https://npmx.dev/package/@slux/rxjs) | [在线文档](https://itmanyong.github.io/slux/packages/rxjs) | Observable 与状态双向桥接 |
|
|
241
|
+
|
|
242
|
+
### 中间件层
|
|
243
|
+
|
|
244
|
+
挂载到 Store 的横切能力,五个包共用同一套契约。
|
|
245
|
+
|
|
246
|
+
| 包名 | 版本 | 在线文档 | 功能 |
|
|
247
|
+
| ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | -------------------- |
|
|
248
|
+
| [`@slux/storage`](https://github.com/itmanyong/slux/tree/main/packages/storage) | [](https://www.npmjs.com/package/@slux/storage) [](https://npmx.dev/package/@slux/storage) | [在线文档](https://itmanyong.github.io/slux/packages/storage) | 状态持久化与恢复 |
|
|
249
|
+
| [`@slux/history`](https://github.com/itmanyong/slux/tree/main/packages/history) | [](https://www.npmjs.com/package/@slux/history) [](https://npmx.dev/package/@slux/history) | [在线文档](https://itmanyong.github.io/slux/packages/history) | 撤销与重做 |
|
|
250
|
+
| [`@slux/tab-sync`](https://github.com/itmanyong/slux/tree/main/packages/tab-sync) | [](https://www.npmjs.com/package/@slux/tab-sync) [](https://npmx.dev/package/@slux/tab-sync) | [在线文档](https://itmanyong.github.io/slux/packages/tab-sync) | 跨标签页状态同步 |
|
|
251
|
+
| [`@slux/telemetry`](https://github.com/itmanyong/slux/tree/main/packages/telemetry) | [](https://www.npmjs.com/package/@slux/telemetry) [](https://npmx.dev/package/@slux/telemetry) | [在线文档](https://itmanyong.github.io/slux/packages/telemetry) | 状态变化与订阅遥测 |
|
|
252
|
+
| [`@slux/devtools`](https://github.com/itmanyong/slux/tree/main/packages/devtools) | [](https://www.npmjs.com/package/@slux/devtools) [](https://npmx.dev/package/@slux/devtools) | [在线文档](https://itmanyong.github.io/slux/packages/devtools) | 调试工具、日志与检查 |
|
|
253
|
+
|
|
254
|
+
### 框架层
|
|
255
|
+
|
|
256
|
+
十二个绑定包都提供 core 主入口与六个范式子入口,使用框架原生响应式与生命周期。范式包是**可选** peer,只装实际使用的;`@slux/core` 与框架本身是**必需** peer。
|
|
257
|
+
|
|
258
|
+
| 包名 | 版本 | 在线文档 | 适配框架 | 适配版本 | 功能 |
|
|
259
|
+
| ------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | ----------------------------------------------- | ------------------------------------------ | ---------------------- |
|
|
260
|
+
| [`@slux/react`](https://github.com/itmanyong/slux/tree/main/packages/react) | [](https://www.npmjs.com/package/@slux/react) [](https://npmx.dev/package/@slux/react) | [在线文档](https://itmanyong.github.io/slux/packages/react) | [React](https://github.com/react/react) | `^18.0.0 ‖ ^19.0.0` | React 组件状态绑定 |
|
|
261
|
+
| [`@slux/vue`](https://github.com/itmanyong/slux/tree/main/packages/vue) | [](https://www.npmjs.com/package/@slux/vue) [](https://npmx.dev/package/@slux/vue) | [在线文档](https://itmanyong.github.io/slux/packages/vue) | [Vue](https://github.com/vuejs/core) | `>= 3.2.0` | Vue 组合式 API 绑定 |
|
|
262
|
+
| [`@slux/solid`](https://github.com/itmanyong/slux/tree/main/packages/solid) | [](https://www.npmjs.com/package/@slux/solid) [](https://npmx.dev/package/@slux/solid) | [在线文档](https://itmanyong.github.io/slux/packages/solid) | [Solid](https://github.com/solidjs/solid) | `>= 1.0.0` | Solid 细粒度响应式绑定 |
|
|
263
|
+
| [`@slux/svelte`](https://github.com/itmanyong/slux/tree/main/packages/svelte) | [](https://www.npmjs.com/package/@slux/svelte) [](https://npmx.dev/package/@slux/svelte) | [在线文档](https://itmanyong.github.io/slux/packages/svelte) | [Svelte](https://github.com/sveltejs/svelte) | `>= 4.0.0` | Svelte 原生 store 绑定 |
|
|
264
|
+
| [`@slux/angular`](https://github.com/itmanyong/slux/tree/main/packages/angular) | [](https://www.npmjs.com/package/@slux/angular) [](https://npmx.dev/package/@slux/angular) | [在线文档](https://itmanyong.github.io/slux/packages/angular) | [Angular](https://github.com/angular/angular) | `@angular/core >= 16.0.0`、`rxjs >= 7.8.0` | Angular 注入上下文绑定 |
|
|
265
|
+
| [`@slux/preact`](https://github.com/itmanyong/slux/tree/main/packages/preact) | [](https://www.npmjs.com/package/@slux/preact) [](https://npmx.dev/package/@slux/preact) | [在线文档](https://itmanyong.github.io/slux/packages/preact) | [Preact](https://github.com/preactjs/preact) | `>= 10.5.0` | Preact 组件状态绑定 |
|
|
266
|
+
| [`@slux/ripple`](https://github.com/itmanyong/slux/tree/main/packages/ripple) | [](https://www.npmjs.com/package/@slux/ripple) [](https://npmx.dev/package/@slux/ripple) | [在线文档](https://itmanyong.github.io/slux/packages/ripple) | [Ripple](https://github.com/Ripple-TS/ripple) | `>= 0.6.0` | Ripple 组件状态绑定 |
|
|
267
|
+
| [`@slux/inferno`](https://github.com/itmanyong/slux/tree/main/packages/inferno) | [](https://www.npmjs.com/package/@slux/inferno) [](https://npmx.dev/package/@slux/inferno) | [在线文档](https://itmanyong.github.io/slux/packages/inferno) | [Inferno](https://github.com/infernojs/inferno) | `>= 7.0.0` | Inferno 组件状态绑定 |
|
|
268
|
+
| [`@slux/octane`](https://github.com/itmanyong/slux/tree/main/packages/octane) | [](https://www.npmjs.com/package/@slux/octane) [](https://npmx.dev/package/@slux/octane) | [在线文档](https://itmanyong.github.io/slux/packages/octane) | [Octane](https://github.com/octanejs/octane) | `>= 0.16.0` | Octane 编译器绑定 |
|
|
269
|
+
| [`@slux/vitarx`](https://github.com/itmanyong/slux/tree/main/packages/vitarx) | [](https://www.npmjs.com/package/@slux/vitarx) [](https://npmx.dev/package/@slux/vitarx) | [在线文档](https://itmanyong.github.io/slux/packages/vitarx) | [Vitarx](https://github.com/vitarx-lib/core) | `>= 4.0.0` | Vitarx 组件状态绑定 |
|
|
270
|
+
| [`@slux/actview`](https://github.com/itmanyong/slux/tree/main/packages/actview) | [](https://www.npmjs.com/package/@slux/actview) [](https://npmx.dev/package/@slux/actview) | [在线文档](https://itmanyong.github.io/slux/packages/actview) | [ActView](https://github.com/actview/actview) | `>= 1.0.0` | ActView 组件状态绑定 |
|
|
271
|
+
| [`@slux/viewfly`](https://github.com/itmanyong/slux/tree/main/packages/viewfly) | [](https://www.npmjs.com/package/@slux/viewfly) [](https://npmx.dev/package/@slux/viewfly) | [在线文档](https://itmanyong.github.io/slux/packages/viewfly) | [Viewfly](https://github.com/viewfly/viewfly) | `>= 3.0.0` | Viewfly 组件状态绑定 |
|
|
272
|
+
|
|
273
|
+
格式差异:**Octane** 的公开入口是 TypeScript 源码,需消费端 Octane 编译器处理且不提供 CJS;**Ripple** 只发布 ESM,另有 `./server` 服务端入口。其余边界见各包文档。
|
|
274
|
+
|
|
275
|
+
### 插件层
|
|
276
|
+
|
|
277
|
+
**规划中**
|
|
278
|
+
|
|
279
|
+
| 包名 | 版本 | 在线文档 | 功能 |
|
|
280
|
+
| ---- | ---- | -------- | ---- |
|
|
281
|
+
| — | — | — | — |
|
|
282
|
+
|
|
283
|
+
<!-- package-navigation:end -->
|
package/dist/atom.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_,r)=>{var t=(_,r)=>{for(var t in _)__webpack_require__.o(_,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,[r]:_[t]})};t(_,"get"),t(r,"value")},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{useAtom:()=>useAtom,useAtomValue:()=>useAtomValue,useSetAtom:()=>useSetAtom});const external_solid_js_namespaceObject=require("solid-js"),web_namespaceObject=require("solid-js/web"),core_namespaceObject=require("@slux/core");function useSignal(e){if(!(0,external_solid_js_namespaceObject.getOwner)())throw Error("useSignal 必须在 Solid 组件或 createRoot 中调用");let[_,r]=(0,external_solid_js_namespaceObject.createSignal)(e.get());if(web_namespaceObject.isServer)return _;let t=e.subscribe(e=>r(()=>e)),o=(0,core_namespaceObject.effect)(()=>{e.get()});return r(()=>e.get()),(0,external_solid_js_namespaceObject.onCleanup)(()=>{t(),o()}),_}function useAtomValue(e){return useSignal(e)}function useSetAtom(e){return _=>e.set(_)}function useAtom(e){return[useAtomValue(e),useSetAtom(e)]}for(var __rspack_i in exports.useAtom=__webpack_exports__.useAtom,exports.useAtomValue=__webpack_exports__.useAtomValue,exports.useSetAtom=__webpack_exports__.useSetAtom,__webpack_exports__)-1===["useAtom","useAtomValue","useSetAtom"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
|
|
2
|
+
//# sourceMappingURL=atom.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atom.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../src/use-signal.ts","../src/atom.ts"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { createSignal, getOwner, onCleanup } from \"solid-js\";\nimport type { Accessor } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { effect } from \"@slux/core\";\nimport type { Subscribable } from \"@slux/core\";\n\nexport function useSignal<T>(source: Subscribable<T>): Accessor<T> {\n if (!getOwner()) throw new Error(\"useSignal 必须在 Solid 组件或 createRoot 中调用\");\n const [value, setValue] = createSignal(source.get());\n if (isServer) return value;\n const unsubscribe = source.subscribe((next) => setValue(() => next));\n // 主动刷新惰性 computed,通知由 subscribe 统一送入 Solid。\n const dispose = effect(() => {\n source.get();\n });\n setValue(() => source.get());\n onCleanup(() => {\n unsubscribe();\n dispose();\n });\n return value;\n}\n","import type { Accessor } from \"solid-js\";\nimport type { AnyReadableAtom, Atom } from \"@slux/atom\";\nimport { useSignal } from \"./use-signal.js\";\n\nexport function useAtomValue<T>(atom: AnyReadableAtom<T>): Accessor<T> {\n return useSignal(atom);\n}\nexport function useSetAtom<T>(atom: Atom<T>): (value: T) => void {\n return (value) => atom.set(value);\n}\nexport function useAtom<T>(atom: Atom<T>): [Accessor<T>, (value: T) => void] {\n return [useAtomValue(atom), useSetAtom(atom)];\n}\n"],"names":["__webpack_require__","e","Object","Symbol","useSignal","source","getOwner","Error","value","setValue","createSignal","isServer","unsubscribe","next","dispose","effect","onCleanup","useAtomValue","atom","useSetAtom","useAtom"],"mappings":"wPAAAA,CAAAA,oBAAoB,CAAC,CAAG,CAACC,EAAS,EAAS,KAC1C,IAAI,EAAS,CAAC,EAAM,KACnB,IAAI,IAAI,KAAO,EACXD,oBAAoB,CAAC,CAAC,EAAM,IAAQ,CAACA,oBAAoB,CAAC,CAACC,EAAS,IACtEC,OAAO,cAAc,CAACD,EAAS,EAAK,CAAE,WAAY,GAAM,CAAC,EAAK,CAAE,CAAI,CAAC,EAAI,AAAC,EAG7E,EACA,EAAO,EAAS,OAChB,EAAO,EAAQ,QAChB,ECVAD,oBAAoB,CAAC,CAAG,CAAC,EAAK,IAAUE,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAK,GCClFF,oBAAoB,CAAC,CAAG,AAACC,IACrB,AAAkB,IAAlB,OAAOE,QAA0BA,OAAO,WAAW,EACrDD,OAAO,cAAc,CAACD,EAASE,OAAO,WAAW,CAAE,CAAE,MAAO,QAAS,GAEtED,OAAO,cAAc,CAACD,EAAS,aAAc,CAAE,MAAO,EAAK,EAC5D,E,kVCAO,SAASG,UAAaC,CAAuB,EAClD,GAAI,CAACC,AAAAA,GAAAA,kCAAAA,QAAAA,AAAAA,IAAY,MAAM,AAAIC,MAAM,0CACjC,GAAM,CAACC,EAAOC,EAAS,CAAGC,AAAAA,GAAAA,kCAAAA,YAAAA,AAAAA,EAAaL,EAAO,GAAG,IACjD,GAAIM,oBAAAA,QAAQA,CAAE,OAAOH,EACrB,IAAMI,EAAcP,EAAO,SAAS,CAAC,AAACQ,GAASJ,EAAS,IAAMI,IAExDC,EAAUC,AAAAA,GAAAA,qBAAAA,MAAAA,AAAAA,EAAO,KACrBV,EAAO,GAAG,EACZ,GAMA,OALAI,EAAS,IAAMJ,EAAO,GAAG,IACzBW,AAAAA,GAAAA,kCAAAA,SAAAA,AAAAA,EAAU,KACRJ,IACAE,GACF,GACON,CACT,CCjBO,SAASS,aAAgBC,CAAwB,EACtD,OAAOd,UAAUc,EACnB,CACO,SAASC,WAAcD,CAAa,EACzC,OAAO,AAACV,GAAUU,EAAK,GAAG,CAACV,EAC7B,CACO,SAASY,QAAWF,CAAa,EACtC,MAAO,CAACD,aAAaC,GAAOC,WAAWD,GAAM,AAC/C,C"}
|
package/dist/atom.d.cts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Accessor } from 'solid-js';
|
|
2
|
+
import type { AnyReadableAtom } from '@slux/atom';
|
|
3
|
+
import type { Atom } from '@slux/atom';
|
|
4
|
+
|
|
5
|
+
export declare function useAtom<T>(atom: Atom<T>): [Accessor<T>, (value: T) => void];
|
|
6
|
+
|
|
7
|
+
export declare function useAtomValue<T>(atom: AnyReadableAtom<T>): Accessor<T>;
|
|
8
|
+
|
|
9
|
+
export declare function useSetAtom<T>(atom: Atom<T>): (value: T) => void;
|
|
10
|
+
|
|
11
|
+
export { }
|
package/dist/atom.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Accessor } from 'solid-js';
|
|
2
|
+
import type { AnyReadableAtom } from '@slux/atom';
|
|
3
|
+
import type { Atom } from '@slux/atom';
|
|
4
|
+
|
|
5
|
+
export declare function useAtom<T>(atom: Atom<T>): [Accessor<T>, (value: T) => void];
|
|
6
|
+
|
|
7
|
+
export declare function useAtomValue<T>(atom: AnyReadableAtom<T>): Accessor<T>;
|
|
8
|
+
|
|
9
|
+
export declare function useSetAtom<T>(atom: Atom<T>): (value: T) => void;
|
|
10
|
+
|
|
11
|
+
export { }
|
package/dist/atom.js
ADDED
package/dist/atom.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atom.js","sources":["../src/atom.ts"],"sourcesContent":["import type { Accessor } from \"solid-js\";\nimport type { AnyReadableAtom, Atom } from \"@slux/atom\";\nimport { useSignal } from \"./use-signal.js\";\n\nexport function useAtomValue<T>(atom: AnyReadableAtom<T>): Accessor<T> {\n return useSignal(atom);\n}\nexport function useSetAtom<T>(atom: Atom<T>): (value: T) => void {\n return (value) => atom.set(value);\n}\nexport function useAtom<T>(atom: Atom<T>): [Accessor<T>, (value: T) => void] {\n return [useAtomValue(atom), useSetAtom(atom)];\n}\n"],"names":["useAtomValue","atom","useSignal","useSetAtom","value","useAtom"],"mappings":"iDAIO,SAASA,EAAgBC,CAAwB,EACtD,OAAOC,EAAUD,EACnB,CACO,SAASE,EAAcF,CAAa,EACzC,OAAO,AAACG,GAAUH,EAAK,GAAG,CAACG,EAC7B,CACO,SAASC,EAAWJ,CAAa,EACtC,MAAO,CAACD,EAAaC,GAAOE,EAAWF,GAAM,AAC/C,Q"}
|
package/dist/e~0.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createSignal as r,getOwner as o,onCleanup as e}from"solid-js";import{isServer as t}from"solid-js/web";import{effect as i}from"@slux/core";function s(s){if(!o())throw Error("useSignal 必须在 Solid 组件或 createRoot 中调用");let[l,u]=r(s.get());if(t)return l;let f=s.subscribe(r=>u(()=>r)),m=i(()=>{s.get()});return u(()=>s.get()),e(()=>{f(),m()}),l}export{s as useSignal};
|
|
2
|
+
//# sourceMappingURL=e~0.js.map
|
package/dist/e~0.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e~0.js","sources":["../src/use-signal.ts"],"sourcesContent":["import { createSignal, getOwner, onCleanup } from \"solid-js\";\nimport type { Accessor } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { effect } from \"@slux/core\";\nimport type { Subscribable } from \"@slux/core\";\n\nexport function useSignal<T>(source: Subscribable<T>): Accessor<T> {\n if (!getOwner()) throw new Error(\"useSignal 必须在 Solid 组件或 createRoot 中调用\");\n const [value, setValue] = createSignal(source.get());\n if (isServer) return value;\n const unsubscribe = source.subscribe((next) => setValue(() => next));\n // 主动刷新惰性 computed,通知由 subscribe 统一送入 Solid。\n const dispose = effect(() => {\n source.get();\n });\n setValue(() => source.get());\n onCleanup(() => {\n unsubscribe();\n dispose();\n });\n return value;\n}\n"],"names":["useSignal","source","getOwner","Error","value","setValue","createSignal","isServer","unsubscribe","next","dispose","effect","onCleanup"],"mappings":"iJAMO,SAASA,EAAaC,CAAuB,EAClD,GAAI,CAACC,IAAY,MAAM,AAAIC,MAAM,0CACjC,GAAM,CAACC,EAAOC,EAAS,CAAGC,EAAaL,EAAO,GAAG,IACjD,GAAIM,EAAU,OAAOH,EACrB,IAAMI,EAAcP,EAAO,SAAS,CAAC,AAACQ,GAASJ,EAAS,IAAMI,IAExDC,EAAUC,EAAO,KACrBV,EAAO,GAAG,EACZ,GAMA,OALAI,EAAS,IAAMJ,EAAO,GAAG,IACzBW,EAAU,KACRJ,IACAE,GACF,GACON,CACT,Q"}
|
package/dist/flux.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_,r)=>{var t=(_,r)=>{for(var t in _)__webpack_require__.o(_,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,[r]:_[t]})};t(_,"get"),t(r,"value")},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{useFluxStore:()=>useFluxStore});const external_solid_js_namespaceObject=require("solid-js"),web_namespaceObject=require("solid-js/web"),core_namespaceObject=require("@slux/core");function useSignal(e){if(!(0,external_solid_js_namespaceObject.getOwner)())throw Error("useSignal 必须在 Solid 组件或 createRoot 中调用");let[_,r]=(0,external_solid_js_namespaceObject.createSignal)(e.get());if(web_namespaceObject.isServer)return _;let t=e.subscribe(e=>r(()=>e)),a=(0,core_namespaceObject.effect)(()=>{e.get()});return r(()=>e.get()),(0,external_solid_js_namespaceObject.onCleanup)(()=>{t(),a()}),_}function useFluxStore(e){return useSignal(e)}for(var __rspack_i in exports.useFluxStore=__webpack_exports__.useFluxStore,__webpack_exports__)-1===["useFluxStore"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
|
|
2
|
+
//# sourceMappingURL=flux.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flux.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../src/use-signal.ts","../src/flux.ts"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { createSignal, getOwner, onCleanup } from \"solid-js\";\nimport type { Accessor } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { effect } from \"@slux/core\";\nimport type { Subscribable } from \"@slux/core\";\n\nexport function useSignal<T>(source: Subscribable<T>): Accessor<T> {\n if (!getOwner()) throw new Error(\"useSignal 必须在 Solid 组件或 createRoot 中调用\");\n const [value, setValue] = createSignal(source.get());\n if (isServer) return value;\n const unsubscribe = source.subscribe((next) => setValue(() => next));\n // 主动刷新惰性 computed,通知由 subscribe 统一送入 Solid。\n const dispose = effect(() => {\n source.get();\n });\n setValue(() => source.get());\n onCleanup(() => {\n unsubscribe();\n dispose();\n });\n return value;\n}\n","import type { Accessor } from \"solid-js\";\nimport type { FluxAction, FluxStore } from \"@slux/flux\";\nimport { useSignal } from \"./use-signal.js\";\n\nexport function useFluxStore<State, Action extends FluxAction>(store: FluxStore<State, Action>): Accessor<State> {\n return useSignal(store);\n}\n"],"names":["__webpack_require__","e","Object","Symbol","useSignal","source","getOwner","Error","value","setValue","createSignal","isServer","unsubscribe","next","dispose","effect","onCleanup","useFluxStore","store"],"mappings":"wPAAAA,CAAAA,oBAAoB,CAAC,CAAG,CAACC,EAAS,EAAS,KAC1C,IAAI,EAAS,CAAC,EAAM,KACnB,IAAI,IAAI,KAAO,EACXD,oBAAoB,CAAC,CAAC,EAAM,IAAQ,CAACA,oBAAoB,CAAC,CAACC,EAAS,IACtEC,OAAO,cAAc,CAACD,EAAS,EAAK,CAAE,WAAY,GAAM,CAAC,EAAK,CAAE,CAAI,CAAC,EAAI,AAAC,EAG7E,EACA,EAAO,EAAS,OAChB,EAAO,EAAQ,QAChB,ECVAD,oBAAoB,CAAC,CAAG,CAAC,EAAK,IAAUE,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAK,GCClFF,oBAAoB,CAAC,CAAG,AAACC,IACrB,AAAkB,IAAlB,OAAOE,QAA0BA,OAAO,WAAW,EACrDD,OAAO,cAAc,CAACD,EAASE,OAAO,WAAW,CAAE,CAAE,MAAO,QAAS,GAEtED,OAAO,cAAc,CAACD,EAAS,aAAc,CAAE,MAAO,EAAK,EAC5D,E,oSCAO,SAASG,UAAaC,CAAuB,EAClD,GAAI,CAACC,AAAAA,GAAAA,kCAAAA,QAAAA,AAAAA,IAAY,MAAM,AAAIC,MAAM,0CACjC,GAAM,CAACC,EAAOC,EAAS,CAAGC,AAAAA,GAAAA,kCAAAA,YAAAA,AAAAA,EAAaL,EAAO,GAAG,IACjD,GAAIM,oBAAAA,QAAQA,CAAE,OAAOH,EACrB,IAAMI,EAAcP,EAAO,SAAS,CAAC,AAACQ,GAASJ,EAAS,IAAMI,IAExDC,EAAUC,AAAAA,GAAAA,qBAAAA,MAAAA,AAAAA,EAAO,KACrBV,EAAO,GAAG,EACZ,GAMA,OALAI,EAAS,IAAMJ,EAAO,GAAG,IACzBW,AAAAA,GAAAA,kCAAAA,SAAAA,AAAAA,EAAU,KACRJ,IACAE,GACF,GACON,CACT,CCjBO,SAASS,aAA+CC,CAA+B,EAC5F,OAAOd,UAAUc,EACnB,C"}
|
package/dist/flux.d.cts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Accessor } from 'solid-js';
|
|
2
|
+
import type { FluxAction } from '@slux/flux';
|
|
3
|
+
import type { FluxStore } from '@slux/flux';
|
|
4
|
+
|
|
5
|
+
export declare function useFluxStore<State, Action extends FluxAction>(store: FluxStore<State, Action>): Accessor<State>;
|
|
6
|
+
|
|
7
|
+
export { }
|
package/dist/flux.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Accessor } from 'solid-js';
|
|
2
|
+
import type { FluxAction } from '@slux/flux';
|
|
3
|
+
import type { FluxStore } from '@slux/flux';
|
|
4
|
+
|
|
5
|
+
export declare function useFluxStore<State, Action extends FluxAction>(store: FluxStore<State, Action>): Accessor<State>;
|
|
6
|
+
|
|
7
|
+
export { }
|
package/dist/flux.js
ADDED
package/dist/flux.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flux.js","sources":["../src/flux.ts"],"sourcesContent":["import type { Accessor } from \"solid-js\";\nimport type { FluxAction, FluxStore } from \"@slux/flux\";\nimport { useSignal } from \"./use-signal.js\";\n\nexport function useFluxStore<State, Action extends FluxAction>(store: FluxStore<State, Action>): Accessor<State> {\n return useSignal(store);\n}\n"],"names":["useFluxStore","store","useSignal"],"mappings":"iDAIO,SAASA,EAA+CC,CAA+B,EAC5F,OAAOC,EAAUD,EACnB,Q"}
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_modules__={D(e,r,_){var t=_("o");_.d(r,{},{useStore:function(e,r,_=Object.is){let o=r??(e=>e),p=o(e.getState()),c=()=>{let r=o(e.getState());return _(p,r)||(p=r),p};return(0,t.U)({get:c,subscribe:r=>e.subscribe(()=>r(c()))})}})},o(e,r,_){var t=_("N"),o=_("W"),p=_("g");_.d(r,{},{U:function(e){if(!(0,t.getOwner)())throw Error("useSignal 必须在 Solid 组件或 createRoot 中调用");let[r,_]=(0,t.createSignal)(e.get());if(o.isServer)return r;let c=e.subscribe(e=>_(()=>e)),u=(0,p.effect)(()=>{e.get()});return _(()=>e.get()),(0,t.onCleanup)(()=>{c(),u()}),r}})},g(e){e.exports=require("@slux/core")},N(e){e.exports=require("solid-js")},W(e){e.exports=require("solid-js/web")}},__webpack_module_cache__={};function __webpack_require__(e){var r=__webpack_module_cache__[e];if(void 0!==r)return r.exports;var _=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](_,_.exports,__webpack_require__),_.exports}__webpack_require__.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(r,{a:r}),r},__webpack_require__.d=(e,r,_)=>{var t=(r,_)=>{for(var t in r)__webpack_require__.o(r,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,[_]:r[t]})};t(r,"get"),t(_,"value")},__webpack_require__.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};for(var __rspack_i in(()=>{__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ScopeContext:()=>t,ScopeProvider:()=>o,createAutoImportApis:()=>a,useScope:()=>p,useSignal:()=>e.U,useStore:()=>r.useStore});var e=__webpack_require__("o"),r=__webpack_require__("D"),_=__webpack_require__("N");let t=(0,_.createContext)();function o(e){return t.Provider({value:e.scope,get children(){return e.children}})}function p(){return(0,_.useContext)(t)}let c=require("@slux/shared"),u=["ScopeContext","ScopeProvider","useScope","useSignal","useStore"],a=(e="")=>(0,c.generateBatchAutoImports)([{prefix:e,fromName:"@slux/solid",imports:u}])})(),exports.ScopeContext=__webpack_exports__.ScopeContext,exports.ScopeProvider=__webpack_exports__.ScopeProvider,exports.createAutoImportApis=__webpack_exports__.createAutoImportApis,exports.useScope=__webpack_exports__.useScope,exports.useSignal=__webpack_exports__.useSignal,exports.useStore=__webpack_exports__.useStore,__webpack_exports__)-1===["ScopeContext","ScopeProvider","createAutoImportApis","useScope","useSignal","useStore"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/store.ts","../src/use-signal.ts","webpack://webpack/runtime/compat_get_default_export","webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../src/scope.ts","../src/auto-import-api.ts"],"sourcesContent":["import type { Accessor } from \"solid-js\";\nimport type { StoreApi } from \"@slux/store\";\nimport { useSignal } from \"./use-signal.js\";\n\nexport function useStore<T>(store: StoreApi<T>): Accessor<T>;\nexport function useStore<T, U>(store: StoreApi<T>, selector: (state: T) => U, equals?: (a: U, b: U) => boolean): Accessor<U>;\nexport function useStore<T, U = T>(store: StoreApi<T>, selector?: (state: T) => U, equals: (a: U, b: U) => boolean = Object.is): Accessor<U> {\n const select = selector ?? ((state: T) => state as unknown as U);\n let current = select(store.getState());\n const read = () => {\n const next = select(store.getState());\n if (!equals(current, next)) current = next;\n return current;\n };\n return useSignal({\n get: read,\n subscribe: (callback) => store.subscribe(() => callback(read())),\n });\n}\n","import { createSignal, getOwner, onCleanup } from \"solid-js\";\nimport type { Accessor } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { effect } from \"@slux/core\";\nimport type { Subscribable } from \"@slux/core\";\n\nexport function useSignal<T>(source: Subscribable<T>): Accessor<T> {\n if (!getOwner()) throw new Error(\"useSignal 必须在 Solid 组件或 createRoot 中调用\");\n const [value, setValue] = createSignal(source.get());\n if (isServer) return value;\n const unsubscribe = source.subscribe((next) => setValue(() => next));\n // 主动刷新惰性 computed,通知由 subscribe 统一送入 Solid。\n const dispose = effect(() => {\n source.get();\n });\n setValue(() => source.get());\n onCleanup(() => {\n unsubscribe();\n dispose();\n });\n return value;\n}\n","// getDefaultExport function for compatibility with non-ESM modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};\n","__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { createContext, useContext } from \"solid-js\";\nimport type { JSX } from \"solid-js\";\nimport type { Scope } from \"@slux/core\";\n\nexport type ScopeProviderProps = {\n readonly scope: Scope;\n readonly children: JSX.Element;\n};\nexport const ScopeContext = createContext<Scope>();\nexport function ScopeProvider(props: ScopeProviderProps): JSX.Element {\n return ScopeContext.Provider({\n value: props.scope,\n get children() {\n return props.children;\n },\n });\n}\nexport function useScope(): Scope | undefined {\n return useContext(ScopeContext);\n}\n","import { generateBatchAutoImports } from \"@slux/shared\";\n\nconst allImportApis: string[] = [\"ScopeContext\", \"ScopeProvider\", \"useScope\", \"useSignal\", \"useStore\"];\n\nexport const createAutoImportApis = (prefix: string = \"\") => {\n return generateBatchAutoImports([\n {\n prefix,\n fromName: \"@slux/solid\",\n imports: allImportApis,\n },\n ]);\n};\n"],"names":["store","selector","equals","Object","select","state","current","read","next","useSignal","callback","source","getOwner","Error","value","setValue","createSignal","isServer","unsubscribe","dispose","effect","onCleanup","__webpack_require__","e","Symbol","ScopeContext","createContext","ScopeProvider","props","useScope","useContext","allImportApis","createAutoImportApis","prefix","generateBatchAutoImports"],"mappings":"gSAMO,SAA4BA,CAAkB,CAAEC,CAA0B,CAAEC,EAAkCC,OAAO,EAAE,EAC5H,IAAMC,EAASH,GAAc,CAAAI,GAAaA,CAAI,EAC1CC,EAAUF,EAAOJ,EAAM,QAAQ,IAC7BO,EAAO,KACX,IAAMC,EAAOJ,EAAOJ,EAAM,QAAQ,IAElC,OADI,AAACE,EAAOI,EAASE,IAAOF,CAAAA,EAAUE,CAAG,EAClCF,CACT,EACA,MAAOG,AAAAA,GAAAA,EAAAA,CAAAA,AAAAA,EAAU,CACf,IAAKF,EACL,UAAW,AAACG,GAAaV,EAAM,SAAS,CAAC,IAAMU,EAASH,KAC1D,EACF,C,wDCZO,SAAsBI,CAAuB,EAClD,GAAI,CAACC,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,IAAY,MAAM,AAAIC,MAAM,0CACjC,GAAM,CAACC,EAAOC,EAAS,CAAGC,AAAAA,GAAAA,EAAAA,YAAAA,AAAAA,EAAaL,EAAO,GAAG,IACjD,GAAIM,EAAAA,QAAQA,CAAE,OAAOH,EACrB,IAAMI,EAAcP,EAAO,SAAS,CAAC,AAACH,GAASO,EAAS,IAAMP,IAExDW,EAAUC,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,EAAO,KACrBT,EAAO,GAAG,EACZ,GAMA,OALAI,EAAS,IAAMJ,EAAO,GAAG,IACzBU,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACRH,IACAC,GACF,GACOL,CACT,C,4WCpBAQ,oBAAoB,CAAC,CAAG,AAAC,IACxB,IAAI,EAAS,GAAU,EAAO,UAAU,CACvC,IAAO,EAAO,OAAU,CACxB,IAAO,EAER,OADAA,oBAAoB,CAAC,CAAC,EAAQ,CAAE,EAAG,CAAO,GACnC,CACR,ECPAA,oBAAoB,CAAC,CAAG,CAACC,EAAS,EAAS,KAC1C,IAAI,EAAS,CAAC,EAAM,KACnB,IAAI,IAAI,KAAO,EACXD,oBAAoB,CAAC,CAAC,EAAM,IAAQ,CAACA,oBAAoB,CAAC,CAACC,EAAS,IACtEpB,OAAO,cAAc,CAACoB,EAAS,EAAK,CAAE,WAAY,GAAM,CAAC,EAAK,CAAE,CAAI,CAAC,EAAI,AAAC,EAG7E,EACA,EAAO,EAAS,OAChB,EAAO,EAAQ,QAChB,ECVAD,oBAAoB,CAAC,CAAG,CAAC,EAAK,IAAUnB,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAK,GCClFmB,oBAAoB,CAAC,CAAG,AAACC,IACrB,AAAkB,IAAlB,OAAOC,QAA0BA,OAAO,WAAW,EACrDrB,OAAO,cAAc,CAACoB,EAASC,OAAO,WAAW,CAAE,CAAE,MAAO,QAAS,GAEtErB,OAAO,cAAc,CAACoB,EAAS,aAAc,CAAE,MAAO,EAAK,EAC5D,E,8VCEO,IAAME,EAAeC,AAAAA,GAAAA,EAAAA,aAAAA,AAAAA,IACrB,SAASC,EAAcC,CAAyB,EACrD,OAAOH,EAAa,QAAQ,CAAC,CAC3B,MAAOG,EAAM,KAAK,CAClB,IAAI,WACF,OAAOA,EAAM,QAAQ,AACvB,CACF,EACF,CACO,SAASC,IACd,MAAOC,AAAAA,GAAAA,EAAAA,UAAAA,AAAAA,EAAWL,EACpB,C,8BCjBMM,EAA0B,CAAC,eAAgB,gBAAiB,WAAY,YAAa,WAAW,CAEzFC,EAAuB,CAACC,EAAiB,EAAE,GAC/CC,AAAAA,GAAAA,EAAAA,wBAAAA,AAAAA,EAAyB,CAC9B,CACED,OAAAA,EACA,SAAU,cACV,QAASF,CACX,EACD,C"}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Accessor } from 'solid-js';
|
|
2
|
+
import { Context } from 'solid-js';
|
|
3
|
+
import type { JSX } from 'solid-js';
|
|
4
|
+
import type { Scope } from '@slux/core';
|
|
5
|
+
import type { StoreApi } from '@slux/store';
|
|
6
|
+
import type { Subscribable } from '@slux/core';
|
|
7
|
+
|
|
8
|
+
export declare const createAutoImportApis: (prefix?: string) => {
|
|
9
|
+
[x: string]: (string | [string, string])[];
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export declare const ScopeContext: Context<Scope | undefined>;
|
|
13
|
+
|
|
14
|
+
export declare function ScopeProvider(props: ScopeProviderProps): JSX.Element;
|
|
15
|
+
|
|
16
|
+
export declare type ScopeProviderProps = {
|
|
17
|
+
readonly scope: Scope;
|
|
18
|
+
readonly children: JSX.Element;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export declare function useScope(): Scope | undefined;
|
|
22
|
+
|
|
23
|
+
export declare function useSignal<T>(source: Subscribable<T>): Accessor<T>;
|
|
24
|
+
|
|
25
|
+
export declare function useStore<T>(store: StoreApi<T>): Accessor<T>;
|
|
26
|
+
|
|
27
|
+
export declare function useStore<T, U>(store: StoreApi<T>, selector: (state: T) => U, equals?: (a: U, b: U) => boolean): Accessor<U>;
|
|
28
|
+
|
|
29
|
+
export { }
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Accessor } from 'solid-js';
|
|
2
|
+
import { Context } from 'solid-js';
|
|
3
|
+
import type { JSX } from 'solid-js';
|
|
4
|
+
import type { Scope } from '@slux/core';
|
|
5
|
+
import type { StoreApi } from '@slux/store';
|
|
6
|
+
import type { Subscribable } from '@slux/core';
|
|
7
|
+
|
|
8
|
+
export declare const createAutoImportApis: (prefix?: string) => {
|
|
9
|
+
[x: string]: (string | [string, string])[];
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export declare const ScopeContext: Context<Scope | undefined>;
|
|
13
|
+
|
|
14
|
+
export declare function ScopeProvider(props: ScopeProviderProps): JSX.Element;
|
|
15
|
+
|
|
16
|
+
export declare type ScopeProviderProps = {
|
|
17
|
+
readonly scope: Scope;
|
|
18
|
+
readonly children: JSX.Element;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export declare function useScope(): Scope | undefined;
|
|
22
|
+
|
|
23
|
+
export declare function useSignal<T>(source: Subscribable<T>): Accessor<T>;
|
|
24
|
+
|
|
25
|
+
export declare function useStore<T>(store: StoreApi<T>): Accessor<T>;
|
|
26
|
+
|
|
27
|
+
export declare function useStore<T, U>(store: StoreApi<T>, selector: (state: T) => U, equals?: (a: U, b: U) => boolean): Accessor<U>;
|
|
28
|
+
|
|
29
|
+
export { }
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createContext as e,useContext as o}from"solid-js";import{generateBatchAutoImports as r}from"@slux/shared";let t=e();function i(e){return t.Provider({value:e.scope,get children(){return e.children}})}function p(){return o(t)}let s=["ScopeContext","ScopeProvider","useScope","useSignal","useStore"],u=(e="")=>r([{prefix:e,fromName:"@slux/solid",imports:s}]);export{useSignal}from"./e~0.js";export{useStore}from"./store.js";export{t as ScopeContext,i as ScopeProvider,u as createAutoImportApis,p as useScope};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/scope.ts","../src/auto-import-api.ts"],"sourcesContent":["import { createContext, useContext } from \"solid-js\";\nimport type { JSX } from \"solid-js\";\nimport type { Scope } from \"@slux/core\";\n\nexport type ScopeProviderProps = {\n readonly scope: Scope;\n readonly children: JSX.Element;\n};\nexport const ScopeContext = createContext<Scope>();\nexport function ScopeProvider(props: ScopeProviderProps): JSX.Element {\n return ScopeContext.Provider({\n value: props.scope,\n get children() {\n return props.children;\n },\n });\n}\nexport function useScope(): Scope | undefined {\n return useContext(ScopeContext);\n}\n","import { generateBatchAutoImports } from \"@slux/shared\";\n\nconst allImportApis: string[] = [\"ScopeContext\", \"ScopeProvider\", \"useScope\", \"useSignal\", \"useStore\"];\n\nexport const createAutoImportApis = (prefix: string = \"\") => {\n return generateBatchAutoImports([\n {\n prefix,\n fromName: \"@slux/solid\",\n imports: allImportApis,\n },\n ]);\n};\n"],"names":["ScopeContext","createContext","ScopeProvider","props","useScope","useContext","allImportApis","createAutoImportApis","prefix","generateBatchAutoImports"],"mappings":"iHAQO,IAAMA,EAAeC,IACrB,SAASC,EAAcC,CAAyB,EACrD,OAAOH,EAAa,QAAQ,CAAC,CAC3B,MAAOG,EAAM,KAAK,CAClB,IAAI,WACF,OAAOA,EAAM,QAAQ,AACvB,CACF,EACF,CACO,SAASC,IACd,OAAOC,EAAWL,EACpB,CCjBA,IAAMM,EAA0B,CAAC,eAAgB,gBAAiB,WAAY,YAAa,WAAW,CAEzFC,EAAuB,CAACC,EAAiB,EAAE,GAC/CC,EAAyB,CAC9B,CACED,OAAAA,EACA,SAAU,cACV,QAASF,CACX,EACD,C"}
|
package/dist/proxy.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_,r)=>{var t=(_,r)=>{for(var t in _)__webpack_require__.o(_,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,[r]:_[t]})};t(_,"get"),t(r,"value")},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{useSnapshot:()=>useSnapshot});const proxy_namespaceObject=require("@slux/proxy"),external_solid_js_namespaceObject=require("solid-js"),web_namespaceObject=require("solid-js/web"),core_namespaceObject=require("@slux/core");function useSignal(e){if(!(0,external_solid_js_namespaceObject.getOwner)())throw Error("useSignal 必须在 Solid 组件或 createRoot 中调用");let[_,r]=(0,external_solid_js_namespaceObject.createSignal)(e.get());if(web_namespaceObject.isServer)return _;let t=e.subscribe(e=>r(()=>e)),a=(0,core_namespaceObject.effect)(()=>{e.get()});return r(()=>e.get()),(0,external_solid_js_namespaceObject.onCleanup)(()=>{t(),a()}),_}function useSnapshot(e){return useSignal({get:()=>(0,proxy_namespaceObject.snapshot)(e),subscribe:_=>(0,proxy_namespaceObject.subscribe)(e,()=>_((0,proxy_namespaceObject.snapshot)(e)))})}for(var __rspack_i in exports.useSnapshot=__webpack_exports__.useSnapshot,__webpack_exports__)-1===["useSnapshot"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
|
|
2
|
+
//# sourceMappingURL=proxy.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../src/use-signal.ts","../src/proxy.ts"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { createSignal, getOwner, onCleanup } from \"solid-js\";\nimport type { Accessor } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { effect } from \"@slux/core\";\nimport type { Subscribable } from \"@slux/core\";\n\nexport function useSignal<T>(source: Subscribable<T>): Accessor<T> {\n if (!getOwner()) throw new Error(\"useSignal 必须在 Solid 组件或 createRoot 中调用\");\n const [value, setValue] = createSignal(source.get());\n if (isServer) return value;\n const unsubscribe = source.subscribe((next) => setValue(() => next));\n // 主动刷新惰性 computed,通知由 subscribe 统一送入 Solid。\n const dispose = effect(() => {\n source.get();\n });\n setValue(() => source.get());\n onCleanup(() => {\n unsubscribe();\n dispose();\n });\n return value;\n}\n","import type { Accessor } from \"solid-js\";\nimport { snapshot, subscribe } from \"@slux/proxy\";\nimport type { Snapshot } from \"@slux/proxy\";\nimport { useSignal } from \"./use-signal.js\";\n\nexport function useSnapshot<T extends object>(proxy: T): Accessor<Snapshot<T>> {\n return useSignal({\n get: () => snapshot(proxy),\n subscribe: (callback) => subscribe(proxy, () => callback(snapshot(proxy))),\n });\n}\n"],"names":["__webpack_require__","e","Object","Symbol","useSignal","source","getOwner","Error","value","setValue","createSignal","isServer","unsubscribe","next","dispose","effect","onCleanup","useSnapshot","proxy","snapshot","callback","subscribe"],"mappings":"wPAAAA,CAAAA,oBAAoB,CAAC,CAAG,CAACC,EAAS,EAAS,KAC1C,IAAI,EAAS,CAAC,EAAM,KACnB,IAAI,IAAI,KAAO,EACXD,oBAAoB,CAAC,CAAC,EAAM,IAAQ,CAACA,oBAAoB,CAAC,CAACC,EAAS,IACtEC,OAAO,cAAc,CAACD,EAAS,EAAK,CAAE,WAAY,GAAM,CAAC,EAAK,CAAE,CAAI,CAAC,EAAI,AAAC,EAG7E,EACA,EAAO,EAAS,OAChB,EAAO,EAAQ,QAChB,ECVAD,oBAAoB,CAAC,CAAG,CAAC,EAAK,IAAUE,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAK,GCClFF,oBAAoB,CAAC,CAAG,AAACC,IACrB,AAAkB,IAAlB,OAAOE,QAA0BA,OAAO,WAAW,EACrDD,OAAO,cAAc,CAACD,EAASE,OAAO,WAAW,CAAE,CAAE,MAAO,QAAS,GAEtED,OAAO,cAAc,CAACD,EAAS,aAAc,CAAE,MAAO,EAAK,EAC5D,E,+UCAO,SAASG,UAAaC,CAAuB,EAClD,GAAI,CAACC,AAAAA,GAAAA,kCAAAA,QAAAA,AAAAA,IAAY,MAAM,AAAIC,MAAM,0CACjC,GAAM,CAACC,EAAOC,EAAS,CAAGC,AAAAA,GAAAA,kCAAAA,YAAAA,AAAAA,EAAaL,EAAO,GAAG,IACjD,GAAIM,oBAAAA,QAAQA,CAAE,OAAOH,EACrB,IAAMI,EAAcP,EAAO,SAAS,CAAC,AAACQ,GAASJ,EAAS,IAAMI,IAExDC,EAAUC,AAAAA,GAAAA,qBAAAA,MAAAA,AAAAA,EAAO,KACrBV,EAAO,GAAG,EACZ,GAMA,OALAI,EAAS,IAAMJ,EAAO,GAAG,IACzBW,AAAAA,GAAAA,kCAAAA,SAAAA,AAAAA,EAAU,KACRJ,IACAE,GACF,GACON,CACT,CChBO,SAASS,YAA8BC,CAAQ,EACpD,OAAOd,UAAU,CACf,IAAK,IAAMe,AAAAA,GAAAA,sBAAAA,QAAAA,AAAAA,EAASD,GACpB,UAAW,AAACE,GAAaC,AAAAA,GAAAA,sBAAAA,SAAAA,AAAAA,EAAUH,EAAO,IAAME,EAASD,AAAAA,GAAAA,sBAAAA,QAAAA,AAAAA,EAASD,IACpE,EACF,C"}
|
package/dist/proxy.d.cts
ADDED
package/dist/proxy.d.ts
ADDED
package/dist/proxy.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sources":["../src/proxy.ts"],"sourcesContent":["import type { Accessor } from \"solid-js\";\nimport { snapshot, subscribe } from \"@slux/proxy\";\nimport type { Snapshot } from \"@slux/proxy\";\nimport { useSignal } from \"./use-signal.js\";\n\nexport function useSnapshot<T extends object>(proxy: T): Accessor<Snapshot<T>> {\n return useSignal({\n get: () => snapshot(proxy),\n subscribe: (callback) => subscribe(proxy, () => callback(snapshot(proxy))),\n });\n}\n"],"names":["useSnapshot","proxy","useSignal","snapshot","callback","subscribe"],"mappings":"uGAKO,SAASA,EAA8BC,CAAQ,EACpD,OAAOC,EAAU,CACf,IAAK,IAAMC,EAASF,GACpB,UAAW,AAACG,GAAaC,EAAUJ,EAAO,IAAMG,EAASD,EAASF,IACpE,EACF,Q"}
|
package/dist/rxjs.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_,r)=>{var a=(_,r)=>{for(var a in _)__webpack_require__.o(_,a)&&!__webpack_require__.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,[r]:_[a]})};a(_,"get"),a(r,"value")},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{useObservable:()=>useObservable});const external_solid_js_namespaceObject=require("solid-js"),web_namespaceObject=require("solid-js/web"),core_namespaceObject=require("@slux/core");function useSignal(e){if(!(0,external_solid_js_namespaceObject.getOwner)())throw Error("useSignal 必须在 Solid 组件或 createRoot 中调用");let[_,r]=(0,external_solid_js_namespaceObject.createSignal)(e.get());if(web_namespaceObject.isServer)return _;let a=e.subscribe(e=>r(()=>e)),t=(0,core_namespaceObject.effect)(()=>{e.get()});return r(()=>e.get()),(0,external_solid_js_namespaceObject.onCleanup)(()=>{a(),t()}),_}function useObservable(e){return useSignal(e)}for(var __rspack_i in exports.useObservable=__webpack_exports__.useObservable,__webpack_exports__)-1===["useObservable"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
|
|
2
|
+
//# sourceMappingURL=rxjs.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rxjs.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../src/use-signal.ts","../src/rxjs.ts"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { createSignal, getOwner, onCleanup } from \"solid-js\";\nimport type { Accessor } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { effect } from \"@slux/core\";\nimport type { Subscribable } from \"@slux/core\";\n\nexport function useSignal<T>(source: Subscribable<T>): Accessor<T> {\n if (!getOwner()) throw new Error(\"useSignal 必须在 Solid 组件或 createRoot 中调用\");\n const [value, setValue] = createSignal(source.get());\n if (isServer) return value;\n const unsubscribe = source.subscribe((next) => setValue(() => next));\n // 主动刷新惰性 computed,通知由 subscribe 统一送入 Solid。\n const dispose = effect(() => {\n source.get();\n });\n setValue(() => source.get());\n onCleanup(() => {\n unsubscribe();\n dispose();\n });\n return value;\n}\n","import type { Accessor } from \"solid-js\";\nimport type { ObservableState } from \"@slux/rxjs\";\nimport { useSignal } from \"./use-signal.js\";\n\nexport function useObservable<T>(source: ObservableState<T>): Accessor<T> {\n return useSignal(source);\n}\n"],"names":["__webpack_require__","e","Object","Symbol","useSignal","source","getOwner","Error","value","setValue","createSignal","isServer","unsubscribe","next","dispose","effect","onCleanup","useObservable"],"mappings":"wPAAAA,CAAAA,oBAAoB,CAAC,CAAG,CAACC,EAAS,EAAS,KAC1C,IAAI,EAAS,CAAC,EAAM,KACnB,IAAI,IAAI,KAAO,EACXD,oBAAoB,CAAC,CAAC,EAAM,IAAQ,CAACA,oBAAoB,CAAC,CAACC,EAAS,IACtEC,OAAO,cAAc,CAACD,EAAS,EAAK,CAAE,WAAY,GAAM,CAAC,EAAK,CAAE,CAAI,CAAC,EAAI,AAAC,EAG7E,EACA,EAAO,EAAS,OAChB,EAAO,EAAQ,QAChB,ECVAD,oBAAoB,CAAC,CAAG,CAAC,EAAK,IAAUE,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAK,GCClFF,oBAAoB,CAAC,CAAG,AAACC,IACrB,AAAkB,IAAlB,OAAOE,QAA0BA,OAAO,WAAW,EACrDD,OAAO,cAAc,CAACD,EAASE,OAAO,WAAW,CAAE,CAAE,MAAO,QAAS,GAEtED,OAAO,cAAc,CAACD,EAAS,aAAc,CAAE,MAAO,EAAK,EAC5D,E,sSCAO,SAASG,UAAaC,CAAuB,EAClD,GAAI,CAACC,AAAAA,GAAAA,kCAAAA,QAAAA,AAAAA,IAAY,MAAM,AAAIC,MAAM,0CACjC,GAAM,CAACC,EAAOC,EAAS,CAAGC,AAAAA,GAAAA,kCAAAA,YAAAA,AAAAA,EAAaL,EAAO,GAAG,IACjD,GAAIM,oBAAAA,QAAQA,CAAE,OAAOH,EACrB,IAAMI,EAAcP,EAAO,SAAS,CAAC,AAACQ,GAASJ,EAAS,IAAMI,IAExDC,EAAUC,AAAAA,GAAAA,qBAAAA,MAAAA,AAAAA,EAAO,KACrBV,EAAO,GAAG,EACZ,GAMA,OALAI,EAAS,IAAMJ,EAAO,GAAG,IACzBW,AAAAA,GAAAA,kCAAAA,SAAAA,AAAAA,EAAU,KACRJ,IACAE,GACF,GACON,CACT,CCjBO,SAASS,cAAiBZ,CAA0B,EACzD,OAAOD,UAAUC,EACnB,C"}
|
package/dist/rxjs.d.cts
ADDED
package/dist/rxjs.d.ts
ADDED
package/dist/rxjs.js
ADDED
package/dist/rxjs.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rxjs.js","sources":["../src/rxjs.ts"],"sourcesContent":["import type { Accessor } from \"solid-js\";\nimport type { ObservableState } from \"@slux/rxjs\";\nimport { useSignal } from \"./use-signal.js\";\n\nexport function useObservable<T>(source: ObservableState<T>): Accessor<T> {\n return useSignal(source);\n}\n"],"names":["useObservable","source","useSignal"],"mappings":"iDAIO,SAASA,EAAiBC,CAA0B,EACzD,OAAOC,EAAUD,EACnB,Q"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_,r)=>{var a=(_,r)=>{for(var a in _)__webpack_require__.o(_,a)&&!__webpack_require__.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,[r]:_[a]})};a(_,"get"),a(r,"value")},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{useMachine:()=>useMachine});const external_solid_js_namespaceObject=require("solid-js"),web_namespaceObject=require("solid-js/web"),core_namespaceObject=require("@slux/core");function useSignal(e){if(!(0,external_solid_js_namespaceObject.getOwner)())throw Error("useSignal 必须在 Solid 组件或 createRoot 中调用");let[_,r]=(0,external_solid_js_namespaceObject.createSignal)(e.get());if(web_namespaceObject.isServer)return _;let a=e.subscribe(e=>r(()=>e)),t=(0,core_namespaceObject.effect)(()=>{e.get()});return r(()=>e.get()),(0,external_solid_js_namespaceObject.onCleanup)(()=>{a(),t()}),_}function useMachine(e){return useSignal(e)}for(var __rspack_i in exports.useMachine=__webpack_exports__.useMachine,__webpack_exports__)-1===["useMachine"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
|
|
2
|
+
//# sourceMappingURL=state-machine.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-machine.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../src/use-signal.ts","../src/state-machine.ts"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { createSignal, getOwner, onCleanup } from \"solid-js\";\nimport type { Accessor } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { effect } from \"@slux/core\";\nimport type { Subscribable } from \"@slux/core\";\n\nexport function useSignal<T>(source: Subscribable<T>): Accessor<T> {\n if (!getOwner()) throw new Error(\"useSignal 必须在 Solid 组件或 createRoot 中调用\");\n const [value, setValue] = createSignal(source.get());\n if (isServer) return value;\n const unsubscribe = source.subscribe((next) => setValue(() => next));\n // 主动刷新惰性 computed,通知由 subscribe 统一送入 Solid。\n const dispose = effect(() => {\n source.get();\n });\n setValue(() => source.get());\n onCleanup(() => {\n unsubscribe();\n dispose();\n });\n return value;\n}\n","import type { Accessor } from \"solid-js\";\nimport type { MachineSnapshot, StateMachine } from \"@slux/state-machine\";\nimport { useSignal } from \"./use-signal.js\";\n\nexport function useMachine<Context, Event extends { type: string }, State extends string>(\n machine: StateMachine<Context, Event, State>,\n): Accessor<MachineSnapshot<Context, State>> {\n return useSignal(machine);\n}\n"],"names":["__webpack_require__","e","Object","Symbol","useSignal","source","getOwner","Error","value","setValue","createSignal","isServer","unsubscribe","next","dispose","effect","onCleanup","useMachine","machine"],"mappings":"wPAAAA,CAAAA,oBAAoB,CAAC,CAAG,CAACC,EAAS,EAAS,KAC1C,IAAI,EAAS,CAAC,EAAM,KACnB,IAAI,IAAI,KAAO,EACXD,oBAAoB,CAAC,CAAC,EAAM,IAAQ,CAACA,oBAAoB,CAAC,CAACC,EAAS,IACtEC,OAAO,cAAc,CAACD,EAAS,EAAK,CAAE,WAAY,GAAM,CAAC,EAAK,CAAE,CAAI,CAAC,EAAI,AAAC,EAG7E,EACA,EAAO,EAAS,OAChB,EAAO,EAAQ,QAChB,ECVAD,oBAAoB,CAAC,CAAG,CAAC,EAAK,IAAUE,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAK,GCClFF,oBAAoB,CAAC,CAAG,AAACC,IACrB,AAAkB,IAAlB,OAAOE,QAA0BA,OAAO,WAAW,EACrDD,OAAO,cAAc,CAACD,EAASE,OAAO,WAAW,CAAE,CAAE,MAAO,QAAS,GAEtED,OAAO,cAAc,CAACD,EAAS,aAAc,CAAE,MAAO,EAAK,EAC5D,E,gSCAO,SAASG,UAAaC,CAAuB,EAClD,GAAI,CAACC,AAAAA,GAAAA,kCAAAA,QAAAA,AAAAA,IAAY,MAAM,AAAIC,MAAM,0CACjC,GAAM,CAACC,EAAOC,EAAS,CAAGC,AAAAA,GAAAA,kCAAAA,YAAAA,AAAAA,EAAaL,EAAO,GAAG,IACjD,GAAIM,oBAAAA,QAAQA,CAAE,OAAOH,EACrB,IAAMI,EAAcP,EAAO,SAAS,CAAC,AAACQ,GAASJ,EAAS,IAAMI,IAExDC,EAAUC,AAAAA,GAAAA,qBAAAA,MAAAA,AAAAA,EAAO,KACrBV,EAAO,GAAG,EACZ,GAMA,OALAI,EAAS,IAAMJ,EAAO,GAAG,IACzBW,AAAAA,GAAAA,kCAAAA,SAAAA,AAAAA,EAAU,KACRJ,IACAE,GACF,GACON,CACT,CCjBO,SAASS,WACdC,CAA4C,EAE5C,OAAOd,UAAUc,EACnB,C"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Accessor } from 'solid-js';
|
|
2
|
+
import type { MachineSnapshot } from '@slux/state-machine';
|
|
3
|
+
import type { StateMachine } from '@slux/state-machine';
|
|
4
|
+
|
|
5
|
+
export declare function useMachine<Context, Event extends {
|
|
6
|
+
type: string;
|
|
7
|
+
}, State extends string>(machine: StateMachine<Context, Event, State>): Accessor<MachineSnapshot<Context, State>>;
|
|
8
|
+
|
|
9
|
+
export { }
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Accessor } from 'solid-js';
|
|
2
|
+
import type { MachineSnapshot } from '@slux/state-machine';
|
|
3
|
+
import type { StateMachine } from '@slux/state-machine';
|
|
4
|
+
|
|
5
|
+
export declare function useMachine<Context, Event extends {
|
|
6
|
+
type: string;
|
|
7
|
+
}, State extends string>(machine: StateMachine<Context, Event, State>): Accessor<MachineSnapshot<Context, State>>;
|
|
8
|
+
|
|
9
|
+
export { }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-machine.js","sources":["../src/state-machine.ts"],"sourcesContent":["import type { Accessor } from \"solid-js\";\nimport type { MachineSnapshot, StateMachine } from \"@slux/state-machine\";\nimport { useSignal } from \"./use-signal.js\";\n\nexport function useMachine<Context, Event extends { type: string }, State extends string>(\n machine: StateMachine<Context, Event, State>,\n): Accessor<MachineSnapshot<Context, State>> {\n return useSignal(machine);\n}\n"],"names":["useMachine","machine","useSignal"],"mappings":"iDAIO,SAASA,EACdC,CAA4C,EAE5C,OAAOC,EAAUD,EACnB,Q"}
|
package/dist/store.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_modules__={o(e,_,r){var t=r("N"),o=r("W"),a=r("g");r.d(_,{},{U:function(e){if(!(0,t.getOwner)())throw Error("useSignal 必须在 Solid 组件或 createRoot 中调用");let[_,r]=(0,t.createSignal)(e.get());if(o.isServer)return _;let c=e.subscribe(e=>r(()=>e)),u=(0,a.effect)(()=>{e.get()});return r(()=>e.get()),(0,t.onCleanup)(()=>{c(),u()}),_}})},g(e){e.exports=require("@slux/core")},N(e){e.exports=require("solid-js")},W(e){e.exports=require("solid-js/web")}},__webpack_module_cache__={};function __webpack_require__(e){var _=__webpack_module_cache__[e];if(void 0!==_)return _.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.n=e=>{var _=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(_,{a:_}),_},__webpack_require__.d=(e,_,r)=>{var t=(_,r)=>{for(var t in _)__webpack_require__.o(_,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,[r]:_[t]})};t(_,"get"),t(r,"value")},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};for(var __rspack_i in(()=>{__webpack_require__.r(__webpack_exports__);var e=__webpack_require__("o");__webpack_require__.d(__webpack_exports__,{},{useStore:function(_,r,t=Object.is){let o=r??(e=>e),a=o(_.getState()),c=()=>{let e=o(_.getState());return t(a,e)||(a=e),a};return(0,e.U)({get:c,subscribe:e=>_.subscribe(()=>e(c()))})}})})(),exports.useStore=__webpack_exports__.useStore,__webpack_exports__)-1===["useStore"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
|
|
2
|
+
//# sourceMappingURL=store.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.cjs","sources":["../src/use-signal.ts","webpack://webpack/runtime/compat_get_default_export","webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../src/store.ts"],"sourcesContent":["import { createSignal, getOwner, onCleanup } from \"solid-js\";\nimport type { Accessor } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { effect } from \"@slux/core\";\nimport type { Subscribable } from \"@slux/core\";\n\nexport function useSignal<T>(source: Subscribable<T>): Accessor<T> {\n if (!getOwner()) throw new Error(\"useSignal 必须在 Solid 组件或 createRoot 中调用\");\n const [value, setValue] = createSignal(source.get());\n if (isServer) return value;\n const unsubscribe = source.subscribe((next) => setValue(() => next));\n // 主动刷新惰性 computed,通知由 subscribe 统一送入 Solid。\n const dispose = effect(() => {\n source.get();\n });\n setValue(() => source.get());\n onCleanup(() => {\n unsubscribe();\n dispose();\n });\n return value;\n}\n","// getDefaultExport function for compatibility with non-ESM modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};\n","__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import type { Accessor } from \"solid-js\";\nimport type { StoreApi } from \"@slux/store\";\nimport { useSignal } from \"./use-signal.js\";\n\nexport function useStore<T>(store: StoreApi<T>): Accessor<T>;\nexport function useStore<T, U>(store: StoreApi<T>, selector: (state: T) => U, equals?: (a: U, b: U) => boolean): Accessor<U>;\nexport function useStore<T, U = T>(store: StoreApi<T>, selector?: (state: T) => U, equals: (a: U, b: U) => boolean = Object.is): Accessor<U> {\n const select = selector ?? ((state: T) => state as unknown as U);\n let current = select(store.getState());\n const read = () => {\n const next = select(store.getState());\n if (!equals(current, next)) current = next;\n return current;\n };\n return useSignal({\n get: read,\n subscribe: (callback) => store.subscribe(() => callback(read())),\n });\n}\n"],"names":["source","getOwner","Error","value","setValue","createSignal","isServer","unsubscribe","next","dispose","effect","onCleanup","__webpack_require__","e","Object","Symbol","store","selector","equals","select","state","current","read","useSignal","callback"],"mappings":"2SAMO,SAAsBA,CAAuB,EAClD,GAAI,CAACC,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,IAAY,MAAM,AAAIC,MAAM,0CACjC,GAAM,CAACC,EAAOC,EAAS,CAAGC,AAAAA,GAAAA,EAAAA,YAAAA,AAAAA,EAAaL,EAAO,GAAG,IACjD,GAAIM,EAAAA,QAAQA,CAAE,OAAOH,EACrB,IAAMI,EAAcP,EAAO,SAAS,CAAC,AAACQ,GAASJ,EAAS,IAAMI,IAExDC,EAAUC,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,EAAO,KACrBV,EAAO,GAAG,EACZ,GAMA,OALAI,EAAS,IAAMJ,EAAO,GAAG,IACzBW,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACRJ,IACAE,GACF,GACON,CACT,C,4WCpBAS,oBAAoB,CAAC,CAAG,AAAC,IACxB,IAAI,EAAS,GAAU,EAAO,UAAU,CACvC,IAAO,EAAO,OAAU,CACxB,IAAO,EAER,OADAA,oBAAoB,CAAC,CAAC,EAAQ,CAAE,EAAG,CAAO,GACnC,CACR,ECPAA,oBAAoB,CAAC,CAAG,CAACC,EAAS,EAAS,KAC1C,IAAI,EAAS,CAAC,EAAM,KACnB,IAAI,IAAI,KAAO,EACXD,oBAAoB,CAAC,CAAC,EAAM,IAAQ,CAACA,oBAAoB,CAAC,CAACC,EAAS,IACtEC,OAAO,cAAc,CAACD,EAAS,EAAK,CAAE,WAAY,GAAM,CAAC,EAAK,CAAE,CAAI,CAAC,EAAI,AAAC,EAG7E,EACA,EAAO,EAAS,OAChB,EAAO,EAAQ,QAChB,ECVAD,oBAAoB,CAAC,CAAG,CAAC,EAAK,IAAUE,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAK,GCClFF,oBAAoB,CAAC,CAAG,AAACC,IACrB,AAAkB,IAAlB,OAAOE,QAA0BA,OAAO,WAAW,EACrDD,OAAO,cAAc,CAACD,EAASE,OAAO,WAAW,CAAE,CAAE,MAAO,QAAS,GAEtED,OAAO,cAAc,CAACD,EAAS,aAAc,CAAE,MAAO,EAAK,EAC5D,E,uLCAO,SAA4BG,CAAkB,CAAEC,CAA0B,CAAEC,EAAkCJ,OAAO,EAAE,EAC5H,IAAMK,EAASF,GAAc,CAAAG,GAAaA,CAAI,EAC1CC,EAAUF,EAAOH,EAAM,QAAQ,IAC7BM,EAAO,KACX,IAAMd,EAAOW,EAAOH,EAAM,QAAQ,IAElC,OADI,AAACE,EAAOG,EAASb,IAAOa,CAAAA,EAAUb,CAAG,EAClCa,CACT,EACA,MAAOE,AAAAA,GAAAA,EAAAA,CAAAA,AAAAA,EAAU,CACf,IAAKD,EACL,UAAW,AAACE,GAAaR,EAAM,SAAS,CAAC,IAAMQ,EAASF,KAC1D,EACF,C"}
|
package/dist/store.d.cts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Accessor } from 'solid-js';
|
|
2
|
+
import type { StoreApi } from '@slux/store';
|
|
3
|
+
|
|
4
|
+
export declare function useStore<T>(store: StoreApi<T>): Accessor<T>;
|
|
5
|
+
|
|
6
|
+
export declare function useStore<T, U>(store: StoreApi<T>, selector: (state: T) => U, equals?: (a: U, b: U) => boolean): Accessor<U>;
|
|
7
|
+
|
|
8
|
+
export { }
|
package/dist/store.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Accessor } from 'solid-js';
|
|
2
|
+
import type { StoreApi } from '@slux/store';
|
|
3
|
+
|
|
4
|
+
export declare function useStore<T>(store: StoreApi<T>): Accessor<T>;
|
|
5
|
+
|
|
6
|
+
export declare function useStore<T, U>(store: StoreApi<T>, selector: (state: T) => U, equals?: (a: U, b: U) => boolean): Accessor<U>;
|
|
7
|
+
|
|
8
|
+
export { }
|
package/dist/store.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sources":["../src/store.ts"],"sourcesContent":["import type { Accessor } from \"solid-js\";\nimport type { StoreApi } from \"@slux/store\";\nimport { useSignal } from \"./use-signal.js\";\n\nexport function useStore<T>(store: StoreApi<T>): Accessor<T>;\nexport function useStore<T, U>(store: StoreApi<T>, selector: (state: T) => U, equals?: (a: U, b: U) => boolean): Accessor<U>;\nexport function useStore<T, U = T>(store: StoreApi<T>, selector?: (state: T) => U, equals: (a: U, b: U) => boolean = Object.is): Accessor<U> {\n const select = selector ?? ((state: T) => state as unknown as U);\n let current = select(store.getState());\n const read = () => {\n const next = select(store.getState());\n if (!equals(current, next)) current = next;\n return current;\n };\n return useSignal({\n get: read,\n subscribe: (callback) => store.subscribe(() => callback(read())),\n });\n}\n"],"names":["useStore","store","selector","equals","Object","select","state","current","read","next","useSignal","callback"],"mappings":"iDAMO,SAASA,EAAmBC,CAAkB,CAAEC,CAA0B,CAAEC,EAAkCC,OAAO,EAAE,EAC5H,IAAMC,EAASH,GAAc,CAAAI,GAAaA,CAAI,EAC1CC,EAAUF,EAAOJ,EAAM,QAAQ,IAC7BO,EAAO,KACX,IAAMC,EAAOJ,EAAOJ,EAAM,QAAQ,IAElC,OADI,AAACE,EAAOI,EAASE,IAAOF,CAAAA,EAAUE,CAAG,EAClCF,CACT,EACA,OAAOG,EAAU,CACf,IAAKF,EACL,UAAW,AAACG,GAAaV,EAAM,SAAS,CAAC,IAAMU,EAASH,KAC1D,EACF,Q"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,162 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slux/solid",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "slux solid bindings",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"slux",
|
|
7
|
+
"solid",
|
|
8
|
+
"signals",
|
|
9
|
+
"bindings",
|
|
10
|
+
"state-management"
|
|
11
|
+
],
|
|
12
|
+
"type": "module",
|
|
13
|
+
"sideEffects": false,
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"author": "itmanyong <itmanyong@gmail.com>",
|
|
16
|
+
"publishConfig": {
|
|
17
|
+
"access": "public"
|
|
18
|
+
},
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git+https://github.com/itmanyong/slux.git",
|
|
22
|
+
"directory": "packages/solid"
|
|
23
|
+
},
|
|
24
|
+
"files": [
|
|
25
|
+
"dist",
|
|
26
|
+
"README.md",
|
|
27
|
+
"CHANGELOG.md",
|
|
28
|
+
"package.json"
|
|
29
|
+
],
|
|
30
|
+
"main": "./dist/index.cjs",
|
|
31
|
+
"module": "./dist/index.js",
|
|
32
|
+
"types": "./dist/index.d.ts",
|
|
33
|
+
"exports": {
|
|
34
|
+
".": {
|
|
35
|
+
"import": {
|
|
36
|
+
"types": "./dist/index.d.ts",
|
|
37
|
+
"default": "./dist/index.js"
|
|
38
|
+
},
|
|
39
|
+
"require": {
|
|
40
|
+
"types": "./dist/index.d.cts",
|
|
41
|
+
"default": "./dist/index.cjs"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"./atom": {
|
|
45
|
+
"import": {
|
|
46
|
+
"types": "./dist/atom.d.ts",
|
|
47
|
+
"default": "./dist/atom.js"
|
|
48
|
+
},
|
|
49
|
+
"require": {
|
|
50
|
+
"types": "./dist/atom.d.cts",
|
|
51
|
+
"default": "./dist/atom.cjs"
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"./store": {
|
|
55
|
+
"import": {
|
|
56
|
+
"types": "./dist/store.d.ts",
|
|
57
|
+
"default": "./dist/store.js"
|
|
58
|
+
},
|
|
59
|
+
"require": {
|
|
60
|
+
"types": "./dist/store.d.cts",
|
|
61
|
+
"default": "./dist/store.cjs"
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"./proxy": {
|
|
65
|
+
"import": {
|
|
66
|
+
"types": "./dist/proxy.d.ts",
|
|
67
|
+
"default": "./dist/proxy.js"
|
|
68
|
+
},
|
|
69
|
+
"require": {
|
|
70
|
+
"types": "./dist/proxy.d.cts",
|
|
71
|
+
"default": "./dist/proxy.cjs"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"./package.json": "./package.json",
|
|
75
|
+
"./flux": {
|
|
76
|
+
"import": {
|
|
77
|
+
"types": "./dist/flux.d.ts",
|
|
78
|
+
"default": "./dist/flux.js"
|
|
79
|
+
},
|
|
80
|
+
"require": {
|
|
81
|
+
"types": "./dist/flux.d.cts",
|
|
82
|
+
"default": "./dist/flux.cjs"
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
"./state-machine": {
|
|
86
|
+
"import": {
|
|
87
|
+
"types": "./dist/state-machine.d.ts",
|
|
88
|
+
"default": "./dist/state-machine.js"
|
|
89
|
+
},
|
|
90
|
+
"require": {
|
|
91
|
+
"types": "./dist/state-machine.d.cts",
|
|
92
|
+
"default": "./dist/state-machine.cjs"
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"./rxjs": {
|
|
96
|
+
"import": {
|
|
97
|
+
"types": "./dist/rxjs.d.ts",
|
|
98
|
+
"default": "./dist/rxjs.js"
|
|
99
|
+
},
|
|
100
|
+
"require": {
|
|
101
|
+
"types": "./dist/rxjs.d.cts",
|
|
102
|
+
"default": "./dist/rxjs.cjs"
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"peerDependencies": {
|
|
107
|
+
"@slux/atom": "^0.1.1",
|
|
108
|
+
"@slux/core": "^0.1.1",
|
|
109
|
+
"@slux/proxy": "^0.1.1",
|
|
110
|
+
"@slux/store": "^0.1.1",
|
|
111
|
+
"solid-js": ">=1.0.0",
|
|
112
|
+
"@slux/flux": "^0.1.1",
|
|
113
|
+
"@slux/state-machine": "^0.1.1",
|
|
114
|
+
"@slux/rxjs": "^0.1.1"
|
|
115
|
+
},
|
|
116
|
+
"peerDependenciesMeta": {
|
|
117
|
+
"@slux/atom": {
|
|
118
|
+
"optional": true
|
|
119
|
+
},
|
|
120
|
+
"@slux/proxy": {
|
|
121
|
+
"optional": true
|
|
122
|
+
},
|
|
123
|
+
"@slux/store": {
|
|
124
|
+
"optional": true
|
|
125
|
+
},
|
|
126
|
+
"@slux/flux": {
|
|
127
|
+
"optional": true
|
|
128
|
+
},
|
|
129
|
+
"@slux/state-machine": {
|
|
130
|
+
"optional": true
|
|
131
|
+
},
|
|
132
|
+
"@slux/rxjs": {
|
|
133
|
+
"optional": true
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
"devDependencies": {
|
|
137
|
+
"@slux/atom": "0.1.1",
|
|
138
|
+
"@slux/core": "0.1.1",
|
|
139
|
+
"@slux/proxy": "0.1.1",
|
|
140
|
+
"@slux/store": "0.1.1",
|
|
141
|
+
"jsdom": "30.1.3",
|
|
142
|
+
"rstack": "0.9.0",
|
|
143
|
+
"typescript": "7.1.0-beta",
|
|
144
|
+
"solid-js": "1.9.18",
|
|
145
|
+
"@slux/flux": "0.1.1",
|
|
146
|
+
"@slux/state-machine": "0.1.1",
|
|
147
|
+
"@slux/rxjs": "0.1.1",
|
|
148
|
+
"rxjs": "7.8.2"
|
|
149
|
+
},
|
|
150
|
+
"dependencies": {
|
|
151
|
+
"@slux/shared": "0.1.1"
|
|
152
|
+
},
|
|
153
|
+
"scripts": {
|
|
154
|
+
"dev": "rs lib -w",
|
|
155
|
+
"build": "rs lib",
|
|
156
|
+
"test": "rs test",
|
|
157
|
+
"lint": "rs lint",
|
|
158
|
+
"fmt": "rs fmt",
|
|
159
|
+
"typecheck": "tsc --noEmit",
|
|
160
|
+
"clean": "rm -rf dist node_modules .turbo"
|
|
161
|
+
}
|
|
6
162
|
}
|