opkg 0.9.2 → 0.9.4
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/.claude/agents/code-reviewer.md +171 -0
- package/.claude/commands/commit-push-pr.md +20 -0
- package/.claude/commands/{specs/read.md → read-specs.md} +1 -1
- package/.claude/commands/{specs/update.md → update-specs.md} +4 -0
- package/.claude/skills/code-review-excellence/SKILL.md +538 -0
- package/README.md +2 -2
- package/package.json +3 -1
- package/packages/cli/dist/add-IJAPFHIX.js +624 -0
- package/packages/cli/dist/add-IJAPFHIX.js.map +7 -0
- package/packages/cli/dist/add-LLUNFLJI.js +624 -0
- package/packages/cli/dist/add-LLUNFLJI.js.map +7 -0
- package/packages/cli/dist/add-U44SL3OR.js +624 -0
- package/packages/cli/dist/add-U44SL3OR.js.map +7 -0
- package/packages/cli/dist/chunk-23VBP5L6.js +371 -0
- package/packages/cli/dist/chunk-23VBP5L6.js.map +7 -0
- package/packages/cli/dist/chunk-2SVHLF5C.js +1419 -0
- package/packages/cli/dist/chunk-2SVHLF5C.js.map +7 -0
- package/packages/cli/dist/chunk-37256POU.js +99 -0
- package/packages/cli/dist/chunk-37256POU.js.map +7 -0
- package/packages/cli/dist/chunk-3PZRVA6O.js +196 -0
- package/packages/cli/dist/chunk-3PZRVA6O.js.map +7 -0
- package/packages/cli/dist/chunk-427DCURL.js +155 -0
- package/packages/cli/dist/chunk-427DCURL.js.map +7 -0
- package/packages/cli/dist/chunk-4B5HJLP2.js +48 -0
- package/packages/cli/dist/chunk-4B5HJLP2.js.map +7 -0
- package/packages/cli/dist/chunk-4OWT3YEG.js +413 -0
- package/packages/cli/dist/chunk-4OWT3YEG.js.map +7 -0
- package/packages/cli/dist/chunk-4RIBTBXI.js +568 -0
- package/packages/cli/dist/chunk-4RIBTBXI.js.map +7 -0
- package/packages/cli/dist/chunk-4X2EJHJN.js +63 -0
- package/packages/cli/dist/chunk-4X2EJHJN.js.map +7 -0
- package/packages/cli/dist/chunk-6CYW66HD.js +1136 -0
- package/packages/cli/dist/chunk-6CYW66HD.js.map +7 -0
- package/packages/cli/dist/chunk-6DITYAFA.js +172 -0
- package/packages/cli/dist/chunk-6DITYAFA.js.map +7 -0
- package/packages/cli/dist/chunk-7KEAKEVZ.js +568 -0
- package/packages/cli/dist/chunk-7KEAKEVZ.js.map +7 -0
- package/packages/cli/dist/chunk-ABFUD25D.js +61 -0
- package/packages/cli/dist/chunk-ABFUD25D.js.map +7 -0
- package/packages/cli/dist/chunk-AR7GJCG6.js +274 -0
- package/packages/cli/dist/chunk-AR7GJCG6.js.map +7 -0
- package/packages/cli/dist/chunk-AYTGQCXH.js +86 -0
- package/packages/cli/dist/chunk-AYTGQCXH.js.map +7 -0
- package/packages/cli/dist/chunk-BROJ6OUT.js +631 -0
- package/packages/cli/dist/chunk-BROJ6OUT.js.map +7 -0
- package/packages/cli/dist/chunk-BVVSU7QD.js +23 -0
- package/packages/cli/dist/chunk-BVVSU7QD.js.map +7 -0
- package/packages/cli/dist/chunk-C6FY55UP.js +108 -0
- package/packages/cli/dist/chunk-C6FY55UP.js.map +7 -0
- package/packages/cli/dist/chunk-CVA64SXK.js +1136 -0
- package/packages/cli/dist/chunk-CVA64SXK.js.map +7 -0
- package/packages/cli/dist/chunk-D3O7LY2Q.js +1151 -0
- package/packages/cli/dist/chunk-D3O7LY2Q.js.map +7 -0
- package/packages/cli/dist/chunk-D6LEPODL.js +413 -0
- package/packages/cli/dist/chunk-D6LEPODL.js.map +7 -0
- package/packages/cli/dist/chunk-DEC24S7E.js +186 -0
- package/packages/cli/dist/chunk-DEC24S7E.js.map +7 -0
- package/packages/cli/dist/chunk-FMVVJH5M.js +371 -0
- package/packages/cli/dist/chunk-FMVVJH5M.js.map +7 -0
- package/packages/cli/dist/chunk-GDVFS3YP.js +130 -0
- package/packages/cli/dist/chunk-GDVFS3YP.js.map +7 -0
- package/packages/cli/dist/chunk-GEP2G5HF.js +31 -0
- package/packages/cli/dist/chunk-GEP2G5HF.js.map +7 -0
- package/packages/cli/dist/chunk-GSWHZBT2.js +62 -0
- package/packages/cli/dist/chunk-GSWHZBT2.js.map +7 -0
- package/packages/cli/dist/chunk-HTYHJA3B.js +61 -0
- package/packages/cli/dist/chunk-HTYHJA3B.js.map +7 -0
- package/packages/cli/dist/chunk-HYKYECAE.js +222 -0
- package/packages/cli/dist/chunk-HYKYECAE.js.map +7 -0
- package/packages/cli/dist/chunk-I7FEAHB4.js +100 -0
- package/packages/cli/dist/chunk-I7FEAHB4.js.map +7 -0
- package/packages/cli/dist/chunk-IHVZ5AUJ.js +107 -0
- package/packages/cli/dist/chunk-IHVZ5AUJ.js.map +7 -0
- package/packages/cli/dist/chunk-KI7FDU3H.js +99 -0
- package/packages/cli/dist/chunk-KI7FDU3H.js.map +7 -0
- package/packages/cli/dist/chunk-L5GRJQBS.js +32 -0
- package/packages/cli/dist/chunk-L5GRJQBS.js.map +7 -0
- package/packages/cli/dist/chunk-LHEAUDJL.js +302 -0
- package/packages/cli/dist/chunk-LHEAUDJL.js.map +7 -0
- package/packages/cli/dist/chunk-MIURCESJ.js +48 -0
- package/packages/cli/dist/chunk-MIURCESJ.js.map +7 -0
- package/packages/cli/dist/chunk-N43IXOND.js +732 -0
- package/packages/cli/dist/chunk-N43IXOND.js.map +7 -0
- package/packages/cli/dist/chunk-OUZRMGPV.js +274 -0
- package/packages/cli/dist/chunk-OUZRMGPV.js.map +7 -0
- package/packages/cli/dist/chunk-PSQXKAL4.js +371 -0
- package/packages/cli/dist/chunk-PSQXKAL4.js.map +7 -0
- package/packages/cli/dist/chunk-PUDRKDVZ.js +1419 -0
- package/packages/cli/dist/chunk-PUDRKDVZ.js.map +7 -0
- package/packages/cli/dist/chunk-RAKMX654.js +631 -0
- package/packages/cli/dist/chunk-RAKMX654.js.map +7 -0
- package/packages/cli/dist/chunk-RSFLK2TP.js +195 -0
- package/packages/cli/dist/chunk-RSFLK2TP.js.map +7 -0
- package/packages/cli/dist/chunk-S26PR2BS.js +99 -0
- package/packages/cli/dist/chunk-S26PR2BS.js.map +7 -0
- package/packages/cli/dist/chunk-U7FW7SXX.js +568 -0
- package/packages/cli/dist/chunk-U7FW7SXX.js.map +7 -0
- package/packages/cli/dist/chunk-VKM6K5TN.js +413 -0
- package/packages/cli/dist/chunk-VKM6K5TN.js.map +7 -0
- package/packages/cli/dist/chunk-VKNJG4JN.js +253 -0
- package/packages/cli/dist/chunk-VKNJG4JN.js.map +7 -0
- package/packages/cli/dist/chunk-VQ2KY6CK.js +113 -0
- package/packages/cli/dist/chunk-VQ2KY6CK.js.map +7 -0
- package/packages/cli/dist/chunk-VQDTXLOX.js +1312 -0
- package/packages/cli/dist/chunk-VQDTXLOX.js.map +7 -0
- package/packages/cli/dist/chunk-VXNS3X5O.js +60 -0
- package/packages/cli/dist/chunk-VXNS3X5O.js.map +7 -0
- package/packages/cli/dist/chunk-WF7H2YDU.js +376 -0
- package/packages/cli/dist/chunk-WF7H2YDU.js.map +7 -0
- package/packages/cli/dist/chunk-WNRXZLWW.js +266 -0
- package/packages/cli/dist/chunk-WNRXZLWW.js.map +7 -0
- package/packages/cli/dist/chunk-WT4VVCXM.js +1121 -0
- package/packages/cli/dist/chunk-WT4VVCXM.js.map +7 -0
- package/packages/cli/dist/configure-3AZUMDJZ.js +107 -0
- package/packages/cli/dist/configure-3AZUMDJZ.js.map +7 -0
- package/packages/cli/dist/configure-D722JQOD.js +107 -0
- package/packages/cli/dist/configure-D722JQOD.js.map +7 -0
- package/packages/cli/dist/configure-IU5H7XD6.js +107 -0
- package/packages/cli/dist/configure-IU5H7XD6.js.map +7 -0
- package/packages/cli/dist/file-format-detector-PXCIAKTK.js +22 -0
- package/packages/cli/dist/file-format-detector-PXCIAKTK.js.map +7 -0
- package/packages/cli/dist/index.js +17 -17
- package/packages/cli/dist/install-EZNWMLJR.js +7581 -0
- package/packages/cli/dist/install-EZNWMLJR.js.map +7 -0
- package/packages/cli/dist/install-F5ANFUBX.js +7577 -0
- package/packages/cli/dist/install-F5ANFUBX.js.map +7 -0
- package/packages/cli/dist/install-JSXEPPC2.js +7104 -0
- package/packages/cli/dist/install-JSXEPPC2.js.map +7 -0
- package/packages/cli/dist/install-QHEBX7JH.js +7101 -0
- package/packages/cli/dist/install-QHEBX7JH.js.map +7 -0
- package/packages/cli/dist/list-DMOUATYI.js +327 -0
- package/packages/cli/dist/list-DMOUATYI.js.map +7 -0
- package/packages/cli/dist/list-UESSCB7Y.js +327 -0
- package/packages/cli/dist/list-UESSCB7Y.js.map +7 -0
- package/packages/cli/dist/list-XR7RSJFS.js +327 -0
- package/packages/cli/dist/list-XR7RSJFS.js.map +7 -0
- package/packages/cli/dist/login-EYZ2SOYZ.js +150 -0
- package/packages/cli/dist/login-EYZ2SOYZ.js.map +7 -0
- package/packages/cli/dist/login-JWCSTAEU.js +150 -0
- package/packages/cli/dist/login-JWCSTAEU.js.map +7 -0
- package/packages/cli/dist/login-NRKHXZKM.js +150 -0
- package/packages/cli/dist/login-NRKHXZKM.js.map +7 -0
- package/packages/cli/dist/logout-HDMYRXIE.js +40 -0
- package/packages/cli/dist/logout-HDMYRXIE.js.map +7 -0
- package/packages/cli/dist/logout-SYHXCVCQ.js +40 -0
- package/packages/cli/dist/logout-SYHXCVCQ.js.map +7 -0
- package/packages/cli/dist/logout-X3XUUOH5.js +40 -0
- package/packages/cli/dist/logout-X3XUUOH5.js.map +7 -0
- package/packages/cli/dist/new-3LTFKDTQ.js +277 -0
- package/packages/cli/dist/new-3LTFKDTQ.js.map +7 -0
- package/packages/cli/dist/new-F46OSD72.js +277 -0
- package/packages/cli/dist/new-F46OSD72.js.map +7 -0
- package/packages/cli/dist/new-OPCCLNL2.js +277 -0
- package/packages/cli/dist/new-OPCCLNL2.js.map +7 -0
- package/packages/cli/dist/package-marker-detector-T5O5YD2E.js +80 -0
- package/packages/cli/dist/package-marker-detector-T5O5YD2E.js.map +7 -0
- package/packages/cli/dist/package-yml-QWZIJDYU.js +16 -0
- package/packages/cli/dist/package-yml-QWZIJDYU.js.map +7 -0
- package/packages/cli/dist/plugin-naming-YP2I4NPA.js +29 -0
- package/packages/cli/dist/plugin-naming-YP2I4NPA.js.map +7 -0
- package/packages/cli/dist/publish-4H43PCSG.js +619 -0
- package/packages/cli/dist/publish-4H43PCSG.js.map +7 -0
- package/packages/cli/dist/publish-RULKLNUX.js +619 -0
- package/packages/cli/dist/publish-RULKLNUX.js.map +7 -0
- package/packages/cli/dist/publish-URWY2P3E.js +619 -0
- package/packages/cli/dist/publish-URWY2P3E.js.map +7 -0
- package/packages/cli/dist/remove-BD52BHR2.js +542 -0
- package/packages/cli/dist/remove-BD52BHR2.js.map +7 -0
- package/packages/cli/dist/remove-G5NRC7LD.js +542 -0
- package/packages/cli/dist/remove-G5NRC7LD.js.map +7 -0
- package/packages/cli/dist/remove-TC3FQUYQ.js +542 -0
- package/packages/cli/dist/remove-TC3FQUYQ.js.map +7 -0
- package/packages/cli/dist/resource-discoverer-4X4RY43E.js +17 -0
- package/packages/cli/dist/resource-discoverer-4X4RY43E.js.map +7 -0
- package/packages/cli/dist/save-24TESYKI.js +1728 -0
- package/packages/cli/dist/save-24TESYKI.js.map +7 -0
- package/packages/cli/dist/save-N3QWF2WN.js +1728 -0
- package/packages/cli/dist/save-N3QWF2WN.js.map +7 -0
- package/packages/cli/dist/save-P2U67DTV.js +1728 -0
- package/packages/cli/dist/save-P2U67DTV.js.map +7 -0
- package/packages/cli/dist/search-ABROK3UO.js +157 -0
- package/packages/cli/dist/search-ABROK3UO.js.map +7 -0
- package/packages/cli/dist/search-WVFXFNAV.js +157 -0
- package/packages/cli/dist/search-WVFXFNAV.js.map +7 -0
- package/packages/cli/dist/search-YQN2Q2SO.js +157 -0
- package/packages/cli/dist/search-YQN2Q2SO.js.map +7 -0
- package/packages/cli/dist/set-DCWF73F6.js +251 -0
- package/packages/cli/dist/set-DCWF73F6.js.map +7 -0
- package/packages/cli/dist/set-GJEG2F6Y.js +251 -0
- package/packages/cli/dist/set-GJEG2F6Y.js.map +7 -0
- package/packages/cli/dist/set-NGM2FIKF.js +251 -0
- package/packages/cli/dist/set-NGM2FIKF.js.map +7 -0
- package/packages/cli/dist/uninstall-3CJQMTYH.js +539 -0
- package/packages/cli/dist/uninstall-3CJQMTYH.js.map +7 -0
- package/packages/cli/dist/uninstall-Q3CP4UN5.js +539 -0
- package/packages/cli/dist/uninstall-Q3CP4UN5.js.map +7 -0
- package/packages/cli/dist/uninstall-QU5OMEEC.js +539 -0
- package/packages/cli/dist/uninstall-QU5OMEEC.js.map +7 -0
- package/packages/cli/dist/unpublish-GHJQYC4S.js +245 -0
- package/packages/cli/dist/unpublish-GHJQYC4S.js.map +7 -0
- package/packages/cli/dist/unpublish-L2CYMK4B.js +245 -0
- package/packages/cli/dist/unpublish-L2CYMK4B.js.map +7 -0
- package/packages/cli/dist/unpublish-VBTNTMS5.js +245 -0
- package/packages/cli/dist/unpublish-VBTNTMS5.js.map +7 -0
- package/packages/cli/dist/view-MXRBMXOG.js +488 -0
- package/packages/cli/dist/view-MXRBMXOG.js.map +7 -0
- package/packages/cli/dist/view-NMND7SAW.js +488 -0
- package/packages/cli/dist/view-NMND7SAW.js.map +7 -0
- package/packages/cli/dist/view-RPQRDSYB.js +488 -0
- package/packages/cli/dist/view-RPQRDSYB.js.map +7 -0
- package/packages/cli/package.json +2 -0
- package/packages/core/dist/constants/index.d.ts +9 -0
- package/packages/core/dist/constants/index.d.ts.map +1 -1
- package/packages/core/dist/constants/index.js +12 -0
- package/packages/core/dist/constants/index.js.map +1 -1
- package/packages/core/dist/core/dependency-resolver/index.d.ts +2 -10
- package/packages/core/dist/core/dependency-resolver/index.d.ts.map +1 -1
- package/packages/core/dist/core/dependency-resolver/index.js +3 -14
- package/packages/core/dist/core/dependency-resolver/index.js.map +1 -1
- package/packages/core/dist/core/install/base-detector.d.ts +2 -1
- package/packages/core/dist/core/install/base-detector.d.ts.map +1 -1
- package/packages/core/dist/core/install/base-detector.js +54 -1
- package/packages/core/dist/core/install/base-detector.js.map +1 -1
- package/packages/core/dist/core/install/conflicts/file-conflict-resolver.d.ts +7 -5
- package/packages/core/dist/core/install/conflicts/file-conflict-resolver.d.ts.map +1 -1
- package/packages/core/dist/core/install/conflicts/file-conflict-resolver.js +25 -9
- package/packages/core/dist/core/install/conflicts/file-conflict-resolver.js.map +1 -1
- package/packages/core/dist/core/install/flow-index-installer.d.ts +2 -1
- package/packages/core/dist/core/install/flow-index-installer.d.ts.map +1 -1
- package/packages/core/dist/core/install/flow-index-installer.js +19 -4
- package/packages/core/dist/core/install/flow-index-installer.js.map +1 -1
- package/packages/core/dist/core/install/input-classifier-base.js +3 -3
- package/packages/core/dist/core/install/input-classifier-base.js.map +1 -1
- package/packages/core/dist/core/install/install-reporting.d.ts.map +1 -1
- package/packages/core/dist/core/install/install-reporting.js +7 -9
- package/packages/core/dist/core/install/install-reporting.js.map +1 -1
- package/packages/core/dist/core/install/list-handler.d.ts.map +1 -1
- package/packages/core/dist/core/install/list-handler.js +3 -0
- package/packages/core/dist/core/install/list-handler.js.map +1 -1
- package/packages/core/dist/core/install/marketplace-handler.d.ts.map +1 -1
- package/packages/core/dist/core/install/marketplace-handler.js.map +1 -1
- package/packages/core/dist/core/install/operations/conflict-handler.d.ts +2 -1
- package/packages/core/dist/core/install/operations/conflict-handler.d.ts.map +1 -1
- package/packages/core/dist/core/install/operations/conflict-handler.js +2 -2
- package/packages/core/dist/core/install/operations/conflict-handler.js.map +1 -1
- package/packages/core/dist/core/install/operations/installation-executor.d.ts +3 -0
- package/packages/core/dist/core/install/operations/installation-executor.d.ts.map +1 -1
- package/packages/core/dist/core/install/operations/installation-executor.js +39 -22
- package/packages/core/dist/core/install/operations/installation-executor.js.map +1 -1
- package/packages/core/dist/core/install/orchestrator/orchestrator.d.ts +7 -3
- package/packages/core/dist/core/install/orchestrator/orchestrator.d.ts.map +1 -1
- package/packages/core/dist/core/install/orchestrator/orchestrator.js +193 -93
- package/packages/core/dist/core/install/orchestrator/orchestrator.js.map +1 -1
- package/packages/core/dist/core/install/orchestrator/strategies/git-strategy.d.ts +1 -0
- package/packages/core/dist/core/install/orchestrator/strategies/git-strategy.d.ts.map +1 -1
- package/packages/core/dist/core/install/orchestrator/strategies/git-strategy.js +11 -24
- package/packages/core/dist/core/install/orchestrator/strategies/git-strategy.js.map +1 -1
- package/packages/core/dist/core/install/orchestrator/strategies/path-strategy.d.ts +2 -0
- package/packages/core/dist/core/install/orchestrator/strategies/path-strategy.d.ts.map +1 -1
- package/packages/core/dist/core/install/orchestrator/strategies/path-strategy.js +14 -14
- package/packages/core/dist/core/install/orchestrator/strategies/path-strategy.js.map +1 -1
- package/packages/core/dist/core/install/orchestrator/strategies/registry-strategy.d.ts +7 -0
- package/packages/core/dist/core/install/orchestrator/strategies/registry-strategy.d.ts.map +1 -1
- package/packages/core/dist/core/install/orchestrator/strategies/registry-strategy.js +28 -0
- package/packages/core/dist/core/install/orchestrator/strategies/registry-strategy.js.map +1 -1
- package/packages/core/dist/core/install/orchestrator/types.d.ts +2 -0
- package/packages/core/dist/core/install/orchestrator/types.d.ts.map +1 -1
- package/packages/core/dist/core/install/path-package-loader.d.ts.map +1 -1
- package/packages/core/dist/core/install/path-package-loader.js +20 -1
- package/packages/core/dist/core/install/path-package-loader.js.map +1 -1
- package/packages/core/dist/core/install/platform-resolution.d.ts +3 -0
- package/packages/core/dist/core/install/platform-resolution.d.ts.map +1 -1
- package/packages/core/dist/core/install/platform-resolution.js +5 -2
- package/packages/core/dist/core/install/platform-resolution.js.map +1 -1
- package/packages/core/dist/core/install/preprocessing/context-population.d.ts +18 -0
- package/packages/core/dist/core/install/preprocessing/context-population.d.ts.map +1 -0
- package/packages/core/dist/core/install/preprocessing/context-population.js +36 -0
- package/packages/core/dist/core/install/preprocessing/context-population.js.map +1 -0
- package/packages/core/dist/core/install/preprocessing/convenience-preprocessor.d.ts +23 -0
- package/packages/core/dist/core/install/preprocessing/convenience-preprocessor.d.ts.map +1 -1
- package/packages/core/dist/core/install/preprocessing/convenience-preprocessor.js +44 -0
- package/packages/core/dist/core/install/preprocessing/convenience-preprocessor.js.map +1 -1
- package/packages/core/dist/core/install/sources/git-source.d.ts.map +1 -1
- package/packages/core/dist/core/install/sources/git-source.js +67 -4
- package/packages/core/dist/core/install/sources/git-source.js.map +1 -1
- package/packages/core/dist/core/install/sources/path-source.d.ts.map +1 -1
- package/packages/core/dist/core/install/sources/path-source.js +8 -0
- package/packages/core/dist/core/install/sources/path-source.js.map +1 -1
- package/packages/core/dist/core/install/strategies/flow-based-strategy.d.ts.map +1 -1
- package/packages/core/dist/core/install/strategies/flow-based-strategy.js +12 -5
- package/packages/core/dist/core/install/strategies/flow-based-strategy.js.map +1 -1
- package/packages/core/dist/core/install/strategies/types.d.ts +11 -1
- package/packages/core/dist/core/install/strategies/types.d.ts.map +1 -1
- package/packages/core/dist/core/install/unified/context-builders.d.ts +5 -0
- package/packages/core/dist/core/install/unified/context-builders.d.ts.map +1 -1
- package/packages/core/dist/core/install/unified/context-builders.js +12 -0
- package/packages/core/dist/core/install/unified/context-builders.js.map +1 -1
- package/packages/core/dist/core/install/unified/context-helpers.d.ts +0 -4
- package/packages/core/dist/core/install/unified/context-helpers.d.ts.map +1 -1
- package/packages/core/dist/core/install/unified/context-helpers.js +0 -24
- package/packages/core/dist/core/install/unified/context-helpers.js.map +1 -1
- package/packages/core/dist/core/install/unified/index.d.ts +1 -1
- package/packages/core/dist/core/install/unified/index.d.ts.map +1 -1
- package/packages/core/dist/core/install/unified/index.js +1 -1
- package/packages/core/dist/core/install/unified/index.js.map +1 -1
- package/packages/core/dist/core/install/unified/multi-context-pipeline.d.ts +6 -0
- package/packages/core/dist/core/install/unified/multi-context-pipeline.d.ts.map +1 -1
- package/packages/core/dist/core/install/unified/multi-context-pipeline.js +11 -4
- package/packages/core/dist/core/install/unified/multi-context-pipeline.js.map +1 -1
- package/packages/core/dist/core/install/unified/phases/conflicts.d.ts.map +1 -1
- package/packages/core/dist/core/install/unified/phases/conflicts.js +1 -1
- package/packages/core/dist/core/install/unified/phases/conflicts.js.map +1 -1
- package/packages/core/dist/core/install/unified/phases/execute.d.ts.map +1 -1
- package/packages/core/dist/core/install/unified/phases/execute.js +5 -5
- package/packages/core/dist/core/install/unified/phases/execute.js.map +1 -1
- package/packages/core/dist/core/install/unified/phases/load-package.js +3 -3
- package/packages/core/dist/core/install/unified/phases/load-package.js.map +1 -1
- package/packages/core/dist/core/install/unified/phases/report.js +1 -1
- package/packages/core/dist/core/install/unified/phases/report.js.map +1 -1
- package/packages/core/dist/core/install/unified/pipeline.d.ts.map +1 -1
- package/packages/core/dist/core/install/unified/pipeline.js +7 -10
- package/packages/core/dist/core/install/unified/pipeline.js.map +1 -1
- package/packages/core/dist/core/install/wave-resolver/content-root-cache.d.ts +24 -0
- package/packages/core/dist/core/install/wave-resolver/content-root-cache.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/content-root-cache.js +71 -0
- package/packages/core/dist/core/install/wave-resolver/content-root-cache.js.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/context-builder.d.ts +39 -0
- package/packages/core/dist/core/install/wave-resolver/context-builder.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/context-builder.js +148 -0
- package/packages/core/dist/core/install/wave-resolver/context-builder.js.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/fetcher.d.ts +49 -0
- package/packages/core/dist/core/install/wave-resolver/fetcher.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/fetcher.js +221 -0
- package/packages/core/dist/core/install/wave-resolver/fetcher.js.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/index-updater.d.ts +23 -0
- package/packages/core/dist/core/install/wave-resolver/index-updater.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/index-updater.js +87 -0
- package/packages/core/dist/core/install/wave-resolver/index-updater.js.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/index-write-collector.d.ts +101 -0
- package/packages/core/dist/core/install/wave-resolver/index-write-collector.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/index-write-collector.js +194 -0
- package/packages/core/dist/core/install/wave-resolver/index-write-collector.js.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/index.d.ts +17 -0
- package/packages/core/dist/core/install/wave-resolver/index.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/index.js +16 -0
- package/packages/core/dist/core/install/wave-resolver/index.js.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/manifest-reader.d.ts +34 -0
- package/packages/core/dist/core/install/wave-resolver/manifest-reader.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/manifest-reader.js +112 -0
- package/packages/core/dist/core/install/wave-resolver/manifest-reader.js.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/types.d.ts +210 -0
- package/packages/core/dist/core/install/wave-resolver/types.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/types.js +6 -0
- package/packages/core/dist/core/install/wave-resolver/types.js.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/version-solver.d.ts +65 -0
- package/packages/core/dist/core/install/wave-resolver/version-solver.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/version-solver.js +166 -0
- package/packages/core/dist/core/install/wave-resolver/version-solver.js.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/wave-engine.d.ts +16 -0
- package/packages/core/dist/core/install/wave-resolver/wave-engine.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/wave-engine.js +337 -0
- package/packages/core/dist/core/install/wave-resolver/wave-engine.js.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/wave-installer.d.ts +50 -0
- package/packages/core/dist/core/install/wave-resolver/wave-installer.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/wave-installer.js +246 -0
- package/packages/core/dist/core/install/wave-resolver/wave-installer.js.map +1 -0
- package/packages/core/dist/core/ports/buffered-output.d.ts +36 -0
- package/packages/core/dist/core/ports/buffered-output.d.ts.map +1 -0
- package/packages/core/dist/core/ports/buffered-output.js +89 -0
- package/packages/core/dist/core/ports/buffered-output.js.map +1 -0
- package/packages/core/dist/core/ports/resolve.d.ts +0 -13
- package/packages/core/dist/core/ports/resolve.d.ts.map +1 -1
- package/packages/core/dist/core/ports/resolve.js +0 -28
- package/packages/core/dist/core/ports/resolve.js.map +1 -1
- package/packages/core/dist/core/remove/removal-confirmation.d.ts +4 -1
- package/packages/core/dist/core/remove/removal-confirmation.d.ts.map +1 -1
- package/packages/core/dist/core/remove/removal-confirmation.js +5 -4
- package/packages/core/dist/core/remove/removal-confirmation.js.map +1 -1
- package/packages/core/dist/core/remove/remove-from-source-pipeline.d.ts.map +1 -1
- package/packages/core/dist/core/remove/remove-from-source-pipeline.js +1 -10
- package/packages/core/dist/core/remove/remove-from-source-pipeline.js.map +1 -1
- package/packages/core/dist/core/uninstall/uninstall-executor.js +1 -1
- package/packages/core/dist/core/uninstall/uninstall-executor.js.map +1 -1
- package/packages/core/dist/core/uninstall/uninstall-reporter.d.ts +2 -2
- package/packages/core/dist/core/uninstall/uninstall-reporter.d.ts.map +1 -1
- package/packages/core/dist/core/uninstall/uninstall-reporter.js +4 -4
- package/packages/core/dist/core/uninstall/uninstall-reporter.js.map +1 -1
- package/packages/core/dist/index.d.ts +1 -1
- package/packages/core/dist/index.d.ts.map +1 -1
- package/packages/core/dist/types/execution-context.d.ts +40 -10
- package/packages/core/dist/types/execution-context.d.ts.map +1 -1
- package/packages/core/dist/utils/concurrency-pool.d.ts +34 -0
- package/packages/core/dist/utils/concurrency-pool.d.ts.map +1 -0
- package/packages/core/dist/utils/concurrency-pool.js +58 -0
- package/packages/core/dist/utils/concurrency-pool.js.map +1 -0
- package/packages/core/dist/utils/plugin-naming.d.ts +11 -3
- package/packages/core/dist/utils/plugin-naming.d.ts.map +1 -1
- package/packages/core/dist/utils/plugin-naming.js +27 -7
- package/packages/core/dist/utils/plugin-naming.js.map +1 -1
- package/plans/wave-resolver.md +254 -0
- package/.claude/agents/essentials/code-simplifier.md +0 -52
- package/.claude/commands/essentials/cleanup.md +0 -1
- package/.claude/commands/essentials/review.md +0 -8
- package/.claude/commands/git/commit.md +0 -5
|
@@ -0,0 +1,619 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
getCurrentUsername
|
|
4
|
+
} from "./chunk-EGAP6GNA.js";
|
|
5
|
+
import {
|
|
6
|
+
resolveScopedNameForPushWithUserScope
|
|
7
|
+
} from "./chunk-37256POU.js";
|
|
8
|
+
import {
|
|
9
|
+
createHttpClient
|
|
10
|
+
} from "./chunk-ATYT3SA6.js";
|
|
11
|
+
import {
|
|
12
|
+
authManager
|
|
13
|
+
} from "./chunk-UR6VJWA3.js";
|
|
14
|
+
import "./chunk-S6OARUVQ.js";
|
|
15
|
+
import {
|
|
16
|
+
classifyPackageInput
|
|
17
|
+
} from "./chunk-4TCVCEPB.js";
|
|
18
|
+
import {
|
|
19
|
+
resolvePackageByName
|
|
20
|
+
} from "./chunk-E2DVTD75.js";
|
|
21
|
+
import {
|
|
22
|
+
createFormDataForUpload,
|
|
23
|
+
createTarballFromPackage,
|
|
24
|
+
formatVersionLabel
|
|
25
|
+
} from "./chunk-TFQ4JBVO.js";
|
|
26
|
+
import "./chunk-V5OW4YEB.js";
|
|
27
|
+
import "./chunk-PXL2RUMX.js";
|
|
28
|
+
import {
|
|
29
|
+
formatFileSize,
|
|
30
|
+
formatPathForDisplay
|
|
31
|
+
} from "./chunk-MIURCESJ.js";
|
|
32
|
+
import {
|
|
33
|
+
createCliExecutionContext,
|
|
34
|
+
resolveOutput,
|
|
35
|
+
resolvePrompt
|
|
36
|
+
} from "./chunk-RAKMX654.js";
|
|
37
|
+
import {
|
|
38
|
+
ensureRegistryDirectories,
|
|
39
|
+
getPackageVersionPath
|
|
40
|
+
} from "./chunk-XEPVYZO3.js";
|
|
41
|
+
import {
|
|
42
|
+
parsePackageYml,
|
|
43
|
+
serializePackageYml
|
|
44
|
+
} from "./chunk-QTQYI4L5.js";
|
|
45
|
+
import {
|
|
46
|
+
isScopedName
|
|
47
|
+
} from "./chunk-VN22A7NW.js";
|
|
48
|
+
import {
|
|
49
|
+
normalizePathForProcessing
|
|
50
|
+
} from "./chunk-YMKK4XPN.js";
|
|
51
|
+
import {
|
|
52
|
+
DIR_PATTERNS,
|
|
53
|
+
FILE_PATTERNS,
|
|
54
|
+
OPENPACKAGE_DIRS,
|
|
55
|
+
PACKAGE_PATHS
|
|
56
|
+
} from "./chunk-J4IFFBLP.js";
|
|
57
|
+
import {
|
|
58
|
+
countFilesInDirectory,
|
|
59
|
+
ensureDir,
|
|
60
|
+
exists,
|
|
61
|
+
readTextFile,
|
|
62
|
+
remove,
|
|
63
|
+
walkFiles,
|
|
64
|
+
writeTextFile
|
|
65
|
+
} from "./chunk-S47F4OG4.js";
|
|
66
|
+
import {
|
|
67
|
+
ValidationError
|
|
68
|
+
} from "./chunk-ID4SVDQZ.js";
|
|
69
|
+
import {
|
|
70
|
+
logger
|
|
71
|
+
} from "./chunk-5EFWGD33.js";
|
|
72
|
+
|
|
73
|
+
// ../core/src/core/publish/publish-pipeline.ts
|
|
74
|
+
import path2 from "path";
|
|
75
|
+
import * as semver2 from "semver";
|
|
76
|
+
|
|
77
|
+
// ../core/src/utils/package-copy.ts
|
|
78
|
+
import { join, relative, dirname } from "path";
|
|
79
|
+
|
|
80
|
+
// ../core/src/utils/package-filters.ts
|
|
81
|
+
var EXCLUDED_DIR_PREFIXES = [
|
|
82
|
+
OPENPACKAGE_DIRS.PACKAGES,
|
|
83
|
+
// Nested packages are independent units; never copy inline
|
|
84
|
+
// Note: .openpackage/ is excluded separately in the function below (entire directory is workspace-local metadata)
|
|
85
|
+
`${DIR_PATTERNS.OPENPACKAGE}/${OPENPACKAGE_DIRS.PACKAGES}`
|
|
86
|
+
// Legacy: kept for completeness, but covered by .openpackage/ exclusion in function
|
|
87
|
+
], EXCLUDED_FILES = /* @__PURE__ */ new Set([FILE_PATTERNS.OPENPACKAGE_INDEX_YML]);
|
|
88
|
+
function isExcludedFromPackage(relativePath) {
|
|
89
|
+
let normalized = normalizePathForProcessing(relativePath);
|
|
90
|
+
if (!normalized || normalized === DIR_PATTERNS.OPENPACKAGE || normalized.startsWith(`${DIR_PATTERNS.OPENPACKAGE}/`))
|
|
91
|
+
return !0;
|
|
92
|
+
let baseName = normalized.split("/").pop();
|
|
93
|
+
return baseName && EXCLUDED_FILES.has(baseName) ? !0 : EXCLUDED_DIR_PREFIXES.some((prefix) => {
|
|
94
|
+
let normalizedPrefix = normalizePathForProcessing(prefix);
|
|
95
|
+
return normalized === normalizedPrefix || normalized.startsWith(`${normalizedPrefix}/`);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// ../core/src/utils/package-copy.ts
|
|
100
|
+
async function readPackageFilesForRegistry(packageDir) {
|
|
101
|
+
if (!await exists(packageDir))
|
|
102
|
+
return [];
|
|
103
|
+
let files = [];
|
|
104
|
+
for await (let fullPath of walkFiles(packageDir)) {
|
|
105
|
+
let relativePath = normalizePathForProcessing(relative(packageDir, fullPath));
|
|
106
|
+
if (isExcludedFromPackage(relativePath)) {
|
|
107
|
+
logger.debug(`Skipping static-excluded path: ${relativePath}`);
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
let content = await readTextFile(fullPath);
|
|
111
|
+
files.push({ path: relativePath, content, encoding: "utf8" });
|
|
112
|
+
}
|
|
113
|
+
return files;
|
|
114
|
+
}
|
|
115
|
+
async function writePackageFilesToDirectory(targetDir, files, options = {}) {
|
|
116
|
+
await ensureDir(targetDir);
|
|
117
|
+
let pathsToKeep = new Set(files.map((f) => normalizePathForProcessing(f.path)));
|
|
118
|
+
options.preserveIndexFile && pathsToKeep.add(FILE_PATTERNS.OPENPACKAGE_INDEX_YML), await removeStaleFiles(targetDir, pathsToKeep), await Promise.all(files.map((file) => writeFile(targetDir, file)));
|
|
119
|
+
}
|
|
120
|
+
async function removeStaleFiles(targetDir, pathsToKeep) {
|
|
121
|
+
if (await exists(targetDir))
|
|
122
|
+
for await (let fullPath of walkFiles(targetDir)) {
|
|
123
|
+
let relPath = normalizePathForProcessing(relative(targetDir, fullPath));
|
|
124
|
+
if (!pathsToKeep.has(relPath) && !isExcludedFromPackage(relPath))
|
|
125
|
+
try {
|
|
126
|
+
await remove(fullPath), logger.debug(`Removed stale file: ${relPath}`);
|
|
127
|
+
} catch (error) {
|
|
128
|
+
logger.warn(`Failed to remove stale file ${relPath}: ${error}`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
async function writeFile(targetDir, file) {
|
|
133
|
+
let targetPath = join(targetDir, file.path);
|
|
134
|
+
await ensureDir(dirname(targetPath)), await writeTextFile(targetPath, file.content, file.encoding ?? "utf8");
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// ../core/src/core/publish/publish-errors.ts
|
|
138
|
+
var PublishError = class extends Error {
|
|
139
|
+
constructor(message, code) {
|
|
140
|
+
super(message);
|
|
141
|
+
this.code = code;
|
|
142
|
+
this.name = "PublishError";
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
function handlePublishError(error, packageName, version, output) {
|
|
146
|
+
let out = output ?? resolveOutput();
|
|
147
|
+
if (logger.debug("Publish operation failed", { error, packageName, version }), error instanceof PublishError)
|
|
148
|
+
return out.error(error.message), {
|
|
149
|
+
success: !1,
|
|
150
|
+
error: error.message
|
|
151
|
+
};
|
|
152
|
+
if (error instanceof Error) {
|
|
153
|
+
let message = error.message;
|
|
154
|
+
return message.includes("ENOENT") || message.includes("not found") ? (out.error("Package file not found"), {
|
|
155
|
+
success: !1,
|
|
156
|
+
error: "Package file not found"
|
|
157
|
+
}) : message.includes("authentication") || message.includes("unauthorized") ? (out.error('Authentication failed. Run "opkg login" to configure credentials.'), {
|
|
158
|
+
success: !1,
|
|
159
|
+
error: "Authentication failed"
|
|
160
|
+
}) : message.includes("network") || message.includes("ECONNREFUSED") ? (out.error("Network error: Unable to connect to registry"), {
|
|
161
|
+
success: !1,
|
|
162
|
+
error: "Network error"
|
|
163
|
+
}) : (out.error(message), {
|
|
164
|
+
success: !1,
|
|
165
|
+
error: message
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
let errorMessage = String(error);
|
|
169
|
+
return out.error(`Unexpected error: ${errorMessage}`), {
|
|
170
|
+
success: !1,
|
|
171
|
+
error: errorMessage
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// ../core/src/core/publish/publish-output.ts
|
|
176
|
+
function logPublishSummary(packageName, profile, registryUrl, output) {
|
|
177
|
+
let out = output ?? resolveOutput();
|
|
178
|
+
out.step(`Publishing package '${packageName}'...`), out.message(`Profile: ${profile}`), out.message(`Registry: ${registryUrl}`);
|
|
179
|
+
}
|
|
180
|
+
function displayPublishSuccess(info, cwd, output) {
|
|
181
|
+
let out = output ?? resolveOutput(), { packageName, version, description, sourcePath, destinationPath, fileCount, isCustomOutput } = info;
|
|
182
|
+
out.success(`Published ${packageName}@${formatVersionLabel(version)}`), description && out.success(`Description: ${description}`);
|
|
183
|
+
let displaySource = formatPathForDisplay(sourcePath, cwd);
|
|
184
|
+
out.success(`Source: ${displaySource}`);
|
|
185
|
+
let displayDestination = formatPathForDisplay(destinationPath, cwd), destinationType = isCustomOutput ? "Custom output" : "Registry";
|
|
186
|
+
out.success(`${destinationType}: ${displayDestination}`), out.success(`Files: ${fileCount}`);
|
|
187
|
+
}
|
|
188
|
+
function createPublishResultInfo(packageName, version, sourcePath, destinationPath, fileCount, manifest, isCustomOutput, destinationExists, existingFileCount) {
|
|
189
|
+
return {
|
|
190
|
+
packageName,
|
|
191
|
+
version,
|
|
192
|
+
description: manifest.description,
|
|
193
|
+
sourcePath,
|
|
194
|
+
destinationPath,
|
|
195
|
+
fileCount,
|
|
196
|
+
isCustomOutput,
|
|
197
|
+
destinationExists,
|
|
198
|
+
existingFileCount
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// ../core/src/core/publish/publish-upload.ts
|
|
203
|
+
function preparePackageForUpload(pkg, uploadName) {
|
|
204
|
+
if (pkg.metadata.name === uploadName)
|
|
205
|
+
return pkg;
|
|
206
|
+
let manifestPath = normalizePathForProcessing(PACKAGE_PATHS.MANIFEST_RELATIVE), updatedMetadata = { ...pkg.metadata, name: uploadName }, manifestUpdated = !1, updatedFiles = pkg.files.map((file) => {
|
|
207
|
+
if (normalizePathForProcessing(file.path) === manifestPath) {
|
|
208
|
+
manifestUpdated = !0;
|
|
209
|
+
let content = serializePackageYml(updatedMetadata);
|
|
210
|
+
return { ...file, content };
|
|
211
|
+
}
|
|
212
|
+
return file;
|
|
213
|
+
});
|
|
214
|
+
if (!manifestUpdated)
|
|
215
|
+
throw new Error("openpackage.yml not found in package files");
|
|
216
|
+
return {
|
|
217
|
+
metadata: updatedMetadata,
|
|
218
|
+
files: updatedFiles
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
async function createPublishTarball(pkg, output) {
|
|
222
|
+
let out = output ?? resolveOutput(), tarballInfo = await createTarballFromPackage(pkg);
|
|
223
|
+
return out.success(`Created tarball (${pkg.files.length} files, ${formatFileSize(tarballInfo.size)})`), tarballInfo;
|
|
224
|
+
}
|
|
225
|
+
async function uploadPackage(httpClient, packageName, uploadVersion, tarballInfo, output, stopMessage) {
|
|
226
|
+
let out = output ?? resolveOutput(), formData = createFormDataForUpload(packageName, uploadVersion, tarballInfo), uploadSpinner = out.spinner();
|
|
227
|
+
return withSpinner(
|
|
228
|
+
uploadSpinner,
|
|
229
|
+
"Uploading to registry...",
|
|
230
|
+
() => httpClient.uploadFormData("/packages/push", formData),
|
|
231
|
+
stopMessage
|
|
232
|
+
);
|
|
233
|
+
}
|
|
234
|
+
async function withSpinner(spinner, message, fn, stopMessage) {
|
|
235
|
+
spinner.start(message);
|
|
236
|
+
try {
|
|
237
|
+
return await fn();
|
|
238
|
+
} finally {
|
|
239
|
+
spinner.stop(stopMessage);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// ../core/src/core/publish/local-publish-pipeline.ts
|
|
244
|
+
import path from "path";
|
|
245
|
+
|
|
246
|
+
// ../core/src/utils/validation/version.ts
|
|
247
|
+
import * as semver from "semver";
|
|
248
|
+
function validateVersion(version, options = {}) {
|
|
249
|
+
return version ? semver.valid(version) ? options.rejectPrerelease && semver.prerelease(version) ? {
|
|
250
|
+
code: "PRERELEASE_DISALLOWED",
|
|
251
|
+
message: `Prerelease versions are not allowed${options.context ? ` for ${options.context}` : ""}: ${version}`
|
|
252
|
+
} : null : {
|
|
253
|
+
code: "INVALID_VERSION",
|
|
254
|
+
message: `Invalid version: ${version}. Must be valid semver (e.g., 1.0.0)`
|
|
255
|
+
} : {
|
|
256
|
+
code: "MISSING_VERSION",
|
|
257
|
+
message: `Version field is required${options.context ? ` for ${options.context}` : ""}`
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
function assertValidVersion(version, options) {
|
|
261
|
+
let error = validateVersion(version, options);
|
|
262
|
+
if (error)
|
|
263
|
+
throw new Error(error.message);
|
|
264
|
+
}
|
|
265
|
+
function isUnversionedPackage(version) {
|
|
266
|
+
return version === "0.0.0";
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
// ../core/src/utils/validation/package-files.ts
|
|
270
|
+
async function validateAndReadPackageFiles(packageRoot, options = {}) {
|
|
271
|
+
let files = await readPackageFilesForRegistry(packageRoot), throwOnEmpty = options.throwOnEmpty !== !1;
|
|
272
|
+
if (files.length === 0 && throwOnEmpty) {
|
|
273
|
+
let context = options.context || "package";
|
|
274
|
+
throw new Error(`No files found to include in ${context}`);
|
|
275
|
+
}
|
|
276
|
+
return files;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
// ../core/src/core/registry-writer.ts
|
|
280
|
+
async function writePackageToRegistry(packageName, version, files, options = {}, output, prompt) {
|
|
281
|
+
let { force = !1, dryRun = !1, context = "operation" } = options, out = output ?? resolveOutput(), prm = prompt ?? resolvePrompt(), destination = getPackageVersionPath(packageName, version), destinationExists = await exists(destination), existingFileCount = destinationExists ? await countFilesInDirectory(destination) : 0, shouldOverwrite = !0;
|
|
282
|
+
if (destinationExists)
|
|
283
|
+
if (isUnversionedPackage(version))
|
|
284
|
+
logger.debug(
|
|
285
|
+
`Updating unversioned package ${packageName}@${version}`,
|
|
286
|
+
{ destination, existingFileCount }
|
|
287
|
+
), out.success(`Updated ${packageName}@${version}`);
|
|
288
|
+
else if (force)
|
|
289
|
+
logger.info(
|
|
290
|
+
`Force mode: Overwriting ${packageName}@${version}`,
|
|
291
|
+
{ destination, existingFileCount }
|
|
292
|
+
), out.warn(
|
|
293
|
+
`Force mode: Overwriting ${packageName}@${version} (${existingFileCount} existing file${existingFileCount !== 1 ? "s" : ""})`
|
|
294
|
+
);
|
|
295
|
+
else
|
|
296
|
+
try {
|
|
297
|
+
let displayPath = formatPathForDisplay(destination, process.cwd());
|
|
298
|
+
if (out.info(""), out.warn(`Package '${packageName}@${version}' already exists in registry`), out.info(` Location: ${displayPath}`), out.info(` Existing files: ${existingFileCount}`), out.info(""), shouldOverwrite = await prm.confirm(
|
|
299
|
+
`Overwrite '${packageName}@${version}'? This action cannot be undone.`,
|
|
300
|
+
!1
|
|
301
|
+
), !shouldOverwrite)
|
|
302
|
+
throw new Error(`${context} cancelled by user`);
|
|
303
|
+
} catch (promptError) {
|
|
304
|
+
if (promptError.name === "NonInteractivePromptError") {
|
|
305
|
+
let displayPath = formatPathForDisplay(destination, process.cwd());
|
|
306
|
+
throw new Error(
|
|
307
|
+
`Package ${packageName}@${version} already exists in registry (${displayPath}).
|
|
308
|
+
Use --force to overwrite, or update the version in openpackage.yml.`
|
|
309
|
+
);
|
|
310
|
+
}
|
|
311
|
+
throw promptError;
|
|
312
|
+
}
|
|
313
|
+
return dryRun ? {
|
|
314
|
+
destination,
|
|
315
|
+
fileCount: files.length,
|
|
316
|
+
overwritten: destinationExists
|
|
317
|
+
} : (await ensureRegistryDirectories(), destinationExists && await remove(destination), await writePackageFilesToDirectory(destination, files), logger.info(`Wrote ${packageName}@${version} to registry`, {
|
|
318
|
+
destination,
|
|
319
|
+
fileCount: files.length,
|
|
320
|
+
context
|
|
321
|
+
}), {
|
|
322
|
+
destination,
|
|
323
|
+
fileCount: files.length,
|
|
324
|
+
overwritten: destinationExists
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
// ../core/src/core/publish/local-publish-pipeline.ts
|
|
329
|
+
async function resolveSource(cwd, packageInput, output) {
|
|
330
|
+
if (!packageInput) {
|
|
331
|
+
let manifestPath2 = path.join(cwd, FILE_PATTERNS.OPENPACKAGE_YML);
|
|
332
|
+
if (!await exists(manifestPath2))
|
|
333
|
+
throw new Error("No openpackage.yml found in current directory; specify a package name or run inside a package root.");
|
|
334
|
+
let manifest2 = await parsePackageYml(manifestPath2);
|
|
335
|
+
return {
|
|
336
|
+
name: manifest2.name,
|
|
337
|
+
version: manifest2.version ?? "",
|
|
338
|
+
packageRoot: cwd,
|
|
339
|
+
manifest: manifest2
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
let classification = await classifyPackageInput(packageInput, cwd), packageRoot;
|
|
343
|
+
if (classification.type === "directory")
|
|
344
|
+
packageRoot = classification.resolvedPath, logger.info("Resolved package input as directory path", { path: packageRoot });
|
|
345
|
+
else {
|
|
346
|
+
if (classification.type === "tarball")
|
|
347
|
+
throw new ValidationError(
|
|
348
|
+
`Local publish does not support tarball inputs.
|
|
349
|
+
To publish from a tarball, first extract it to a directory.`
|
|
350
|
+
);
|
|
351
|
+
if (classification.type === "git")
|
|
352
|
+
throw new ValidationError(
|
|
353
|
+
`Local publish does not support git inputs.
|
|
354
|
+
To publish from a git repository, first clone it to a directory.`
|
|
355
|
+
);
|
|
356
|
+
{
|
|
357
|
+
let resolution = await resolvePackageByName({
|
|
358
|
+
cwd,
|
|
359
|
+
packageName: packageInput,
|
|
360
|
+
checkCwd: !0,
|
|
361
|
+
// Check if CWD is the package (highest priority)
|
|
362
|
+
searchWorkspace: !0,
|
|
363
|
+
// Search workspace packages
|
|
364
|
+
searchGlobal: !0,
|
|
365
|
+
// Search global packages
|
|
366
|
+
searchRegistry: !1
|
|
367
|
+
// Skip registry (already packed/immutable)
|
|
368
|
+
});
|
|
369
|
+
if (!resolution.found || !resolution.path)
|
|
370
|
+
throw new Error(
|
|
371
|
+
`Package '${packageInput}' not found.
|
|
372
|
+
Searched: current directory, workspace packages (.openpackage/packages/), and global packages (~/.openpackage/packages/).
|
|
373
|
+
Make sure the package exists in one of these locations.`
|
|
374
|
+
);
|
|
375
|
+
if (packageRoot = resolution.path, resolution.resolutionInfo) {
|
|
376
|
+
let { selected, reason } = resolution.resolutionInfo;
|
|
377
|
+
logger.info("Resolved package for publishing", {
|
|
378
|
+
packageInput,
|
|
379
|
+
selectedSource: selected.type,
|
|
380
|
+
version: selected.version,
|
|
381
|
+
path: selected.path,
|
|
382
|
+
reason
|
|
383
|
+
});
|
|
384
|
+
let sourceLabel = selected.type === "cwd" ? "current directory" : selected.type === "workspace" ? "workspace packages" : selected.type === "global" ? "global packages" : selected.type;
|
|
385
|
+
(output ?? resolveOutput()).success(`Found ${packageInput} in ${sourceLabel}`);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
let manifestPath = path.join(packageRoot, FILE_PATTERNS.OPENPACKAGE_YML);
|
|
390
|
+
if (!await exists(manifestPath))
|
|
391
|
+
throw new Error(`openpackage.yml not found at ${manifestPath}`);
|
|
392
|
+
let manifest = await parsePackageYml(manifestPath);
|
|
393
|
+
return {
|
|
394
|
+
name: manifest.name,
|
|
395
|
+
version: manifest.version ?? "",
|
|
396
|
+
packageRoot,
|
|
397
|
+
manifest
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
async function runLocalPublishPipeline(packageInput, options, output, prompt) {
|
|
401
|
+
let out = output ?? resolveOutput(), cwd = process.cwd();
|
|
402
|
+
try {
|
|
403
|
+
let source = await resolveSource(cwd, packageInput, output), packageName = source.name, version = source.version, publishVersion = version;
|
|
404
|
+
!version || version.trim() === "" ? (publishVersion = "0.0.0", out.info("No version specified, using 0.0.0 for local publish"), logger.info("Auto-assigned version 0.0.0 for unversioned package", { packageName })) : assertValidVersion(version, {
|
|
405
|
+
rejectPrerelease: !0,
|
|
406
|
+
context: "local publish"
|
|
407
|
+
}), logger.info(`Publishing package '${packageName}' to local registry`, {
|
|
408
|
+
source: source.packageRoot,
|
|
409
|
+
version: publishVersion
|
|
410
|
+
});
|
|
411
|
+
let files = await validateAndReadPackageFiles(source.packageRoot, {
|
|
412
|
+
context: "publish"
|
|
413
|
+
}), result = await writePackageToRegistry(
|
|
414
|
+
packageName,
|
|
415
|
+
publishVersion,
|
|
416
|
+
files,
|
|
417
|
+
{
|
|
418
|
+
force: options.force,
|
|
419
|
+
context: "publish"
|
|
420
|
+
},
|
|
421
|
+
output,
|
|
422
|
+
prompt
|
|
423
|
+
), resultInfo = createPublishResultInfo(
|
|
424
|
+
packageName,
|
|
425
|
+
publishVersion,
|
|
426
|
+
source.packageRoot,
|
|
427
|
+
result.destination,
|
|
428
|
+
result.fileCount,
|
|
429
|
+
source.manifest,
|
|
430
|
+
!1,
|
|
431
|
+
// isCustomOutput
|
|
432
|
+
result.overwritten,
|
|
433
|
+
result.overwritten ? result.fileCount : 0
|
|
434
|
+
);
|
|
435
|
+
return displayPublishSuccess(resultInfo, cwd), {
|
|
436
|
+
success: !0,
|
|
437
|
+
data: {
|
|
438
|
+
packageName,
|
|
439
|
+
version: publishVersion,
|
|
440
|
+
sourcePath: source.packageRoot,
|
|
441
|
+
destination: result.destination,
|
|
442
|
+
fileCount: result.fileCount,
|
|
443
|
+
overwritten: result.overwritten
|
|
444
|
+
}
|
|
445
|
+
};
|
|
446
|
+
} catch (error) {
|
|
447
|
+
let message = error instanceof Error ? error.message : String(error);
|
|
448
|
+
return logger.debug("Local publish failed", { error: message, cwd }), {
|
|
449
|
+
success: !1,
|
|
450
|
+
error: message
|
|
451
|
+
};
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
// ../core/src/core/publish/publish-pipeline.ts
|
|
456
|
+
async function runPublishPipeline(packageInput, options, ctx) {
|
|
457
|
+
let output = resolveOutput(ctx), prompt = resolvePrompt(ctx);
|
|
458
|
+
return options.local ? await runLocalPublishPipeline(packageInput, options, output, prompt) : await runRemotePublishPipeline(packageInput, options, output, prompt);
|
|
459
|
+
}
|
|
460
|
+
async function resolveSource2(cwd, packageInput, output) {
|
|
461
|
+
if (!packageInput) {
|
|
462
|
+
let manifestPath2 = path2.join(cwd, FILE_PATTERNS.OPENPACKAGE_YML);
|
|
463
|
+
if (!await exists(manifestPath2))
|
|
464
|
+
throw new Error("No openpackage.yml found in current directory; specify a package name or run inside a package root.");
|
|
465
|
+
let manifest2 = await parsePackageYml(manifestPath2);
|
|
466
|
+
return {
|
|
467
|
+
name: manifest2.name,
|
|
468
|
+
version: manifest2.version ?? "",
|
|
469
|
+
packageRoot: cwd,
|
|
470
|
+
manifest: manifest2
|
|
471
|
+
};
|
|
472
|
+
}
|
|
473
|
+
let classification = await classifyPackageInput(packageInput, cwd), packageRoot;
|
|
474
|
+
if (classification.type === "directory")
|
|
475
|
+
packageRoot = classification.resolvedPath, logger.info("Resolved package input as directory path", { path: packageRoot });
|
|
476
|
+
else {
|
|
477
|
+
if (classification.type === "tarball")
|
|
478
|
+
throw new ValidationError(
|
|
479
|
+
`Remote publish does not support tarball inputs.
|
|
480
|
+
To publish from a tarball, first extract it to a directory, or use local publish mode.`
|
|
481
|
+
);
|
|
482
|
+
if (classification.type === "git")
|
|
483
|
+
throw new ValidationError(
|
|
484
|
+
`Remote publish does not support git inputs.
|
|
485
|
+
To publish from a git repository, first clone it to a directory.`
|
|
486
|
+
);
|
|
487
|
+
{
|
|
488
|
+
let resolution = await resolvePackageByName({
|
|
489
|
+
cwd,
|
|
490
|
+
packageName: packageInput,
|
|
491
|
+
checkCwd: !0,
|
|
492
|
+
// Check if CWD is the package (highest priority)
|
|
493
|
+
searchWorkspace: !0,
|
|
494
|
+
// Search workspace packages
|
|
495
|
+
searchGlobal: !0,
|
|
496
|
+
// Search global packages
|
|
497
|
+
searchRegistry: !1
|
|
498
|
+
// Skip registry (already published/immutable)
|
|
499
|
+
});
|
|
500
|
+
if (!resolution.found || !resolution.path)
|
|
501
|
+
throw new Error(
|
|
502
|
+
`Package '${packageInput}' not found.
|
|
503
|
+
Searched: current directory, workspace packages (.openpackage/packages/), and global packages (~/.openpackage/packages/).
|
|
504
|
+
Make sure the package exists in one of these locations.`
|
|
505
|
+
);
|
|
506
|
+
if (packageRoot = resolution.path, resolution.resolutionInfo) {
|
|
507
|
+
let { selected, reason } = resolution.resolutionInfo;
|
|
508
|
+
logger.info("Resolved package for publishing", {
|
|
509
|
+
packageInput,
|
|
510
|
+
selectedSource: selected.type,
|
|
511
|
+
version: selected.version,
|
|
512
|
+
path: selected.path,
|
|
513
|
+
reason
|
|
514
|
+
});
|
|
515
|
+
let sourceLabel = selected.type === "cwd" ? "current directory" : selected.type === "workspace" ? "workspace packages" : selected.type === "global" ? "global packages" : selected.type;
|
|
516
|
+
output && output.success(`Found ${packageInput} in ${sourceLabel}`);
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
let manifestPath = path2.join(packageRoot, FILE_PATTERNS.OPENPACKAGE_YML);
|
|
521
|
+
if (!await exists(manifestPath))
|
|
522
|
+
throw new Error(`openpackage.yml not found at ${manifestPath}`);
|
|
523
|
+
let manifest = await parsePackageYml(manifestPath);
|
|
524
|
+
return {
|
|
525
|
+
name: manifest.name,
|
|
526
|
+
version: manifest.version ?? "",
|
|
527
|
+
packageRoot,
|
|
528
|
+
manifest
|
|
529
|
+
};
|
|
530
|
+
}
|
|
531
|
+
async function resolveUploadName(packageName, authOptions, prompt) {
|
|
532
|
+
if (isScopedName(packageName))
|
|
533
|
+
return packageName;
|
|
534
|
+
let username = await getCurrentUsername(authOptions);
|
|
535
|
+
return await resolveScopedNameForPushWithUserScope(packageName, username, authOptions.profile, prompt);
|
|
536
|
+
}
|
|
537
|
+
function validateVersionIfPresent(version) {
|
|
538
|
+
if (version) {
|
|
539
|
+
if (!semver2.valid(version))
|
|
540
|
+
throw new PublishError(
|
|
541
|
+
`Invalid version: ${version}. Provide a valid semver version.`,
|
|
542
|
+
"INVALID_VERSION"
|
|
543
|
+
);
|
|
544
|
+
if (semver2.prerelease(version))
|
|
545
|
+
throw new PublishError(
|
|
546
|
+
`Prerelease versions cannot be published: ${version}`,
|
|
547
|
+
"PRERELEASE_DISALLOWED"
|
|
548
|
+
);
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
async function runRemotePublishPipeline(packageInput, options, output, prompt) {
|
|
552
|
+
let out = output ?? resolveOutput(), cwd = process.cwd(), uploadPackageName, version;
|
|
553
|
+
try {
|
|
554
|
+
let source = await resolveSource2(cwd, packageInput, output);
|
|
555
|
+
if (!source.name)
|
|
556
|
+
throw new PublishError(
|
|
557
|
+
"openpackage.yml must contain a name field",
|
|
558
|
+
"MISSING_NAME"
|
|
559
|
+
);
|
|
560
|
+
validateVersionIfPresent(source.version), version = source.version || void 0, logger.info(`Publishing package '${source.name}' from ${source.packageRoot}`, {
|
|
561
|
+
packageRoot: source.packageRoot,
|
|
562
|
+
version
|
|
563
|
+
}), await authManager.validateAuth(options), uploadPackageName = await resolveUploadName(source.name, options, prompt);
|
|
564
|
+
let files = await readPackageFilesForRegistry(source.packageRoot);
|
|
565
|
+
if (files.length === 0)
|
|
566
|
+
throw new PublishError("No package files found to publish", "NO_FILES");
|
|
567
|
+
let pkg = {
|
|
568
|
+
metadata: source.manifest,
|
|
569
|
+
files
|
|
570
|
+
}, uploadPkg = preparePackageForUpload(pkg, uploadPackageName), httpClient = await createHttpClient(options), registryUrl = authManager.getRegistryUrl(), profile = authManager.getCurrentProfile(options);
|
|
571
|
+
logPublishSummary(uploadPackageName, profile, registryUrl, out);
|
|
572
|
+
let tarballInfo = await createPublishTarball(uploadPkg, out), versionSuffix = version ? `@${version}` : "", publishedMessage = `Published ${source.name}${versionSuffix} to remote registry`, response = await uploadPackage(httpClient, uploadPackageName, version, tarballInfo, out, publishedMessage);
|
|
573
|
+
return printPublishSuccessEnhanced(
|
|
574
|
+
response,
|
|
575
|
+
tarballInfo,
|
|
576
|
+
registryUrl,
|
|
577
|
+
profile,
|
|
578
|
+
source,
|
|
579
|
+
files.length,
|
|
580
|
+
cwd,
|
|
581
|
+
out
|
|
582
|
+
), {
|
|
583
|
+
success: !0,
|
|
584
|
+
data: {
|
|
585
|
+
packageName: response.package.name,
|
|
586
|
+
version: response.version.version ?? version ?? "",
|
|
587
|
+
size: tarballInfo.size,
|
|
588
|
+
checksum: tarballInfo.checksum,
|
|
589
|
+
registry: registryUrl,
|
|
590
|
+
profile,
|
|
591
|
+
message: response.message
|
|
592
|
+
}
|
|
593
|
+
};
|
|
594
|
+
} catch (error) {
|
|
595
|
+
return handlePublishError(error, uploadPackageName, version);
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
function printPublishSuccessEnhanced(response, tarballInfo, registryUrl, profile, source, fileCount, cwd, out) {
|
|
599
|
+
source.manifest.description && out.message(`Description: ${source.manifest.description}`);
|
|
600
|
+
let displaySource = formatPathForDisplay(source.packageRoot, cwd);
|
|
601
|
+
out.message(`Source: ${displaySource}`), out.message(`Registry: ${registryUrl}`), out.message(`Profile: ${profile}`), out.message(`Files: ${fileCount}`);
|
|
602
|
+
let formatFileSize2 = (bytes) => {
|
|
603
|
+
let kb = bytes / 1024;
|
|
604
|
+
return kb < 1024 ? `${kb.toFixed(1)} KB` : `${(kb / 1024).toFixed(1)} MB`;
|
|
605
|
+
};
|
|
606
|
+
out.message(`Size: ${formatFileSize2(tarballInfo.size)}`), out.message(`Checksum: ${tarballInfo.checksum.substring(0, 12)}...`), response.message && out.message(`
|
|
607
|
+
${response.message}`);
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
// src/commands/publish.ts
|
|
611
|
+
async function setupPublishCommand(args) {
|
|
612
|
+
let [packageInput, options] = args, ctx = await createCliExecutionContext(), result = await runPublishPipeline(packageInput, options, ctx);
|
|
613
|
+
if (!result.success)
|
|
614
|
+
throw new Error(result.error || "Publish operation failed");
|
|
615
|
+
}
|
|
616
|
+
export {
|
|
617
|
+
setupPublishCommand
|
|
618
|
+
};
|
|
619
|
+
//# sourceMappingURL=publish-RULKLNUX.js.map
|