@pravosleva/reactive-engine 2.6.0-beta.4 → 2.6.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/core/core.method.computed.d.ts.map +1 -1
- package/dist/core/types.d.ts +25 -50
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core.method.computed.cjs +1 -1
- package/dist/core.method.computed.cjs.map +1 -1
- package/dist/core.method.computed.mjs +2 -4
- package/dist/core.method.computed.mjs.map +1 -1
- package/dist/react/hooks/useReactiveValue.cjs.map +1 -1
- package/dist/react/hooks/useReactiveValue.d.ts +7 -1
- package/dist/react/hooks/useReactiveValue.d.ts.map +1 -1
- package/dist/react/hooks/useReactiveValue.mjs.map +1 -1
- package/dist/reactive-engine.umd.js +2 -2
- package/dist/reactive-engine.umd.js.map +1 -1
- package/dist/vue/core.vue-adapter.cjs +1 -1
- package/dist/vue/core.vue-adapter.cjs.map +1 -1
- package/dist/vue/core.vue-adapter.d.ts +8 -4
- package/dist/vue/core.vue-adapter.d.ts.map +1 -1
- package/dist/vue/core.vue-adapter.mjs +5 -5
- package/dist/vue/core.vue-adapter.mjs.map +1 -1
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.d.ts.map +1 -1
- package/dist/vue/index.mjs +28 -27
- package/dist/vue/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/vue/index.mjs
CHANGED
|
@@ -5,47 +5,48 @@ import { getCurrentInstance as n, getCurrentScope as r, onScopeDispose as i, onU
|
|
|
5
5
|
var c = class extends e {
|
|
6
6
|
frameworkPrefix = "vue-auto";
|
|
7
7
|
reactive(e, t) {
|
|
8
|
-
let n = (e) => {
|
|
9
|
-
if (!
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
8
|
+
let n, r = (e) => {
|
|
9
|
+
if (!e || typeof e != "object" || Symbol.iterator in e) return;
|
|
10
|
+
let t = e;
|
|
11
|
+
Reflect.has(t, "__subscribe") || Object.defineProperty(t, "__subscribe", {
|
|
12
|
+
get: () => (e) => this.effect(() => {
|
|
13
|
+
try {
|
|
14
|
+
JSON.stringify(n);
|
|
15
|
+
} catch {
|
|
16
|
+
Object.values(n);
|
|
17
|
+
}
|
|
18
|
+
e();
|
|
19
|
+
}, "vue-proxy-internal-subscription"),
|
|
20
|
+
configurable: !0,
|
|
21
|
+
enumerable: !1
|
|
22
|
+
}), Reflect.has(t, "__v_skip") || Object.defineProperty(t, "__v_skip", {
|
|
23
|
+
get: () => !0,
|
|
24
|
+
configurable: !0,
|
|
25
|
+
enumerable: !1
|
|
26
|
+
});
|
|
27
|
+
for (let e in t) if (Object.prototype.hasOwnProperty.call(t, e)) {
|
|
28
|
+
let n = t[e];
|
|
29
|
+
typeof n == "object" && n && r(n);
|
|
27
30
|
}
|
|
28
31
|
};
|
|
29
|
-
n(e);
|
|
30
|
-
let r = super.reactive(e, t);
|
|
31
|
-
return r;
|
|
32
|
+
return r(e), n = super.reactive(e, t), n;
|
|
32
33
|
}
|
|
33
34
|
use(e) {
|
|
34
35
|
if (typeof e != "object" || !e) return o(e);
|
|
35
36
|
if ("subscribe" in e && typeof e.subscribe == "function") {
|
|
36
|
-
let t = e, c = o(this.untrack(() => t.value)), l = "__subscribe" in t && typeof t.__subscribe == "function" ? t.__subscribe(() => {
|
|
37
|
+
let t = e, c = o(this.untrack(() => t.value)), l = "__subscribe" in t && typeof t.__subscribe == "function" && t.__subscribe ? t.__subscribe(() => {
|
|
37
38
|
c.value = t.value, s(c);
|
|
38
39
|
}) : t.subscribe((e) => {
|
|
39
40
|
c.value = e, s(c);
|
|
40
41
|
});
|
|
41
42
|
return n() ? a(() => l()) : r() && i(() => l()), c;
|
|
42
43
|
}
|
|
43
|
-
let t = o(e);
|
|
44
|
-
if ("__subscribe" in
|
|
45
|
-
let
|
|
44
|
+
let t = o(e), c = e;
|
|
45
|
+
if ("__subscribe" in c && typeof c.__subscribe == "function") {
|
|
46
|
+
let e = c.__subscribe(() => {
|
|
46
47
|
s(t);
|
|
47
48
|
});
|
|
48
|
-
n() ? a(() =>
|
|
49
|
+
n() ? a(() => e()) : r() && i(() => e());
|
|
49
50
|
}
|
|
50
51
|
return t;
|
|
51
52
|
}
|
package/dist/vue/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/vue/index.ts"],"sourcesContent":["import { CleanupFn, ISignalLike } from '../core/types'\nimport { ReactiveEngineAutomatic } from '../core/core'\nimport { getCurrentInstance, getCurrentScope, onScopeDispose, onUnmounted, shallowRef, ShallowRef, triggerRef } from 'vue'\n\nexport { useReactiveValue } from './core.vue-adapter'\n\nclass ExtendedReactiveEngine extends ReactiveEngineAutomatic {\n protected override frameworkPrefix = 'vue-auto'\n\n public override reactive<T extends object>(target: T, name?: string): T {\n const injectVueMarkers = (obj:
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/vue/index.ts"],"sourcesContent":["import { CleanupFn, ISignalLike } from '../core/types'\nimport { ReactiveEngineAutomatic } from '../core/core'\nimport { getCurrentInstance, getCurrentScope, onScopeDispose, onUnmounted, shallowRef, ShallowRef, triggerRef } from 'vue'\n\nexport { useReactiveValue } from './core.vue-adapter'\n\n/**\n * ⚛️ Расширенный интерфейс для поддержки внутренних маркеров Vue и Ядра на прокси-объектах\n */\ninterface IVueProxyExtensions {\n __subscribe?: (cb: () => void) => CleanupFn;\n __v_skip?: boolean;\n}\n\nclass ExtendedReactiveEngine extends ReactiveEngineAutomatic {\n protected override frameworkPrefix = 'vue-auto'\n\n public override reactive<T extends object>(target: T, name?: string): T {\n // Внутренний кэш оригинального прокси, который будет доступен в замыкании макрозадачи подписки\n let originalProxy: T\n\n const injectVueMarkers = (obj: unknown): void => {\n if (!obj || typeof obj !== 'object' || Symbol.iterator in (obj as object)) return\n\n const targetObj = obj as Record<string, unknown> & IVueProxyExtensions\n\n if (!Reflect.has(targetObj, '__subscribe')) {\n Object.defineProperty(targetObj, '__subscribe', {\n get: () => {\n return (cb: () => void) => {\n return this.effect(() => {\n try {\n JSON.stringify(originalProxy)\n } catch (e) {\n Object.values(originalProxy as Record<string, unknown>)\n }\n cb()\n }, 'vue-proxy-internal-subscription')\n }\n },\n configurable: true,\n enumerable: false\n })\n }\n\n if (!Reflect.has(targetObj, '__v_skip')) {\n Object.defineProperty(targetObj, '__v_skip', {\n get: () => true,\n configurable: true,\n enumerable: false\n })\n }\n\n for (const key in targetObj) {\n if (Object.prototype.hasOwnProperty.call(targetObj, key)) {\n const value = targetObj[key]\n if (value !== null && typeof value === 'object') {\n injectVueMarkers(value)\n }\n }\n }\n }\n\n injectVueMarkers(target)\n originalProxy = super.reactive(target, name)\n return originalProxy\n }\n\n /**\n * Адаптирует примитивы реактивного ядра во Vue ShallowRef объекты.\n * Полностью изолирует начальное чтение от реактивного контекста ядра (Topological Isolation).\n */\n public use<T>(item: T): T extends ISignalLike<infer V> ? ShallowRef<V> : ShallowRef<T> {\n type ReturnType = T extends ISignalLike<infer V> ? ShallowRef<V> : ShallowRef<T>\n\n if (item === null || item === undefined || typeof item !== 'object') {\n return shallowRef(item) as ReturnType\n }\n\n const isSignal = 'subscribe' in item && typeof (item as Record<string, unknown>).subscribe === 'function'\n\n if (isSignal) {\n const signalItem = item as unknown as ISignalLike<unknown>\n\n // ⚛️ КЛЮЧЕВОЙ ФИКС: Чтение стартового значения оборачиваем в untrack(),\n // предотвращая ложные каскадные вызовы Pull-валидатора при инициализации!\n const initialValue = this.untrack(() => signalItem.value)\n const state = shallowRef(initialValue)\n\n // Используем пассивный системный хук __subscribe, если он доступен (для computed-нод),\n // чтобы избежать спама множественных push-уведомлений посреди транзакции\n const hasHook = '__subscribe' in signalItem && typeof signalItem.__subscribe === 'function'\n\n const unsubscribe = hasHook && signalItem.__subscribe\n ? signalItem.__subscribe(() => {\n state.value = signalItem.value\n triggerRef(state)\n })\n : signalItem.subscribe((newValue) => {\n state.value = newValue\n triggerRef(state)\n })\n\n if (getCurrentInstance()) {\n onUnmounted(() => unsubscribe())\n } else if (getCurrentScope()) {\n onScopeDispose(() => unsubscribe())\n }\n\n return state as ReturnType\n }\n\n const state = shallowRef(item)\n const potentialProxy = item as Record<string, unknown> & IVueProxyExtensions\n\n if ('__subscribe' in potentialProxy && typeof potentialProxy.__subscribe === 'function') {\n const unsubscribe = potentialProxy.__subscribe(() => {\n triggerRef(state)\n })\n\n if (getCurrentInstance()) {\n onUnmounted(() => unsubscribe())\n } else if (getCurrentScope()) {\n onScopeDispose(() => unsubscribe())\n }\n }\n\n return state as ReturnType\n }\n}\n\nexport { ExtendedReactiveEngine as ReactiveEngine }\n"],"mappings":";;;;AAcA,IAAM,IAAN,cAAqC,EAAwB;CAC3D,kBAAqC;CAErC,SAA2C,GAAW,GAAkB;EAEtE,IAAI,GAEE,KAAoB,MAAuB;GAC/C,IAAI,CAAC,KAAO,OAAO,KAAQ,YAAY,OAAO,YAAa,GAAgB;GAE3E,IAAM,IAAY;GAqBlB,AAnBK,QAAQ,IAAI,GAAW,aAAa,KACvC,OAAO,eAAe,GAAW,eAAe;IAC9C,YACU,MACC,KAAK,aAAa;KACvB,IAAI;MACF,KAAK,UAAU,CAAa;KAC9B,QAAY;MACV,OAAO,OAAO,CAAwC;KACxD;KACA,EAAG;IACL,GAAG,iCAAiC;IAGxC,cAAc;IACd,YAAY;GACd,CAAC,GAGE,QAAQ,IAAI,GAAW,UAAU,KACpC,OAAO,eAAe,GAAW,YAAY;IAC3C,WAAW;IACX,cAAc;IACd,YAAY;GACd,CAAC;GAGH,KAAK,IAAM,KAAO,GAChB,IAAI,OAAO,UAAU,eAAe,KAAK,GAAW,CAAG,GAAG;IACxD,IAAM,IAAQ,EAAU;IACxB,AAAsB,OAAO,KAAU,YAAnC,KACF,EAAiB,CAAK;GAE1B;EAEJ;EAIA,OAFA,EAAiB,CAAM,GACvB,IAAgB,MAAM,SAAS,GAAQ,CAAI,GACpC;CACT;CAMA,IAAc,GAAyE;EAGrF,IAA2C,OAAO,KAAS,aAAvD,GACF,OAAO,EAAW,CAAI;EAKxB,IAFiB,eAAe,KAAQ,OAAQ,EAAiC,aAAc,YAEjF;GACZ,IAAM,IAAa,GAKb,IAAQ,EADO,KAAK,cAAc,EAAW,KAC1B,CAAY,GAM/B,IAFU,iBAAiB,KAAc,OAAO,EAAW,eAAgB,cAElD,EAAW,cACtC,EAAW,kBAAkB;IAE7B,AADA,EAAM,QAAQ,EAAW,OACzB,EAAW,CAAK;GAClB,CAAC,IACC,EAAW,WAAW,MAAa;IAEnC,AADA,EAAM,QAAQ,GACd,EAAW,CAAK;GAClB,CAAC;GAQH,OANI,EAAmB,IACrB,QAAkB,EAAY,CAAC,IACtB,EAAgB,KACzB,QAAqB,EAAY,CAAC,GAG7B;EACT;EAEA,IAAM,IAAQ,EAAW,CAAI,GACvB,IAAiB;EAEvB,IAAI,iBAAiB,KAAkB,OAAO,EAAe,eAAgB,YAAY;GACvF,IAAM,IAAc,EAAe,kBAAkB;IACnD,EAAW,CAAK;GAClB,CAAC;GAED,AAAI,EAAmB,IACrB,QAAkB,EAAY,CAAC,IACtB,EAAgB,KACzB,QAAqB,EAAY,CAAC;EAEtC;EAEA,OAAO;CACT;AACF"}
|