@akashjs/runtime 0.2.6 → 0.2.8
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/a11y.cjs +2 -0
- package/dist/a11y.cjs.map +1 -0
- package/dist/a11y.d.cts +99 -0
- package/dist/a11y.d.ts +99 -0
- package/dist/a11y.js +2 -0
- package/dist/a11y.js.map +1 -0
- package/dist/async-component.cjs +2 -0
- package/dist/async-component.cjs.map +1 -0
- package/dist/async-component.d.cts +44 -0
- package/dist/async-component.d.ts +44 -0
- package/dist/async-component.js +2 -0
- package/dist/async-component.js.map +1 -0
- package/dist/await-block.cjs +2 -0
- package/dist/await-block.cjs.map +1 -0
- package/dist/await-block.d.cts +37 -0
- package/dist/await-block.d.ts +37 -0
- package/dist/await-block.js +2 -0
- package/dist/await-block.js.map +1 -0
- package/dist/browser.cjs +2 -0
- package/dist/browser.cjs.map +1 -0
- package/dist/browser.d.cts +125 -0
- package/dist/browser.d.ts +125 -0
- package/dist/browser.js +2 -0
- package/dist/browser.js.map +1 -0
- package/dist/chunk-2GGCZC4O.js +2 -0
- package/dist/chunk-2GGCZC4O.js.map +1 -0
- package/dist/chunk-2UATNCKC.js +2 -0
- package/dist/chunk-2UATNCKC.js.map +1 -0
- package/dist/chunk-2XFW6MT7.js +2 -0
- package/dist/chunk-2XFW6MT7.js.map +1 -0
- package/dist/chunk-34PQECMN.cjs +2 -0
- package/dist/chunk-34PQECMN.cjs.map +1 -0
- package/dist/chunk-3CD6A5YV.js +2 -0
- package/dist/chunk-3CD6A5YV.js.map +1 -0
- package/dist/chunk-3PCZFKBH.js +2 -0
- package/dist/chunk-3PCZFKBH.js.map +1 -0
- package/dist/chunk-3PGU24B5.cjs +3 -0
- package/dist/chunk-3PGU24B5.cjs.map +1 -0
- package/dist/chunk-3PLQPLVA.js +2 -0
- package/dist/chunk-3PLQPLVA.js.map +1 -0
- package/dist/chunk-3RDEFZMT.js +2 -0
- package/dist/chunk-3RDEFZMT.js.map +1 -0
- package/dist/chunk-3VYMJMAU.js +2 -0
- package/dist/chunk-3VYMJMAU.js.map +1 -0
- package/dist/chunk-3Y663FYJ.js +2 -0
- package/dist/chunk-3Y663FYJ.js.map +1 -0
- package/dist/chunk-45DPEU7T.cjs +2 -0
- package/dist/chunk-45DPEU7T.cjs.map +1 -0
- package/dist/chunk-4J3QBQVW.js +4 -0
- package/dist/chunk-4J3QBQVW.js.map +1 -0
- package/dist/chunk-4VLBY2BW.cjs +2 -0
- package/dist/chunk-4VLBY2BW.cjs.map +1 -0
- package/dist/chunk-5GDMAABU.js +2 -0
- package/dist/chunk-5GDMAABU.js.map +1 -0
- package/dist/chunk-5JKXREA2.cjs +2 -0
- package/dist/chunk-5JKXREA2.cjs.map +1 -0
- package/dist/chunk-5QCWH6QA.cjs +4 -0
- package/dist/chunk-5QCWH6QA.cjs.map +1 -0
- package/dist/chunk-637ENG3A.cjs +2 -0
- package/dist/chunk-637ENG3A.cjs.map +1 -0
- package/dist/chunk-66PLXQS3.js +2 -0
- package/dist/chunk-66PLXQS3.js.map +1 -0
- package/dist/chunk-6GY6HC75.cjs +2 -0
- package/dist/chunk-6GY6HC75.cjs.map +1 -0
- package/dist/chunk-6I5PPQ34.cjs +17 -0
- package/dist/chunk-6I5PPQ34.cjs.map +1 -0
- package/dist/chunk-6ZCFPR4O.js +2 -0
- package/dist/chunk-6ZCFPR4O.js.map +1 -0
- package/dist/chunk-7T4HMWUC.js +2 -0
- package/dist/{chunk-5A7KDBDU.js.map → chunk-7T4HMWUC.js.map} +1 -1
- package/dist/chunk-AOFLE33X.js +5 -0
- package/dist/chunk-AOFLE33X.js.map +1 -0
- package/dist/chunk-AQQQVDBQ.cjs +2 -0
- package/dist/chunk-AQQQVDBQ.cjs.map +1 -0
- package/dist/chunk-AXB5GHGO.js +2 -0
- package/dist/chunk-AXB5GHGO.js.map +1 -0
- package/dist/chunk-BHP3UTTQ.cjs +3 -0
- package/dist/chunk-BHP3UTTQ.cjs.map +1 -0
- package/dist/chunk-BLT7XOSX.cjs +2 -0
- package/dist/chunk-BLT7XOSX.cjs.map +1 -0
- package/dist/chunk-CDZR6GWB.js +2 -0
- package/dist/chunk-CDZR6GWB.js.map +1 -0
- package/dist/chunk-DFYXFKCH.cjs +2 -0
- package/dist/chunk-DFYXFKCH.cjs.map +1 -0
- package/dist/chunk-DP7G45QM.cjs +13 -0
- package/dist/chunk-DP7G45QM.cjs.map +1 -0
- package/dist/chunk-DWSIR5SL.cjs +2 -0
- package/dist/chunk-DWSIR5SL.cjs.map +1 -0
- package/dist/chunk-E6RB7PRO.js +2 -0
- package/dist/chunk-E6RB7PRO.js.map +1 -0
- package/dist/chunk-E7BPGVIS.js +2 -0
- package/dist/chunk-E7BPGVIS.js.map +1 -0
- package/dist/chunk-E7GAIKQT.cjs +2 -0
- package/dist/chunk-E7GAIKQT.cjs.map +1 -0
- package/dist/chunk-EEQZFKEG.js +2 -0
- package/dist/{chunk-TKFJGLUO.js.map → chunk-EEQZFKEG.js.map} +1 -1
- package/dist/chunk-EXKQPZ5N.cjs +2 -0
- package/dist/chunk-EXKQPZ5N.cjs.map +1 -0
- package/dist/{chunk-ZYVQQ5VR.cjs → chunk-F2F5OXCK.cjs} +3 -3
- package/dist/{chunk-ZYVQQ5VR.cjs.map → chunk-F2F5OXCK.cjs.map} +1 -1
- package/dist/chunk-F4FXIPR3.js +2 -0
- package/dist/chunk-F4FXIPR3.js.map +1 -0
- package/dist/chunk-GAAO2KXN.js +2 -0
- package/dist/chunk-GAAO2KXN.js.map +1 -0
- package/dist/chunk-GB7IUC6E.js +2 -0
- package/dist/chunk-GB7IUC6E.js.map +1 -0
- package/dist/chunk-GHSJ4B55.js +11 -0
- package/dist/chunk-GHSJ4B55.js.map +1 -0
- package/dist/{chunk-U53YRJNV.js → chunk-GRXHWCFR.js} +3 -3
- package/dist/{chunk-U53YRJNV.js.map → chunk-GRXHWCFR.js.map} +1 -1
- package/dist/chunk-HHPRQMGX.cjs +2 -0
- package/dist/chunk-HHPRQMGX.cjs.map +1 -0
- package/dist/chunk-HL2VGVJT.cjs +2 -0
- package/dist/chunk-HL2VGVJT.cjs.map +1 -0
- package/dist/chunk-IDTJWCYW.js +2 -0
- package/dist/chunk-IDTJWCYW.js.map +1 -0
- package/dist/chunk-IHEW6F2H.js +2 -0
- package/dist/chunk-IHEW6F2H.js.map +1 -0
- package/dist/chunk-IJS2EMSE.js +2 -0
- package/dist/chunk-IJS2EMSE.js.map +1 -0
- package/dist/chunk-IQGSDFBI.cjs +2 -0
- package/dist/chunk-IQGSDFBI.cjs.map +1 -0
- package/dist/chunk-JEYTB4AG.js +2 -0
- package/dist/chunk-JEYTB4AG.js.map +1 -0
- package/dist/chunk-JFLZJPVN.js +2 -0
- package/dist/chunk-JFLZJPVN.js.map +1 -0
- package/dist/chunk-JLPJ22CE.js +2 -0
- package/dist/chunk-JLPJ22CE.js.map +1 -0
- package/dist/chunk-JMY6E7VR.cjs +2 -0
- package/dist/chunk-JMY6E7VR.cjs.map +1 -0
- package/dist/chunk-K2HB5VFA.cjs +2 -0
- package/dist/chunk-K2HB5VFA.cjs.map +1 -0
- package/dist/chunk-K7TMUF3F.cjs +2 -0
- package/dist/chunk-K7TMUF3F.cjs.map +1 -0
- package/dist/chunk-KFMCMKSC.cjs +2 -0
- package/dist/chunk-KFMCMKSC.cjs.map +1 -0
- package/dist/chunk-KGV5MKBC.cjs +11 -0
- package/dist/chunk-KGV5MKBC.cjs.map +1 -0
- package/dist/chunk-KMEGUPH2.js +3 -0
- package/dist/chunk-KMEGUPH2.js.map +1 -0
- package/dist/chunk-KQAYFPJI.cjs +2 -0
- package/dist/chunk-KQAYFPJI.cjs.map +1 -0
- package/dist/chunk-LSD7DEMV.cjs +2 -0
- package/dist/chunk-LSD7DEMV.cjs.map +1 -0
- package/dist/{chunk-2U643GJZ.cjs → chunk-LTMDSGQ6.cjs} +2 -2
- package/dist/{chunk-2U643GJZ.cjs.map → chunk-LTMDSGQ6.cjs.map} +1 -1
- package/dist/chunk-LWQPLKL6.cjs +20 -0
- package/dist/chunk-LWQPLKL6.cjs.map +1 -0
- package/dist/{chunk-2Q6SYE5O.cjs → chunk-M2OWSNOM.cjs} +2 -2
- package/dist/{chunk-2Q6SYE5O.cjs.map → chunk-M2OWSNOM.cjs.map} +1 -1
- package/dist/chunk-MADMPRT2.js +20 -0
- package/dist/chunk-MADMPRT2.js.map +1 -0
- package/dist/chunk-MDHWM3C2.js +2 -0
- package/dist/chunk-MDHWM3C2.js.map +1 -0
- package/dist/chunk-MGFRVOM5.js +2 -0
- package/dist/chunk-MGFRVOM5.js.map +1 -0
- package/dist/chunk-MNUOIAXS.js +2 -0
- package/dist/chunk-MNUOIAXS.js.map +1 -0
- package/dist/chunk-ND2HZRMR.cjs +2 -0
- package/dist/chunk-ND2HZRMR.cjs.map +1 -0
- package/dist/chunk-NGU2W4PD.cjs +2 -0
- package/dist/chunk-NGU2W4PD.cjs.map +1 -0
- package/dist/chunk-NQEY7DR5.cjs +2 -0
- package/dist/chunk-NQEY7DR5.cjs.map +1 -0
- package/dist/chunk-O5OTZP5M.cjs +2 -0
- package/dist/chunk-O5OTZP5M.cjs.map +1 -0
- package/dist/chunk-OQV3NYDH.js +3 -0
- package/dist/chunk-OQV3NYDH.js.map +1 -0
- package/dist/chunk-P4USGNUK.cjs +2 -0
- package/dist/chunk-P4USGNUK.cjs.map +1 -0
- package/dist/chunk-P55EWYAD.js +2 -0
- package/dist/chunk-P55EWYAD.js.map +1 -0
- package/dist/chunk-PPNEAFKE.cjs +5 -0
- package/dist/chunk-PPNEAFKE.cjs.map +1 -0
- package/dist/chunk-PVIYD25D.js +2 -0
- package/dist/chunk-PVIYD25D.js.map +1 -0
- package/dist/chunk-PWJMCURK.cjs +2 -0
- package/dist/chunk-PWJMCURK.cjs.map +1 -0
- package/dist/chunk-QQTZQ6UX.cjs +2 -0
- package/dist/chunk-QQTZQ6UX.cjs.map +1 -0
- package/dist/chunk-QTQ6RUX4.cjs +5 -0
- package/dist/chunk-QTQ6RUX4.cjs.map +1 -0
- package/dist/chunk-SBDFBADL.cjs +2 -0
- package/dist/chunk-SBDFBADL.cjs.map +1 -0
- package/dist/chunk-SPS3LM47.cjs +2 -0
- package/dist/chunk-SPS3LM47.cjs.map +1 -0
- package/dist/chunk-SVNS64LE.js +5 -0
- package/dist/chunk-SVNS64LE.js.map +1 -0
- package/dist/chunk-SZDKDXRV.js +17 -0
- package/dist/chunk-SZDKDXRV.js.map +1 -0
- package/dist/chunk-T7A5YOEG.cjs +2 -0
- package/dist/chunk-T7A5YOEG.cjs.map +1 -0
- package/dist/chunk-U65WRXZC.js +13 -0
- package/dist/chunk-U65WRXZC.js.map +1 -0
- package/dist/chunk-UT4MWGJ3.js +2 -0
- package/dist/chunk-UT4MWGJ3.js.map +1 -0
- package/dist/chunk-UXHQ5OFW.js +2 -0
- package/dist/chunk-UXHQ5OFW.js.map +1 -0
- package/dist/chunk-UYJ4BAPL.cjs +2 -0
- package/dist/chunk-UYJ4BAPL.cjs.map +1 -0
- package/dist/chunk-VDHUPQDK.cjs +2 -0
- package/dist/chunk-VDHUPQDK.cjs.map +1 -0
- package/dist/chunk-VTD3TI3M.js +2 -0
- package/dist/chunk-VTD3TI3M.js.map +1 -0
- package/dist/chunk-VUMMC2P5.js +2 -0
- package/dist/chunk-VUMMC2P5.js.map +1 -0
- package/dist/chunk-VX7PSSOU.js +5 -0
- package/dist/chunk-VX7PSSOU.js.map +1 -0
- package/dist/chunk-WB7QDCEA.js +2 -0
- package/dist/{chunk-5NHDEY2C.js.map → chunk-WB7QDCEA.js.map} +1 -1
- package/dist/chunk-WLSXJU2N.js +13 -0
- package/dist/chunk-WLSXJU2N.js.map +1 -0
- package/dist/chunk-XAGYLTHV.js +2 -0
- package/dist/chunk-XAGYLTHV.js.map +1 -0
- package/dist/{chunk-AVVJKYT3.cjs → chunk-XE7JC7Y3.cjs} +2 -2
- package/dist/{chunk-AVVJKYT3.cjs.map → chunk-XE7JC7Y3.cjs.map} +1 -1
- package/dist/chunk-XMNDNTHK.cjs +5 -0
- package/dist/chunk-XMNDNTHK.cjs.map +1 -0
- package/dist/chunk-XOPRWJCX.cjs +2 -0
- package/dist/chunk-XOPRWJCX.cjs.map +1 -0
- package/dist/chunk-XPLIEN2G.cjs +13 -0
- package/dist/chunk-XPLIEN2G.cjs.map +1 -0
- package/dist/chunk-XRWOZO67.js +2 -0
- package/dist/chunk-XRWOZO67.js.map +1 -0
- package/dist/chunk-XZOP3IWH.cjs +2 -0
- package/dist/chunk-XZOP3IWH.cjs.map +1 -0
- package/dist/chunk-YG76TVFL.js +2 -0
- package/dist/chunk-YG76TVFL.js.map +1 -0
- package/dist/chunk-YQQDRDJ7.cjs +2 -0
- package/dist/chunk-YQQDRDJ7.cjs.map +1 -0
- package/dist/chunk-ZGE46DPV.cjs +2 -0
- package/dist/chunk-ZGE46DPV.cjs.map +1 -0
- package/dist/{component-C1WnFcRp.d.ts → component-CPVtkASo.d.ts} +2 -3
- package/dist/{component-C1WnFcRp.d.cts → component-CxlupKuc.d.cts} +2 -3
- package/dist/composables.cjs +2 -0
- package/dist/composables.cjs.map +1 -0
- package/dist/composables.d.cts +103 -0
- package/dist/composables.d.ts +103 -0
- package/dist/composables.js +2 -0
- package/dist/composables.js.map +1 -0
- package/dist/{context-CB1mCq2h.d.cts → context-Cwt7QCpk.d.cts} +1 -9
- package/dist/{context-CB1mCq2h.d.ts → context-Cwt7QCpk.d.ts} +1 -9
- package/dist/core.cjs +1 -1
- package/dist/core.d.cts +5 -4
- package/dist/core.d.ts +5 -4
- package/dist/core.js +1 -1
- package/dist/css.cjs +2 -0
- package/dist/css.cjs.map +1 -0
- package/dist/css.d.cts +42 -0
- package/dist/css.d.ts +42 -0
- package/dist/css.js +2 -0
- package/dist/css.js.map +1 -0
- package/dist/data-table.cjs +2 -0
- package/dist/data-table.cjs.map +1 -0
- package/dist/data-table.d.cts +97 -0
- package/dist/data-table.d.ts +97 -0
- package/dist/data-table.js +2 -0
- package/dist/data-table.js.map +1 -0
- package/dist/deep-signal.cjs +2 -0
- package/dist/deep-signal.cjs.map +1 -0
- package/dist/deep-signal.d.cts +48 -0
- package/dist/deep-signal.d.ts +48 -0
- package/dist/deep-signal.js +2 -0
- package/dist/deep-signal.js.map +1 -0
- package/dist/defer.cjs +2 -0
- package/dist/defer.cjs.map +1 -0
- package/dist/defer.d.cts +55 -0
- package/dist/defer.d.ts +55 -0
- package/dist/defer.js +2 -0
- package/dist/defer.js.map +1 -0
- package/dist/deprecation.cjs +2 -0
- package/dist/deprecation.cjs.map +1 -0
- package/dist/deprecation.d.cts +119 -0
- package/dist/deprecation.d.ts +119 -0
- package/dist/deprecation.js +2 -0
- package/dist/deprecation.js.map +1 -0
- package/dist/{devtools-overlay-CJWKBTP4.js → devtools-overlay-3PHULVP4.js} +3 -3
- package/dist/{devtools-overlay-CJWKBTP4.js.map → devtools-overlay-3PHULVP4.js.map} +1 -1
- package/dist/{devtools-overlay-EQ3G755P.cjs → devtools-overlay-SJV7WNNS.cjs} +4 -4
- package/dist/{devtools-overlay-EQ3G755P.cjs.map → devtools-overlay-SJV7WNNS.cjs.map} +1 -1
- package/dist/devtools.cjs +2 -0
- package/dist/devtools.cjs.map +1 -0
- package/dist/devtools.d.cts +78 -0
- package/dist/devtools.d.ts +78 -0
- package/dist/devtools.js +2 -0
- package/dist/devtools.js.map +1 -0
- package/dist/di.cjs +2 -0
- package/dist/di.cjs.map +1 -0
- package/dist/di.d.cts +93 -0
- package/dist/di.d.ts +93 -0
- package/dist/di.js +2 -0
- package/dist/di.js.map +1 -0
- package/dist/directive.cjs +2 -0
- package/dist/directive.cjs.map +1 -0
- package/dist/directive.d.cts +102 -0
- package/dist/directive.d.ts +102 -0
- package/dist/directive.js +2 -0
- package/dist/directive.js.map +1 -0
- package/dist/error-boundary.cjs +2 -0
- package/dist/error-boundary.cjs.map +1 -0
- package/dist/error-boundary.d.cts +17 -0
- package/dist/error-boundary.d.ts +17 -0
- package/dist/error-boundary.js +2 -0
- package/dist/error-boundary.js.map +1 -0
- package/dist/error-hints.cjs +2 -0
- package/dist/error-hints.cjs.map +1 -0
- package/dist/error-hints.d.cts +17 -0
- package/dist/error-hints.d.ts +17 -0
- package/dist/error-hints.js +2 -0
- package/dist/error-hints.js.map +1 -0
- package/dist/errors.cjs +2 -0
- package/dist/errors.cjs.map +1 -0
- package/dist/errors.d.cts +35 -0
- package/dist/errors.d.ts +35 -0
- package/dist/errors.js +2 -0
- package/dist/errors.js.map +1 -0
- package/dist/event-bus.cjs +2 -0
- package/dist/event-bus.cjs.map +1 -0
- package/dist/event-bus.d.cts +68 -0
- package/dist/event-bus.d.ts +68 -0
- package/dist/event-bus.js +2 -0
- package/dist/event-bus.js.map +1 -0
- package/dist/event-modifiers.cjs +2 -0
- package/dist/event-modifiers.cjs.map +1 -0
- package/dist/event-modifiers.d.cts +130 -0
- package/dist/event-modifiers.d.ts +130 -0
- package/dist/event-modifiers.js +2 -0
- package/dist/event-modifiers.js.map +1 -0
- package/dist/flip.cjs +2 -0
- package/dist/flip.cjs.map +1 -0
- package/dist/flip.d.cts +66 -0
- package/dist/flip.d.ts +66 -0
- package/dist/flip.js +2 -0
- package/dist/flip.js.map +1 -0
- package/dist/head.cjs +2 -0
- package/dist/head.cjs.map +1 -0
- package/dist/head.d.cts +70 -0
- package/dist/head.d.ts +70 -0
- package/dist/head.js +2 -0
- package/dist/head.js.map +1 -0
- package/dist/hydration.cjs +2 -0
- package/dist/hydration.cjs.map +1 -0
- package/dist/hydration.d.cts +84 -0
- package/dist/hydration.d.ts +84 -0
- package/dist/hydration.js +2 -0
- package/dist/hydration.js.map +1 -0
- package/dist/image.cjs +2 -0
- package/dist/image.cjs.map +1 -0
- package/dist/image.d.cts +54 -0
- package/dist/image.d.ts +54 -0
- package/dist/image.js +2 -0
- package/dist/image.js.map +1 -0
- package/dist/index.cjs +1 -63
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +50 -3155
- package/dist/index.d.ts +50 -3155
- package/dist/index.js +1 -63
- package/dist/index.js.map +1 -1
- package/dist/infinite-scroll.cjs +2 -0
- package/dist/infinite-scroll.cjs.map +1 -0
- package/dist/infinite-scroll.d.cts +49 -0
- package/dist/infinite-scroll.d.ts +49 -0
- package/dist/infinite-scroll.js +2 -0
- package/dist/infinite-scroll.js.map +1 -0
- package/dist/leak-detector.cjs +2 -0
- package/dist/leak-detector.cjs.map +1 -0
- package/dist/leak-detector.d.cts +71 -0
- package/dist/leak-detector.d.ts +71 -0
- package/dist/leak-detector.js +2 -0
- package/dist/leak-detector.js.map +1 -0
- package/dist/machine.cjs +1 -1
- package/dist/machine.d.cts +1 -1
- package/dist/machine.d.ts +1 -1
- package/dist/machine.js +1 -1
- package/dist/offline.cjs +1 -1
- package/dist/offline.d.cts +1 -1
- package/dist/offline.d.ts +1 -1
- package/dist/offline.js +1 -1
- package/dist/perf.cjs +2 -0
- package/dist/perf.cjs.map +1 -0
- package/dist/perf.d.cts +97 -0
- package/dist/perf.d.ts +97 -0
- package/dist/perf.js +2 -0
- package/dist/perf.js.map +1 -0
- package/dist/pipes.cjs +2 -0
- package/dist/pipes.cjs.map +1 -0
- package/dist/pipes.d.cts +130 -0
- package/dist/pipes.d.ts +130 -0
- package/dist/pipes.js +2 -0
- package/dist/pipes.js.map +1 -0
- package/dist/plugin.cjs +2 -0
- package/dist/plugin.cjs.map +1 -0
- package/dist/plugin.d.cts +70 -0
- package/dist/plugin.d.ts +70 -0
- package/dist/plugin.js +2 -0
- package/dist/plugin.js.map +1 -0
- package/dist/portal.cjs +2 -0
- package/dist/portal.cjs.map +1 -0
- package/dist/portal.d.cts +30 -0
- package/dist/portal.d.ts +30 -0
- package/dist/portal.js +2 -0
- package/dist/portal.js.map +1 -0
- package/dist/pwa.cjs +1 -1
- package/dist/pwa.d.cts +1 -1
- package/dist/pwa.d.ts +1 -1
- package/dist/pwa.js +1 -1
- package/dist/query-state.cjs +2 -0
- package/dist/query-state.cjs.map +1 -0
- package/dist/query-state.d.cts +82 -0
- package/dist/query-state.d.ts +82 -0
- package/dist/query-state.js +2 -0
- package/dist/query-state.js.map +1 -0
- package/dist/reconcile.cjs +2 -0
- package/dist/reconcile.cjs.map +1 -0
- package/dist/reconcile.d.cts +42 -0
- package/dist/reconcile.d.ts +42 -0
- package/dist/reconcile.js +2 -0
- package/dist/reconcile.js.map +1 -0
- package/dist/scheduler-CKi1esN-.d.cts +9 -0
- package/dist/scheduler-CKi1esN-.d.ts +9 -0
- package/dist/security.cjs +2 -0
- package/dist/security.cjs.map +1 -0
- package/dist/security.d.cts +193 -0
- package/dist/security.d.ts +193 -0
- package/dist/security.js +2 -0
- package/dist/security.js.map +1 -0
- package/dist/seo.cjs +2 -0
- package/dist/seo.cjs.map +1 -0
- package/dist/seo.d.cts +118 -0
- package/dist/seo.d.ts +118 -0
- package/dist/seo.js +2 -0
- package/dist/seo.js.map +1 -0
- package/dist/{signals-C7XfOHHR.d.cts → signals-DionyGGY.d.cts} +7 -0
- package/dist/{signals-C7XfOHHR.d.ts → signals-DionyGGY.d.ts} +7 -0
- package/dist/snippets.cjs +2 -0
- package/dist/snippets.cjs.map +1 -0
- package/dist/snippets.d.cts +109 -0
- package/dist/snippets.d.ts +109 -0
- package/dist/snippets.js +2 -0
- package/dist/snippets.js.map +1 -0
- package/dist/ssg.cjs +2 -0
- package/dist/ssg.cjs.map +1 -0
- package/dist/ssg.d.cts +82 -0
- package/dist/ssg.d.ts +82 -0
- package/dist/ssg.js +2 -0
- package/dist/ssg.js.map +1 -0
- package/dist/ssr.cjs +1 -1
- package/dist/ssr.d.cts +2 -1
- package/dist/ssr.d.ts +2 -1
- package/dist/ssr.js +1 -1
- package/dist/store.cjs +1 -1
- package/dist/store.d.cts +1 -1
- package/dist/store.d.ts +1 -1
- package/dist/store.js +1 -1
- package/dist/suspense.cjs +2 -0
- package/dist/suspense.cjs.map +1 -0
- package/dist/suspense.d.cts +36 -0
- package/dist/suspense.d.ts +36 -0
- package/dist/suspense.js +2 -0
- package/dist/suspense.js.map +1 -0
- package/dist/switch.cjs +2 -0
- package/dist/switch.cjs.map +1 -0
- package/dist/switch.d.cts +48 -0
- package/dist/switch.d.ts +48 -0
- package/dist/switch.js +2 -0
- package/dist/switch.js.map +1 -0
- package/dist/sync.cjs +1 -1
- package/dist/sync.d.cts +1 -1
- package/dist/sync.d.ts +1 -1
- package/dist/sync.js +1 -1
- package/dist/test.cjs +2 -2
- package/dist/test.cjs.map +1 -1
- package/dist/test.d.cts +5 -4
- package/dist/test.d.ts +5 -4
- package/dist/test.js +2 -2
- package/dist/test.js.map +1 -1
- package/dist/theme.cjs +2 -0
- package/dist/theme.cjs.map +1 -0
- package/dist/theme.d.cts +56 -0
- package/dist/theme.d.ts +56 -0
- package/dist/theme.js +2 -0
- package/dist/theme.js.map +1 -0
- package/dist/toast.cjs +2 -0
- package/dist/toast.cjs.map +1 -0
- package/dist/toast.d.cts +66 -0
- package/dist/toast.d.ts +66 -0
- package/dist/toast.js +2 -0
- package/dist/toast.js.map +1 -0
- package/dist/transition.cjs +2 -0
- package/dist/transition.cjs.map +1 -0
- package/dist/transition.d.cts +90 -0
- package/dist/transition.d.ts +90 -0
- package/dist/transition.js +2 -0
- package/dist/transition.js.map +1 -0
- package/dist/tweened.cjs +2 -0
- package/dist/tweened.cjs.map +1 -0
- package/dist/tweened.d.cts +59 -0
- package/dist/tweened.d.ts +59 -0
- package/dist/tweened.js +2 -0
- package/dist/tweened.js.map +1 -0
- package/dist/types-DjZCk1xT.d.cts +4 -0
- package/dist/types-DjZCk1xT.d.ts +4 -0
- package/dist/view-transition.cjs +2 -0
- package/dist/view-transition.cjs.map +1 -0
- package/dist/view-transition.d.cts +80 -0
- package/dist/view-transition.d.ts +80 -0
- package/dist/view-transition.js +2 -0
- package/dist/view-transition.js.map +1 -0
- package/dist/virtual-list.cjs +2 -0
- package/dist/virtual-list.cjs.map +1 -0
- package/dist/virtual-list.d.cts +67 -0
- package/dist/virtual-list.d.ts +67 -0
- package/dist/virtual-list.js +2 -0
- package/dist/virtual-list.js.map +1 -0
- package/dist/watch.cjs +2 -0
- package/dist/watch.cjs.map +1 -0
- package/dist/watch.d.cts +70 -0
- package/dist/watch.d.ts +70 -0
- package/dist/watch.js +2 -0
- package/dist/watch.js.map +1 -0
- package/dist/web-component.cjs +2 -0
- package/dist/web-component.cjs.map +1 -0
- package/dist/web-component.d.cts +51 -0
- package/dist/web-component.d.ts +51 -0
- package/dist/web-component.js +2 -0
- package/dist/web-component.js.map +1 -0
- package/package.json +249 -11
- package/dist/chunk-35DJOBEO.cjs +0 -2
- package/dist/chunk-35DJOBEO.cjs.map +0 -1
- package/dist/chunk-3GRR4VW2.js +0 -13
- package/dist/chunk-3GRR4VW2.js.map +0 -1
- package/dist/chunk-5A7KDBDU.js +0 -2
- package/dist/chunk-5NHDEY2C.js +0 -2
- package/dist/chunk-6GGYM5SF.cjs +0 -5
- package/dist/chunk-6GGYM5SF.cjs.map +0 -1
- package/dist/chunk-EEILP4OL.cjs +0 -13
- package/dist/chunk-EEILP4OL.cjs.map +0 -1
- package/dist/chunk-FTTNKDZQ.js +0 -5
- package/dist/chunk-FTTNKDZQ.js.map +0 -1
- package/dist/chunk-H2HNKYN2.js +0 -2
- package/dist/chunk-H2HNKYN2.js.map +0 -1
- package/dist/chunk-TKFJGLUO.js +0 -2
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deprecation warnings and API stability markers.
|
|
3
|
+
*
|
|
4
|
+
* Provides runtime warnings when deprecated APIs are used,
|
|
5
|
+
* with migration hints pointing to the replacement.
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* // Mark an API as deprecated:
|
|
9
|
+
* export const oldName = deprecated(newImplementation, {
|
|
10
|
+
* name: 'oldName',
|
|
11
|
+
* replacement: 'newName',
|
|
12
|
+
* since: '0.2.0',
|
|
13
|
+
* removeIn: '1.0.0',
|
|
14
|
+
* message: 'Use newName() instead for better performance.',
|
|
15
|
+
* });
|
|
16
|
+
*
|
|
17
|
+
* // Users see:
|
|
18
|
+
* // [AkashJS] DEPRECATED: oldName() is deprecated since v0.2.0 and will be removed in v1.0.0.
|
|
19
|
+
* // Use newName() instead for better performance.
|
|
20
|
+
* // See: https://akash.js.org/migration
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
type APIStability = 'stable' | 'experimental' | 'deprecated' | 'internal';
|
|
24
|
+
interface DeprecationInfo {
|
|
25
|
+
/** Name of the deprecated API */
|
|
26
|
+
name: string;
|
|
27
|
+
/** Replacement API name */
|
|
28
|
+
replacement?: string;
|
|
29
|
+
/** Version when deprecated */
|
|
30
|
+
since: string;
|
|
31
|
+
/** Version when it will be removed */
|
|
32
|
+
removeIn?: string;
|
|
33
|
+
/** Custom migration message */
|
|
34
|
+
message?: string;
|
|
35
|
+
/** Documentation link */
|
|
36
|
+
link?: string;
|
|
37
|
+
}
|
|
38
|
+
interface APIInfo {
|
|
39
|
+
/** API name */
|
|
40
|
+
name: string;
|
|
41
|
+
/** Stability level */
|
|
42
|
+
stability: APIStability;
|
|
43
|
+
/** Version introduced */
|
|
44
|
+
since: string;
|
|
45
|
+
/** Deprecation info (if deprecated) */
|
|
46
|
+
deprecation?: DeprecationInfo;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Enable or disable deprecation warnings globally.
|
|
50
|
+
*/
|
|
51
|
+
declare function setDeprecationWarnings(enabled: boolean): void;
|
|
52
|
+
/**
|
|
53
|
+
* Set a custom warning handler (default: console.warn).
|
|
54
|
+
*/
|
|
55
|
+
declare function setWarningHandler(handler: ((msg: string) => void) | null): void;
|
|
56
|
+
/**
|
|
57
|
+
* Reset warned-about APIs (useful for testing).
|
|
58
|
+
*/
|
|
59
|
+
declare function resetDeprecationWarnings(): void;
|
|
60
|
+
/**
|
|
61
|
+
* Wrap a function so it emits a deprecation warning on first call.
|
|
62
|
+
*
|
|
63
|
+
* ```ts
|
|
64
|
+
* // Old API that still works but warns:
|
|
65
|
+
* export const createStore = deprecated(defineStore, {
|
|
66
|
+
* name: 'createStore',
|
|
67
|
+
* replacement: 'defineStore',
|
|
68
|
+
* since: '0.2.0',
|
|
69
|
+
* removeIn: '1.0.0',
|
|
70
|
+
* });
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
declare function deprecated<T extends (...args: any[]) => any>(fn: T, info: DeprecationInfo): T;
|
|
74
|
+
/**
|
|
75
|
+
* Mark a value (non-function) as deprecated.
|
|
76
|
+
* Returns the value but warns on first access.
|
|
77
|
+
*/
|
|
78
|
+
declare function deprecatedValue<T>(value: T, info: DeprecationInfo): T;
|
|
79
|
+
/**
|
|
80
|
+
* Register an API with its stability level.
|
|
81
|
+
*/
|
|
82
|
+
declare function registerAPI(info: APIInfo): void;
|
|
83
|
+
/**
|
|
84
|
+
* Get all registered APIs.
|
|
85
|
+
*/
|
|
86
|
+
declare function getRegisteredAPIs(): APIInfo[];
|
|
87
|
+
/**
|
|
88
|
+
* Get APIs by stability level.
|
|
89
|
+
*/
|
|
90
|
+
declare function getAPIsByStability(stability: APIStability): APIInfo[];
|
|
91
|
+
/**
|
|
92
|
+
* Check if an API is deprecated.
|
|
93
|
+
*/
|
|
94
|
+
declare function isDeprecated(name: string): boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Get deprecation info for an API.
|
|
97
|
+
*/
|
|
98
|
+
declare function getDeprecationInfo(name: string): DeprecationInfo | null;
|
|
99
|
+
interface CompatibilityResult {
|
|
100
|
+
compatible: boolean;
|
|
101
|
+
warnings: string[];
|
|
102
|
+
errors: string[];
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Check if package versions are compatible.
|
|
106
|
+
*
|
|
107
|
+
* ```ts
|
|
108
|
+
* const result = checkCompatibility({
|
|
109
|
+
* '@akashjs/runtime': '0.2.0',
|
|
110
|
+
* '@akashjs/router': '0.1.0',
|
|
111
|
+
* });
|
|
112
|
+
* if (!result.compatible) {
|
|
113
|
+
* console.error(result.errors);
|
|
114
|
+
* }
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
117
|
+
declare function checkCompatibility(packages: Record<string, string>): CompatibilityResult;
|
|
118
|
+
|
|
119
|
+
export { type APIInfo, type APIStability, type CompatibilityResult, type DeprecationInfo, checkCompatibility, deprecated, deprecatedValue, getAPIsByStability, getDeprecationInfo, getRegisteredAPIs, isDeprecated, registerAPI, resetDeprecationWarnings, setDeprecationWarnings, setWarningHandler };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export{k as checkCompatibility,d as deprecated,e as deprecatedValue,h as getAPIsByStability,j as getDeprecationInfo,g as getRegisteredAPIs,i as isDeprecated,f as registerAPI,c as resetDeprecationWarnings,a as setDeprecationWarnings,b as setWarningHandler}from'./chunk-OQV3NYDH.js';//# sourceMappingURL=deprecation.js.map
|
|
2
|
+
//# sourceMappingURL=deprecation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"deprecation.js"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {d as d$1}from'./chunk-
|
|
1
|
+
import {d as d$1}from'./chunk-EEQZFKEG.js';import'./chunk-66PLXQS3.js';import {e as e$1}from'./chunk-2UATNCKC.js';import'./chunk-U65WRXZC.js';var e="__akash-devtools-panel",c="__akash-devtools-badge",h=`
|
|
2
2
|
#${e} {
|
|
3
3
|
position: fixed; bottom: 0; right: 0; width: 420px; height: 360px;
|
|
4
4
|
background: #1e1e2e; color: #cdd6f4; font-family: 'SF Mono', Consolas, monospace;
|
|
@@ -53,5 +53,5 @@ import {d as d$1}from'./chunk-TKFJGLUO.js';import'./chunk-H2HNKYN2.js';import {n
|
|
|
53
53
|
<button class="dt-close" title="Close">×</button>
|
|
54
54
|
</div>
|
|
55
55
|
<div class="dt-body">${b()}</div>
|
|
56
|
-
`,t.querySelectorAll(".dt-tab").forEach(n=>{n.addEventListener("click",()=>{p=n.dataset.tab??"stores",t.querySelectorAll(".dt-tab").forEach(f=>f.classList.remove("active")),n.classList.add("active"),g();});}),t.querySelector(".dt-close")?.addEventListener("click",()=>u()),t}function _(){let t=document.createElement("button");return t.id=c,t.textContent="\u{1F527}",t.title="AkashJS DevTools (Ctrl+Shift+D)",t.addEventListener("click",()=>u()),t}function u(){i?(s?.remove(),s=null,d&&(d(),d=null),l.style.display="",i=false):(s=T(),document.body.appendChild(s),l.style.display="none",i=true,d=
|
|
57
|
-
//# sourceMappingURL=devtools-overlay-
|
|
56
|
+
`,t.querySelectorAll(".dt-tab").forEach(n=>{n.addEventListener("click",()=>{p=n.dataset.tab??"stores",t.querySelectorAll(".dt-tab").forEach(f=>f.classList.remove("active")),n.classList.add("active"),g();});}),t.querySelector(".dt-close")?.addEventListener("click",()=>u()),t}function _(){let t=document.createElement("button");return t.id=c,t.textContent="\u{1F527}",t.title="AkashJS DevTools (Ctrl+Shift+D)",t.addEventListener("click",()=>u()),t}function u(){i?(s?.remove(),s=null,d&&(d(),d=null),l.style.display="",i=false):(s=T(),document.body.appendChild(s),l.style.display="none",i=true,d=e$1(()=>{let t=d$1();for(let o of Object.values(t))try{o.$snapshot();}catch{}g();}));}function w(){if(typeof document>"u"||!document.head||!document.body)return;let t=document.createElement("style");t.textContent=h,document.head.appendChild(t),l=_(),document.body.appendChild(l),document.addEventListener("keydown",o=>{o.ctrlKey&&o.shiftKey&&o.key==="D"&&(o.preventDefault(),u());});}export{w as mountDevtoolsOverlay};//# sourceMappingURL=devtools-overlay-3PHULVP4.js.map
|
|
57
|
+
//# sourceMappingURL=devtools-overlay-3PHULVP4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/devtools-overlay.ts"],"names":["PANEL_ID","BADGE_ID","STYLES","formatValue","val","keys","panelEl","badgeEl","isOpen","activeTab","disposeUpdate","renderKV","key","text","cls","renderStoresTab","instances","__getStoreInstances","ids","html","id","snap","renderRoutesTab","renderBody","updatePanel","body","createPanel","el","tabHtml","t","btn","b","togglePanel","createBadge","effect","store","mountDevtoolsOverlay","style","e"],"mappings":"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","file":"devtools-overlay-CJWKBTP4.js","sourcesContent":["/**\n * DevTools visual overlay panel.\n *\n * Toggled with Ctrl+Shift+D. Self-contained DOM — no .akash components.\n * Reads store state via __getStoreInstances(), live-updates via effects.\n *\n * Dev-only: tree-shaken in production builds.\n */\n\nimport { effect } from './signals.js';\nimport { __getStoreInstances } from './store.js';\n\nconst PANEL_ID = '__akash-devtools-panel';\nconst BADGE_ID = '__akash-devtools-badge';\n\n// --- Styles ---\n\nconst STYLES = `\n#${PANEL_ID} {\n position: fixed; bottom: 0; right: 0; width: 420px; height: 360px;\n background: #1e1e2e; color: #cdd6f4; font-family: 'SF Mono', Consolas, monospace;\n font-size: 12px; border-top: 2px solid #7c3aed; border-left: 2px solid #7c3aed;\n z-index: 999999; display: flex; flex-direction: column; overflow: hidden;\n border-radius: 8px 0 0 0; box-shadow: -4px -4px 20px rgba(0,0,0,0.4);\n}\n#${PANEL_ID} .dt-header {\n display: flex; align-items: center; padding: 6px 10px;\n background: #181825; border-bottom: 1px solid #313244; user-select: none;\n}\n#${PANEL_ID} .dt-header span { font-weight: 600; color: #7c3aed; flex: 1; }\n#${PANEL_ID} .dt-tabs { display: flex; gap: 2px; }\n#${PANEL_ID} .dt-tab {\n padding: 3px 8px; border-radius: 4px; cursor: pointer; color: #6c7086;\n background: transparent; border: none; font-size: 11px; font-family: inherit;\n}\n#${PANEL_ID} .dt-tab:hover { color: #cdd6f4; background: #313244; }\n#${PANEL_ID} .dt-tab.active { color: #cdd6f4; background: #7c3aed; }\n#${PANEL_ID} .dt-close {\n background: none; border: none; color: #6c7086; cursor: pointer;\n font-size: 14px; padding: 2px 6px; margin-left: 4px;\n}\n#${PANEL_ID} .dt-close:hover { color: #f38ba8; }\n#${PANEL_ID} .dt-body { flex: 1; overflow: auto; padding: 8px 10px; }\n#${PANEL_ID} .dt-store-list { display: flex; flex-direction: column; gap: 6px; }\n#${PANEL_ID} .dt-store {\n background: #313244; border-radius: 4px; padding: 6px 8px; cursor: pointer;\n}\n#${PANEL_ID} .dt-store:hover { background: #45475a; }\n#${PANEL_ID} .dt-store-id { color: #89b4fa; font-weight: 600; margin-bottom: 4px; }\n#${PANEL_ID} .dt-kv { display: flex; gap: 6px; padding: 1px 0; }\n#${PANEL_ID} .dt-key { color: #a6adc8; }\n#${PANEL_ID} .dt-val { color: #a6e3a1; }\n#${PANEL_ID} .dt-val.str { color: #f9e2af; }\n#${PANEL_ID} .dt-val.bool { color: #fab387; }\n#${PANEL_ID} .dt-val.null { color: #6c7086; font-style: italic; }\n#${PANEL_ID} .dt-section { color: #6c7086; font-size: 10px; text-transform: uppercase; margin: 8px 0 4px; }\n#${PANEL_ID} .dt-empty { color: #6c7086; font-style: italic; padding: 20px; text-align: center; }\n#${BADGE_ID} {\n position: fixed; bottom: 12px; right: 12px; width: 36px; height: 36px;\n background: #7c3aed; color: white; border-radius: 50%; display: flex;\n align-items: center; justify-content: center; cursor: pointer;\n z-index: 999998; font-size: 16px; box-shadow: 0 2px 8px rgba(124,58,237,0.4);\n border: none; font-family: inherit;\n}\n#${BADGE_ID}:hover { background: #6d28d9; transform: scale(1.1); }\n`;\n\n// --- Value formatting ---\n\nfunction formatValue(val: unknown): { text: string; cls: string } {\n if (val === null) return { text: 'null', cls: 'null' };\n if (val === undefined) return { text: 'undefined', cls: 'null' };\n if (typeof val === 'boolean') return { text: String(val), cls: 'bool' };\n if (typeof val === 'string') return { text: `\"${val.length > 40 ? val.slice(0, 40) + '...' : val}\"`, cls: 'str' };\n if (typeof val === 'number') return { text: String(val), cls: '' };\n if (Array.isArray(val)) return { text: `Array(${val.length})`, cls: '' };\n if (typeof val === 'object') {\n try {\n const keys = Object.keys(val);\n return { text: `{${keys.slice(0, 3).join(', ')}${keys.length > 3 ? ', ...' : ''}}`, cls: '' };\n } catch { return { text: '[Object]', cls: '' }; }\n }\n return { text: String(val), cls: '' };\n}\n\n// --- Panel rendering ---\n\nlet panelEl: HTMLElement | null = null;\nlet badgeEl: HTMLElement | null = null;\nlet isOpen = false;\nlet activeTab = 'stores';\nlet disposeUpdate: (() => void) | null = null;\n\nfunction renderKV(key: string, val: unknown): string {\n const { text, cls } = formatValue(val);\n return `<div class=\"dt-kv\"><span class=\"dt-key\">${key}:</span><span class=\"dt-val ${cls}\">${text}</span></div>`;\n}\n\nfunction renderStoresTab(): string {\n const instances = __getStoreInstances();\n const ids = Object.keys(instances);\n if (ids.length === 0) return '<div class=\"dt-empty\">No stores registered</div>';\n\n let html = '<div class=\"dt-store-list\">';\n for (const id of ids) {\n const store = instances[id];\n const snap = store.$snapshot();\n html += `<div class=\"dt-store\"><div class=\"dt-store-id\">${id}</div>`;\n for (const [key, val] of Object.entries(snap)) {\n html += renderKV(key, val);\n }\n html += '</div>';\n }\n html += '</div>';\n return html;\n}\n\nfunction renderRoutesTab(): string {\n const devtools = (globalThis as any).__AKASH_DEVTOOLS__;\n if (!devtools) return '<div class=\"dt-empty\">DevTools API not installed</div>';\n // Route info not directly available here — show what we can\n return '<div class=\"dt-empty\">Route info available via __AKASH_DEVTOOLS__</div>';\n}\n\nfunction renderBody(): string {\n switch (activeTab) {\n case 'stores': return renderStoresTab();\n case 'routes': return renderRoutesTab();\n default: return '<div class=\"dt-empty\">Tab not implemented</div>';\n }\n}\n\nfunction updatePanel(): void {\n if (!panelEl || !isOpen) return;\n const body = panelEl.querySelector('.dt-body');\n if (body) body.innerHTML = renderBody();\n}\n\nfunction createPanel(): HTMLElement {\n const el = document.createElement('div');\n el.id = PANEL_ID;\n\n const tabs = ['stores', 'routes'];\n const tabHtml = tabs.map(t =>\n `<button class=\"dt-tab ${t === activeTab ? 'active' : ''}\" data-tab=\"${t}\">${t}</button>`\n ).join('');\n\n el.innerHTML = `\n <div class=\"dt-header\">\n <span>AkashJS DevTools</span>\n <div class=\"dt-tabs\">${tabHtml}</div>\n <button class=\"dt-close\" title=\"Close\">×</button>\n </div>\n <div class=\"dt-body\">${renderBody()}</div>\n `;\n\n // Tab switching\n el.querySelectorAll('.dt-tab').forEach(btn => {\n btn.addEventListener('click', () => {\n activeTab = (btn as HTMLElement).dataset.tab ?? 'stores';\n el.querySelectorAll('.dt-tab').forEach(b => b.classList.remove('active'));\n btn.classList.add('active');\n updatePanel();\n });\n });\n\n // Close button\n el.querySelector('.dt-close')?.addEventListener('click', () => togglePanel());\n\n return el;\n}\n\nfunction createBadge(): HTMLElement {\n const el = document.createElement('button');\n el.id = BADGE_ID;\n el.textContent = '\\u{1f527}';\n el.title = 'AkashJS DevTools (Ctrl+Shift+D)';\n el.addEventListener('click', () => togglePanel());\n return el;\n}\n\nfunction togglePanel(): void {\n if (isOpen) {\n panelEl?.remove();\n panelEl = null;\n if (disposeUpdate) { disposeUpdate(); disposeUpdate = null; }\n badgeEl!.style.display = '';\n isOpen = false;\n } else {\n panelEl = createPanel();\n document.body.appendChild(panelEl);\n badgeEl!.style.display = 'none';\n isOpen = true;\n\n // Live update every time any store signal changes\n disposeUpdate = effect(() => {\n // Read all store signals to track them\n const instances = __getStoreInstances();\n for (const store of Object.values(instances)) {\n try { store.$snapshot(); } catch { /* ignore */ }\n }\n // Update DOM\n updatePanel();\n });\n }\n}\n\n// --- Public API ---\n\nexport function mountDevtoolsOverlay(): void {\n if (typeof document === 'undefined' || !document.head || !document.body) return;\n\n // Inject styles\n const style = document.createElement('style');\n style.textContent = STYLES;\n document.head.appendChild(style);\n\n // Create badge\n badgeEl = createBadge();\n document.body.appendChild(badgeEl);\n\n // Keyboard shortcut: Ctrl+Shift+D\n document.addEventListener('keydown', (e) => {\n if (e.ctrlKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n togglePanel();\n }\n });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/devtools-overlay.ts"],"names":["PANEL_ID","BADGE_ID","STYLES","formatValue","val","keys","panelEl","badgeEl","isOpen","activeTab","disposeUpdate","renderKV","key","text","cls","renderStoresTab","instances","__getStoreInstances","ids","html","id","snap","renderRoutesTab","renderBody","updatePanel","body","createPanel","el","tabHtml","t","btn","b","togglePanel","createBadge","effect","store","mountDevtoolsOverlay","style","e"],"mappings":"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","file":"devtools-overlay-3PHULVP4.js","sourcesContent":["/**\n * DevTools visual overlay panel.\n *\n * Toggled with Ctrl+Shift+D. Self-contained DOM — no .akash components.\n * Reads store state via __getStoreInstances(), live-updates via effects.\n *\n * Dev-only: tree-shaken in production builds.\n */\n\nimport { effect } from './signals.js';\nimport { __getStoreInstances } from './store.js';\n\nconst PANEL_ID = '__akash-devtools-panel';\nconst BADGE_ID = '__akash-devtools-badge';\n\n// --- Styles ---\n\nconst STYLES = `\n#${PANEL_ID} {\n position: fixed; bottom: 0; right: 0; width: 420px; height: 360px;\n background: #1e1e2e; color: #cdd6f4; font-family: 'SF Mono', Consolas, monospace;\n font-size: 12px; border-top: 2px solid #7c3aed; border-left: 2px solid #7c3aed;\n z-index: 999999; display: flex; flex-direction: column; overflow: hidden;\n border-radius: 8px 0 0 0; box-shadow: -4px -4px 20px rgba(0,0,0,0.4);\n}\n#${PANEL_ID} .dt-header {\n display: flex; align-items: center; padding: 6px 10px;\n background: #181825; border-bottom: 1px solid #313244; user-select: none;\n}\n#${PANEL_ID} .dt-header span { font-weight: 600; color: #7c3aed; flex: 1; }\n#${PANEL_ID} .dt-tabs { display: flex; gap: 2px; }\n#${PANEL_ID} .dt-tab {\n padding: 3px 8px; border-radius: 4px; cursor: pointer; color: #6c7086;\n background: transparent; border: none; font-size: 11px; font-family: inherit;\n}\n#${PANEL_ID} .dt-tab:hover { color: #cdd6f4; background: #313244; }\n#${PANEL_ID} .dt-tab.active { color: #cdd6f4; background: #7c3aed; }\n#${PANEL_ID} .dt-close {\n background: none; border: none; color: #6c7086; cursor: pointer;\n font-size: 14px; padding: 2px 6px; margin-left: 4px;\n}\n#${PANEL_ID} .dt-close:hover { color: #f38ba8; }\n#${PANEL_ID} .dt-body { flex: 1; overflow: auto; padding: 8px 10px; }\n#${PANEL_ID} .dt-store-list { display: flex; flex-direction: column; gap: 6px; }\n#${PANEL_ID} .dt-store {\n background: #313244; border-radius: 4px; padding: 6px 8px; cursor: pointer;\n}\n#${PANEL_ID} .dt-store:hover { background: #45475a; }\n#${PANEL_ID} .dt-store-id { color: #89b4fa; font-weight: 600; margin-bottom: 4px; }\n#${PANEL_ID} .dt-kv { display: flex; gap: 6px; padding: 1px 0; }\n#${PANEL_ID} .dt-key { color: #a6adc8; }\n#${PANEL_ID} .dt-val { color: #a6e3a1; }\n#${PANEL_ID} .dt-val.str { color: #f9e2af; }\n#${PANEL_ID} .dt-val.bool { color: #fab387; }\n#${PANEL_ID} .dt-val.null { color: #6c7086; font-style: italic; }\n#${PANEL_ID} .dt-section { color: #6c7086; font-size: 10px; text-transform: uppercase; margin: 8px 0 4px; }\n#${PANEL_ID} .dt-empty { color: #6c7086; font-style: italic; padding: 20px; text-align: center; }\n#${BADGE_ID} {\n position: fixed; bottom: 12px; right: 12px; width: 36px; height: 36px;\n background: #7c3aed; color: white; border-radius: 50%; display: flex;\n align-items: center; justify-content: center; cursor: pointer;\n z-index: 999998; font-size: 16px; box-shadow: 0 2px 8px rgba(124,58,237,0.4);\n border: none; font-family: inherit;\n}\n#${BADGE_ID}:hover { background: #6d28d9; transform: scale(1.1); }\n`;\n\n// --- Value formatting ---\n\nfunction formatValue(val: unknown): { text: string; cls: string } {\n if (val === null) return { text: 'null', cls: 'null' };\n if (val === undefined) return { text: 'undefined', cls: 'null' };\n if (typeof val === 'boolean') return { text: String(val), cls: 'bool' };\n if (typeof val === 'string') return { text: `\"${val.length > 40 ? val.slice(0, 40) + '...' : val}\"`, cls: 'str' };\n if (typeof val === 'number') return { text: String(val), cls: '' };\n if (Array.isArray(val)) return { text: `Array(${val.length})`, cls: '' };\n if (typeof val === 'object') {\n try {\n const keys = Object.keys(val);\n return { text: `{${keys.slice(0, 3).join(', ')}${keys.length > 3 ? ', ...' : ''}}`, cls: '' };\n } catch { return { text: '[Object]', cls: '' }; }\n }\n return { text: String(val), cls: '' };\n}\n\n// --- Panel rendering ---\n\nlet panelEl: HTMLElement | null = null;\nlet badgeEl: HTMLElement | null = null;\nlet isOpen = false;\nlet activeTab = 'stores';\nlet disposeUpdate: (() => void) | null = null;\n\nfunction renderKV(key: string, val: unknown): string {\n const { text, cls } = formatValue(val);\n return `<div class=\"dt-kv\"><span class=\"dt-key\">${key}:</span><span class=\"dt-val ${cls}\">${text}</span></div>`;\n}\n\nfunction renderStoresTab(): string {\n const instances = __getStoreInstances();\n const ids = Object.keys(instances);\n if (ids.length === 0) return '<div class=\"dt-empty\">No stores registered</div>';\n\n let html = '<div class=\"dt-store-list\">';\n for (const id of ids) {\n const store = instances[id];\n const snap = store.$snapshot();\n html += `<div class=\"dt-store\"><div class=\"dt-store-id\">${id}</div>`;\n for (const [key, val] of Object.entries(snap)) {\n html += renderKV(key, val);\n }\n html += '</div>';\n }\n html += '</div>';\n return html;\n}\n\nfunction renderRoutesTab(): string {\n const devtools = (globalThis as any).__AKASH_DEVTOOLS__;\n if (!devtools) return '<div class=\"dt-empty\">DevTools API not installed</div>';\n // Route info not directly available here — show what we can\n return '<div class=\"dt-empty\">Route info available via __AKASH_DEVTOOLS__</div>';\n}\n\nfunction renderBody(): string {\n switch (activeTab) {\n case 'stores': return renderStoresTab();\n case 'routes': return renderRoutesTab();\n default: return '<div class=\"dt-empty\">Tab not implemented</div>';\n }\n}\n\nfunction updatePanel(): void {\n if (!panelEl || !isOpen) return;\n const body = panelEl.querySelector('.dt-body');\n if (body) body.innerHTML = renderBody();\n}\n\nfunction createPanel(): HTMLElement {\n const el = document.createElement('div');\n el.id = PANEL_ID;\n\n const tabs = ['stores', 'routes'];\n const tabHtml = tabs.map(t =>\n `<button class=\"dt-tab ${t === activeTab ? 'active' : ''}\" data-tab=\"${t}\">${t}</button>`\n ).join('');\n\n el.innerHTML = `\n <div class=\"dt-header\">\n <span>AkashJS DevTools</span>\n <div class=\"dt-tabs\">${tabHtml}</div>\n <button class=\"dt-close\" title=\"Close\">×</button>\n </div>\n <div class=\"dt-body\">${renderBody()}</div>\n `;\n\n // Tab switching\n el.querySelectorAll('.dt-tab').forEach(btn => {\n btn.addEventListener('click', () => {\n activeTab = (btn as HTMLElement).dataset.tab ?? 'stores';\n el.querySelectorAll('.dt-tab').forEach(b => b.classList.remove('active'));\n btn.classList.add('active');\n updatePanel();\n });\n });\n\n // Close button\n el.querySelector('.dt-close')?.addEventListener('click', () => togglePanel());\n\n return el;\n}\n\nfunction createBadge(): HTMLElement {\n const el = document.createElement('button');\n el.id = BADGE_ID;\n el.textContent = '\\u{1f527}';\n el.title = 'AkashJS DevTools (Ctrl+Shift+D)';\n el.addEventListener('click', () => togglePanel());\n return el;\n}\n\nfunction togglePanel(): void {\n if (isOpen) {\n panelEl?.remove();\n panelEl = null;\n if (disposeUpdate) { disposeUpdate(); disposeUpdate = null; }\n badgeEl!.style.display = '';\n isOpen = false;\n } else {\n panelEl = createPanel();\n document.body.appendChild(panelEl);\n badgeEl!.style.display = 'none';\n isOpen = true;\n\n // Live update every time any store signal changes\n disposeUpdate = effect(() => {\n // Read all store signals to track them\n const instances = __getStoreInstances();\n for (const store of Object.values(instances)) {\n try { store.$snapshot(); } catch { /* ignore */ }\n }\n // Update DOM\n updatePanel();\n });\n }\n}\n\n// --- Public API ---\n\nexport function mountDevtoolsOverlay(): void {\n if (typeof document === 'undefined' || !document.head || !document.body) return;\n\n // Inject styles\n const style = document.createElement('style');\n style.textContent = STYLES;\n document.head.appendChild(style);\n\n // Create badge\n badgeEl = createBadge();\n document.body.appendChild(badgeEl);\n\n // Keyboard shortcut: Ctrl+Shift+D\n document.addEventListener('keydown', (e) => {\n if (e.ctrlKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n togglePanel();\n }\n });\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunkXE7JC7Y3_cjs=require('./chunk-XE7JC7Y3.cjs');require('./chunk-ND2HZRMR.cjs');var chunkHL2VGVJT_cjs=require('./chunk-HL2VGVJT.cjs');require('./chunk-XPLIEN2G.cjs');var e="__akash-devtools-panel",c="__akash-devtools-badge",h=`
|
|
2
2
|
#${e} {
|
|
3
3
|
position: fixed; bottom: 0; right: 0; width: 420px; height: 360px;
|
|
4
4
|
background: #1e1e2e; color: #cdd6f4; font-family: 'SF Mono', Consolas, monospace;
|
|
@@ -46,12 +46,12 @@
|
|
|
46
46
|
border: none; font-family: inherit;
|
|
47
47
|
}
|
|
48
48
|
#${c}:hover { background: #6d28d9; transform: scale(1.1); }
|
|
49
|
-
`;function $(t){if(t===null)return {text:"null",cls:"null"};if(t===void 0)return {text:"undefined",cls:"null"};if(typeof t=="boolean")return {text:String(t),cls:"bool"};if(typeof t=="string")return {text:`"${t.length>40?t.slice(0,40)+"...":t}"`,cls:"str"};if(typeof t=="number")return {text:String(t),cls:""};if(Array.isArray(t))return {text:`Array(${t.length})`,cls:""};if(typeof t=="object")try{let o=Object.keys(t);return {text:`{${o.slice(0,3).join(", ")}${o.length>3?", ...":""}}`,cls:""}}catch{return {text:"[Object]",cls:""}}return {text:String(t),cls:""}}var s=null,l=null,i=false,p="stores",d=null;function k(t,o){let{text:r,cls:n}=$(o);return `<div class="dt-kv"><span class="dt-key">${t}:</span><span class="dt-val ${n}">${r}</span></div>`}function E(){let t=
|
|
49
|
+
`;function $(t){if(t===null)return {text:"null",cls:"null"};if(t===void 0)return {text:"undefined",cls:"null"};if(typeof t=="boolean")return {text:String(t),cls:"bool"};if(typeof t=="string")return {text:`"${t.length>40?t.slice(0,40)+"...":t}"`,cls:"str"};if(typeof t=="number")return {text:String(t),cls:""};if(Array.isArray(t))return {text:`Array(${t.length})`,cls:""};if(typeof t=="object")try{let o=Object.keys(t);return {text:`{${o.slice(0,3).join(", ")}${o.length>3?", ...":""}}`,cls:""}}catch{return {text:"[Object]",cls:""}}return {text:String(t),cls:""}}var s=null,l=null,i=false,p="stores",d=null;function k(t,o){let{text:r,cls:n}=$(o);return `<div class="dt-kv"><span class="dt-key">${t}:</span><span class="dt-val ${n}">${r}</span></div>`}function E(){let t=chunkXE7JC7Y3_cjs.d(),o=Object.keys(t);if(o.length===0)return '<div class="dt-empty">No stores registered</div>';let r='<div class="dt-store-list">';for(let n of o){let y=t[n].$snapshot();r+=`<div class="dt-store"><div class="dt-store-id">${n}</div>`;for(let[m,v]of Object.entries(y))r+=k(m,v);r+="</div>";}return r+="</div>",r}function S(){return globalThis.__AKASH_DEVTOOLS__?'<div class="dt-empty">Route info available via __AKASH_DEVTOOLS__</div>':'<div class="dt-empty">DevTools API not installed</div>'}function b(){switch(p){case "stores":return E();case "routes":return S();default:return '<div class="dt-empty">Tab not implemented</div>'}}function g(){if(!s||!i)return;let t=s.querySelector(".dt-body");t&&(t.innerHTML=b());}function T(){let t=document.createElement("div");t.id=e;let r=["stores","routes"].map(n=>`<button class="dt-tab ${n===p?"active":""}" data-tab="${n}">${n}</button>`).join("");return t.innerHTML=`
|
|
50
50
|
<div class="dt-header">
|
|
51
51
|
<span>AkashJS DevTools</span>
|
|
52
52
|
<div class="dt-tabs">${r}</div>
|
|
53
53
|
<button class="dt-close" title="Close">×</button>
|
|
54
54
|
</div>
|
|
55
55
|
<div class="dt-body">${b()}</div>
|
|
56
|
-
`,t.querySelectorAll(".dt-tab").forEach(n=>{n.addEventListener("click",()=>{p=n.dataset.tab??"stores",t.querySelectorAll(".dt-tab").forEach(f=>f.classList.remove("active")),n.classList.add("active"),g();});}),t.querySelector(".dt-close")?.addEventListener("click",()=>u()),t}function _(){let t=document.createElement("button");return t.id=c,t.textContent="\u{1F527}",t.title="AkashJS DevTools (Ctrl+Shift+D)",t.addEventListener("click",()=>u()),t}function u(){i?(s?.remove(),s=null,d&&(d(),d=null),l.style.display="",i=false):(s=T(),document.body.appendChild(s),l.style.display="none",i=true,d=
|
|
57
|
-
//# sourceMappingURL=devtools-overlay-
|
|
56
|
+
`,t.querySelectorAll(".dt-tab").forEach(n=>{n.addEventListener("click",()=>{p=n.dataset.tab??"stores",t.querySelectorAll(".dt-tab").forEach(f=>f.classList.remove("active")),n.classList.add("active"),g();});}),t.querySelector(".dt-close")?.addEventListener("click",()=>u()),t}function _(){let t=document.createElement("button");return t.id=c,t.textContent="\u{1F527}",t.title="AkashJS DevTools (Ctrl+Shift+D)",t.addEventListener("click",()=>u()),t}function u(){i?(s?.remove(),s=null,d&&(d(),d=null),l.style.display="",i=false):(s=T(),document.body.appendChild(s),l.style.display="none",i=true,d=chunkHL2VGVJT_cjs.e(()=>{let t=chunkXE7JC7Y3_cjs.d();for(let o of Object.values(t))try{o.$snapshot();}catch{}g();}));}function w(){if(typeof document>"u"||!document.head||!document.body)return;let t=document.createElement("style");t.textContent=h,document.head.appendChild(t),l=_(),document.body.appendChild(l),document.addEventListener("keydown",o=>{o.ctrlKey&&o.shiftKey&&o.key==="D"&&(o.preventDefault(),u());});}exports.mountDevtoolsOverlay=w;//# sourceMappingURL=devtools-overlay-SJV7WNNS.cjs.map
|
|
57
|
+
//# sourceMappingURL=devtools-overlay-SJV7WNNS.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/devtools-overlay.ts"],"names":["PANEL_ID","BADGE_ID","STYLES","formatValue","val","keys","panelEl","badgeEl","isOpen","activeTab","disposeUpdate","renderKV","key","text","cls","renderStoresTab","instances","__getStoreInstances","ids","html","id","snap","renderRoutesTab","renderBody","updatePanel","body","createPanel","el","tabHtml","t","btn","b","togglePanel","createBadge","effect","store","mountDevtoolsOverlay","style","e"],"mappings":"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","file":"devtools-overlay-EQ3G755P.cjs","sourcesContent":["/**\n * DevTools visual overlay panel.\n *\n * Toggled with Ctrl+Shift+D. Self-contained DOM — no .akash components.\n * Reads store state via __getStoreInstances(), live-updates via effects.\n *\n * Dev-only: tree-shaken in production builds.\n */\n\nimport { effect } from './signals.js';\nimport { __getStoreInstances } from './store.js';\n\nconst PANEL_ID = '__akash-devtools-panel';\nconst BADGE_ID = '__akash-devtools-badge';\n\n// --- Styles ---\n\nconst STYLES = `\n#${PANEL_ID} {\n position: fixed; bottom: 0; right: 0; width: 420px; height: 360px;\n background: #1e1e2e; color: #cdd6f4; font-family: 'SF Mono', Consolas, monospace;\n font-size: 12px; border-top: 2px solid #7c3aed; border-left: 2px solid #7c3aed;\n z-index: 999999; display: flex; flex-direction: column; overflow: hidden;\n border-radius: 8px 0 0 0; box-shadow: -4px -4px 20px rgba(0,0,0,0.4);\n}\n#${PANEL_ID} .dt-header {\n display: flex; align-items: center; padding: 6px 10px;\n background: #181825; border-bottom: 1px solid #313244; user-select: none;\n}\n#${PANEL_ID} .dt-header span { font-weight: 600; color: #7c3aed; flex: 1; }\n#${PANEL_ID} .dt-tabs { display: flex; gap: 2px; }\n#${PANEL_ID} .dt-tab {\n padding: 3px 8px; border-radius: 4px; cursor: pointer; color: #6c7086;\n background: transparent; border: none; font-size: 11px; font-family: inherit;\n}\n#${PANEL_ID} .dt-tab:hover { color: #cdd6f4; background: #313244; }\n#${PANEL_ID} .dt-tab.active { color: #cdd6f4; background: #7c3aed; }\n#${PANEL_ID} .dt-close {\n background: none; border: none; color: #6c7086; cursor: pointer;\n font-size: 14px; padding: 2px 6px; margin-left: 4px;\n}\n#${PANEL_ID} .dt-close:hover { color: #f38ba8; }\n#${PANEL_ID} .dt-body { flex: 1; overflow: auto; padding: 8px 10px; }\n#${PANEL_ID} .dt-store-list { display: flex; flex-direction: column; gap: 6px; }\n#${PANEL_ID} .dt-store {\n background: #313244; border-radius: 4px; padding: 6px 8px; cursor: pointer;\n}\n#${PANEL_ID} .dt-store:hover { background: #45475a; }\n#${PANEL_ID} .dt-store-id { color: #89b4fa; font-weight: 600; margin-bottom: 4px; }\n#${PANEL_ID} .dt-kv { display: flex; gap: 6px; padding: 1px 0; }\n#${PANEL_ID} .dt-key { color: #a6adc8; }\n#${PANEL_ID} .dt-val { color: #a6e3a1; }\n#${PANEL_ID} .dt-val.str { color: #f9e2af; }\n#${PANEL_ID} .dt-val.bool { color: #fab387; }\n#${PANEL_ID} .dt-val.null { color: #6c7086; font-style: italic; }\n#${PANEL_ID} .dt-section { color: #6c7086; font-size: 10px; text-transform: uppercase; margin: 8px 0 4px; }\n#${PANEL_ID} .dt-empty { color: #6c7086; font-style: italic; padding: 20px; text-align: center; }\n#${BADGE_ID} {\n position: fixed; bottom: 12px; right: 12px; width: 36px; height: 36px;\n background: #7c3aed; color: white; border-radius: 50%; display: flex;\n align-items: center; justify-content: center; cursor: pointer;\n z-index: 999998; font-size: 16px; box-shadow: 0 2px 8px rgba(124,58,237,0.4);\n border: none; font-family: inherit;\n}\n#${BADGE_ID}:hover { background: #6d28d9; transform: scale(1.1); }\n`;\n\n// --- Value formatting ---\n\nfunction formatValue(val: unknown): { text: string; cls: string } {\n if (val === null) return { text: 'null', cls: 'null' };\n if (val === undefined) return { text: 'undefined', cls: 'null' };\n if (typeof val === 'boolean') return { text: String(val), cls: 'bool' };\n if (typeof val === 'string') return { text: `\"${val.length > 40 ? val.slice(0, 40) + '...' : val}\"`, cls: 'str' };\n if (typeof val === 'number') return { text: String(val), cls: '' };\n if (Array.isArray(val)) return { text: `Array(${val.length})`, cls: '' };\n if (typeof val === 'object') {\n try {\n const keys = Object.keys(val);\n return { text: `{${keys.slice(0, 3).join(', ')}${keys.length > 3 ? ', ...' : ''}}`, cls: '' };\n } catch { return { text: '[Object]', cls: '' }; }\n }\n return { text: String(val), cls: '' };\n}\n\n// --- Panel rendering ---\n\nlet panelEl: HTMLElement | null = null;\nlet badgeEl: HTMLElement | null = null;\nlet isOpen = false;\nlet activeTab = 'stores';\nlet disposeUpdate: (() => void) | null = null;\n\nfunction renderKV(key: string, val: unknown): string {\n const { text, cls } = formatValue(val);\n return `<div class=\"dt-kv\"><span class=\"dt-key\">${key}:</span><span class=\"dt-val ${cls}\">${text}</span></div>`;\n}\n\nfunction renderStoresTab(): string {\n const instances = __getStoreInstances();\n const ids = Object.keys(instances);\n if (ids.length === 0) return '<div class=\"dt-empty\">No stores registered</div>';\n\n let html = '<div class=\"dt-store-list\">';\n for (const id of ids) {\n const store = instances[id];\n const snap = store.$snapshot();\n html += `<div class=\"dt-store\"><div class=\"dt-store-id\">${id}</div>`;\n for (const [key, val] of Object.entries(snap)) {\n html += renderKV(key, val);\n }\n html += '</div>';\n }\n html += '</div>';\n return html;\n}\n\nfunction renderRoutesTab(): string {\n const devtools = (globalThis as any).__AKASH_DEVTOOLS__;\n if (!devtools) return '<div class=\"dt-empty\">DevTools API not installed</div>';\n // Route info not directly available here — show what we can\n return '<div class=\"dt-empty\">Route info available via __AKASH_DEVTOOLS__</div>';\n}\n\nfunction renderBody(): string {\n switch (activeTab) {\n case 'stores': return renderStoresTab();\n case 'routes': return renderRoutesTab();\n default: return '<div class=\"dt-empty\">Tab not implemented</div>';\n }\n}\n\nfunction updatePanel(): void {\n if (!panelEl || !isOpen) return;\n const body = panelEl.querySelector('.dt-body');\n if (body) body.innerHTML = renderBody();\n}\n\nfunction createPanel(): HTMLElement {\n const el = document.createElement('div');\n el.id = PANEL_ID;\n\n const tabs = ['stores', 'routes'];\n const tabHtml = tabs.map(t =>\n `<button class=\"dt-tab ${t === activeTab ? 'active' : ''}\" data-tab=\"${t}\">${t}</button>`\n ).join('');\n\n el.innerHTML = `\n <div class=\"dt-header\">\n <span>AkashJS DevTools</span>\n <div class=\"dt-tabs\">${tabHtml}</div>\n <button class=\"dt-close\" title=\"Close\">×</button>\n </div>\n <div class=\"dt-body\">${renderBody()}</div>\n `;\n\n // Tab switching\n el.querySelectorAll('.dt-tab').forEach(btn => {\n btn.addEventListener('click', () => {\n activeTab = (btn as HTMLElement).dataset.tab ?? 'stores';\n el.querySelectorAll('.dt-tab').forEach(b => b.classList.remove('active'));\n btn.classList.add('active');\n updatePanel();\n });\n });\n\n // Close button\n el.querySelector('.dt-close')?.addEventListener('click', () => togglePanel());\n\n return el;\n}\n\nfunction createBadge(): HTMLElement {\n const el = document.createElement('button');\n el.id = BADGE_ID;\n el.textContent = '\\u{1f527}';\n el.title = 'AkashJS DevTools (Ctrl+Shift+D)';\n el.addEventListener('click', () => togglePanel());\n return el;\n}\n\nfunction togglePanel(): void {\n if (isOpen) {\n panelEl?.remove();\n panelEl = null;\n if (disposeUpdate) { disposeUpdate(); disposeUpdate = null; }\n badgeEl!.style.display = '';\n isOpen = false;\n } else {\n panelEl = createPanel();\n document.body.appendChild(panelEl);\n badgeEl!.style.display = 'none';\n isOpen = true;\n\n // Live update every time any store signal changes\n disposeUpdate = effect(() => {\n // Read all store signals to track them\n const instances = __getStoreInstances();\n for (const store of Object.values(instances)) {\n try { store.$snapshot(); } catch { /* ignore */ }\n }\n // Update DOM\n updatePanel();\n });\n }\n}\n\n// --- Public API ---\n\nexport function mountDevtoolsOverlay(): void {\n if (typeof document === 'undefined' || !document.head || !document.body) return;\n\n // Inject styles\n const style = document.createElement('style');\n style.textContent = STYLES;\n document.head.appendChild(style);\n\n // Create badge\n badgeEl = createBadge();\n document.body.appendChild(badgeEl);\n\n // Keyboard shortcut: Ctrl+Shift+D\n document.addEventListener('keydown', (e) => {\n if (e.ctrlKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n togglePanel();\n }\n });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/devtools-overlay.ts"],"names":["PANEL_ID","BADGE_ID","STYLES","formatValue","val","keys","panelEl","badgeEl","isOpen","activeTab","disposeUpdate","renderKV","key","text","cls","renderStoresTab","instances","__getStoreInstances","ids","html","id","snap","renderRoutesTab","renderBody","updatePanel","body","createPanel","el","tabHtml","t","btn","b","togglePanel","createBadge","effect","store","mountDevtoolsOverlay","style","e"],"mappings":"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","file":"devtools-overlay-SJV7WNNS.cjs","sourcesContent":["/**\n * DevTools visual overlay panel.\n *\n * Toggled with Ctrl+Shift+D. Self-contained DOM — no .akash components.\n * Reads store state via __getStoreInstances(), live-updates via effects.\n *\n * Dev-only: tree-shaken in production builds.\n */\n\nimport { effect } from './signals.js';\nimport { __getStoreInstances } from './store.js';\n\nconst PANEL_ID = '__akash-devtools-panel';\nconst BADGE_ID = '__akash-devtools-badge';\n\n// --- Styles ---\n\nconst STYLES = `\n#${PANEL_ID} {\n position: fixed; bottom: 0; right: 0; width: 420px; height: 360px;\n background: #1e1e2e; color: #cdd6f4; font-family: 'SF Mono', Consolas, monospace;\n font-size: 12px; border-top: 2px solid #7c3aed; border-left: 2px solid #7c3aed;\n z-index: 999999; display: flex; flex-direction: column; overflow: hidden;\n border-radius: 8px 0 0 0; box-shadow: -4px -4px 20px rgba(0,0,0,0.4);\n}\n#${PANEL_ID} .dt-header {\n display: flex; align-items: center; padding: 6px 10px;\n background: #181825; border-bottom: 1px solid #313244; user-select: none;\n}\n#${PANEL_ID} .dt-header span { font-weight: 600; color: #7c3aed; flex: 1; }\n#${PANEL_ID} .dt-tabs { display: flex; gap: 2px; }\n#${PANEL_ID} .dt-tab {\n padding: 3px 8px; border-radius: 4px; cursor: pointer; color: #6c7086;\n background: transparent; border: none; font-size: 11px; font-family: inherit;\n}\n#${PANEL_ID} .dt-tab:hover { color: #cdd6f4; background: #313244; }\n#${PANEL_ID} .dt-tab.active { color: #cdd6f4; background: #7c3aed; }\n#${PANEL_ID} .dt-close {\n background: none; border: none; color: #6c7086; cursor: pointer;\n font-size: 14px; padding: 2px 6px; margin-left: 4px;\n}\n#${PANEL_ID} .dt-close:hover { color: #f38ba8; }\n#${PANEL_ID} .dt-body { flex: 1; overflow: auto; padding: 8px 10px; }\n#${PANEL_ID} .dt-store-list { display: flex; flex-direction: column; gap: 6px; }\n#${PANEL_ID} .dt-store {\n background: #313244; border-radius: 4px; padding: 6px 8px; cursor: pointer;\n}\n#${PANEL_ID} .dt-store:hover { background: #45475a; }\n#${PANEL_ID} .dt-store-id { color: #89b4fa; font-weight: 600; margin-bottom: 4px; }\n#${PANEL_ID} .dt-kv { display: flex; gap: 6px; padding: 1px 0; }\n#${PANEL_ID} .dt-key { color: #a6adc8; }\n#${PANEL_ID} .dt-val { color: #a6e3a1; }\n#${PANEL_ID} .dt-val.str { color: #f9e2af; }\n#${PANEL_ID} .dt-val.bool { color: #fab387; }\n#${PANEL_ID} .dt-val.null { color: #6c7086; font-style: italic; }\n#${PANEL_ID} .dt-section { color: #6c7086; font-size: 10px; text-transform: uppercase; margin: 8px 0 4px; }\n#${PANEL_ID} .dt-empty { color: #6c7086; font-style: italic; padding: 20px; text-align: center; }\n#${BADGE_ID} {\n position: fixed; bottom: 12px; right: 12px; width: 36px; height: 36px;\n background: #7c3aed; color: white; border-radius: 50%; display: flex;\n align-items: center; justify-content: center; cursor: pointer;\n z-index: 999998; font-size: 16px; box-shadow: 0 2px 8px rgba(124,58,237,0.4);\n border: none; font-family: inherit;\n}\n#${BADGE_ID}:hover { background: #6d28d9; transform: scale(1.1); }\n`;\n\n// --- Value formatting ---\n\nfunction formatValue(val: unknown): { text: string; cls: string } {\n if (val === null) return { text: 'null', cls: 'null' };\n if (val === undefined) return { text: 'undefined', cls: 'null' };\n if (typeof val === 'boolean') return { text: String(val), cls: 'bool' };\n if (typeof val === 'string') return { text: `\"${val.length > 40 ? val.slice(0, 40) + '...' : val}\"`, cls: 'str' };\n if (typeof val === 'number') return { text: String(val), cls: '' };\n if (Array.isArray(val)) return { text: `Array(${val.length})`, cls: '' };\n if (typeof val === 'object') {\n try {\n const keys = Object.keys(val);\n return { text: `{${keys.slice(0, 3).join(', ')}${keys.length > 3 ? ', ...' : ''}}`, cls: '' };\n } catch { return { text: '[Object]', cls: '' }; }\n }\n return { text: String(val), cls: '' };\n}\n\n// --- Panel rendering ---\n\nlet panelEl: HTMLElement | null = null;\nlet badgeEl: HTMLElement | null = null;\nlet isOpen = false;\nlet activeTab = 'stores';\nlet disposeUpdate: (() => void) | null = null;\n\nfunction renderKV(key: string, val: unknown): string {\n const { text, cls } = formatValue(val);\n return `<div class=\"dt-kv\"><span class=\"dt-key\">${key}:</span><span class=\"dt-val ${cls}\">${text}</span></div>`;\n}\n\nfunction renderStoresTab(): string {\n const instances = __getStoreInstances();\n const ids = Object.keys(instances);\n if (ids.length === 0) return '<div class=\"dt-empty\">No stores registered</div>';\n\n let html = '<div class=\"dt-store-list\">';\n for (const id of ids) {\n const store = instances[id];\n const snap = store.$snapshot();\n html += `<div class=\"dt-store\"><div class=\"dt-store-id\">${id}</div>`;\n for (const [key, val] of Object.entries(snap)) {\n html += renderKV(key, val);\n }\n html += '</div>';\n }\n html += '</div>';\n return html;\n}\n\nfunction renderRoutesTab(): string {\n const devtools = (globalThis as any).__AKASH_DEVTOOLS__;\n if (!devtools) return '<div class=\"dt-empty\">DevTools API not installed</div>';\n // Route info not directly available here — show what we can\n return '<div class=\"dt-empty\">Route info available via __AKASH_DEVTOOLS__</div>';\n}\n\nfunction renderBody(): string {\n switch (activeTab) {\n case 'stores': return renderStoresTab();\n case 'routes': return renderRoutesTab();\n default: return '<div class=\"dt-empty\">Tab not implemented</div>';\n }\n}\n\nfunction updatePanel(): void {\n if (!panelEl || !isOpen) return;\n const body = panelEl.querySelector('.dt-body');\n if (body) body.innerHTML = renderBody();\n}\n\nfunction createPanel(): HTMLElement {\n const el = document.createElement('div');\n el.id = PANEL_ID;\n\n const tabs = ['stores', 'routes'];\n const tabHtml = tabs.map(t =>\n `<button class=\"dt-tab ${t === activeTab ? 'active' : ''}\" data-tab=\"${t}\">${t}</button>`\n ).join('');\n\n el.innerHTML = `\n <div class=\"dt-header\">\n <span>AkashJS DevTools</span>\n <div class=\"dt-tabs\">${tabHtml}</div>\n <button class=\"dt-close\" title=\"Close\">×</button>\n </div>\n <div class=\"dt-body\">${renderBody()}</div>\n `;\n\n // Tab switching\n el.querySelectorAll('.dt-tab').forEach(btn => {\n btn.addEventListener('click', () => {\n activeTab = (btn as HTMLElement).dataset.tab ?? 'stores';\n el.querySelectorAll('.dt-tab').forEach(b => b.classList.remove('active'));\n btn.classList.add('active');\n updatePanel();\n });\n });\n\n // Close button\n el.querySelector('.dt-close')?.addEventListener('click', () => togglePanel());\n\n return el;\n}\n\nfunction createBadge(): HTMLElement {\n const el = document.createElement('button');\n el.id = BADGE_ID;\n el.textContent = '\\u{1f527}';\n el.title = 'AkashJS DevTools (Ctrl+Shift+D)';\n el.addEventListener('click', () => togglePanel());\n return el;\n}\n\nfunction togglePanel(): void {\n if (isOpen) {\n panelEl?.remove();\n panelEl = null;\n if (disposeUpdate) { disposeUpdate(); disposeUpdate = null; }\n badgeEl!.style.display = '';\n isOpen = false;\n } else {\n panelEl = createPanel();\n document.body.appendChild(panelEl);\n badgeEl!.style.display = 'none';\n isOpen = true;\n\n // Live update every time any store signal changes\n disposeUpdate = effect(() => {\n // Read all store signals to track them\n const instances = __getStoreInstances();\n for (const store of Object.values(instances)) {\n try { store.$snapshot(); } catch { /* ignore */ }\n }\n // Update DOM\n updatePanel();\n });\n }\n}\n\n// --- Public API ---\n\nexport function mountDevtoolsOverlay(): void {\n if (typeof document === 'undefined' || !document.head || !document.body) return;\n\n // Inject styles\n const style = document.createElement('style');\n style.textContent = STYLES;\n document.head.appendChild(style);\n\n // Create badge\n badgeEl = createBadge();\n document.body.appendChild(badgeEl);\n\n // Keyboard shortcut: Ctrl+Shift+D\n document.addEventListener('keydown', (e) => {\n if (e.ctrlKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n togglePanel();\n }\n });\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunkHHPRQMGX_cjs=require('./chunk-HHPRQMGX.cjs');require('./chunk-XE7JC7Y3.cjs'),require('./chunk-ND2HZRMR.cjs'),require('./chunk-HL2VGVJT.cjs'),require('./chunk-XPLIEN2G.cjs');Object.defineProperty(exports,"__trackEffect",{enumerable:true,get:function(){return chunkHHPRQMGX_cjs.b}});Object.defineProperty(exports,"__trackSignal",{enumerable:true,get:function(){return chunkHHPRQMGX_cjs.a}});Object.defineProperty(exports,"installDevtools",{enumerable:true,get:function(){return chunkHHPRQMGX_cjs.c}});//# sourceMappingURL=devtools.cjs.map
|
|
2
|
+
//# sourceMappingURL=devtools.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"devtools.cjs"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AkashJS DevTools — Console-based debugging utilities.
|
|
3
|
+
*
|
|
4
|
+
* Call `installDevtools()` in development to expose `__AKASH_DEVTOOLS__`
|
|
5
|
+
* on the global object. Access it from the browser console:
|
|
6
|
+
*
|
|
7
|
+
* ```js
|
|
8
|
+
* __AKASH_DEVTOOLS__.stores() // list all stores
|
|
9
|
+
* __AKASH_DEVTOOLS__.store('cart') // inspect a store
|
|
10
|
+
* __AKASH_DEVTOOLS__.signals() // list tracked signals
|
|
11
|
+
* __AKASH_DEVTOOLS__.effects() // list active effects
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
/** Register a signal for devtools tracking (call in dev mode) */
|
|
15
|
+
declare function __trackSignal(name: string, read: () => unknown, getSubscriberCount: () => number): void;
|
|
16
|
+
/** Register an effect for devtools tracking */
|
|
17
|
+
declare function __trackEffect(name: string, meta: {
|
|
18
|
+
isRender: boolean;
|
|
19
|
+
getSourceCount: () => number;
|
|
20
|
+
}): () => void;
|
|
21
|
+
interface StoreSnapshot {
|
|
22
|
+
$id: string;
|
|
23
|
+
state: Record<string, unknown>;
|
|
24
|
+
getters: Record<string, unknown>;
|
|
25
|
+
actions: string[];
|
|
26
|
+
subscriberCount: number;
|
|
27
|
+
}
|
|
28
|
+
interface DevToolsAPI {
|
|
29
|
+
/** List all registered stores */
|
|
30
|
+
stores(): string[];
|
|
31
|
+
/** Inspect a specific store by ID */
|
|
32
|
+
store(id: string): StoreSnapshot | null;
|
|
33
|
+
/** Get all store snapshots */
|
|
34
|
+
storeSnapshots(): Record<string, StoreSnapshot>;
|
|
35
|
+
/** List tracked signals with current values */
|
|
36
|
+
signals(): Array<{
|
|
37
|
+
name: string;
|
|
38
|
+
value: unknown;
|
|
39
|
+
subscribers: number;
|
|
40
|
+
}>;
|
|
41
|
+
/** List tracked effects with run counts */
|
|
42
|
+
effects(): Array<{
|
|
43
|
+
name: string;
|
|
44
|
+
runs: number;
|
|
45
|
+
isRender: boolean;
|
|
46
|
+
sources: number;
|
|
47
|
+
}>;
|
|
48
|
+
/** Get framework version info */
|
|
49
|
+
version(): {
|
|
50
|
+
runtime: string;
|
|
51
|
+
};
|
|
52
|
+
/** Pretty-print store state to console */
|
|
53
|
+
log(storeId?: string): void;
|
|
54
|
+
/** Record store state history for time-travel */
|
|
55
|
+
startRecording(storeId: string): void;
|
|
56
|
+
/** Stop recording and return history */
|
|
57
|
+
stopRecording(storeId: string): Array<{
|
|
58
|
+
timestamp: number;
|
|
59
|
+
state: Record<string, unknown>;
|
|
60
|
+
action?: string;
|
|
61
|
+
}>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Install AkashJS DevTools on the global object.
|
|
65
|
+
* Call this in your app's entry point during development:
|
|
66
|
+
*
|
|
67
|
+
* ```ts
|
|
68
|
+
* import { installDevtools } from '@akashjs/runtime';
|
|
69
|
+
* if (import.meta.env.DEV) installDevtools();
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
interface DevToolsOptions {
|
|
73
|
+
/** Enable the visual overlay panel (toggle with Ctrl+Shift+D) */
|
|
74
|
+
overlay?: boolean;
|
|
75
|
+
}
|
|
76
|
+
declare function installDevtools(options?: DevToolsOptions): void;
|
|
77
|
+
|
|
78
|
+
export { type DevToolsAPI, type DevToolsOptions, __trackEffect, __trackSignal, installDevtools };
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AkashJS DevTools — Console-based debugging utilities.
|
|
3
|
+
*
|
|
4
|
+
* Call `installDevtools()` in development to expose `__AKASH_DEVTOOLS__`
|
|
5
|
+
* on the global object. Access it from the browser console:
|
|
6
|
+
*
|
|
7
|
+
* ```js
|
|
8
|
+
* __AKASH_DEVTOOLS__.stores() // list all stores
|
|
9
|
+
* __AKASH_DEVTOOLS__.store('cart') // inspect a store
|
|
10
|
+
* __AKASH_DEVTOOLS__.signals() // list tracked signals
|
|
11
|
+
* __AKASH_DEVTOOLS__.effects() // list active effects
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
/** Register a signal for devtools tracking (call in dev mode) */
|
|
15
|
+
declare function __trackSignal(name: string, read: () => unknown, getSubscriberCount: () => number): void;
|
|
16
|
+
/** Register an effect for devtools tracking */
|
|
17
|
+
declare function __trackEffect(name: string, meta: {
|
|
18
|
+
isRender: boolean;
|
|
19
|
+
getSourceCount: () => number;
|
|
20
|
+
}): () => void;
|
|
21
|
+
interface StoreSnapshot {
|
|
22
|
+
$id: string;
|
|
23
|
+
state: Record<string, unknown>;
|
|
24
|
+
getters: Record<string, unknown>;
|
|
25
|
+
actions: string[];
|
|
26
|
+
subscriberCount: number;
|
|
27
|
+
}
|
|
28
|
+
interface DevToolsAPI {
|
|
29
|
+
/** List all registered stores */
|
|
30
|
+
stores(): string[];
|
|
31
|
+
/** Inspect a specific store by ID */
|
|
32
|
+
store(id: string): StoreSnapshot | null;
|
|
33
|
+
/** Get all store snapshots */
|
|
34
|
+
storeSnapshots(): Record<string, StoreSnapshot>;
|
|
35
|
+
/** List tracked signals with current values */
|
|
36
|
+
signals(): Array<{
|
|
37
|
+
name: string;
|
|
38
|
+
value: unknown;
|
|
39
|
+
subscribers: number;
|
|
40
|
+
}>;
|
|
41
|
+
/** List tracked effects with run counts */
|
|
42
|
+
effects(): Array<{
|
|
43
|
+
name: string;
|
|
44
|
+
runs: number;
|
|
45
|
+
isRender: boolean;
|
|
46
|
+
sources: number;
|
|
47
|
+
}>;
|
|
48
|
+
/** Get framework version info */
|
|
49
|
+
version(): {
|
|
50
|
+
runtime: string;
|
|
51
|
+
};
|
|
52
|
+
/** Pretty-print store state to console */
|
|
53
|
+
log(storeId?: string): void;
|
|
54
|
+
/** Record store state history for time-travel */
|
|
55
|
+
startRecording(storeId: string): void;
|
|
56
|
+
/** Stop recording and return history */
|
|
57
|
+
stopRecording(storeId: string): Array<{
|
|
58
|
+
timestamp: number;
|
|
59
|
+
state: Record<string, unknown>;
|
|
60
|
+
action?: string;
|
|
61
|
+
}>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Install AkashJS DevTools on the global object.
|
|
65
|
+
* Call this in your app's entry point during development:
|
|
66
|
+
*
|
|
67
|
+
* ```ts
|
|
68
|
+
* import { installDevtools } from '@akashjs/runtime';
|
|
69
|
+
* if (import.meta.env.DEV) installDevtools();
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
interface DevToolsOptions {
|
|
73
|
+
/** Enable the visual overlay panel (toggle with Ctrl+Shift+D) */
|
|
74
|
+
overlay?: boolean;
|
|
75
|
+
}
|
|
76
|
+
declare function installDevtools(options?: DevToolsOptions): void;
|
|
77
|
+
|
|
78
|
+
export { type DevToolsAPI, type DevToolsOptions, __trackEffect, __trackSignal, installDevtools };
|
package/dist/devtools.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export{b as __trackEffect,a as __trackSignal,c as installDevtools}from'./chunk-5GDMAABU.js';import'./chunk-EEQZFKEG.js';import'./chunk-66PLXQS3.js';import'./chunk-2UATNCKC.js';import'./chunk-U65WRXZC.js';//# sourceMappingURL=devtools.js.map
|
|
2
|
+
//# sourceMappingURL=devtools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"devtools.js"}
|
package/dist/di.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunkT7A5YOEG_cjs=require('./chunk-T7A5YOEG.cjs');require('./chunk-HL2VGVJT.cjs'),require('./chunk-XPLIEN2G.cjs');Object.defineProperty(exports,"clearProviders",{enumerable:true,get:function(){return chunkT7A5YOEG_cjs.e}});Object.defineProperty(exports,"createInjector",{enumerable:true,get:function(){return chunkT7A5YOEG_cjs.b}});Object.defineProperty(exports,"defineProvider",{enumerable:true,get:function(){return chunkT7A5YOEG_cjs.a}});Object.defineProperty(exports,"injectProvider",{enumerable:true,get:function(){return chunkT7A5YOEG_cjs.d}});Object.defineProperty(exports,"setCurrentInjector",{enumerable:true,get:function(){return chunkT7A5YOEG_cjs.c}});//# sourceMappingURL=di.cjs.map
|
|
2
|
+
//# sourceMappingURL=di.cjs.map
|
package/dist/di.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"di.cjs"}
|
package/dist/di.d.cts
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hierarchical Dependency Injection.
|
|
3
|
+
*
|
|
4
|
+
* Extends the basic provide/inject with multi-level injectors,
|
|
5
|
+
* provider factories, tree-shakable providers, and multi-providers.
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* // Define a provider with factory
|
|
9
|
+
* const ApiService = defineProvider({
|
|
10
|
+
* factory: () => createHttpClient({ baseUrl: '/api' }),
|
|
11
|
+
* });
|
|
12
|
+
*
|
|
13
|
+
* // Tree-shakable provider (only bundled if injected)
|
|
14
|
+
* const Logger = defineProvider({
|
|
15
|
+
* factory: () => new ConsoleLogger(),
|
|
16
|
+
* providedIn: 'root',
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* // Use in component
|
|
20
|
+
* const api = injectProvider(ApiService);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
interface ProviderDef<T> {
|
|
24
|
+
_type: 'provider';
|
|
25
|
+
factory: () => T;
|
|
26
|
+
providedIn?: 'root' | 'component';
|
|
27
|
+
multi?: boolean;
|
|
28
|
+
_id: symbol;
|
|
29
|
+
}
|
|
30
|
+
interface Injector {
|
|
31
|
+
/** Get a provider value */
|
|
32
|
+
get<T>(provider: ProviderDef<T>): T;
|
|
33
|
+
/** Check if a provider is registered */
|
|
34
|
+
has(provider: ProviderDef<unknown>): boolean;
|
|
35
|
+
/** Create a child injector */
|
|
36
|
+
createChild(providers?: ProviderRegistration[]): Injector;
|
|
37
|
+
/** Dispose this injector and all cached instances */
|
|
38
|
+
dispose(): void;
|
|
39
|
+
}
|
|
40
|
+
interface ProviderRegistration<T = unknown> {
|
|
41
|
+
provide: ProviderDef<T>;
|
|
42
|
+
useFactory?: () => T;
|
|
43
|
+
useValue?: T;
|
|
44
|
+
useExisting?: ProviderDef<T>;
|
|
45
|
+
multi?: boolean;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Define a typed provider.
|
|
49
|
+
*
|
|
50
|
+
* ```ts
|
|
51
|
+
* const DatabaseService = defineProvider({
|
|
52
|
+
* factory: () => new Database(config),
|
|
53
|
+
* providedIn: 'root', // singleton, tree-shakable
|
|
54
|
+
* });
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
declare function defineProvider<T>(config: {
|
|
58
|
+
factory: () => T;
|
|
59
|
+
providedIn?: 'root' | 'component';
|
|
60
|
+
multi?: boolean;
|
|
61
|
+
}): ProviderDef<T>;
|
|
62
|
+
/**
|
|
63
|
+
* Create an injector with hierarchical resolution.
|
|
64
|
+
*
|
|
65
|
+
* ```ts
|
|
66
|
+
* const injector = createInjector([
|
|
67
|
+
* { provide: ApiService, useFactory: () => new MockApi() },
|
|
68
|
+
* { provide: Logger, useValue: console },
|
|
69
|
+
* ]);
|
|
70
|
+
*
|
|
71
|
+
* const api = injector.get(ApiService);
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
declare function createInjector(providers?: ProviderRegistration[], parent?: Injector): Injector;
|
|
75
|
+
/**
|
|
76
|
+
* Set the current injector (called by component setup).
|
|
77
|
+
* @internal
|
|
78
|
+
*/
|
|
79
|
+
declare function setCurrentInjector(injector: Injector | null): Injector | null;
|
|
80
|
+
/**
|
|
81
|
+
* Inject a provider in the current component context.
|
|
82
|
+
*
|
|
83
|
+
* ```ts
|
|
84
|
+
* const api = injectProvider(ApiService);
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
declare function injectProvider<T>(provider: ProviderDef<T>): T;
|
|
88
|
+
/**
|
|
89
|
+
* Clear root provider instances (useful for testing).
|
|
90
|
+
*/
|
|
91
|
+
declare function clearProviders(): void;
|
|
92
|
+
|
|
93
|
+
export { type Injector, type ProviderDef, type ProviderRegistration, clearProviders, createInjector, defineProvider, injectProvider, setCurrentInjector };
|