@rubytech/create-maxy-code 0.1.479 → 0.1.480
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/package.json +1 -1
- package/payload/platform/docs/superpowers/plans/2026-07-20-task-1829-platform-ui-typecheck.md +830 -0
- package/payload/platform/docs/superpowers/specs/2026-07-20-task-1829-platform-ui-typecheck-design.md +163 -0
- package/payload/platform/lib/storage-broker/dist/__tests__/cf-exec.test.js +155 -12
- package/payload/platform/lib/storage-broker/dist/__tests__/cf-exec.test.js.map +1 -1
- package/payload/platform/lib/storage-broker/dist/cf-exec.d.ts +3 -0
- package/payload/platform/lib/storage-broker/dist/cf-exec.d.ts.map +1 -1
- package/payload/platform/lib/storage-broker/dist/cf-exec.js +68 -28
- package/payload/platform/lib/storage-broker/dist/cf-exec.js.map +1 -1
- package/payload/platform/lib/storage-broker/src/__tests__/cf-exec.test.ts +194 -16
- package/payload/platform/lib/storage-broker/src/cf-exec.ts +74 -29
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/device-flow.test.js +41 -1
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/device-flow.test.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client.test.js +249 -2
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client.test.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/token-store.test.js +127 -3
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/token-store.test.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/auth/device-flow.d.ts +17 -0
- package/payload/platform/plugins/outlook/mcp/dist/auth/device-flow.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/auth/device-flow.js +26 -1
- package/payload/platform/plugins/outlook/mcp/dist/auth/device-flow.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/auth/token-store.d.ts +37 -1
- package/payload/platform/plugins/outlook/mcp/dist/auth/token-store.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/auth/token-store.js +126 -5
- package/payload/platform/plugins/outlook/mcp/dist/auth/token-store.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts +18 -0
- package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js +123 -18
- package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js.map +1 -1
- package/payload/platform/plugins/outlook/references/auth.md +45 -2
- package/payload/server/{chunk-3XLLTG6R.js → chunk-REWXLAPC.js} +30 -10
- package/payload/server/package.json +1 -1
- package/payload/server/public/activity.html +6 -7
- package/payload/server/public/assets/{AdminLoginScreens-DkxQZnvB.js → AdminLoginScreens-DXYJWXaX.js} +1 -1
- package/payload/server/public/assets/AdminShell-UDgNN4CA.js +2 -0
- package/payload/server/public/assets/{Checkbox-CsTWK8mm.js → Checkbox-C08Ulc_a.js} +1 -1
- package/payload/server/public/assets/activity-06gsRDVv.js +1 -0
- package/payload/server/public/assets/admin-BhiHyORH.js +1 -0
- package/payload/server/public/assets/{arc-BrHWN2Kr.js → arc-BHXuzTwg.js} +1 -1
- package/payload/server/public/assets/architecture-YZFGNWBL-Ct5q6ks1.js +1 -0
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-Clt9NOr0.js → architectureDiagram-Q4EWVU46-DsN_vxau.js} +1 -1
- package/payload/server/public/assets/{blockDiagram-DXYQGD6D-BOe_jmXi.js → blockDiagram-DXYQGD6D-CvNat1uB.js} +1 -1
- package/payload/server/public/assets/browser-Cz4IKS47.js +1 -0
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-B64FaKMV.js → c4Diagram-AHTNJAMY-E9yqTPTW.js} +1 -1
- package/payload/server/public/assets/calendar-D0xtNqH8.js +1 -0
- package/payload/server/public/assets/channel-PE9vBKEQ.js +1 -0
- package/payload/server/public/assets/chat-DwLJ830n.js +1 -0
- package/payload/server/public/assets/chevron-left-Cv-TFuEf.js +1 -0
- package/payload/server/public/assets/{chunk-2KRD3SAO-BGAUfWvM.js → chunk-2KRD3SAO-DpzI_0EY.js} +1 -1
- package/payload/server/public/assets/{chunk-336JU56O-PFi6uQZ0.js → chunk-336JU56O-eR_I9Eu4.js} +2 -2
- package/payload/server/public/assets/chunk-426QAEUC-BDNZtJsz.js +1 -0
- package/payload/server/public/assets/{chunk-4BX2VUAB-CkxXXCiF.js → chunk-4BX2VUAB-D-6xk1t8.js} +1 -1
- package/payload/server/public/assets/{chunk-4TB4RGXK-B-7tN4IA.js → chunk-4TB4RGXK-BkqUcFpL.js} +1 -1
- package/payload/server/public/assets/{chunk-55IACEB6-CBkNmqrt.js → chunk-55IACEB6-ChCl2pSP.js} +1 -1
- package/payload/server/public/assets/{chunk-5FUZZQ4R-wa9ujn7i.js → chunk-5FUZZQ4R-DasGsg54.js} +1 -1
- package/payload/server/public/assets/{chunk-5PVQY5BW-DIk-xBaE.js → chunk-5PVQY5BW-DXlHUX1h.js} +1 -1
- package/payload/server/public/assets/{chunk-67CJDMHE-BbMV1lgW.js → chunk-67CJDMHE-BZfVpTsE.js} +1 -1
- package/payload/server/public/assets/{chunk-7N4EOEYR-C49Mv-nQ.js → chunk-7N4EOEYR-C6U5TIgT.js} +1 -1
- package/payload/server/public/assets/{chunk-AA7GKIK3-Dy_pJOp_.js → chunk-AA7GKIK3-CA7cVDmw.js} +1 -1
- package/payload/server/public/assets/{chunk-BSJP7CBP-Ce-OmPqn.js → chunk-BSJP7CBP-DxN2GC3p.js} +1 -1
- package/payload/server/public/assets/{chunk-CIAEETIT-tnjq-APC.js → chunk-CIAEETIT-C0-4wA8y.js} +1 -1
- package/payload/server/public/assets/{chunk-EDXVE4YY-Bvv_deZ2.js → chunk-EDXVE4YY--kyb1rLc.js} +1 -1
- package/payload/server/public/assets/{chunk-ENJZ2VHE-CmxCPKyU.js → chunk-ENJZ2VHE-FBN6hR7V.js} +1 -1
- package/payload/server/public/assets/{chunk-FMBD7UC4-Top6y08S.js → chunk-FMBD7UC4-Lpge4M5g.js} +1 -1
- package/payload/server/public/assets/{chunk-FOC6F5B3-B9LPNCUS.js → chunk-FOC6F5B3-CM1rwOou.js} +1 -1
- package/payload/server/public/assets/{chunk-ICPOFSXX-Bi-_c351.js → chunk-ICPOFSXX-JdYLY3yu.js} +2 -2
- package/payload/server/public/assets/{chunk-K5T4RW27-DAnRM04h.js → chunk-K5T4RW27-DCUblGBr.js} +1 -1
- package/payload/server/public/assets/{chunk-KGLVRYIC-C0QYcbLe.js → chunk-KGLVRYIC-BP_cide2.js} +1 -1
- package/payload/server/public/assets/{chunk-LIHQZDEY-BjvA5ykt.js → chunk-LIHQZDEY-DjMa1lOl.js} +1 -1
- package/payload/server/public/assets/{chunk-ORNJ4GCN-Cs46Gj7z.js → chunk-ORNJ4GCN-D51eJAoV.js} +1 -1
- package/payload/server/public/assets/{chunk-OYMX7WX6-BBpimab5.js → chunk-OYMX7WX6-4hWIO544.js} +1 -1
- package/payload/server/public/assets/chunk-QZHKN3VN-B_Hris8x.js +1 -0
- package/payload/server/public/assets/{chunk-U2HBQHQK-CQUSBHoK.js → chunk-U2HBQHQK-BwdQf9cS.js} +1 -1
- package/payload/server/public/assets/{chunk-X2U36JSP-Dm8TevG0.js → chunk-X2U36JSP-DmDxwLOg.js} +1 -1
- package/payload/server/public/assets/{chunk-XPW4576I-B10QuxYb.js → chunk-XPW4576I-JQyAB7ND.js} +1 -1
- package/payload/server/public/assets/{chunk-YZCP3GAM-vaGsu4Wk.js → chunk-YZCP3GAM-BonLdCzI.js} +1 -1
- package/payload/server/public/assets/{chunk-ZZ45TVLE-D1Qi22bL.js → chunk-ZZ45TVLE-BXKB2wSk.js} +1 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-D8Q05iMI.js +1 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-Dm3hAxfm.js +1 -0
- package/payload/server/public/assets/clone-C-wOwvpY.js +1 -0
- package/payload/server/public/assets/{cose-bilkent-S5V4N54A-CRDvLRXs.js → cose-bilkent-S5V4N54A-BDnd4Blw.js} +1 -1
- package/payload/server/public/assets/{dagre-CEmqJTt3.js → dagre-BmexzuER.js} +1 -1
- package/payload/server/public/assets/{dagre-KV5264BT-LXMTo7Fp.js → dagre-KV5264BT-D4WVuwPj.js} +1 -1
- package/payload/server/public/assets/data-DUDJfnjI.js +1 -0
- package/payload/server/public/assets/{diagram-5BDNPKRD-zyis6nPt.js → diagram-5BDNPKRD-Bbf4mT8a.js} +1 -1
- package/payload/server/public/assets/{diagram-G4DWMVQ6-BiU0XAAD.js → diagram-G4DWMVQ6-BpqVTUmx.js} +1 -1
- package/payload/server/public/assets/{diagram-MMDJMWI5-rGFiz1SX.js → diagram-MMDJMWI5-DY-k5k6r.js} +1 -1
- package/payload/server/public/assets/{diagram-TYMM5635-B0wak1ZJ.js → diagram-TYMM5635-CXHxwacS.js} +1 -1
- package/payload/server/public/assets/{erDiagram-SMLLAGMA-D8AUxLyX.js → erDiagram-SMLLAGMA-BNKEc3l8.js} +1 -1
- package/payload/server/public/assets/{flatten-naJ5PJ4f.js → flatten-jn8bZgcI.js} +1 -1
- package/payload/server/public/assets/{flowDiagram-DWJPFMVM-BtdUf68b.js → flowDiagram-DWJPFMVM-CbAeuJsi.js} +1 -1
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-C-lkzDmf.js → ganttDiagram-T4ZO3ILL-CeeNnL4l.js} +1 -1
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-BBHsY16R.js +1 -0
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-DRUKumq2.js → gitGraphDiagram-UUTBAWPF-DG8RCtfg.js} +1 -1
- package/payload/server/public/assets/{graph-CDSGRoeb.js → graph-BAoktBcx.js} +19 -19
- package/payload/server/public/assets/{graph-labels-C5qLwnWA.js → graph-labels-LeIhl7ZG.js} +1 -1
- package/payload/server/public/assets/{graphlib-zRsaoFEC.js → graphlib-BkDExPQi.js} +1 -1
- package/payload/server/public/assets/info-OMHHGYJF-C1j5I_zx.js +1 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-ZWkwHWEu.js +2 -0
- package/payload/server/public/assets/{isEmpty-Bnpg7b8f.js → isEmpty-Dkk6_L-B.js} +1 -1
- package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-BguMgoR8.js → ishikawaDiagram-UXIWVN3A-D_iMHV64.js} +1 -1
- package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-CXhyK1n-.js → journeyDiagram-VCZTEJTY-BvPRpulx.js} +1 -1
- package/payload/server/public/assets/{kanban-definition-6JOO6SKY-C0UCWVx-.js → kanban-definition-6JOO6SKY-CkWaXWo2.js} +1 -1
- package/payload/server/public/assets/{line--uhS9YDE.js → line-BGQT9unx.js} +1 -1
- package/payload/server/public/assets/{linear-CAOWPodQ.js → linear-DzrYI8-8.js} +1 -1
- package/payload/server/public/assets/{maximize-2-CAzH8dED.js → maximize-2-2MgPSwlx.js} +1 -1
- package/payload/server/public/assets/{mermaid-parser.core-D6kPx7vc.js → mermaid-parser.core-DrMY7FMe.js} +2 -2
- package/payload/server/public/assets/{mermaid.core-CTd4DS6O.js → mermaid.core-BWdf6fZ7.js} +3 -3
- package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-_AyvyG8C.js → mindmap-definition-QFDTVHPH-CgqM9h97.js} +1 -1
- package/payload/server/public/assets/operator-CZifmNhp.js +1 -0
- package/payload/server/public/assets/{ordinal-Wx4m9zHk.js → ordinal-DuJYM7p1.js} +1 -1
- package/payload/server/public/assets/packet-4T2RLAQJ-CGiTbe0N.js +1 -0
- package/payload/server/public/assets/{page-B5YngOrK.js → page-B4kllGd_.js} +6 -6
- package/payload/server/public/assets/page-DbfE7QwJ.js +1 -0
- package/payload/server/public/assets/{pdf-render-CeX6d2v7.js → pdf-render-riHufgrn.js} +1 -1
- package/payload/server/public/assets/pie-ZZUOXDRM-BrK023dE.js +1 -0
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-6TsUDkkQ.js → pieDiagram-DEJITSTG-BeUGoYS7.js} +1 -1
- package/payload/server/public/assets/public-VtmyYz8E.js +1 -0
- package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-CWw9gOI4.js → quadrantDiagram-34T5L4WZ-CX82WgKy.js} +1 -1
- package/payload/server/public/assets/radar-PYXPWWZC-p7NRamXX.js +1 -0
- package/payload/server/public/assets/{reduce-BUmc8RDR.js → reduce-COyotL2V.js} +1 -1
- package/payload/server/public/assets/{requirementDiagram-MS252O5E-DCOlxNvx.js → requirementDiagram-MS252O5E-CzqebQXj.js} +1 -1
- package/payload/server/public/assets/{rotate-ccw-UDln4Tou.js → rotate-ccw-DaZdB2cz.js} +1 -1
- package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-CW4Xbir3.js → sankeyDiagram-XADWPNL6-CaHi1yzU.js} +1 -1
- package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-vhb_pBLG.js → sequenceDiagram-FGHM5R23-BF2AeiKW.js} +1 -1
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-Cb1WExEX.js → stateDiagram-FHFEXIEX-DtUCA8Ih.js} +1 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-a4FvB3L8.js +1 -0
- package/payload/server/public/assets/tasks-CvqVDbfO.js +1 -0
- package/payload/server/public/assets/{time-entry-format-DPOBIE18.js → time-entry-format-TD-PPEIu.js} +1 -1
- package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-BAHTf_AF.js → timeline-definition-GMOUNBTQ-D3Q1YrKY.js} +1 -1
- package/payload/server/public/assets/treeView-SZITEDCU-CoWk8VoG.js +1 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-BhWeGj8Y.js +1 -0
- package/payload/server/public/assets/{triangle-alert-Dz-CZKo5.js → triangle-alert-BaLhVNnn.js} +1 -1
- package/payload/server/public/assets/useCopyFeedback-BhjPzRa3.js +1 -0
- package/payload/server/public/assets/{useSubAccountSwitcher-BRIluIKf.css → useSubAccountSwitcher-CWRpVt1-.css} +1 -1
- package/payload/server/public/assets/{useSubAccountSwitcher-v8LyBzZN.js → useSubAccountSwitcher-HEVLb6Z9.js} +2 -2
- package/payload/server/public/assets/useVoiceRecorder-CfGgj3vm.js +2 -0
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-DtEttvW4.js → vennDiagram-DHZGUBPP-DnjzQDGf.js} +1 -1
- package/payload/server/public/assets/wardley-RL74JXVD-C0q3Hqng.js +1 -0
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-K06y6CVJ.js → wardleyDiagram-NUSXRM2D-T3WHrUvi.js} +1 -1
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-D66c40lp.js → xychartDiagram-5P7HB3ND-2Efyv4h2.js} +1 -1
- package/payload/server/public/browser.html +4 -5
- package/payload/server/public/calendar.html +5 -6
- package/payload/server/public/chat.html +12 -13
- package/payload/server/public/data.html +11 -12
- package/payload/server/public/graph.html +10 -11
- package/payload/server/public/index.html +14 -15
- package/payload/server/public/operator.html +14 -15
- package/payload/server/public/public.html +12 -13
- package/payload/server/public/tasks.html +6 -5
- package/payload/server/server.js +93 -24
- package/payload/server/{src-XQ63FPRE.js → src-JJ6PHO5I.js} +1 -1
- package/payload/server/public/assets/AdminShell-Cv_nIFGe.js +0 -2
- package/payload/server/public/assets/activity-BbnTiVBT.js +0 -1
- package/payload/server/public/assets/admin-BZY3i_Ff.js +0 -1
- package/payload/server/public/assets/architecture-YZFGNWBL-CZQzGRSM.js +0 -1
- package/payload/server/public/assets/browser-BbIiSFKr.js +0 -1
- package/payload/server/public/assets/calendar-BvxeTHvQ.js +0 -1
- package/payload/server/public/assets/channel-zDUAN9Ks.js +0 -1
- package/payload/server/public/assets/chat-DUKxufRk.js +0 -1
- package/payload/server/public/assets/chevron-left-BtfJD6LL.js +0 -1
- package/payload/server/public/assets/chunk-426QAEUC-iJnqNRug.js +0 -1
- package/payload/server/public/assets/chunk-QZHKN3VN-Qlc2PFAj.js +0 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-CFsKL52p.js +0 -1
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BWBUUCiO.js +0 -1
- package/payload/server/public/assets/clone-h5XhkDUL.js +0 -1
- package/payload/server/public/assets/data-hl1wa-Ax.js +0 -1
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-CBZPQJLj.js +0 -1
- package/payload/server/public/assets/info-OMHHGYJF-1vIoX-kP.js +0 -1
- package/payload/server/public/assets/infoDiagram-42DDH7IO-KHcXRaan.js +0 -2
- package/payload/server/public/assets/operator-BK7r8DAB.js +0 -1
- package/payload/server/public/assets/packet-4T2RLAQJ-CTU0gCGb.js +0 -1
- package/payload/server/public/assets/page-BsCS0Dmc.js +0 -1
- package/payload/server/public/assets/pie-ZZUOXDRM-D-EEHxhC.js +0 -1
- package/payload/server/public/assets/public-C1Pz-IBs.js +0 -1
- package/payload/server/public/assets/radar-PYXPWWZC-DHXATZGB.js +0 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CxOIKvXh.js +0 -1
- package/payload/server/public/assets/tasks-B-cLsn3p.js +0 -1
- package/payload/server/public/assets/treeView-SZITEDCU-CC7ouMFd.js +0 -1
- package/payload/server/public/assets/treemap-W4RFUUIX-CaCg27im.js +0 -1
- package/payload/server/public/assets/useCopyFeedback-wtUHGohk.js +0 -1
- package/payload/server/public/assets/useSelectionMode-sph7AQT5.js +0 -1
- package/payload/server/public/assets/useVoiceRecorder-DN4jYQ0A.js +0 -2
- package/payload/server/public/assets/wardley-RL74JXVD-bMPsqQZ7.js +0 -1
- /package/payload/server/public/assets/{_baseFor-k8hYPe-U.js → _baseFor-Bjj9It3Q.js} +0 -0
- /package/payload/server/public/assets/{array-BFDiaBgf.js → array-BrrxEo12.js} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-Ch0xptA4.js → cytoscape.esm-CTWJxUxo.js} +0 -0
- /package/payload/server/public/assets/{defaultLocale-ZeknFqNe.js → defaultLocale-CFDbRV4k.js} +0 -0
- /package/payload/server/public/assets/{dist-B2N0v8hZ.js → dist-BATfy7Sn.js} +0 -0
- /package/payload/server/public/assets/{init-0VJVrkRJ.js → init-dXCzGgLP.js} +0 -0
- /package/payload/server/public/assets/{katex-Br7bH10N.js → katex-CHA1JFYJ.js} +0 -0
- /package/payload/server/public/assets/{path-INs8XTPH.js → path-CCRpdXhK.js} +0 -0
- /package/payload/server/public/assets/{preload-helper-D_sPnjeL.js → preload-helper-CH6UZRzu.js} +0 -0
- /package/payload/server/public/assets/{rough.esm-DU9bZLvZ.js → rough.esm-Bud4g4fh.js} +0 -0
- /package/payload/server/public/assets/{src-DHSQDYx-.js → src-DNdBRXXx.js} +0 -0
|
@@ -7,9 +7,19 @@ exports.makeCfExec = makeCfExec;
|
|
|
7
7
|
exports.makeHouseCfExec = makeHouseCfExec;
|
|
8
8
|
exports.makeHousePagesExec = makeHousePagesExec;
|
|
9
9
|
const node_child_process_1 = require("node:child_process");
|
|
10
|
+
const promises_1 = require("node:fs/promises");
|
|
11
|
+
const node_os_1 = require("node:os");
|
|
10
12
|
const node_path_1 = require("node:path");
|
|
11
13
|
const house_credential_js_1 = require("./house-credential.js");
|
|
12
14
|
const house_scoped_token_js_1 = require("./house-scoped-token.js");
|
|
15
|
+
// The filenames `wrangler pages deploy` discovers as its own configuration
|
|
16
|
+
// (wrangler 4.112.0). Task 1782 — the upload walk has a fixed ignore list with
|
|
17
|
+
// no config hook, so a config sitting in the deployed tree is served publicly at
|
|
18
|
+
// /wrangler.toml, disclosing the D1 database id and R2 bucket name, both of
|
|
19
|
+
// which embed the account id. All three names are dropped rather than only the
|
|
20
|
+
// .toml the data-portal template ships, so a tree that later gains a .json
|
|
21
|
+
// config cannot quietly start republishing it.
|
|
22
|
+
const WRANGLER_CONFIG_NAMES = ["wrangler.json", "wrangler.jsonc", "wrangler.toml"];
|
|
13
23
|
// An object key carries `/` as a real path separator (the data portal's
|
|
14
24
|
// per-person prefixes), so it is encoded segment-wise rather than whole:
|
|
15
25
|
// separators stay separators, and spaces and specials are escaped. This
|
|
@@ -267,35 +277,65 @@ function makeCfExec(cred, run = defaultRun, fetchFn = defaultFetch) {
|
|
|
267
277
|
}
|
|
268
278
|
},
|
|
269
279
|
async pagesDeploy(dir, project, branch) {
|
|
270
|
-
//
|
|
271
|
-
//
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
//
|
|
276
|
-
//
|
|
277
|
-
//
|
|
278
|
-
//
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
280
|
+
// Task 1782 — publish a directory the broker composes, not whatever the
|
|
281
|
+
// account's tree happens to hold. wrangler takes the upload directory from
|
|
282
|
+
// the positional argument and finds its configuration by walking up from
|
|
283
|
+
// the working directory, which are two independent inputs; pointing them
|
|
284
|
+
// at different places is what removes the config from the published assets
|
|
285
|
+
// while leaving the D1 and R2 bindings it declares fully in force.
|
|
286
|
+
// Measured on the house account 2026-07-20: a brand-new project deployed
|
|
287
|
+
// with the config outside the upload received the same bindings and the
|
|
288
|
+
// same config hash as the control that uploaded it.
|
|
289
|
+
const staged = await (0, promises_1.mkdtemp)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "maxy-pages-upload-"));
|
|
290
|
+
const excluded = [];
|
|
291
|
+
try {
|
|
292
|
+
await (0, promises_1.cp)(dir, staged, {
|
|
293
|
+
recursive: true,
|
|
294
|
+
// Only a config at the root of the tree is wrangler's own. A nested
|
|
295
|
+
// file of the same name is site content and stays published.
|
|
296
|
+
filter: (src) => {
|
|
297
|
+
const rel = (0, node_path_1.relative)(dir, src);
|
|
298
|
+
if (!WRANGLER_CONFIG_NAMES.includes(rel))
|
|
299
|
+
return true;
|
|
300
|
+
excluded.push(rel);
|
|
301
|
+
return false;
|
|
302
|
+
},
|
|
303
|
+
});
|
|
304
|
+
// wrangler is the only supported Pages upload path (it hashes the tree and
|
|
305
|
+
// uploads only what is missing); the API has no single-call equivalent.
|
|
306
|
+
const args = ["wrangler", "pages", "deploy", staged, "--project-name", project];
|
|
307
|
+
if (branch !== undefined)
|
|
308
|
+
args.push("--branch", branch);
|
|
309
|
+
// Pin the working directory to the tree being published. Left to
|
|
310
|
+
// inference, wrangler anchors `.wrangler/tmp` at the install's `server/`
|
|
311
|
+
// directory (its nearest package.json/node_modules root), which the
|
|
312
|
+
// platform marks immutable — so the scratch mkdir returns EPERM and the
|
|
313
|
+
// deploy never reaches the upload. `dir` is the realpath-confined deploy
|
|
314
|
+
// directory the route resolved, and it is writable. Since 1782 it is also
|
|
315
|
+
// the only place wrangler can still find this site's config, which no
|
|
316
|
+
// longer travels with the assets.
|
|
317
|
+
const { stdout } = await run("npx", args, env, { cwd: dir });
|
|
318
|
+
// The deployment URL is what the caller relays, so parse it strictly.
|
|
319
|
+
// Strip ANSI first: wrangler colours its output when it thinks it has a
|
|
320
|
+
// terminal, and a colour reset adjacent to the URL would otherwise be
|
|
321
|
+
// swallowed by the host character class and returned as part of it.
|
|
322
|
+
const plain = stdout.replace(/\[[0-9;]*m/g, "");
|
|
323
|
+
// Take the LAST match, not the first: wrangler prints the deployment URL
|
|
324
|
+
// on its closing line, and any earlier .pages.dev mention (an alias or a
|
|
325
|
+
// progress line) would otherwise win and hand back the wrong address.
|
|
326
|
+
const urls = plain.match(/https:\/\/[A-Za-z0-9._-]+\.pages\.dev/g);
|
|
327
|
+
const url = urls?.[urls.length - 1];
|
|
328
|
+
// wrangler exits 0 on some partial paths, so a url-less success is an
|
|
329
|
+
// anomaly to surface with its output, never a silent "deployed".
|
|
330
|
+
if (!url) {
|
|
331
|
+
throw new Error(`storage-broker: pages deploy returned no deployment url: ${stdout}`);
|
|
332
|
+
}
|
|
333
|
+
return { url, excluded: excluded.sort() };
|
|
334
|
+
}
|
|
335
|
+
finally {
|
|
336
|
+
// A failed deploy must not strand a second copy of the site on disk.
|
|
337
|
+
await (0, promises_1.rm)(staged, { recursive: true, force: true });
|
|
297
338
|
}
|
|
298
|
-
return { url };
|
|
299
339
|
},
|
|
300
340
|
// --- R2 objects (Task 1691) -------------------------------------------
|
|
301
341
|
//
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cf-exec.js","sourceRoot":"","sources":["../src/cf-exec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cf-exec.js","sourceRoot":"","sources":["../src/cf-exec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
import test from "node:test";
|
|
2
2
|
import assert from "node:assert/strict";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
mkdtempSync,
|
|
5
|
+
mkdirSync,
|
|
6
|
+
writeFileSync,
|
|
7
|
+
appendFileSync,
|
|
8
|
+
existsSync,
|
|
9
|
+
readdirSync,
|
|
10
|
+
readFileSync,
|
|
11
|
+
symlinkSync,
|
|
12
|
+
} from "node:fs";
|
|
4
13
|
import { tmpdir } from "node:os";
|
|
5
|
-
import { join } from "node:path";
|
|
14
|
+
import { join, dirname } from "node:path";
|
|
6
15
|
import { makeCfExec, makeHouseCfExec, type RunFn, type FetchFn } from "../cf-exec.js";
|
|
7
16
|
|
|
8
17
|
const cred = { apiToken: "cfat_x", accountId: "acc-h" };
|
|
@@ -685,40 +694,208 @@ function projectPage(names: string[], cursor?: string) {
|
|
|
685
694
|
});
|
|
686
695
|
}
|
|
687
696
|
|
|
697
|
+
// A real site tree on disk. pagesDeploy copies the tree before uploading it, so
|
|
698
|
+
// these tests cannot hand it a path that does not exist.
|
|
699
|
+
function siteTree(files: Record<string, string>): string {
|
|
700
|
+
const dir = mkdtempSync(join(tmpdir(), "pages-site-"));
|
|
701
|
+
for (const [rel, body] of Object.entries(files)) {
|
|
702
|
+
const abs = join(dir, rel);
|
|
703
|
+
mkdirSync(dirname(abs), { recursive: true });
|
|
704
|
+
writeFileSync(abs, body);
|
|
705
|
+
}
|
|
706
|
+
return dir;
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
const PORTAL = {
|
|
710
|
+
"index.html": "<!doctype html>",
|
|
711
|
+
"portal.js": "export {}",
|
|
712
|
+
"functions/api/files.js": "export {}",
|
|
713
|
+
"wrangler.toml": 'name = "kit-data"\ndatabase_id = "secret-looking"\n',
|
|
714
|
+
};
|
|
715
|
+
|
|
716
|
+
/** Snapshots the uploaded directory's contents at call time, because
|
|
717
|
+
* pagesDeploy deletes the staging tree before it returns. */
|
|
718
|
+
function snapshottingRun(stdout: string) {
|
|
719
|
+
const calls: Array<{
|
|
720
|
+
args: string[];
|
|
721
|
+
cwd?: string;
|
|
722
|
+
uploadDir: string;
|
|
723
|
+
uploaded: string[];
|
|
724
|
+
}> = [];
|
|
725
|
+
const run: RunFn = async (_cmd, args, _env, opts) => {
|
|
726
|
+
const uploadDir = args[3];
|
|
727
|
+
const uploaded: string[] = [];
|
|
728
|
+
const walk = (d: string, prefix: string) => {
|
|
729
|
+
for (const entry of readdirSync(d, { withFileTypes: true })) {
|
|
730
|
+
if (entry.isDirectory()) walk(join(d, entry.name), `${prefix}${entry.name}/`);
|
|
731
|
+
else uploaded.push(`${prefix}${entry.name}`);
|
|
732
|
+
}
|
|
733
|
+
};
|
|
734
|
+
walk(uploadDir, "");
|
|
735
|
+
calls.push({ args, cwd: opts?.cwd, uploadDir, uploaded: uploaded.sort() });
|
|
736
|
+
return { stdout };
|
|
737
|
+
};
|
|
738
|
+
return { run, calls };
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
const DEPLOYED = "✨ Deployment complete! Take a peek over at https://abc123.glsmithandsons.pages.dev\n";
|
|
742
|
+
|
|
688
743
|
test("pagesDeploy shells npx wrangler (never bare) and returns the deployment url", async () => {
|
|
689
|
-
const
|
|
690
|
-
|
|
691
|
-
);
|
|
744
|
+
const dir = siteTree(PORTAL);
|
|
745
|
+
const { run, calls } = recordingRun(`Uploading... (2/2)\n${DEPLOYED}`);
|
|
692
746
|
const cf = makeCfExec(cred, run);
|
|
693
|
-
const { url } = await cf.pagesDeploy(
|
|
747
|
+
const { url } = await cf.pagesDeploy(dir, "glsmithandsons", "main");
|
|
694
748
|
assert.equal(url, "https://abc123.glsmithandsons.pages.dev");
|
|
695
749
|
assert.equal(calls[0].cmd, "npx");
|
|
696
|
-
assert.deepEqual(calls[0].args, [
|
|
697
|
-
|
|
750
|
+
assert.deepEqual(calls[0].args.slice(0, 3), ["wrangler", "pages", "deploy"]);
|
|
751
|
+
assert.deepEqual(calls[0].args.slice(4), [
|
|
698
752
|
"--project-name", "glsmithandsons", "--branch", "main",
|
|
699
753
|
]);
|
|
700
754
|
assert.equal(calls[0].env.CLOUDFLARE_API_TOKEN, "cfat_x");
|
|
701
755
|
});
|
|
702
756
|
|
|
703
757
|
test("pagesDeploy omits --branch when no branch is given", async () => {
|
|
704
|
-
const
|
|
758
|
+
const dir = siteTree(PORTAL);
|
|
759
|
+
const { run, calls } = recordingRun(DEPLOYED);
|
|
705
760
|
const cf = makeCfExec(cred, run);
|
|
706
|
-
await cf.pagesDeploy(
|
|
707
|
-
assert.deepEqual(calls[0].args, [
|
|
708
|
-
"wrangler", "pages", "deploy", "/acct/sites/gls", "--project-name", "glsmithandsons",
|
|
709
|
-
]);
|
|
761
|
+
await cf.pagesDeploy(dir, "glsmithandsons");
|
|
762
|
+
assert.deepEqual(calls[0].args.slice(4), ["--project-name", "glsmithandsons"]);
|
|
710
763
|
});
|
|
711
764
|
|
|
712
765
|
test("pagesDeploy throws with the body when wrangler prints no deployment url", async () => {
|
|
766
|
+
const dir = siteTree(PORTAL);
|
|
713
767
|
const { run } = recordingRun("Uploading... (0/0)\nsomething went sideways\n");
|
|
714
768
|
const cf = makeCfExec(cred, run);
|
|
715
769
|
await assert.rejects(
|
|
716
|
-
() => cf.pagesDeploy(
|
|
770
|
+
() => cf.pagesDeploy(dir, "glsmithandsons"),
|
|
717
771
|
/something went sideways/,
|
|
718
772
|
"a url-less wrangler run must surface its output, never report a silent success",
|
|
719
773
|
);
|
|
720
774
|
});
|
|
721
775
|
|
|
776
|
+
// --- Task 1782: the uploaded set is the broker's, not whatever the tree holds ---
|
|
777
|
+
|
|
778
|
+
test("pagesDeploy uploads a staged copy with the wrangler config left out", async () => {
|
|
779
|
+
const dir = siteTree(PORTAL);
|
|
780
|
+
const { run, calls } = snapshottingRun(DEPLOYED);
|
|
781
|
+
const cf = makeCfExec(cred, run);
|
|
782
|
+
const { excluded } = await cf.pagesDeploy(dir, "kit-data", "main");
|
|
783
|
+
assert.notEqual(
|
|
784
|
+
calls[0].uploadDir,
|
|
785
|
+
dir,
|
|
786
|
+
"the directory handed to wrangler must not be the tree that holds the config",
|
|
787
|
+
);
|
|
788
|
+
assert.deepEqual(
|
|
789
|
+
calls[0].uploaded,
|
|
790
|
+
["functions/api/files.js", "index.html", "portal.js"],
|
|
791
|
+
"every site file is published and the config is not",
|
|
792
|
+
);
|
|
793
|
+
assert.deepEqual(excluded, ["wrangler.toml"]);
|
|
794
|
+
});
|
|
795
|
+
|
|
796
|
+
test("pagesDeploy still runs wrangler in the tree that holds the config", async () => {
|
|
797
|
+
const dir = siteTree(PORTAL);
|
|
798
|
+
const { run, calls } = snapshottingRun(DEPLOYED);
|
|
799
|
+
const cf = makeCfExec(cred, run);
|
|
800
|
+
await cf.pagesDeploy(dir, "kit-data", "main");
|
|
801
|
+
// wrangler finds its config by walking up from the working directory, so the
|
|
802
|
+
// cwd is what keeps the D1 and R2 bindings applying once the file itself has
|
|
803
|
+
// left the upload. It is also still the writable scratch anchor Task 1770
|
|
804
|
+
// pinned it for.
|
|
805
|
+
assert.equal(calls[0].cwd, dir);
|
|
806
|
+
});
|
|
807
|
+
|
|
808
|
+
test("pagesDeploy excludes every config filename wrangler itself discovers", async () => {
|
|
809
|
+
const dir = siteTree({
|
|
810
|
+
"index.html": "<!doctype html>",
|
|
811
|
+
"wrangler.toml": "x",
|
|
812
|
+
"wrangler.json": "{}",
|
|
813
|
+
"wrangler.jsonc": "{}",
|
|
814
|
+
});
|
|
815
|
+
const { run, calls } = snapshottingRun(DEPLOYED);
|
|
816
|
+
const cf = makeCfExec(cred, run);
|
|
817
|
+
const { excluded } = await cf.pagesDeploy(dir, "kit-data");
|
|
818
|
+
assert.deepEqual(calls[0].uploaded, ["index.html"]);
|
|
819
|
+
assert.deepEqual(excluded, ["wrangler.json", "wrangler.jsonc", "wrangler.toml"]);
|
|
820
|
+
});
|
|
821
|
+
|
|
822
|
+
test("pagesDeploy keeps a nested file that merely shares the config's name", async () => {
|
|
823
|
+
const dir = siteTree({
|
|
824
|
+
"index.html": "<!doctype html>",
|
|
825
|
+
"wrangler.toml": "x",
|
|
826
|
+
"docs/wrangler.toml": "an example the site publishes on purpose",
|
|
827
|
+
});
|
|
828
|
+
const { run, calls } = snapshottingRun(DEPLOYED);
|
|
829
|
+
const cf = makeCfExec(cred, run);
|
|
830
|
+
const { excluded } = await cf.pagesDeploy(dir, "kit-data");
|
|
831
|
+
assert.deepEqual(calls[0].uploaded, ["docs/wrangler.toml", "index.html"]);
|
|
832
|
+
assert.deepEqual(excluded, ["wrangler.toml"], "only the config wrangler reads is dropped");
|
|
833
|
+
});
|
|
834
|
+
|
|
835
|
+
test("pagesDeploy reports nothing excluded for a tree that carries no config", async () => {
|
|
836
|
+
const dir = siteTree({ "index.html": "<!doctype html>" });
|
|
837
|
+
const { run, calls } = snapshottingRun(DEPLOYED);
|
|
838
|
+
const cf = makeCfExec(cred, run);
|
|
839
|
+
const { excluded } = await cf.pagesDeploy(dir, "glsmithandsons");
|
|
840
|
+
assert.deepEqual(calls[0].uploaded, ["index.html"]);
|
|
841
|
+
assert.deepEqual(excluded, []);
|
|
842
|
+
});
|
|
843
|
+
|
|
844
|
+
test("pagesDeploy publishes what a symlink pointed at, including one leaving the tree", async () => {
|
|
845
|
+
// wrangler's own upload walk stats each entry, so deploying in place published
|
|
846
|
+
// the link's target. Copying links verbatim would strand an escaping one.
|
|
847
|
+
// A relative link escaping the tree is the shape that would dangle if the copy
|
|
848
|
+
// reproduced it verbatim somewhere else on disk. It does not: node's fs.cp
|
|
849
|
+
// rewrites every symlink to its resolved absolute target, so the staged link
|
|
850
|
+
// still points at the real file and wrangler's stat-following walk publishes
|
|
851
|
+
// it exactly as an in-place deploy did. This pins that behaviour rather than
|
|
852
|
+
// trusting it — the whole change rests on the staged tree being what wrangler
|
|
853
|
+
// would have uploaded.
|
|
854
|
+
const base = mkdtempSync(join(tmpdir(), "pages-base-"));
|
|
855
|
+
mkdirSync(join(base, "shared"));
|
|
856
|
+
writeFileSync(join(base, "shared", "shared.css"), "body{}");
|
|
857
|
+
const dir = join(base, "site");
|
|
858
|
+
mkdirSync(dir);
|
|
859
|
+
writeFileSync(join(dir, "index.html"), "<!doctype html>");
|
|
860
|
+
writeFileSync(join(dir, "wrangler.toml"), "x");
|
|
861
|
+
symlinkSync(join("..", "shared", "shared.css"), join(dir, "theme.css"));
|
|
862
|
+
// Read during the run: the staging tree is gone by the time pagesDeploy returns.
|
|
863
|
+
let staged = "";
|
|
864
|
+
const run: RunFn = async (_cmd, args) => {
|
|
865
|
+
staged = readFileSync(join(args[3], "theme.css"), "utf8");
|
|
866
|
+
return { stdout: DEPLOYED };
|
|
867
|
+
};
|
|
868
|
+
const cf = makeCfExec(cred, run);
|
|
869
|
+
await cf.pagesDeploy(dir, "kit-data");
|
|
870
|
+
assert.equal(
|
|
871
|
+
staged,
|
|
872
|
+
"body{}",
|
|
873
|
+
"the staged copy carries the target's bytes, not a link that resolves to nothing",
|
|
874
|
+
);
|
|
875
|
+
});
|
|
876
|
+
|
|
877
|
+
test("pagesDeploy removes the staging tree on the success path", async () => {
|
|
878
|
+
const dir = siteTree(PORTAL);
|
|
879
|
+
const { run, calls } = snapshottingRun(DEPLOYED);
|
|
880
|
+
const cf = makeCfExec(cred, run);
|
|
881
|
+
await cf.pagesDeploy(dir, "kit-data");
|
|
882
|
+
assert.equal(existsSync(calls[0].uploadDir), false);
|
|
883
|
+
assert.equal(existsSync(join(dir, "wrangler.toml")), true, "the real tree is untouched");
|
|
884
|
+
});
|
|
885
|
+
|
|
886
|
+
test("pagesDeploy removes the staging tree when wrangler fails", async () => {
|
|
887
|
+
const dir = siteTree(PORTAL);
|
|
888
|
+
let uploadDir = "";
|
|
889
|
+
const run: RunFn = async (_cmd, args) => {
|
|
890
|
+
uploadDir = args[3];
|
|
891
|
+
throw new Error("wrangler exploded");
|
|
892
|
+
};
|
|
893
|
+
const cf = makeCfExec(cred, run);
|
|
894
|
+
await assert.rejects(() => cf.pagesDeploy(dir, "kit-data"), /wrangler exploded/);
|
|
895
|
+
assert.notEqual(uploadDir, "");
|
|
896
|
+
assert.equal(existsSync(uploadDir), false, "a failed deploy must not strand a copy of the site");
|
|
897
|
+
});
|
|
898
|
+
|
|
722
899
|
test("pagesProjectList follows the pagination cursor to exhaustion via the API, never wrangler", async () => {
|
|
723
900
|
const { fetchFn, calls } = sequenceFetch([
|
|
724
901
|
{ ok: true, status: 200, body: projectPage(["glsmithandsons"], "c1") },
|
|
@@ -804,14 +981,15 @@ test("pagesDeploy pins wrangler's working directory to the deploy dir", async ()
|
|
|
804
981
|
const { run, calls } = recordingRun(
|
|
805
982
|
"\u2728 Deployment complete! Take a peek over at https://abc.kit-data.pages.dev\n",
|
|
806
983
|
);
|
|
984
|
+
const dir = siteTree(PORTAL);
|
|
807
985
|
const cf = makeCfExec(cred, run);
|
|
808
|
-
await cf.pagesDeploy(
|
|
986
|
+
await cf.pagesDeploy(dir, "kit-data", "main");
|
|
809
987
|
// Unpinned, wrangler resolves .wrangler/tmp against a directory it infers --
|
|
810
988
|
// on a real install that is the immutable server tree, where the mkdir is
|
|
811
989
|
// EPERM and every deploy dies before uploading.
|
|
812
990
|
assert.equal(
|
|
813
991
|
calls[0].cwd,
|
|
814
|
-
|
|
992
|
+
dir,
|
|
815
993
|
"wrangler must run in the deploy dir so its scratch dir lands beside the tree it uploads",
|
|
816
994
|
);
|
|
817
995
|
});
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
// wrangler. `run` is injectable so the wiring is unit-testable without wrangler.
|
|
4
4
|
|
|
5
5
|
import { execFile } from "node:child_process";
|
|
6
|
-
import {
|
|
6
|
+
import { cp, mkdtemp, rm } from "node:fs/promises";
|
|
7
|
+
import { tmpdir } from "node:os";
|
|
8
|
+
import { join, relative } from "node:path";
|
|
7
9
|
import type { HouseCredential } from "./house-credential.js";
|
|
8
10
|
import { readHouseCredential } from "./house-credential.js";
|
|
9
11
|
import { resolveHouseScopedToken } from "./house-scoped-token.js";
|
|
@@ -60,9 +62,24 @@ export interface CfExec {
|
|
|
60
62
|
r2ObjectDelete(bucket: string, key: string): Promise<void>;
|
|
61
63
|
pagesProjectList(): Promise<{ name: string }[]>;
|
|
62
64
|
pagesProjectCreate(name: string, productionBranch: string): Promise<void>;
|
|
63
|
-
|
|
65
|
+
/** `excluded` names the files dropped from the upload set, so the caller can
|
|
66
|
+
* log what was published rather than assert it (Task 1782). */
|
|
67
|
+
pagesDeploy(
|
|
68
|
+
dir: string,
|
|
69
|
+
project: string,
|
|
70
|
+
branch?: string,
|
|
71
|
+
): Promise<{ url: string; excluded: string[] }>;
|
|
64
72
|
}
|
|
65
73
|
|
|
74
|
+
// The filenames `wrangler pages deploy` discovers as its own configuration
|
|
75
|
+
// (wrangler 4.112.0). Task 1782 — the upload walk has a fixed ignore list with
|
|
76
|
+
// no config hook, so a config sitting in the deployed tree is served publicly at
|
|
77
|
+
// /wrangler.toml, disclosing the D1 database id and R2 bucket name, both of
|
|
78
|
+
// which embed the account id. All three names are dropped rather than only the
|
|
79
|
+
// .toml the data-portal template ships, so a tree that later gains a .json
|
|
80
|
+
// config cannot quietly start republishing it.
|
|
81
|
+
const WRANGLER_CONFIG_NAMES = ["wrangler.json", "wrangler.jsonc", "wrangler.toml"];
|
|
82
|
+
|
|
66
83
|
// An object key carries `/` as a real path separator (the data portal's
|
|
67
84
|
// per-person prefixes), so it is encoded segment-wise rather than whole:
|
|
68
85
|
// separators stay separators, and spaces and specials are escaped. This
|
|
@@ -381,34 +398,62 @@ export function makeCfExec(
|
|
|
381
398
|
}
|
|
382
399
|
},
|
|
383
400
|
async pagesDeploy(dir, project, branch) {
|
|
384
|
-
//
|
|
385
|
-
//
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
//
|
|
389
|
-
//
|
|
390
|
-
//
|
|
391
|
-
//
|
|
392
|
-
//
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
401
|
+
// Task 1782 — publish a directory the broker composes, not whatever the
|
|
402
|
+
// account's tree happens to hold. wrangler takes the upload directory from
|
|
403
|
+
// the positional argument and finds its configuration by walking up from
|
|
404
|
+
// the working directory, which are two independent inputs; pointing them
|
|
405
|
+
// at different places is what removes the config from the published assets
|
|
406
|
+
// while leaving the D1 and R2 bindings it declares fully in force.
|
|
407
|
+
// Measured on the house account 2026-07-20: a brand-new project deployed
|
|
408
|
+
// with the config outside the upload received the same bindings and the
|
|
409
|
+
// same config hash as the control that uploaded it.
|
|
410
|
+
const staged = await mkdtemp(join(tmpdir(), "maxy-pages-upload-"));
|
|
411
|
+
const excluded: string[] = [];
|
|
412
|
+
try {
|
|
413
|
+
await cp(dir, staged, {
|
|
414
|
+
recursive: true,
|
|
415
|
+
// Only a config at the root of the tree is wrangler's own. A nested
|
|
416
|
+
// file of the same name is site content and stays published.
|
|
417
|
+
filter: (src) => {
|
|
418
|
+
const rel = relative(dir, src);
|
|
419
|
+
if (!WRANGLER_CONFIG_NAMES.includes(rel)) return true;
|
|
420
|
+
excluded.push(rel);
|
|
421
|
+
return false;
|
|
422
|
+
},
|
|
423
|
+
});
|
|
424
|
+
// wrangler is the only supported Pages upload path (it hashes the tree and
|
|
425
|
+
// uploads only what is missing); the API has no single-call equivalent.
|
|
426
|
+
const args = ["wrangler", "pages", "deploy", staged, "--project-name", project];
|
|
427
|
+
if (branch !== undefined) args.push("--branch", branch);
|
|
428
|
+
// Pin the working directory to the tree being published. Left to
|
|
429
|
+
// inference, wrangler anchors `.wrangler/tmp` at the install's `server/`
|
|
430
|
+
// directory (its nearest package.json/node_modules root), which the
|
|
431
|
+
// platform marks immutable — so the scratch mkdir returns EPERM and the
|
|
432
|
+
// deploy never reaches the upload. `dir` is the realpath-confined deploy
|
|
433
|
+
// directory the route resolved, and it is writable. Since 1782 it is also
|
|
434
|
+
// the only place wrangler can still find this site's config, which no
|
|
435
|
+
// longer travels with the assets.
|
|
436
|
+
const { stdout } = await run("npx", args, env, { cwd: dir });
|
|
437
|
+
// The deployment URL is what the caller relays, so parse it strictly.
|
|
438
|
+
// Strip ANSI first: wrangler colours its output when it thinks it has a
|
|
439
|
+
// terminal, and a colour reset adjacent to the URL would otherwise be
|
|
440
|
+
// swallowed by the host character class and returned as part of it.
|
|
441
|
+
const plain = stdout.replace(/\[[0-9;]*m/g, "");
|
|
442
|
+
// Take the LAST match, not the first: wrangler prints the deployment URL
|
|
443
|
+
// on its closing line, and any earlier .pages.dev mention (an alias or a
|
|
444
|
+
// progress line) would otherwise win and hand back the wrong address.
|
|
445
|
+
const urls = plain.match(/https:\/\/[A-Za-z0-9._-]+\.pages\.dev/g);
|
|
446
|
+
const url = urls?.[urls.length - 1];
|
|
447
|
+
// wrangler exits 0 on some partial paths, so a url-less success is an
|
|
448
|
+
// anomaly to surface with its output, never a silent "deployed".
|
|
449
|
+
if (!url) {
|
|
450
|
+
throw new Error(`storage-broker: pages deploy returned no deployment url: ${stdout}`);
|
|
451
|
+
}
|
|
452
|
+
return { url, excluded: excluded.sort() };
|
|
453
|
+
} finally {
|
|
454
|
+
// A failed deploy must not strand a second copy of the site on disk.
|
|
455
|
+
await rm(staged, { recursive: true, force: true });
|
|
410
456
|
}
|
|
411
|
-
return { url };
|
|
412
457
|
},
|
|
413
458
|
|
|
414
459
|
// --- R2 objects (Task 1691) -------------------------------------------
|
|
@@ -3,7 +3,7 @@ import assert from "node:assert/strict";
|
|
|
3
3
|
import { readFileSync } from "node:fs";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
5
|
import { dirname, resolve } from "node:path";
|
|
6
|
-
import { _internals, startDeviceCode, pollDeviceToken, parseAzureTokenError } from "../auth/device-flow.js";
|
|
6
|
+
import { _internals, startDeviceCode, pollDeviceToken, parseAzureTokenError, refreshAccessToken, } from "../auth/device-flow.js";
|
|
7
7
|
function mockFetch(handler) {
|
|
8
8
|
const calls = [];
|
|
9
9
|
const original = globalThis.fetch;
|
|
@@ -140,4 +140,44 @@ test("regression: device-flow.ts binds no HTTP server", () => {
|
|
|
140
140
|
assert.ok(!/createServer/.test(src), "must not import/use createServer");
|
|
141
141
|
assert.ok(!/\.listen\(/.test(src), "must not bind a listener");
|
|
142
142
|
});
|
|
143
|
+
test("refreshAccessToken carries the parsed Azure error as structured state", async () => {
|
|
144
|
+
const { restore } = mockFetch(() => new Response(JSON.stringify({
|
|
145
|
+
error: "invalid_grant",
|
|
146
|
+
error_description: "AADSTS70008: The refresh token has expired due to inactivity.",
|
|
147
|
+
error_codes: [70008],
|
|
148
|
+
suberror: "token_expired",
|
|
149
|
+
correlation_id: "corr-1",
|
|
150
|
+
}), { status: 400 }));
|
|
151
|
+
try {
|
|
152
|
+
await assert.rejects(() => refreshAccessToken({ clientId: "c", tenantId: "t", refreshToken: "r" }), (err) => {
|
|
153
|
+
const e = err;
|
|
154
|
+
assert.equal(e.name, "TokenRefreshError");
|
|
155
|
+
assert.equal(e.oauthError, "invalid_grant");
|
|
156
|
+
assert.equal(e.statusCode, 400);
|
|
157
|
+
assert.equal(e.azure.aadsts, "AADSTS70008");
|
|
158
|
+
assert.equal(e.azure.suberror, "token_expired");
|
|
159
|
+
assert.equal(e.azure.correlationId, "corr-1");
|
|
160
|
+
assert.match(e.message, /AADSTS70008/, "the body must survive in the message");
|
|
161
|
+
return true;
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
finally {
|
|
165
|
+
restore();
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
test("refreshAccessToken leaves oauthError null on a non-JSON body", async () => {
|
|
169
|
+
const { restore } = mockFetch(() => new Response("<html>upstream exploded</html>", { status: 503 }));
|
|
170
|
+
try {
|
|
171
|
+
await assert.rejects(() => refreshAccessToken({ clientId: "c", tenantId: "t", refreshToken: "r" }), (err) => {
|
|
172
|
+
const e = err;
|
|
173
|
+
assert.equal(e.oauthError, null, "a gateway 5xx carries no OAuth error code");
|
|
174
|
+
assert.equal(e.statusCode, 503);
|
|
175
|
+
assert.match(e.azure.raw, /upstream exploded/, "the raw body must never be discarded");
|
|
176
|
+
return true;
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
finally {
|
|
180
|
+
restore();
|
|
181
|
+
}
|
|
182
|
+
});
|
|
143
183
|
//# sourceMappingURL=device-flow.test.js.map
|