@logixjs/core 0.0.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/Action-BkRHy2vg.d.cts +10 -0
- package/dist/Action-mqVvtEHt.d.ts +10 -0
- package/dist/Action.cjs +57 -0
- package/dist/Action.cjs.map +1 -0
- package/dist/Action.d.cts +2 -0
- package/dist/Action.d.ts +2 -0
- package/dist/Action.js +9 -0
- package/dist/Action.js.map +1 -0
- package/dist/Actions-AsQ07yTP.d.cts +22 -0
- package/dist/Actions-AsQ07yTP.d.ts +22 -0
- package/dist/Actions.cjs +19 -0
- package/dist/Actions.cjs.map +1 -0
- package/dist/Actions.d.cts +2 -0
- package/dist/Actions.d.ts +2 -0
- package/dist/Actions.js +2 -0
- package/dist/Actions.js.map +1 -0
- package/dist/Bound-BN1DQ_lM.d.ts +23 -0
- package/dist/Bound-BPIfH9SS.d.cts +23 -0
- package/dist/Bound.cjs +1532 -0
- package/dist/Bound.cjs.map +1 -0
- package/dist/Bound.d.cts +7 -0
- package/dist/Bound.d.ts +7 -0
- package/dist/Bound.js +25 -0
- package/dist/Bound.js.map +1 -0
- package/dist/Debug-B5q5Bkzx.d.ts +320 -0
- package/dist/Debug-Bq8Sqjcr.d.cts +320 -0
- package/dist/Debug.cjs +1821 -0
- package/dist/Debug.cjs.map +1 -0
- package/dist/Debug.d.cts +13 -0
- package/dist/Debug.d.ts +13 -0
- package/dist/Debug.js +76 -0
- package/dist/Debug.js.map +1 -0
- package/dist/EffectOp.cjs +169 -0
- package/dist/EffectOp.cjs.map +1 -0
- package/dist/EffectOp.d.cts +118 -0
- package/dist/EffectOp.d.ts +118 -0
- package/dist/EffectOp.js +28 -0
- package/dist/EffectOp.js.map +1 -0
- package/dist/Env-DuJ6JrU2.d.cts +10 -0
- package/dist/Env-DuJ6JrU2.d.ts +10 -0
- package/dist/Env.cjs +60 -0
- package/dist/Env.cjs.map +1 -0
- package/dist/Env.d.cts +1 -0
- package/dist/Env.d.ts +1 -0
- package/dist/Env.js +11 -0
- package/dist/Env.js.map +1 -0
- package/dist/Flow-1fZT8MpX.d.cts +152 -0
- package/dist/Flow-BhpjE22E.d.ts +152 -0
- package/dist/Flow.cjs +504 -0
- package/dist/Flow.cjs.map +1 -0
- package/dist/Flow.d.cts +8 -0
- package/dist/Flow.d.ts +8 -0
- package/dist/Flow.js +15 -0
- package/dist/Flow.js.map +1 -0
- package/dist/Handle-D8D1zPb_.d.cts +30 -0
- package/dist/Handle-D_cLW1Z3.d.ts +30 -0
- package/dist/Handle.cjs +42 -0
- package/dist/Handle.cjs.map +1 -0
- package/dist/Handle.d.cts +7 -0
- package/dist/Handle.d.ts +7 -0
- package/dist/Handle.js +10 -0
- package/dist/Handle.js.map +1 -0
- package/dist/Kernel-8kC-jOda.d.cts +171 -0
- package/dist/Kernel-CnGE1Fyk.d.ts +171 -0
- package/dist/Kernel.cjs +284 -0
- package/dist/Kernel.cjs.map +1 -0
- package/dist/Kernel.d.cts +14 -0
- package/dist/Kernel.d.ts +14 -0
- package/dist/Kernel.js +36 -0
- package/dist/Kernel.js.map +1 -0
- package/dist/Link-Db7975nU.d.ts +45 -0
- package/dist/Link-fX8x1eCK.d.cts +45 -0
- package/dist/Link.cjs +542 -0
- package/dist/Link.cjs.map +1 -0
- package/dist/Link.d.cts +7 -0
- package/dist/Link.d.ts +7 -0
- package/dist/Link.js +35 -0
- package/dist/Link.js.map +1 -0
- package/dist/Logic-BRjEMr-W.d.ts +38 -0
- package/dist/Logic-DRh4sDZj.d.cts +38 -0
- package/dist/Logic.cjs +37 -0
- package/dist/Logic.cjs.map +1 -0
- package/dist/Logic.d.cts +7 -0
- package/dist/Logic.d.ts +7 -0
- package/dist/Logic.js +10 -0
- package/dist/Logic.js.map +1 -0
- package/dist/MatchBuilder-0QOc-nlU.d.ts +14 -0
- package/dist/MatchBuilder-CJk5oCkR.d.cts +14 -0
- package/dist/MatchBuilder.cjs +85 -0
- package/dist/MatchBuilder.cjs.map +1 -0
- package/dist/MatchBuilder.d.cts +8 -0
- package/dist/MatchBuilder.d.ts +8 -0
- package/dist/MatchBuilder.js +11 -0
- package/dist/MatchBuilder.js.map +1 -0
- package/dist/Middleware.cjs +411 -0
- package/dist/Middleware.cjs.map +1 -0
- package/dist/Middleware.d.cts +88 -0
- package/dist/Middleware.d.ts +88 -0
- package/dist/Middleware.js +27 -0
- package/dist/Middleware.js.map +1 -0
- package/dist/Module-B_0xRDMR.d.cts +203 -0
- package/dist/Module-DnzluX2J.d.ts +203 -0
- package/dist/Module.cjs +13512 -0
- package/dist/Module.cjs.map +1 -0
- package/dist/Module.d.cts +8 -0
- package/dist/Module.d.ts +8 -0
- package/dist/Module.js +53 -0
- package/dist/Module.js.map +1 -0
- package/dist/ModuleTag-C8FHY_sY.d.ts +93 -0
- package/dist/ModuleTag-EGbgBMpZ.d.cts +93 -0
- package/dist/ModuleTag.cjs +12231 -0
- package/dist/ModuleTag.cjs.map +1 -0
- package/dist/ModuleTag.d.cts +8 -0
- package/dist/ModuleTag.d.ts +8 -0
- package/dist/ModuleTag.js +39 -0
- package/dist/ModuleTag.js.map +1 -0
- package/dist/Observability-COqEvp2C.d.cts +713 -0
- package/dist/Observability-cY4kLn0S.d.ts +713 -0
- package/dist/Observability.cjs +5865 -0
- package/dist/Observability.cjs.map +1 -0
- package/dist/Observability.d.cts +9 -0
- package/dist/Observability.d.ts +9 -0
- package/dist/Observability.js +41 -0
- package/dist/Observability.js.map +1 -0
- package/dist/Platform-C49Pv956.d.cts +21 -0
- package/dist/Platform-C49Pv956.d.ts +21 -0
- package/dist/Platform-CHX8o-U4.d.ts +51 -0
- package/dist/Platform-CVlv0xLQ.d.cts +51 -0
- package/dist/Platform.cjs +58 -0
- package/dist/Platform.cjs.map +1 -0
- package/dist/Platform.d.cts +4 -0
- package/dist/Platform.d.ts +4 -0
- package/dist/Platform.js +15 -0
- package/dist/Platform.js.map +1 -0
- package/dist/Process-CM9xbMdP.d.ts +92 -0
- package/dist/Process-mL8fHDSB.d.cts +92 -0
- package/dist/Process.cjs +575 -0
- package/dist/Process.cjs.map +1 -0
- package/dist/Process.d.cts +8 -0
- package/dist/Process.d.ts +8 -0
- package/dist/Process.js +42 -0
- package/dist/Process.js.map +1 -0
- package/dist/ReadQuery-BlMwhe-F.d.ts +30 -0
- package/dist/ReadQuery-CL5XlXts.d.cts +30 -0
- package/dist/ReadQuery-SinbStGF.d.cts +38 -0
- package/dist/ReadQuery-SinbStGF.d.ts +38 -0
- package/dist/ReadQuery.cjs +377 -0
- package/dist/ReadQuery.cjs.map +1 -0
- package/dist/ReadQuery.d.cts +2 -0
- package/dist/ReadQuery.d.ts +2 -0
- package/dist/ReadQuery.js +14 -0
- package/dist/ReadQuery.js.map +1 -0
- package/dist/Reflection-CQnKwPXj.d.ts +182 -0
- package/dist/Reflection-Kabo1mlU.d.cts +182 -0
- package/dist/Reflection.cjs +2954 -0
- package/dist/Reflection.cjs.map +1 -0
- package/dist/Reflection.d.cts +17 -0
- package/dist/Reflection.d.ts +17 -0
- package/dist/Reflection.js +40 -0
- package/dist/Reflection.js.map +1 -0
- package/dist/Resource-Dy1xD_DG.d.cts +75 -0
- package/dist/Resource-Dy1xD_DG.d.ts +75 -0
- package/dist/Resource.cjs +166 -0
- package/dist/Resource.cjs.map +1 -0
- package/dist/Resource.d.cts +3 -0
- package/dist/Resource.d.ts +3 -0
- package/dist/Resource.js +21 -0
- package/dist/Resource.js.map +1 -0
- package/dist/Root-7ADUMk4t.d.cts +29 -0
- package/dist/Root-7ADUMk4t.d.ts +29 -0
- package/dist/Root.cjs +125 -0
- package/dist/Root.cjs.map +1 -0
- package/dist/Root.d.cts +4 -0
- package/dist/Root.d.ts +4 -0
- package/dist/Root.js +12 -0
- package/dist/Root.js.map +1 -0
- package/dist/Runtime-B-aL-f29.d.cts +274 -0
- package/dist/Runtime-CtyzZG4i.d.ts +274 -0
- package/dist/Runtime.cjs +5740 -0
- package/dist/Runtime.cjs.map +1 -0
- package/dist/Runtime.d.cts +19 -0
- package/dist/Runtime.d.ts +19 -0
- package/dist/Runtime.js +62 -0
- package/dist/Runtime.js.map +1 -0
- package/dist/ScopeRegistry-D1owDNSm.d.cts +61 -0
- package/dist/ScopeRegistry-D1owDNSm.d.ts +61 -0
- package/dist/ScopeRegistry.cjs +152 -0
- package/dist/ScopeRegistry.cjs.map +1 -0
- package/dist/ScopeRegistry.d.cts +2 -0
- package/dist/ScopeRegistry.d.ts +2 -0
- package/dist/ScopeRegistry.js +16 -0
- package/dist/ScopeRegistry.js.map +1 -0
- package/dist/State-CU50R26M.d.cts +19 -0
- package/dist/State-CU50R26M.d.ts +19 -0
- package/dist/State.cjs +19 -0
- package/dist/State.cjs.map +1 -0
- package/dist/State.d.cts +2 -0
- package/dist/State.d.ts +2 -0
- package/dist/State.js +2 -0
- package/dist/State.js.map +1 -0
- package/dist/StateTrait-BGsZghTz.d.ts +122 -0
- package/dist/StateTrait-OWhbj12c.d.cts +122 -0
- package/dist/StateTrait.cjs +2737 -0
- package/dist/StateTrait.cjs.map +1 -0
- package/dist/StateTrait.d.cts +9 -0
- package/dist/StateTrait.d.ts +9 -0
- package/dist/StateTrait.js +39 -0
- package/dist/StateTrait.js.map +1 -0
- package/dist/TraitLifecycle-CwV5WPFX.d.cts +88 -0
- package/dist/TraitLifecycle-LdIWmKlg.d.ts +88 -0
- package/dist/TraitLifecycle.cjs +581 -0
- package/dist/TraitLifecycle.cjs.map +1 -0
- package/dist/TraitLifecycle.d.cts +8 -0
- package/dist/TraitLifecycle.d.ts +8 -0
- package/dist/TraitLifecycle.js +24 -0
- package/dist/TraitLifecycle.js.map +1 -0
- package/dist/action-DiMDD_0v.d.cts +35 -0
- package/dist/action-DiMDD_0v.d.ts +35 -0
- package/dist/chunk-24VULZ7A.js +76 -0
- package/dist/chunk-24VULZ7A.js.map +1 -0
- package/dist/chunk-3IYZ5IGG.js +17 -0
- package/dist/chunk-3IYZ5IGG.js.map +1 -0
- package/dist/chunk-3QMIVH35.js +43 -0
- package/dist/chunk-3QMIVH35.js.map +1 -0
- package/dist/chunk-3RMKLXHX.js +83 -0
- package/dist/chunk-3RMKLXHX.js.map +1 -0
- package/dist/chunk-3TMODYZV.js +111 -0
- package/dist/chunk-3TMODYZV.js.map +1 -0
- package/dist/chunk-3VG5TWQR.js +27 -0
- package/dist/chunk-3VG5TWQR.js.map +1 -0
- package/dist/chunk-4CQAV7YB.js +37 -0
- package/dist/chunk-4CQAV7YB.js.map +1 -0
- package/dist/chunk-4SO6JMZL.js +7 -0
- package/dist/chunk-4SO6JMZL.js.map +1 -0
- package/dist/chunk-66ALHVEX.js +40 -0
- package/dist/chunk-66ALHVEX.js.map +1 -0
- package/dist/chunk-76WT3HOR.js +397 -0
- package/dist/chunk-76WT3HOR.js.map +1 -0
- package/dist/chunk-ANLBCBDC.js +285 -0
- package/dist/chunk-ANLBCBDC.js.map +1 -0
- package/dist/chunk-AUIR5O6W.js +75 -0
- package/dist/chunk-AUIR5O6W.js.map +1 -0
- package/dist/chunk-BABLDP24.js +445 -0
- package/dist/chunk-BABLDP24.js.map +1 -0
- package/dist/chunk-BE3HW4FY.js +1099 -0
- package/dist/chunk-BE3HW4FY.js.map +1 -0
- package/dist/chunk-BZ2SHDN2.js +54 -0
- package/dist/chunk-BZ2SHDN2.js.map +1 -0
- package/dist/chunk-CW6T36TN.js +393 -0
- package/dist/chunk-CW6T36TN.js.map +1 -0
- package/dist/chunk-DFNM3WX2.js +632 -0
- package/dist/chunk-DFNM3WX2.js.map +1 -0
- package/dist/chunk-DMBALCE2.js +1034 -0
- package/dist/chunk-DMBALCE2.js.map +1 -0
- package/dist/chunk-EGK3KN7B.js +406 -0
- package/dist/chunk-EGK3KN7B.js.map +1 -0
- package/dist/chunk-EY4NZKDR.js +19 -0
- package/dist/chunk-EY4NZKDR.js.map +1 -0
- package/dist/chunk-G5ZBFPNU.js +23 -0
- package/dist/chunk-G5ZBFPNU.js.map +1 -0
- package/dist/chunk-GMPEOUP2.js +31 -0
- package/dist/chunk-GMPEOUP2.js.map +1 -0
- package/dist/chunk-IHVBV5C2.js +279 -0
- package/dist/chunk-IHVBV5C2.js.map +1 -0
- package/dist/chunk-IPF7E66P.js +23 -0
- package/dist/chunk-IPF7E66P.js.map +1 -0
- package/dist/chunk-JCXGZRMU.js +204 -0
- package/dist/chunk-JCXGZRMU.js.map +1 -0
- package/dist/chunk-JGIWG6SR.js +6359 -0
- package/dist/chunk-JGIWG6SR.js.map +1 -0
- package/dist/chunk-JWOYLO27.js +241 -0
- package/dist/chunk-JWOYLO27.js.map +1 -0
- package/dist/chunk-KIXAU3GM.js +137 -0
- package/dist/chunk-KIXAU3GM.js.map +1 -0
- package/dist/chunk-KL5ACTCT.js +8 -0
- package/dist/chunk-KL5ACTCT.js.map +1 -0
- package/dist/chunk-KP7MUZNX.js +83 -0
- package/dist/chunk-KP7MUZNX.js.map +1 -0
- package/dist/chunk-LEU6UA5J.js +1 -0
- package/dist/chunk-LEU6UA5J.js.map +1 -0
- package/dist/chunk-M2RGJPXX.js +35 -0
- package/dist/chunk-M2RGJPXX.js.map +1 -0
- package/dist/chunk-M3BFQ7HK.js +13 -0
- package/dist/chunk-M3BFQ7HK.js.map +1 -0
- package/dist/chunk-M3WTHJHJ.js +1051 -0
- package/dist/chunk-M3WTHJHJ.js.map +1 -0
- package/dist/chunk-M7IYCTJV.js +79 -0
- package/dist/chunk-M7IYCTJV.js.map +1 -0
- package/dist/chunk-NBD3KUOZ.js +838 -0
- package/dist/chunk-NBD3KUOZ.js.map +1 -0
- package/dist/chunk-NQZ2OSGR.js +151 -0
- package/dist/chunk-NQZ2OSGR.js.map +1 -0
- package/dist/chunk-NZJKFF45.js +106 -0
- package/dist/chunk-NZJKFF45.js.map +1 -0
- package/dist/chunk-OFADUJWJ.js +175 -0
- package/dist/chunk-OFADUJWJ.js.map +1 -0
- package/dist/chunk-OGWBVHB3.js +461 -0
- package/dist/chunk-OGWBVHB3.js.map +1 -0
- package/dist/chunk-PAYXCY6A.js +1696 -0
- package/dist/chunk-PAYXCY6A.js.map +1 -0
- package/dist/chunk-PYOE4VSI.js +1924 -0
- package/dist/chunk-PYOE4VSI.js.map +1 -0
- package/dist/chunk-PZ5AY32C.js +10 -0
- package/dist/chunk-PZ5AY32C.js.map +1 -0
- package/dist/chunk-QCHIQWAJ.js +21 -0
- package/dist/chunk-QCHIQWAJ.js.map +1 -0
- package/dist/chunk-QMM6O4CD.js +71 -0
- package/dist/chunk-QMM6O4CD.js.map +1 -0
- package/dist/chunk-RNFE3ML2.js +22 -0
- package/dist/chunk-RNFE3ML2.js.map +1 -0
- package/dist/chunk-TAAPQVZN.js +23 -0
- package/dist/chunk-TAAPQVZN.js.map +1 -0
- package/dist/chunk-THATMZXD.js +21 -0
- package/dist/chunk-THATMZXD.js.map +1 -0
- package/dist/chunk-TKZ7MEIA.js +27 -0
- package/dist/chunk-TKZ7MEIA.js.map +1 -0
- package/dist/chunk-TQOBJYDP.js +7 -0
- package/dist/chunk-TQOBJYDP.js.map +1 -0
- package/dist/chunk-VZB726PE.js +93 -0
- package/dist/chunk-VZB726PE.js.map +1 -0
- package/dist/chunk-W3TEWHLO.js +568 -0
- package/dist/chunk-W3TEWHLO.js.map +1 -0
- package/dist/chunk-YS3AZQ2G.js +52 -0
- package/dist/chunk-YS3AZQ2G.js.map +1 -0
- package/dist/chunk-ZDTRWK5F.js +40 -0
- package/dist/chunk-ZDTRWK5F.js.map +1 -0
- package/dist/chunk-ZFLHVFUC.js +192 -0
- package/dist/chunk-ZFLHVFUC.js.map +1 -0
- package/dist/chunk-ZFY7U2FR.js +133 -0
- package/dist/chunk-ZFY7U2FR.js.map +1 -0
- package/dist/chunk-ZGDVUPTM.js +270 -0
- package/dist/chunk-ZGDVUPTM.js.map +1 -0
- package/dist/index.cjs +19700 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +195 -0
- package/dist/index.d.ts +195 -0
- package/dist/index.js +286 -0
- package/dist/index.js.map +1 -0
- package/dist/ir-BMP7yxJJ.d.cts +39 -0
- package/dist/ir-DUOz6H-5.d.ts +39 -0
- package/dist/module-B8CBqIZ_.d.cts +1191 -0
- package/dist/module-k7m3txak.d.ts +1191 -0
- package/dist/protocol-g_1897M2.d.cts +127 -0
- package/dist/protocol-g_1897M2.d.ts +127 -0
- package/package.json +162 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// src/internal/runtime/core/env.ts
|
|
2
|
+
import { Context, Layer } from "effect";
|
|
3
|
+
var getNodeEnv = () => {
|
|
4
|
+
try {
|
|
5
|
+
const env = globalThis?.process?.env;
|
|
6
|
+
return typeof env?.NODE_ENV === "string" ? env.NODE_ENV : void 0;
|
|
7
|
+
} catch {
|
|
8
|
+
return void 0;
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
var isDevEnv = () => getNodeEnv() !== "production";
|
|
12
|
+
var getDefaultStateTxnInstrumentation = () => isDevEnv() ? "full" : "light";
|
|
13
|
+
var StateTransactionConfigTagImpl = class extends Context.Tag("@logixjs/core/StateTransactionRuntimeConfig")() {
|
|
14
|
+
};
|
|
15
|
+
var StateTransactionConfigTag = StateTransactionConfigTagImpl;
|
|
16
|
+
var ReadQueryStrictGateConfigTagImpl = class extends Context.Tag("@logixjs/core/ReadQueryStrictGateRuntimeConfig")() {
|
|
17
|
+
};
|
|
18
|
+
var ReadQueryStrictGateConfigTag = ReadQueryStrictGateConfigTagImpl;
|
|
19
|
+
var ReplayModeConfigTagImpl = class extends Context.Tag("@logixjs/core/ReplayModeConfig")() {
|
|
20
|
+
};
|
|
21
|
+
var ReplayModeConfigTag = ReplayModeConfigTagImpl;
|
|
22
|
+
var StateTransactionOverridesTagImpl = class extends Context.Tag("@logixjs/core/StateTransactionOverrides")() {
|
|
23
|
+
};
|
|
24
|
+
var StateTransactionOverridesTag = StateTransactionOverridesTagImpl;
|
|
25
|
+
var ConcurrencyPolicyTagImpl = class extends Context.Tag("@logixjs/core/ConcurrencyPolicy")() {
|
|
26
|
+
};
|
|
27
|
+
var ConcurrencyPolicyTag = ConcurrencyPolicyTagImpl;
|
|
28
|
+
var ConcurrencyPolicyOverridesTagImpl = class extends Context.Tag("@logixjs/core/ConcurrencyPolicyOverrides")() {
|
|
29
|
+
};
|
|
30
|
+
var ConcurrencyPolicyOverridesTag = ConcurrencyPolicyOverridesTagImpl;
|
|
31
|
+
|
|
32
|
+
export {
|
|
33
|
+
getNodeEnv,
|
|
34
|
+
isDevEnv,
|
|
35
|
+
getDefaultStateTxnInstrumentation,
|
|
36
|
+
StateTransactionConfigTag,
|
|
37
|
+
ReadQueryStrictGateConfigTag,
|
|
38
|
+
ReplayModeConfigTag,
|
|
39
|
+
StateTransactionOverridesTag,
|
|
40
|
+
ConcurrencyPolicyTag,
|
|
41
|
+
ConcurrencyPolicyOverridesTag
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=chunk-3QMIVH35.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/runtime/core/env.ts"],"sourcesContent":["import { Context, Layer } from 'effect'\nimport type { TraitConvergeRequestedMode } from '../../state-trait/model.js'\nimport type { ReadQueryStrictGateConfig } from './ReadQuery.js'\n\n// Unified runtime env detection, avoiding bundlers inlining NODE_ENV at build time.\nexport const getNodeEnv = (): string | undefined => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const env = (globalThis as any)?.process?.env\n return typeof env?.NODE_ENV === 'string' ? env.NODE_ENV : undefined\n } catch {\n return undefined\n }\n}\n\nexport const isDevEnv = (): boolean => getNodeEnv() !== 'production'\n\nexport type StateTransactionInstrumentation = 'full' | 'light'\n\n/**\n * getDefaultStateTxnInstrumentation:\n * - Currently chooses default instrumentation by NODE_ENV:\n * - dev / test: full (keep patches and snapshots for debugging).\n * - production: light (keep minimal semantics to reduce overhead).\n * - May evolve with finer-grained overrides in Runtime.make / Module.make.\n */\nexport const getDefaultStateTxnInstrumentation = (): StateTransactionInstrumentation => (isDevEnv() ? 'full' : 'light')\n\n/**\n * Runtime-level StateTransaction config Service:\n * - Provided at the app layer by Logix.Runtime.make / AppRuntime.makeApp.\n * - ModuleRuntime.make can read runtime-level defaults from Env.\n *\n * Notes:\n * - instrumentation is only a runtime-level default.\n * - Explicit instrumentation in ModuleImpl / ModuleRuntimeOptions has higher priority.\n */\nexport interface StateTransactionRuntimeConfig {\n readonly instrumentation?: StateTransactionInstrumentation\n /**\n * StateTrait derived converge budget (ms):\n * - Exceeding the budget triggers a soft degrade (freeze derived fields, preserve base writes and 0/1 commit semantics).\n * - Default is 200ms (aligned with the 007 spec threshold).\n */\n readonly traitConvergeBudgetMs?: number\n /**\n * Auto-mode decision budget (ms):\n * - Only used during the decision phase when requestedMode=\"auto\".\n * - Exceeding the budget must immediately fall back to full (and record evidence).\n */\n readonly traitConvergeDecisionBudgetMs?: number\n /**\n * StateTrait converge scheduling strategy:\n * - full: full topo execution (current default; safest).\n * - dirty: minimal triggering based on dirtyPaths + deps in the txn window (requires accurate deps).\n */\n readonly traitConvergeMode?: TraitConvergeRequestedMode\n /**\n * 043: Trait converge time-slicing (explicit opt-in). Disabled by default.\n */\n readonly traitConvergeTimeSlicing?: TraitConvergeTimeSlicingPatch\n /**\n * 060: Txn Lanes (priority scheduling for transaction follow-up work). Enabled by default since 062.\n */\n readonly txnLanes?: TxnLanesPatch\n /**\n * Runtime-level per-module overrides (hotfix path):\n * - Only affects converge behavior for the specified moduleId.\n * - Lower priority than Provider overrides.\n */\n readonly traitConvergeOverridesByModuleId?: Readonly<Record<string, StateTransactionTraitConvergeOverrides>>\n /**\n * 060: Txn Lanes runtime_module overrides (hotfix / gradual tuning).\n * - Only affects the specified moduleId.\n * - Lower priority than Provider overrides.\n */\n readonly txnLanesOverridesByModuleId?: Readonly<Record<string, TxnLanesPatch>>\n}\n\nclass StateTransactionConfigTagImpl extends Context.Tag('@logixjs/core/StateTransactionRuntimeConfig')<\n StateTransactionConfigTagImpl,\n StateTransactionRuntimeConfig\n>() {}\n\nexport const StateTransactionConfigTag = StateTransactionConfigTagImpl\n\nexport type ReadQueryStrictGateRuntimeConfig = ReadQueryStrictGateConfig\n\nclass ReadQueryStrictGateConfigTagImpl extends Context.Tag('@logixjs/core/ReadQueryStrictGateRuntimeConfig')<\n ReadQueryStrictGateConfigTagImpl,\n ReadQueryStrictGateRuntimeConfig\n>() {}\n\nexport const ReadQueryStrictGateConfigTag = ReadQueryStrictGateConfigTagImpl\n\nexport type ReplayMode = 'live' | 'replay'\n\nexport interface ReplayModeConfig {\n readonly mode: ReplayMode\n}\n\nclass ReplayModeConfigTagImpl extends Context.Tag('@logixjs/core/ReplayModeConfig')<\n ReplayModeConfigTagImpl,\n ReplayModeConfig\n>() {}\n\nexport const ReplayModeConfigTag = ReplayModeConfigTagImpl\n\nexport const replayModeLayer = (mode: ReplayMode): Layer.Layer<ReplayModeConfigTagImpl, never, never> =>\n Layer.succeed(ReplayModeConfigTag, { mode })\n\nexport interface StateTransactionTraitConvergeOverrides {\n readonly traitConvergeMode?: TraitConvergeRequestedMode\n readonly traitConvergeBudgetMs?: number\n readonly traitConvergeDecisionBudgetMs?: number\n readonly traitConvergeTimeSlicing?: TraitConvergeTimeSlicingPatch\n}\n\nexport interface TxnLanesPatch {\n /**\n * enabled: whether Txn Lanes is enabled (default on since 062).\n * - undefined: default enabled (when not explicitly configured)\n * - false: disabled (returns to baseline behavior)\n * - true: enabled (only affects scheduling of follow-up work outside the transaction; transactions remain synchronous)\n */\n readonly enabled?: boolean\n /**\n * overrideMode: runtime temporary override (for debugging/rollback/comparison).\n * - forced_off: forcibly disables Txn Lanes (returns to baseline behavior).\n * - forced_sync: forces fully synchronous execution (ignores non-urgent deferral and time-slicing; used for comparisons).\n *\n * Notes:\n * - Override precedence follows StateTransactionOverrides: provider > runtime_module > runtime_default > builtin.\n * - Overrides must be explainable by evidence (see 060 LaneEvidence reasons).\n */\n readonly overrideMode?: 'forced_off' | 'forced_sync'\n /** non-urgent work loop slice budget (ms). */\n readonly budgetMs?: number\n /** Non-urgent backlog coalescing window (ms). */\n readonly debounceMs?: number\n /** Max lag upper bound (ms): exceeding it triggers an explainable starvation protection (forced catch-up). */\n readonly maxLagMs?: number\n /** Whether to allow coalescing/canceling intermediate non-urgent work (must preserve eventual consistency). */\n readonly allowCoalesce?: boolean\n /**\n * Yield strategy for the non-urgent work loop (progressive enhancement).\n * - baseline: uses only time budget + hard upper bound\n * - inputPending: when supported by browsers, also consults `navigator.scheduling.isInputPending`\n */\n readonly yieldStrategy?: 'baseline' | 'inputPending'\n}\n\nexport interface TraitConvergeTimeSlicingPatch {\n /**\n * enabled:\n * - false/undefined: disabled (default)\n * - true: enables time-slicing (only affects computed/link explicitly marked as deferred)\n */\n readonly enabled?: boolean\n /**\n * debounceMs: coalescing interval (ms) for the deferral window; merges high-frequency inputs into one deferred flush.\n */\n readonly debounceMs?: number\n /**\n * maxLagMs: max lag upper bound (ms); exceeding it triggers an explainable forced flush (starvation protection).\n */\n readonly maxLagMs?: number\n}\n\n/**\n * Provider-scoped StateTransactionOverrides (delta overrides):\n * - Used to inject more local overrides into a Provider subtree on top of inherited global runtime config.\n * - Override precedence: provider > runtime_module > runtime_default > builtin.\n */\nexport interface StateTransactionOverrides {\n readonly traitConvergeMode?: TraitConvergeRequestedMode\n readonly traitConvergeBudgetMs?: number\n readonly traitConvergeDecisionBudgetMs?: number\n readonly traitConvergeTimeSlicing?: TraitConvergeTimeSlicingPatch\n readonly traitConvergeOverridesByModuleId?: Readonly<Record<string, StateTransactionTraitConvergeOverrides>>\n /** 060: Txn Lanes provider-level overrides (delta overrides). */\n readonly txnLanes?: TxnLanesPatch\n /** 060: Txn Lanes provider_module overrides (by moduleId). */\n readonly txnLanesOverridesByModuleId?: Readonly<Record<string, TxnLanesPatch>>\n}\n\nclass StateTransactionOverridesTagImpl extends Context.Tag('@logixjs/core/StateTransactionOverrides')<\n StateTransactionOverridesTagImpl,\n StateTransactionOverrides\n>() {}\n\nexport const StateTransactionOverridesTag = StateTransactionOverridesTagImpl\n\nexport type ConcurrencyLimit = number | 'unbounded'\n\nexport interface ConcurrencyPolicyPatch {\n readonly concurrencyLimit?: ConcurrencyLimit\n readonly losslessBackpressureCapacity?: number\n readonly allowUnbounded?: boolean\n readonly pressureWarningThreshold?: {\n readonly backlogCount?: number\n readonly backlogDurationMs?: number\n }\n readonly warningCooldownMs?: number\n}\n\n/**\n * Runtime-level ConcurrencyPolicy:\n * - Provided at the app layer by Logix.Runtime.make / AppRuntime.makeApp.\n * - ModuleRuntime merges sources via a resolver (builtin/runtime_module/provider, etc.).\n *\n * Notes:\n * - overridesByModuleId is used for runtime_module hot-switching (hotfix / gradual tuning) and is lower priority than provider overrides.\n */\nexport interface ConcurrencyPolicy extends ConcurrencyPolicyPatch {\n readonly overridesByModuleId?: Readonly<Record<string, ConcurrencyPolicyPatch>>\n}\n\nclass ConcurrencyPolicyTagImpl extends Context.Tag('@logixjs/core/ConcurrencyPolicy')<\n ConcurrencyPolicyTagImpl,\n ConcurrencyPolicy\n>() {}\n\nexport const ConcurrencyPolicyTag = ConcurrencyPolicyTagImpl\n\n/**\n * Provider-scoped ConcurrencyPolicyOverrides (delta overrides):\n * - Used to inject more local overrides into a Provider subtree on top of inherited global runtime config.\n * - Override precedence: provider > runtime_module > runtime_default > builtin.\n */\nexport interface ConcurrencyPolicyOverrides extends ConcurrencyPolicyPatch {\n readonly overridesByModuleId?: Readonly<Record<string, ConcurrencyPolicyPatch>>\n}\n\nclass ConcurrencyPolicyOverridesTagImpl extends Context.Tag('@logixjs/core/ConcurrencyPolicyOverrides')<\n ConcurrencyPolicyOverridesTagImpl,\n ConcurrencyPolicyOverrides\n>() {}\n\nexport const ConcurrencyPolicyOverridesTag = ConcurrencyPolicyOverridesTagImpl\n"],"mappings":";AAAA,SAAS,SAAS,aAAa;AAKxB,IAAM,aAAa,MAA0B;AAClD,MAAI;AAEF,UAAM,MAAO,YAAoB,SAAS;AAC1C,WAAO,OAAO,KAAK,aAAa,WAAW,IAAI,WAAW;AAAA,EAC5D,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEO,IAAM,WAAW,MAAe,WAAW,MAAM;AAWjD,IAAM,oCAAoC,MAAwC,SAAS,IAAI,SAAS;AAqD/G,IAAM,gCAAN,cAA4C,QAAQ,IAAI,6CAA6C,EAGnG,EAAE;AAAC;AAEE,IAAM,4BAA4B;AAIzC,IAAM,mCAAN,cAA+C,QAAQ,IAAI,gDAAgD,EAGzG,EAAE;AAAC;AAEE,IAAM,+BAA+B;AAQ5C,IAAM,0BAAN,cAAsC,QAAQ,IAAI,gCAAgC,EAGhF,EAAE;AAAC;AAEE,IAAM,sBAAsB;AAgFnC,IAAM,mCAAN,cAA+C,QAAQ,IAAI,yCAAyC,EAGlG,EAAE;AAAC;AAEE,IAAM,+BAA+B;AA2B5C,IAAM,2BAAN,cAAuC,QAAQ,IAAI,iCAAiC,EAGlF,EAAE;AAAC;AAEE,IAAM,uBAAuB;AAWpC,IAAM,oCAAN,cAAgD,QAAQ,IAAI,0CAA0C,EAGpG,EAAE;AAAC;AAEE,IAAM,gCAAgC;","names":[]}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isDevEnv
|
|
3
|
+
} from "./chunk-3QMIVH35.js";
|
|
4
|
+
|
|
5
|
+
// src/internal/runtime/core/runtimeInternalsAccessor.ts
|
|
6
|
+
var RUNTIME_INTERNALS = /* @__PURE__ */ Symbol.for("@logixjs/core/runtimeInternals");
|
|
7
|
+
var BOUND_INTERNALS = /* @__PURE__ */ Symbol.for("@logixjs/core/boundInternals");
|
|
8
|
+
var MODULE_TRAITS_PROGRAM = /* @__PURE__ */ Symbol.for("@logixjs/core/moduleTraitsProgram");
|
|
9
|
+
var defineHidden = (target, key, value) => {
|
|
10
|
+
Object.defineProperty(target, key, {
|
|
11
|
+
value,
|
|
12
|
+
enumerable: false,
|
|
13
|
+
configurable: true,
|
|
14
|
+
writable: false
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
var setRuntimeInternals = (runtime, internals) => {
|
|
18
|
+
defineHidden(runtime, RUNTIME_INTERNALS, internals);
|
|
19
|
+
};
|
|
20
|
+
var setBoundInternals = (bound, internals) => {
|
|
21
|
+
defineHidden(bound, BOUND_INTERNALS, internals);
|
|
22
|
+
};
|
|
23
|
+
var setModuleTraitsProgram = (module, program) => {
|
|
24
|
+
defineHidden(module, MODULE_TRAITS_PROGRAM, program);
|
|
25
|
+
};
|
|
26
|
+
var getModuleTraitsProgram = (module) => {
|
|
27
|
+
if (!module) return void 0;
|
|
28
|
+
if (typeof module !== "object" && typeof module !== "function") return void 0;
|
|
29
|
+
return module[MODULE_TRAITS_PROGRAM];
|
|
30
|
+
};
|
|
31
|
+
var formatScope = (moduleId, instanceId) => {
|
|
32
|
+
const m = typeof moduleId === "string" && moduleId.length > 0 ? moduleId : "unknown";
|
|
33
|
+
const i = typeof instanceId === "string" && instanceId.length > 0 ? instanceId : "unknown";
|
|
34
|
+
return `moduleId=${m}, instanceId=${i}`;
|
|
35
|
+
};
|
|
36
|
+
var getRuntimeInternals = (runtime) => {
|
|
37
|
+
const scope = runtime;
|
|
38
|
+
const internals = runtime[RUNTIME_INTERNALS];
|
|
39
|
+
if (!internals) {
|
|
40
|
+
const msg = isDevEnv() ? [
|
|
41
|
+
"[MissingRuntimeInternals] Runtime internals not installed on ModuleRuntime instance.",
|
|
42
|
+
`scope: ${formatScope(scope.moduleId, scope.instanceId)}`,
|
|
43
|
+
"fix:",
|
|
44
|
+
"- Ensure ModuleRuntime.make calls internalHooks.installInternalHooks (020 foundation).",
|
|
45
|
+
"- If you created a mock runtime for tests, attach internals or avoid calling internal-only APIs."
|
|
46
|
+
].join("\n") : "Runtime internals not installed";
|
|
47
|
+
throw new Error(msg);
|
|
48
|
+
}
|
|
49
|
+
const runtimeInstanceId = scope.instanceId;
|
|
50
|
+
if (typeof runtimeInstanceId === "string" && runtimeInstanceId.length > 0 && runtimeInstanceId !== internals.instanceId) {
|
|
51
|
+
throw new Error(
|
|
52
|
+
isDevEnv() ? [
|
|
53
|
+
"[InconsistentRuntimeInternals] Runtime internals instanceId mismatch.",
|
|
54
|
+
`runtime: ${formatScope(scope.moduleId, runtimeInstanceId)}`,
|
|
55
|
+
`internals: ${formatScope(internals.moduleId, internals.instanceId)}`
|
|
56
|
+
].join("\n") : "Runtime internals mismatch"
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
return internals;
|
|
60
|
+
};
|
|
61
|
+
var getBoundInternals = (bound) => {
|
|
62
|
+
const internals = bound[BOUND_INTERNALS];
|
|
63
|
+
if (!internals) {
|
|
64
|
+
const msg = isDevEnv() ? [
|
|
65
|
+
"[MissingBoundInternals] Bound internals not installed on Bound API instance.",
|
|
66
|
+
"fix:",
|
|
67
|
+
"- Ensure BoundApiRuntime attaches internals (020 foundation).",
|
|
68
|
+
"- If you created a mock bound for tests, attach internals or avoid calling internal-only APIs."
|
|
69
|
+
].join("\n") : "Bound internals not installed";
|
|
70
|
+
throw new Error(msg);
|
|
71
|
+
}
|
|
72
|
+
return internals;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
export {
|
|
76
|
+
setRuntimeInternals,
|
|
77
|
+
setBoundInternals,
|
|
78
|
+
setModuleTraitsProgram,
|
|
79
|
+
getModuleTraitsProgram,
|
|
80
|
+
getRuntimeInternals,
|
|
81
|
+
getBoundInternals
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=chunk-3RMKLXHX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/runtime/core/runtimeInternalsAccessor.ts"],"sourcesContent":["import { isDevEnv } from './env.js'\nimport type { RuntimeInternals } from './RuntimeInternals.js'\n\nconst RUNTIME_INTERNALS = Symbol.for('@logixjs/core/runtimeInternals')\nconst BOUND_INTERNALS = Symbol.for('@logixjs/core/boundInternals')\nconst MODULE_TRAITS_PROGRAM = Symbol.for('@logixjs/core/moduleTraitsProgram')\n\nconst defineHidden = (target: object, key: symbol, value: unknown): void => {\n Object.defineProperty(target, key, {\n value,\n enumerable: false,\n configurable: true,\n writable: false,\n })\n}\n\nexport const setRuntimeInternals = (runtime: object, internals: RuntimeInternals): void => {\n defineHidden(runtime, RUNTIME_INTERNALS, internals)\n}\n\nexport const setBoundInternals = (bound: object, internals: RuntimeInternals): void => {\n defineHidden(bound, BOUND_INTERNALS, internals)\n}\n\n/**\n * ModuleTraitsProgram(StateTraitProgram):\n * - Attaches a traits Program to a module definition object (used by TraitLifecycle/Debug).\n * - Uses Symbol + non-enumerable properties to avoid spreading `.__*` magic fields.\n *\n * Note: this is a \"module-definition-side\" internal slot, not RuntimeInternals (instance-level); the semantics differ.\n */\nexport const setModuleTraitsProgram = (module: object, program: unknown): void => {\n defineHidden(module, MODULE_TRAITS_PROGRAM, program)\n}\n\nexport const getModuleTraitsProgram = (module: unknown): unknown | undefined => {\n if (!module) return undefined\n if (typeof module !== 'object' && typeof module !== 'function') return undefined\n return (module as any)[MODULE_TRAITS_PROGRAM] as unknown | undefined\n}\n\nconst formatScope = (moduleId: unknown, instanceId: unknown): string => {\n const m = typeof moduleId === 'string' && moduleId.length > 0 ? moduleId : 'unknown'\n const i = typeof instanceId === 'string' && instanceId.length > 0 ? instanceId : 'unknown'\n return `moduleId=${m}, instanceId=${i}`\n}\n\nexport const getRuntimeInternals = (runtime: object): RuntimeInternals => {\n const scope = runtime as { readonly moduleId?: unknown; readonly instanceId?: unknown }\n const internals = (runtime as any)[RUNTIME_INTERNALS] as RuntimeInternals | undefined\n if (!internals) {\n const msg = isDevEnv()\n ? [\n '[MissingRuntimeInternals] Runtime internals not installed on ModuleRuntime instance.',\n `scope: ${formatScope(scope.moduleId, scope.instanceId)}`,\n 'fix:',\n '- Ensure ModuleRuntime.make calls internalHooks.installInternalHooks (020 foundation).',\n '- If you created a mock runtime for tests, attach internals or avoid calling internal-only APIs.',\n ].join('\\n')\n : 'Runtime internals not installed'\n throw new Error(msg)\n }\n\n const runtimeInstanceId = scope.instanceId\n if (\n typeof runtimeInstanceId === 'string' &&\n runtimeInstanceId.length > 0 &&\n runtimeInstanceId !== internals.instanceId\n ) {\n throw new Error(\n isDevEnv()\n ? [\n '[InconsistentRuntimeInternals] Runtime internals instanceId mismatch.',\n `runtime: ${formatScope(scope.moduleId, runtimeInstanceId)}`,\n `internals: ${formatScope(internals.moduleId, internals.instanceId)}`,\n ].join('\\n')\n : 'Runtime internals mismatch',\n )\n }\n\n return internals\n}\n\nexport const getBoundInternals = (bound: object): RuntimeInternals => {\n const internals = (bound as any)[BOUND_INTERNALS] as RuntimeInternals | undefined\n if (!internals) {\n const msg = isDevEnv()\n ? [\n '[MissingBoundInternals] Bound internals not installed on Bound API instance.',\n 'fix:',\n '- Ensure BoundApiRuntime attaches internals (020 foundation).',\n '- If you created a mock bound for tests, attach internals or avoid calling internal-only APIs.',\n ].join('\\n')\n : 'Bound internals not installed'\n throw new Error(msg)\n }\n\n return internals\n}\n"],"mappings":";;;;;AAGA,IAAM,oBAAoB,uBAAO,IAAI,gCAAgC;AACrE,IAAM,kBAAkB,uBAAO,IAAI,8BAA8B;AACjE,IAAM,wBAAwB,uBAAO,IAAI,mCAAmC;AAE5E,IAAM,eAAe,CAAC,QAAgB,KAAa,UAAyB;AAC1E,SAAO,eAAe,QAAQ,KAAK;AAAA,IACjC;AAAA,IACA,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,UAAU;AAAA,EACZ,CAAC;AACH;AAEO,IAAM,sBAAsB,CAAC,SAAiB,cAAsC;AACzF,eAAa,SAAS,mBAAmB,SAAS;AACpD;AAEO,IAAM,oBAAoB,CAAC,OAAe,cAAsC;AACrF,eAAa,OAAO,iBAAiB,SAAS;AAChD;AASO,IAAM,yBAAyB,CAAC,QAAgB,YAA2B;AAChF,eAAa,QAAQ,uBAAuB,OAAO;AACrD;AAEO,IAAM,yBAAyB,CAAC,WAAyC;AAC9E,MAAI,CAAC,OAAQ,QAAO;AACpB,MAAI,OAAO,WAAW,YAAY,OAAO,WAAW,WAAY,QAAO;AACvE,SAAQ,OAAe,qBAAqB;AAC9C;AAEA,IAAM,cAAc,CAAC,UAAmB,eAAgC;AACtE,QAAM,IAAI,OAAO,aAAa,YAAY,SAAS,SAAS,IAAI,WAAW;AAC3E,QAAM,IAAI,OAAO,eAAe,YAAY,WAAW,SAAS,IAAI,aAAa;AACjF,SAAO,YAAY,CAAC,gBAAgB,CAAC;AACvC;AAEO,IAAM,sBAAsB,CAAC,YAAsC;AACxE,QAAM,QAAQ;AACd,QAAM,YAAa,QAAgB,iBAAiB;AACpD,MAAI,CAAC,WAAW;AACd,UAAM,MAAM,SAAS,IACjB;AAAA,MACE;AAAA,MACA,UAAU,YAAY,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA,MACvD;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI,IACX;AACJ,UAAM,IAAI,MAAM,GAAG;AAAA,EACrB;AAEA,QAAM,oBAAoB,MAAM;AAChC,MACE,OAAO,sBAAsB,YAC7B,kBAAkB,SAAS,KAC3B,sBAAsB,UAAU,YAChC;AACA,UAAM,IAAI;AAAA,MACR,SAAS,IACL;AAAA,QACE;AAAA,QACA,YAAY,YAAY,MAAM,UAAU,iBAAiB,CAAC;AAAA,QAC1D,cAAc,YAAY,UAAU,UAAU,UAAU,UAAU,CAAC;AAAA,MACrE,EAAE,KAAK,IAAI,IACX;AAAA,IACN;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,oBAAoB,CAAC,UAAoC;AACpE,QAAM,YAAa,MAAc,eAAe;AAChD,MAAI,CAAC,WAAW;AACd,UAAM,MAAM,SAAS,IACjB;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI,IACX;AACJ,UAAM,IAAI,MAAM,GAAG;AAAA,EACrB;AAEA,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isDevEnv
|
|
3
|
+
} from "./chunk-TAAPQVZN.js";
|
|
4
|
+
import {
|
|
5
|
+
__export
|
|
6
|
+
} from "./chunk-PZ5AY32C.js";
|
|
7
|
+
|
|
8
|
+
// src/ScopeRegistry.ts
|
|
9
|
+
var ScopeRegistry_exports = {};
|
|
10
|
+
__export(ScopeRegistry_exports, {
|
|
11
|
+
ScopeRegistryTag: () => ScopeRegistryTag,
|
|
12
|
+
ScopedRuntimeTag: () => ScopedRuntimeTag,
|
|
13
|
+
internal: () => internal,
|
|
14
|
+
layer: () => layer
|
|
15
|
+
});
|
|
16
|
+
import { Context, Layer } from "effect";
|
|
17
|
+
var ScopeRegistryTag = class extends Context.Tag("@logixjs/core/ScopeRegistry")() {
|
|
18
|
+
};
|
|
19
|
+
var ScopedRuntimeTag = class extends Context.Tag("@logixjs/core/ScopeRegistry/ScopedRuntime")() {
|
|
20
|
+
};
|
|
21
|
+
var internal = {
|
|
22
|
+
ScopeRegistryTag,
|
|
23
|
+
ScopedRuntimeTag
|
|
24
|
+
};
|
|
25
|
+
var makeRegistry = () => {
|
|
26
|
+
let nextLeaseId = 0;
|
|
27
|
+
const scopes = /* @__PURE__ */ new Map();
|
|
28
|
+
const getStack = (scopeId, token) => {
|
|
29
|
+
const byToken = scopes.get(scopeId);
|
|
30
|
+
if (byToken) {
|
|
31
|
+
const stack = byToken.get(token);
|
|
32
|
+
if (stack) return stack;
|
|
33
|
+
const created2 = [];
|
|
34
|
+
byToken.set(token, created2);
|
|
35
|
+
return created2;
|
|
36
|
+
}
|
|
37
|
+
const created = [];
|
|
38
|
+
const createdByToken = /* @__PURE__ */ new Map();
|
|
39
|
+
createdByToken.set(token, created);
|
|
40
|
+
scopes.set(scopeId, createdByToken);
|
|
41
|
+
return created;
|
|
42
|
+
};
|
|
43
|
+
const tryDeleteEmpty = (scopeId, token) => {
|
|
44
|
+
const byToken = scopes.get(scopeId);
|
|
45
|
+
if (!byToken) return;
|
|
46
|
+
const stack = byToken.get(token);
|
|
47
|
+
if (stack && stack.length === 0) {
|
|
48
|
+
byToken.delete(token);
|
|
49
|
+
}
|
|
50
|
+
if (byToken.size === 0) {
|
|
51
|
+
scopes.delete(scopeId);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
const register = (scopeId, token, value) => {
|
|
55
|
+
nextLeaseId += 1;
|
|
56
|
+
const leaseId = nextLeaseId;
|
|
57
|
+
const stack = getStack(scopeId, token);
|
|
58
|
+
if (isDevEnv() && stack.length > 0) {
|
|
59
|
+
console.debug(
|
|
60
|
+
`[ScopeRegistry] Multiple registrations detected for scopeId="${scopeId}". This is allowed (LIFO), but usually indicates scopeId collisions or missing cleanup.`
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
stack.push({ leaseId, value });
|
|
64
|
+
const release = () => {
|
|
65
|
+
const stack2 = scopes.get(scopeId)?.get(token);
|
|
66
|
+
if (!stack2 || stack2.length === 0) return;
|
|
67
|
+
const last = stack2[stack2.length - 1];
|
|
68
|
+
if (last && last.leaseId === leaseId) {
|
|
69
|
+
stack2.pop();
|
|
70
|
+
tryDeleteEmpty(scopeId, token);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const idx = stack2.findIndex((e) => e.leaseId === leaseId);
|
|
74
|
+
if (idx >= 0) {
|
|
75
|
+
stack2.splice(idx, 1);
|
|
76
|
+
tryDeleteEmpty(scopeId, token);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
return { release };
|
|
80
|
+
};
|
|
81
|
+
const get = (scopeId, token) => {
|
|
82
|
+
const stack = scopes.get(scopeId)?.get(token);
|
|
83
|
+
if (!stack || stack.length === 0) return void 0;
|
|
84
|
+
return stack[stack.length - 1].value;
|
|
85
|
+
};
|
|
86
|
+
const clearToken = (scopeId, token) => {
|
|
87
|
+
const byToken = scopes.get(scopeId);
|
|
88
|
+
if (!byToken) return;
|
|
89
|
+
byToken.delete(token);
|
|
90
|
+
if (byToken.size === 0) {
|
|
91
|
+
scopes.delete(scopeId);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
const clearScope = (scopeId) => {
|
|
95
|
+
scopes.delete(scopeId);
|
|
96
|
+
};
|
|
97
|
+
const clearAll = () => {
|
|
98
|
+
scopes.clear();
|
|
99
|
+
};
|
|
100
|
+
return { register, get, clearToken, clearScope, clearAll };
|
|
101
|
+
};
|
|
102
|
+
var layer = () => Layer.succeed(ScopeRegistryTag, makeRegistry());
|
|
103
|
+
|
|
104
|
+
export {
|
|
105
|
+
ScopeRegistryTag,
|
|
106
|
+
ScopedRuntimeTag,
|
|
107
|
+
internal,
|
|
108
|
+
layer,
|
|
109
|
+
ScopeRegistry_exports
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=chunk-3TMODYZV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ScopeRegistry.ts"],"sourcesContent":["import { Context, Layer, ManagedRuntime } from 'effect'\nimport { isDevEnv } from './Env.js'\n\nexport type ScopeId = string\n\ntype AnyTag = Context.Tag<any, any>\n\ntype LeaseId = number\n\ntype Entry = {\n readonly leaseId: LeaseId\n readonly value: unknown\n}\n\nexport interface ScopeRegistry {\n /**\n * Registers a scope-bound value (multi-party registration supported; the last registration wins for get()).\n *\n * Returns a release function that revokes this registration.\n */\n readonly register: <A>(scopeId: ScopeId, token: Context.Tag<any, A>, value: A) => { readonly release: () => void }\n\n /**\n * Reads the current value for a token under a scope (the last registered value).\n */\n readonly get: <A>(scopeId: ScopeId, token: Context.Tag<any, A>) => A | undefined\n\n /**\n * Deletes all registrations of a token under a scope (regardless of who registered them).\n */\n readonly clearToken: (scopeId: ScopeId, token: AnyTag) => void\n\n /**\n * Clears all tokens under a scope.\n */\n readonly clearScope: (scopeId: ScopeId) => void\n\n /**\n * Clears the entire registry.\n */\n readonly clearAll: () => void\n}\n\nexport class ScopeRegistryTag extends Context.Tag('@logixjs/core/ScopeRegistry')<ScopeRegistryTag, ScopeRegistry>() {}\n\n/**\n * Stores a \"ManagedRuntime handle for a scope\" in ScopeRegistry.\n *\n * Typical use case: reusing the same runtime scope (Env/Scope/FiberRef) across React subtrees / independent roots\n * by registering the runtime under a scopeId and retrieving it elsewhere.\n */\nexport class ScopedRuntimeTag extends Context.Tag('@logixjs/core/ScopeRegistry/ScopedRuntime')<\n ScopedRuntimeTag,\n ManagedRuntime.ManagedRuntime<any, any>\n>() {}\n\nexport const internal = {\n ScopeRegistryTag,\n ScopedRuntimeTag,\n}\n\nconst makeRegistry = (): ScopeRegistry => {\n let nextLeaseId: LeaseId = 0\n\n // scopeId -> (token -> stack(entries))\n const scopes = new Map<ScopeId, Map<AnyTag, Array<Entry>>>()\n\n const getStack = (scopeId: ScopeId, token: AnyTag): Array<Entry> => {\n const byToken = scopes.get(scopeId)\n if (byToken) {\n const stack = byToken.get(token)\n if (stack) return stack\n const created: Array<Entry> = []\n byToken.set(token, created)\n return created\n }\n const created: Array<Entry> = []\n const createdByToken = new Map<AnyTag, Array<Entry>>()\n createdByToken.set(token, created)\n scopes.set(scopeId, createdByToken)\n return created\n }\n\n const tryDeleteEmpty = (scopeId: ScopeId, token: AnyTag): void => {\n const byToken = scopes.get(scopeId)\n if (!byToken) return\n const stack = byToken.get(token)\n if (stack && stack.length === 0) {\n byToken.delete(token)\n }\n if (byToken.size === 0) {\n scopes.delete(scopeId)\n }\n }\n\n const register: ScopeRegistry['register'] = (scopeId, token, value) => {\n nextLeaseId += 1\n const leaseId = nextLeaseId\n const stack = getStack(scopeId, token as AnyTag)\n\n // dev: multiple registrations for the same scopeId+token often indicate scopeId collisions or lifecycle leaks.\n // React / concurrent rendering / Provider rebuilds may cause short re-entrancy, so this is a soft warning.\n if (isDevEnv() && stack.length > 0) {\n // eslint-disable-next-line no-console\n console.debug(\n `[ScopeRegistry] Multiple registrations detected for scopeId=\"${scopeId}\". ` +\n `This is allowed (LIFO), but usually indicates scopeId collisions or missing cleanup.`,\n )\n }\n\n stack.push({ leaseId, value })\n\n const release = () => {\n const stack2 = scopes.get(scopeId)?.get(token as AnyTag)\n if (!stack2 || stack2.length === 0) return\n\n // Common case: LIFO release\n const last = stack2[stack2.length - 1]\n if (last && last.leaseId === leaseId) {\n stack2.pop()\n tryDeleteEmpty(scopeId, token as AnyTag)\n return\n }\n\n // Fallback: releasing from the middle (linear scan)\n const idx = stack2.findIndex((e) => e.leaseId === leaseId)\n if (idx >= 0) {\n stack2.splice(idx, 1)\n tryDeleteEmpty(scopeId, token as AnyTag)\n }\n }\n\n return { release }\n }\n\n const get: ScopeRegistry['get'] = (scopeId, token) => {\n const stack = scopes.get(scopeId)?.get(token as AnyTag)\n if (!stack || stack.length === 0) return undefined\n return stack[stack.length - 1]!.value as any\n }\n\n const clearToken: ScopeRegistry['clearToken'] = (scopeId, token) => {\n const byToken = scopes.get(scopeId)\n if (!byToken) return\n byToken.delete(token)\n if (byToken.size === 0) {\n scopes.delete(scopeId)\n }\n }\n\n const clearScope: ScopeRegistry['clearScope'] = (scopeId) => {\n scopes.delete(scopeId)\n }\n\n const clearAll: ScopeRegistry['clearAll'] = () => {\n scopes.clear()\n }\n\n return { register, get, clearToken, clearScope, clearAll }\n}\n\nexport const layer = (): Layer.Layer<ScopeRegistryTag, never, never> => Layer.succeed(ScopeRegistryTag, makeRegistry())\n"],"mappings":";;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAS,SAAS,aAA6B;AA2CxC,IAAM,mBAAN,cAA+B,QAAQ,IAAI,6BAA6B,EAAmC,EAAE;AAAC;AAQ9G,IAAM,mBAAN,cAA+B,QAAQ,IAAI,2CAA2C,EAG3F,EAAE;AAAC;AAEE,IAAM,WAAW;AAAA,EACtB;AAAA,EACA;AACF;AAEA,IAAM,eAAe,MAAqB;AACxC,MAAI,cAAuB;AAG3B,QAAM,SAAS,oBAAI,IAAwC;AAE3D,QAAM,WAAW,CAAC,SAAkB,UAAgC;AAClE,UAAM,UAAU,OAAO,IAAI,OAAO;AAClC,QAAI,SAAS;AACX,YAAM,QAAQ,QAAQ,IAAI,KAAK;AAC/B,UAAI,MAAO,QAAO;AAClB,YAAMA,WAAwB,CAAC;AAC/B,cAAQ,IAAI,OAAOA,QAAO;AAC1B,aAAOA;AAAA,IACT;AACA,UAAM,UAAwB,CAAC;AAC/B,UAAM,iBAAiB,oBAAI,IAA0B;AACrD,mBAAe,IAAI,OAAO,OAAO;AACjC,WAAO,IAAI,SAAS,cAAc;AAClC,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiB,CAAC,SAAkB,UAAwB;AAChE,UAAM,UAAU,OAAO,IAAI,OAAO;AAClC,QAAI,CAAC,QAAS;AACd,UAAM,QAAQ,QAAQ,IAAI,KAAK;AAC/B,QAAI,SAAS,MAAM,WAAW,GAAG;AAC/B,cAAQ,OAAO,KAAK;AAAA,IACtB;AACA,QAAI,QAAQ,SAAS,GAAG;AACtB,aAAO,OAAO,OAAO;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,WAAsC,CAAC,SAAS,OAAO,UAAU;AACrE,mBAAe;AACf,UAAM,UAAU;AAChB,UAAM,QAAQ,SAAS,SAAS,KAAe;AAI/C,QAAI,SAAS,KAAK,MAAM,SAAS,GAAG;AAElC,cAAQ;AAAA,QACN,gEAAgE,OAAO;AAAA,MAEzE;AAAA,IACF;AAEA,UAAM,KAAK,EAAE,SAAS,MAAM,CAAC;AAE7B,UAAM,UAAU,MAAM;AACpB,YAAM,SAAS,OAAO,IAAI,OAAO,GAAG,IAAI,KAAe;AACvD,UAAI,CAAC,UAAU,OAAO,WAAW,EAAG;AAGpC,YAAM,OAAO,OAAO,OAAO,SAAS,CAAC;AACrC,UAAI,QAAQ,KAAK,YAAY,SAAS;AACpC,eAAO,IAAI;AACX,uBAAe,SAAS,KAAe;AACvC;AAAA,MACF;AAGA,YAAM,MAAM,OAAO,UAAU,CAAC,MAAM,EAAE,YAAY,OAAO;AACzD,UAAI,OAAO,GAAG;AACZ,eAAO,OAAO,KAAK,CAAC;AACpB,uBAAe,SAAS,KAAe;AAAA,MACzC;AAAA,IACF;AAEA,WAAO,EAAE,QAAQ;AAAA,EACnB;AAEA,QAAM,MAA4B,CAAC,SAAS,UAAU;AACpD,UAAM,QAAQ,OAAO,IAAI,OAAO,GAAG,IAAI,KAAe;AACtD,QAAI,CAAC,SAAS,MAAM,WAAW,EAAG,QAAO;AACzC,WAAO,MAAM,MAAM,SAAS,CAAC,EAAG;AAAA,EAClC;AAEA,QAAM,aAA0C,CAAC,SAAS,UAAU;AAClE,UAAM,UAAU,OAAO,IAAI,OAAO;AAClC,QAAI,CAAC,QAAS;AACd,YAAQ,OAAO,KAAK;AACpB,QAAI,QAAQ,SAAS,GAAG;AACtB,aAAO,OAAO,OAAO;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,aAA0C,CAAC,YAAY;AAC3D,WAAO,OAAO,OAAO;AAAA,EACvB;AAEA,QAAM,WAAsC,MAAM;AAChD,WAAO,MAAM;AAAA,EACf;AAEA,SAAO,EAAE,UAAU,KAAK,YAAY,YAAY,SAAS;AAC3D;AAEO,IAAM,QAAQ,MAAmD,MAAM,QAAQ,kBAAkB,aAAa,CAAC;","names":["created"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__export
|
|
3
|
+
} from "./chunk-PZ5AY32C.js";
|
|
4
|
+
|
|
5
|
+
// src/Handle.ts
|
|
6
|
+
var Handle_exports = {};
|
|
7
|
+
__export(Handle_exports, {
|
|
8
|
+
hasController: () => hasController,
|
|
9
|
+
isModuleHandle: () => isModuleHandle
|
|
10
|
+
});
|
|
11
|
+
var isModuleHandle = (value) => {
|
|
12
|
+
if (typeof value !== "object" || value === null) return false;
|
|
13
|
+
const v = value;
|
|
14
|
+
return typeof v.read === "function" && typeof v.changes === "function" && typeof v.dispatch === "function" && typeof v.actions === "object" && v.actions !== null && typeof v.actions$ === "object" && v.actions$ !== null;
|
|
15
|
+
};
|
|
16
|
+
var hasController = (value) => {
|
|
17
|
+
if (typeof value !== "object" || value === null) return false;
|
|
18
|
+
const v = value;
|
|
19
|
+
return typeof v.controller === "object" && v.controller !== null;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export {
|
|
23
|
+
isModuleHandle,
|
|
24
|
+
hasController,
|
|
25
|
+
Handle_exports
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=chunk-3VG5TWQR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Handle.ts"],"sourcesContent":["import type { AnyModuleShape, ModuleHandle } from './internal/module.js'\n\n/**\n * Handle(消费面): 在 `.logic()` 内消费依赖的“可用视图”。\n *\n * - `ModuleHandle`: `yield* $.use(SomeModule)` 返回的只读句柄(read/changes/dispatch/actions)。\n * - `ServiceHandle`: `yield* $.use(ServiceTag)` 返回的 Service 实例(推荐同样提供 `.controller` 作为命令面)。\n *\n * 设计目标:\n * - 为“做成自定义 Module” vs “做成可注入 Service(Tag + Layer)”提供统一语言与判断依据;\n * - 让业务逻辑消费方式趋同:拿到 handle → read/observe → 通过 controller 发命令(若存在)。\n */\n\nexport interface WithController<C extends object = object> {\n readonly controller: C\n}\n\nexport type ControllerOf<T> = T extends WithController<infer C> ? C : never\n\nexport type ServiceHandle<Svc extends object> = Svc\n\nexport const isModuleHandle = (value: unknown): value is ModuleHandle<AnyModuleShape> => {\n if (typeof value !== 'object' || value === null) return false\n const v = value as any\n return (\n typeof v.read === 'function' &&\n typeof v.changes === 'function' &&\n typeof v.dispatch === 'function' &&\n typeof v.actions === 'object' &&\n v.actions !== null &&\n typeof v.actions$ === 'object' &&\n v.actions$ !== null\n )\n}\n\nexport const hasController = (value: unknown): value is WithController => {\n if (typeof value !== 'object' || value === null) return false\n const v = value as any\n return typeof v.controller === 'object' && v.controller !== null\n}\n\n"],"mappings":";;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBO,IAAM,iBAAiB,CAAC,UAA0D;AACvF,MAAI,OAAO,UAAU,YAAY,UAAU,KAAM,QAAO;AACxD,QAAM,IAAI;AACV,SACE,OAAO,EAAE,SAAS,cAClB,OAAO,EAAE,YAAY,cACrB,OAAO,EAAE,aAAa,cACtB,OAAO,EAAE,YAAY,YACrB,EAAE,YAAY,QACd,OAAO,EAAE,aAAa,YACtB,EAAE,aAAa;AAEnB;AAEO,IAAM,gBAAgB,CAAC,UAA4C;AACxE,MAAI,OAAO,UAAU,YAAY,UAAU,KAAM,QAAO;AACxD,QAAM,IAAI;AACV,SAAO,OAAO,EAAE,eAAe,YAAY,EAAE,eAAe;AAC9D;","names":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ResourceRegistryTag,
|
|
3
|
+
Snapshot,
|
|
4
|
+
internal,
|
|
5
|
+
keyHash,
|
|
6
|
+
layer,
|
|
7
|
+
make
|
|
8
|
+
} from "./chunk-NZJKFF45.js";
|
|
9
|
+
import {
|
|
10
|
+
__export
|
|
11
|
+
} from "./chunk-PZ5AY32C.js";
|
|
12
|
+
|
|
13
|
+
// src/Resource.ts
|
|
14
|
+
var Resource_exports = {};
|
|
15
|
+
__export(Resource_exports, {
|
|
16
|
+
ResourceRegistryTag: () => ResourceRegistryTag,
|
|
17
|
+
Snapshot: () => Snapshot2,
|
|
18
|
+
internal: () => internal2,
|
|
19
|
+
keyHash: () => keyHash2,
|
|
20
|
+
layer: () => layer2,
|
|
21
|
+
make: () => make2
|
|
22
|
+
});
|
|
23
|
+
var keyHash2 = keyHash;
|
|
24
|
+
var Snapshot2 = Snapshot;
|
|
25
|
+
var internal2 = internal;
|
|
26
|
+
var make2 = make;
|
|
27
|
+
var layer2 = layer;
|
|
28
|
+
|
|
29
|
+
export {
|
|
30
|
+
keyHash2 as keyHash,
|
|
31
|
+
Snapshot2 as Snapshot,
|
|
32
|
+
internal2 as internal,
|
|
33
|
+
make2 as make,
|
|
34
|
+
layer2 as layer,
|
|
35
|
+
Resource_exports
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=chunk-4CQAV7YB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Resource.ts"],"sourcesContent":["// Resource module: public facade (@logixjs/core/Resource).\n// Note: implementation lives in `src/internal/resource.ts` to avoid internal importing root submodules.\n\nimport type * as Internal from './internal/resource.js'\nimport * as Impl from './internal/resource.js'\n\nexport type ResourceSpec<Key, Out, Err, Env> = Internal.ResourceSpec<Key, Out, Err, Env>\nexport type AnyResourceSpec = Internal.AnyResourceSpec\nexport type ResourceStatus = Internal.ResourceStatus\nexport type ResourceSnapshot<Data = unknown, Err = unknown> = Internal.ResourceSnapshot<Data, Err>\nexport type ResourceRegistry = Internal.ResourceRegistry\nexport type Spec<Key, Out, Err, Env> = Internal.Spec<Key, Out, Err, Env>\n\nexport const keyHash = Impl.keyHash\nexport const Snapshot = Impl.Snapshot\nexport const internal = Impl.internal\nexport const make = Impl.make\nexport const layer = Impl.layer\n\nexport { ResourceRegistryTag } from './internal/resource.js'\n"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,kBAAAA;AAAA,EAAA,gBAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA,YAAAC;AAAA;AAaO,IAAMC,WAAe;AACrB,IAAMC,YAAgB;AACtB,IAAMC,YAAgB;AACtB,IAAMC,QAAY;AAClB,IAAMC,SAAa;","names":["Snapshot","internal","keyHash","layer","make","keyHash","Snapshot","internal","make","layer"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Actions.ts"],"sourcesContent":["import type { Context, Layer as EffectLayer, Stream, Effect } from 'effect'\n\n/**\n * Actions namespace (module-level):\n * - Provides Actions.Tag<A>: the action channel in Env (dispatch + actions$).\n * - Provides Actions.Layer<A>: a Layer shape that only carries that action channel.\n *\n * Type-level only; no additional runtime dependency.\n */\nexport type Tag<A> = Context.Tag<\n any,\n {\n dispatch: (a: A) => Effect.Effect<void>\n actions$: Stream.Stream<A>\n }\n>\n\nexport type Layer<A> = EffectLayer.Layer<Tag<A>, never, never>\n"],"mappings":";AAAA;","names":[]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import {
|
|
2
|
+
exportStaticIr
|
|
3
|
+
} from "./chunk-ZFY7U2FR.js";
|
|
4
|
+
import {
|
|
5
|
+
isDevEnv
|
|
6
|
+
} from "./chunk-3QMIVH35.js";
|
|
7
|
+
|
|
8
|
+
// src/internal/debug/ModuleTraitsRegistry.ts
|
|
9
|
+
var programsByIdAndDigest = /* @__PURE__ */ new Map();
|
|
10
|
+
var latestDigestById = /* @__PURE__ */ new Map();
|
|
11
|
+
var MAX_VERSIONS_PER_MODULE = 8;
|
|
12
|
+
var registerModuleProgram = (moduleId, program) => {
|
|
13
|
+
if (!isDevEnv()) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const ir = exportStaticIr({ program, moduleId, version: "009" });
|
|
17
|
+
const digest = ir.digest;
|
|
18
|
+
let versions = programsByIdAndDigest.get(moduleId);
|
|
19
|
+
if (!versions) {
|
|
20
|
+
versions = /* @__PURE__ */ new Map();
|
|
21
|
+
programsByIdAndDigest.set(moduleId, versions);
|
|
22
|
+
}
|
|
23
|
+
versions.set(digest, program);
|
|
24
|
+
latestDigestById.set(moduleId, digest);
|
|
25
|
+
if (versions.size > MAX_VERSIONS_PER_MODULE) {
|
|
26
|
+
const oldest = versions.keys().next().value;
|
|
27
|
+
if (oldest) versions.delete(oldest);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
var getModuleProgramById = (moduleId) => {
|
|
31
|
+
const latestDigest = latestDigestById.get(moduleId);
|
|
32
|
+
if (!latestDigest) return void 0;
|
|
33
|
+
return programsByIdAndDigest.get(moduleId)?.get(latestDigest);
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export {
|
|
37
|
+
registerModuleProgram,
|
|
38
|
+
getModuleProgramById
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=chunk-66ALHVEX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/debug/ModuleTraitsRegistry.ts"],"sourcesContent":["import type { StateTraitProgram } from '../state-trait/model.js'\nimport { isDevEnv } from '../runtime/core/env.js'\nimport { exportStaticIr } from '../state-trait/ir.js'\n\n// Debug/Devtools only: records StateTraitProgram by moduleId.\n// - Not used for runtime behavior decisions.\n// - In production, stores nothing by default to avoid extra memory footprint.\n\nconst programsByIdAndDigest = new Map<string, Map<string, StateTraitProgram<any>>>()\n\nconst latestDigestById = new Map<string, string>()\n\n// Devtools-only: avoid unbounded growth when build/reflection generates many Programs.\nconst MAX_VERSIONS_PER_MODULE = 8\n\nexport const registerModuleProgram = (moduleId: string, program: StateTraitProgram<any>): void => {\n if (!isDevEnv()) {\n // Production: do not register by default to avoid long-lived Program indexes.\n // If Devtools is needed in production, adjust via env vars or build-time configuration.\n return\n }\n\n const ir = exportStaticIr({ program, moduleId, version: '009' })\n const digest = ir.digest\n\n let versions = programsByIdAndDigest.get(moduleId)\n if (!versions) {\n versions = new Map()\n programsByIdAndDigest.set(moduleId, versions)\n }\n\n versions.set(digest, program)\n latestDigestById.set(moduleId, digest)\n\n if (versions.size > MAX_VERSIONS_PER_MODULE) {\n const oldest = versions.keys().next().value as string | undefined\n if (oldest) versions.delete(oldest)\n }\n}\n\nexport const getModuleProgramById = (moduleId: string): StateTraitProgram<any> | undefined => {\n const latestDigest = latestDigestById.get(moduleId)\n if (!latestDigest) return undefined\n return programsByIdAndDigest.get(moduleId)?.get(latestDigest)\n}\n\nexport const getModuleProgramByIdAndDigest = (moduleId: string, digest: string): StateTraitProgram<any> | undefined =>\n programsByIdAndDigest.get(moduleId)?.get(digest)\n\nexport const getModuleProgramDigestsById = (moduleId: string): ReadonlyArray<string> =>\n Array.from(programsByIdAndDigest.get(moduleId)?.keys() ?? [])\n"],"mappings":";;;;;;;;AAQA,IAAM,wBAAwB,oBAAI,IAAiD;AAEnF,IAAM,mBAAmB,oBAAI,IAAoB;AAGjD,IAAM,0BAA0B;AAEzB,IAAM,wBAAwB,CAAC,UAAkB,YAA0C;AAChG,MAAI,CAAC,SAAS,GAAG;AAGf;AAAA,EACF;AAEA,QAAM,KAAK,eAAe,EAAE,SAAS,UAAU,SAAS,MAAM,CAAC;AAC/D,QAAM,SAAS,GAAG;AAElB,MAAI,WAAW,sBAAsB,IAAI,QAAQ;AACjD,MAAI,CAAC,UAAU;AACb,eAAW,oBAAI,IAAI;AACnB,0BAAsB,IAAI,UAAU,QAAQ;AAAA,EAC9C;AAEA,WAAS,IAAI,QAAQ,OAAO;AAC5B,mBAAiB,IAAI,UAAU,MAAM;AAErC,MAAI,SAAS,OAAO,yBAAyB;AAC3C,UAAM,SAAS,SAAS,KAAK,EAAE,KAAK,EAAE;AACtC,QAAI,OAAQ,UAAS,OAAO,MAAM;AAAA,EACpC;AACF;AAEO,IAAM,uBAAuB,CAAC,aAAyD;AAC5F,QAAM,eAAe,iBAAiB,IAAI,QAAQ;AAClD,MAAI,CAAC,aAAc,QAAO;AAC1B,SAAO,sBAAsB,IAAI,QAAQ,GAAG,IAAI,YAAY;AAC9D;","names":[]}
|