@xano/sdk 1.0.4 → 1.0.6
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/CHANGELOG.md +32 -5
- package/README.md +250 -342
- package/dist/.build-fingerprint +1 -1
- package/dist/agent-file-refresh-67QIX45H.js +39 -0
- package/dist/{answer-shape-LVV2SVBK.js → answer-shape-UCDUKPAN.js} +6 -6
- package/dist/{backend-dir-WZADOK3L.js → backend-dir-3LIL6SCT.js} +16 -15
- package/dist/{backend-slot-NSCTWCUX.js → backend-slot-JREP27UD.js} +4 -4
- package/dist/bin.js +59 -58
- package/dist/{branch-ONWPJ4V6.js → branch-2IPHOAYS.js} +10 -10
- package/dist/{branch-commands-ZT2MJIRS.js → branch-commands-KTKAXBAN.js} +31 -32
- package/dist/bundle.js +9 -39
- package/dist/{capture-3JNUA6C2.js → capture-GW5KNKMB.js} +4 -4
- package/dist/{chunk-FPBGAT5D.js → chunk-26MOFAJT.js} +3 -3
- package/dist/{chunk-O7QOWS6M.js → chunk-2FLIJGBZ.js} +12 -12
- package/dist/{chunk-QAEQGT5I.js → chunk-2WBH5HUY.js} +7 -7
- package/dist/{chunk-37AHZ7JX.js → chunk-3BBIDW3Y.js} +6 -6
- package/dist/{chunk-DGWHAVRG.js → chunk-3EDSPMXN.js} +12 -1
- package/dist/{chunk-2AUV6NXK.js → chunk-3II44CUJ.js} +36 -36
- package/dist/{chunk-7GX445AE.js → chunk-4XHAT7C5.js} +2 -2
- package/dist/{chunk-OOXWYAA4.js → chunk-57A5ZKPO.js} +1 -1
- package/dist/{chunk-OOGXZL7Z.js → chunk-5KJBWIDZ.js} +84 -6
- package/dist/{chunk-5YL5OC2G.js → chunk-5QMJOE2K.js} +6 -6
- package/dist/{chunk-3H3EPMFY.js → chunk-5TVFLG3C.js} +2 -2
- package/dist/{chunk-WFMVKY7I.js → chunk-5YQV35C2.js} +9 -9
- package/dist/{chunk-NA3PXMEF.js → chunk-64WWE3EF.js} +1 -1
- package/dist/{chunk-FMOEVAGT.js → chunk-6X3MY2JP.js} +3 -3
- package/dist/{chunk-2LVTBPW2.js → chunk-6X6BJN6Y.js} +3 -3
- package/dist/{chunk-DYG5D3FD.js → chunk-763M6LX3.js} +16 -2
- package/dist/{chunk-EESV6NU2.js → chunk-7FIMUFBP.js} +2 -2
- package/dist/{chunk-CFSFBKHP.js → chunk-7GAIJW62.js} +2 -2
- package/dist/{chunk-6R7S775T.js → chunk-7REDHC4N.js} +2 -2
- package/dist/chunk-7VR4IO5B.js +44 -0
- package/dist/chunk-A7MRZ4GF.js +78 -0
- package/dist/{chunk-D5ZEAF4G.js → chunk-ATJ2W7DC.js} +81 -58
- package/dist/{chunk-BUJRS7XB.js → chunk-AVS4WPPY.js} +2 -2
- package/dist/{chunk-MEE5RZ6G.js → chunk-BL3AZ3AP.js} +2 -2
- package/dist/chunk-BTVUYHWV.js +111 -0
- package/dist/{chunk-T4DUFQ2S.js → chunk-CCU5CCRX.js} +5 -5
- package/dist/{chunk-5T2CTWTB.js → chunk-CHINR7WD.js} +6 -6
- package/dist/{chunk-VD32O6KZ.js → chunk-CJDPSCMX.js} +45 -5
- package/dist/{chunk-3HOGFGKG.js → chunk-D3KEPRRN.js} +2 -2
- package/dist/{chunk-SBR2WZXG.js → chunk-D7BUMOKU.js} +60 -53
- package/dist/{chunk-WRBKLYSJ.js → chunk-DNBP4GJN.js} +4 -3
- package/dist/{chunk-JTUKLCXS.js → chunk-DXUICABI.js} +1 -1
- package/dist/{chunk-XMDDBEEM.js → chunk-E763QI3G.js} +2 -2
- package/dist/{chunk-KTGRGWZW.js → chunk-EADVVTDK.js} +7 -7
- package/dist/{chunk-FJWZ5OVV.js → chunk-ENMBEXOP.js} +3 -3
- package/dist/{chunk-OPHB5ORL.js → chunk-EQFYOOO6.js} +171 -92
- package/dist/{chunk-WOGJB2F6.js → chunk-FNLTFOUD.js} +4 -9
- package/dist/{chunk-II747OWE.js → chunk-FQ53GTII.js} +10 -10
- package/dist/{chunk-JP7M7OU7.js → chunk-FU3VCE5A.js} +46 -27
- package/dist/{chunk-OGBMUST4.js → chunk-GHQ4BVI4.js} +14 -14
- package/dist/{chunk-45YPFB7B.js → chunk-GLY552SI.js} +84 -57
- package/dist/{chunk-QV3GXQRE.js → chunk-GOLFAEUV.js} +2 -2
- package/dist/{chunk-L2GLOJAO.js → chunk-GW5RHGOB.js} +22 -22
- package/dist/{chunk-A6QTTJUI.js → chunk-GWTFI3GA.js} +2 -2
- package/dist/{chunk-MCTIKRMN.js → chunk-GZHLCUZ6.js} +8 -8
- package/dist/{chunk-664LSWE5.js → chunk-HCG7NDIL.js} +4 -4
- package/dist/{chunk-7PMVIHB3.js → chunk-I3H3HCPY.js} +50 -29
- package/dist/{chunk-LIVN53UV.js → chunk-I3VHW6XM.js} +31 -31
- package/dist/{chunk-C4FHQA7R.js → chunk-IF4PEGVD.js} +8 -8
- package/dist/{chunk-WFG67AYS.js → chunk-IMELQ2I6.js} +3 -3
- package/dist/{chunk-3P3HXN76.js → chunk-ITC2R2OT.js} +11 -11
- package/dist/{chunk-W5ONYLOP.js → chunk-IXFJORNH.js} +4 -4
- package/dist/{chunk-HMLGM2MW.js → chunk-IYXL5NYU.js} +260 -32
- package/dist/{chunk-2B22WWKL.js → chunk-JFBRXRJD.js} +59 -35
- package/dist/chunk-JI3BLXWQ.js +107 -0
- package/dist/{chunk-4DJTQ6W4.js → chunk-JIKGT7DO.js} +2 -1
- package/dist/{chunk-O5V3YH5P.js → chunk-JRVQ7M7W.js} +8 -8
- package/dist/{chunk-4APOHK7Y.js → chunk-JXVJGF3Y.js} +2 -2
- package/dist/chunk-KPFS3RGM.js +257 -0
- package/dist/{chunk-PML67X22.js → chunk-LAOMN6QQ.js} +3 -3
- package/dist/{chunk-TTVAHCWP.js → chunk-LBJA7IEM.js} +370 -45
- package/dist/{chunk-KUTFFHUM.js → chunk-LD6ARK3A.js} +2 -2
- package/dist/{chunk-HUSH7LRI.js → chunk-LL7SGTRC.js} +36 -33
- package/dist/{chunk-I2BGYNHD.js → chunk-M5CSVB23.js} +7 -7
- package/dist/{chunk-UCQ2VUTG.js → chunk-M6ZFSTIZ.js} +2 -2
- package/dist/{chunk-MNVDVR3M.js → chunk-MBDFH7XB.js} +4 -4
- package/dist/{chunk-QXTKSOFI.js → chunk-MF4W6FHU.js} +1 -1
- package/dist/{chunk-RX3EMQGN.js → chunk-MFWF2NZJ.js} +12 -5
- package/dist/{chunk-SEUCZZCP.js → chunk-N5I37JFB.js} +3 -3
- package/dist/{chunk-IJ3SXSZM.js → chunk-ND43ZOS3.js} +6 -6
- package/dist/chunk-NDWVJ2QZ.js +67 -0
- package/dist/{chunk-E65QIWOO.js → chunk-NPODGBVJ.js} +4 -4
- package/dist/{chunk-CYB7UQA2.js → chunk-OIKLDDYC.js} +5 -5
- package/dist/{chunk-MLGI2SRQ.js → chunk-PFBXSVZF.js} +4 -4
- package/dist/{chunk-AM4FKL4J.js → chunk-PL7AIAWS.js} +12 -12
- package/dist/{chunk-S7E2AHV3.js → chunk-PMMHSX4H.js} +26 -9
- package/dist/{chunk-WL2DSNJV.js → chunk-Q22BMRPF.js} +2 -2
- package/dist/{chunk-3FN2BIGB.js → chunk-QJM5XZ4K.js} +6 -6
- package/dist/{chunk-EWCDPFW5.js → chunk-QXYMDARD.js} +4 -4
- package/dist/{chunk-MLPDSGJQ.js → chunk-QZEAANWP.js} +5 -5
- package/dist/{chunk-ESZ2FF57.js → chunk-RIN4YY34.js} +88 -74
- package/dist/{chunk-37FBPMNE.js → chunk-S56YBYMN.js} +5 -2
- package/dist/{chunk-CBYQ2ZN3.js → chunk-SKEG3V2V.js} +2 -2
- package/dist/{chunk-4PQHO74B.js → chunk-SLGJIWCY.js} +4 -4
- package/dist/{chunk-IVKRT476.js → chunk-SPITRSOF.js} +2 -2
- package/dist/{chunk-BUECLQXK.js → chunk-SPKA2LV6.js} +4 -4
- package/dist/{chunk-HHW5AWVD.js → chunk-SSITMX7I.js} +30 -30
- package/dist/{chunk-OPG4DYX2.js → chunk-T4LJ5UR2.js} +29 -7
- package/dist/{chunk-LXNQWHZM.js → chunk-TECTL2NU.js} +4 -4
- package/dist/{chunk-E6H5ZEV3.js → chunk-TTEIDD5Q.js} +3 -3
- package/dist/{chunk-6VBTPV2Y.js → chunk-U35MTOXQ.js} +3 -3
- package/dist/{chunk-UKUIUS3E.js → chunk-U6MTGB46.js} +5 -5
- package/dist/{chunk-Y2ZLKBM6.js → chunk-UD2Z7K6W.js} +4 -4
- package/dist/{chunk-IXUPUFCG.js → chunk-UIVMR7UK.js} +2 -2
- package/dist/{chunk-UDE5C2XN.js → chunk-VDHA5SSQ.js} +3 -3
- package/dist/{chunk-5W7DOMIU.js → chunk-VJFMUJWZ.js} +4 -4
- package/dist/{chunk-XNCP4KYO.js → chunk-VQPDATQT.js} +1 -1
- package/dist/{chunk-KCAL4QYP.js → chunk-VW4CWVYX.js} +4 -4
- package/dist/chunk-WAVNUTMT.js +9 -0
- package/dist/{chunk-DIG3NITC.js → chunk-WBH4KJWM.js} +3 -3
- package/dist/{chunk-HSEQYBDO.js → chunk-WZHLMU6T.js} +3 -3
- package/dist/{chunk-WYEQFD6A.js → chunk-XFBGXB7X.js} +173 -105
- package/dist/{chunk-UI4OPTYR.js → chunk-Y453TW6J.js} +2 -2
- package/dist/{chunk-LUTMOHOW.js → chunk-YGLMRH5U.js} +9 -9
- package/dist/{chunk-GPI3OWRE.js → chunk-YHB34BN6.js} +2 -1
- package/dist/{chunk-5WGVIXMD.js → chunk-YKP4ZKVO.js} +14 -10
- package/dist/{chunk-MN2PB6WB.js → chunk-YR2I5HGE.js} +3 -3
- package/dist/{chunk-ZG7E72VI.js → chunk-YYC2DZMG.js} +7 -7
- package/dist/{chunk-D64XUF5Q.js → chunk-YYLUBYXM.js} +16 -16
- package/dist/{chunk-VRVKNY4A.js → chunk-Z4ZGTCCD.js} +8 -8
- package/dist/{chunk-44B4V2LR.js → chunk-ZDP6GDAB.js} +142 -142
- package/dist/{chunk-ET5DSBAC.js → chunk-ZJSTUD6D.js} +8 -8
- package/dist/cli.d.ts +36 -26
- package/dist/cli.js +57 -56
- package/dist/{codegen-command-HTWIW56U.js → codegen-command-R5IASBFC.js} +78 -72
- package/dist/codegen.d.ts +2 -2
- package/dist/codegen.js +2 -2
- package/dist/{commands-CVFYC4GK.js → commands-H7CPMMHH.js} +3 -3
- package/dist/{completion-AUEQC4XJ.js → completion-W5ZAI6TN.js} +12 -12
- package/dist/{config-JU6OQC77.js → config-MZ5KG4EP.js} +5 -5
- package/dist/{deploy-command-5WTFHMBT.js → deploy-command-34T2LKQ5.js} +64 -63
- package/dist/deploy-source-YLQ7WMYR.js +82 -0
- package/dist/{dev-env-sync-X636HLMK.js → dev-env-sync-TMJTNU3U.js} +58 -57
- package/dist/{diagnostics-LSMGB4TY.js → diagnostics-OMN5Y2AH.js} +2 -2
- package/dist/{display-name-hint-DMORHANO.js → display-name-hint-ZJGFNJKQ.js} +12 -12
- package/dist/{emit-hOFbgzde.d.ts → emit-D125xxty.d.ts} +67 -21
- package/dist/env-example-refresh-CQP3ZMKM.js +133 -0
- package/dist/{env-pull-command-WZZ7RL2E.js → env-pull-command-UTG6IC2K.js} +53 -53
- package/dist/{env-target-PO3MOLH5.js → env-target-FZROWYFS.js} +14 -14
- package/dist/{env-var-command-YKTJZFJN.js → env-var-command-VYDBQJJW.js} +51 -50
- package/dist/{ephemeral-BMFY55BQ.js → ephemeral-BIE6FMJV.js} +10 -10
- package/dist/{ephemeral-command-VDSQCOYL.js → ephemeral-command-OZ26RGXF.js} +54 -54
- package/dist/{ephemeral-state-6TY4JIPA.js → ephemeral-state-SNZOX2YK.js} +12 -12
- package/dist/{generate-command-3NTNRQRS.js → generate-command-4HR7MR36.js} +87 -79
- package/dist/{gitignore-FWPEDX6C.js → gitignore-EWQBXNX2.js} +20 -19
- package/dist/{guards-EJU2ONAX.js → guards-KYEOCVHN.js} +7 -7
- package/dist/{hosted-file-PSHJB3HX.js → hosted-file-S7YUQAH6.js} +2 -2
- package/dist/{impersonate-command-QEJA72Q2.js → impersonate-command-WC7OGKUM.js} +44 -43
- package/dist/{import-TBTOTU52.js → import-7Z4GCCPO.js} +6 -6
- package/dist/index.d.ts +14 -20
- package/dist/index.js +14 -14
- package/dist/init-command-HAO3WXH3.js +128 -0
- package/dist/{init-modules-HZRQFRLE.js → init-modules-NSKD4ASY.js} +12 -11
- package/dist/{init-web-Y2PBNJTQ.js → init-web-MKFFOQUU.js} +3 -3
- package/dist/internal.d.ts +5 -5
- package/dist/internal.js +61 -35
- package/dist/{io-ZUKAGFVE.js → io-PGTCBSIQ.js} +7 -5
- package/dist/{keep-data-merge-X5LDDCI3.js → keep-data-merge-QR2TMKEO.js} +33 -34
- package/dist/{lambda-config-reconcile-OUZ4OYAB.js → lambda-config-reconcile-7FJXXV6V.js} +4 -4
- package/dist/{landed-6VO7CX5P.js → landed-F7PCHGCK.js} +4 -4
- package/dist/{landing-record-QYECWLQ5.js → landing-record-MWXFIRCP.js} +26 -25
- package/dist/{live-diff-2S7E3SBZ.js → live-diff-5E2BQWQ7.js} +10 -9
- package/dist/local-engine-choice-VD5LNXJU.js +80 -0
- package/dist/{local-engine-command-HMTQK7MN.js → local-engine-command-RYLGMQ2O.js} +96 -95
- package/dist/{local-engine-config-5U3SC434.js → local-engine-config-W3KB7RWM.js} +2 -2
- package/dist/{local-engine-deploy-TXAOYRGF.js → local-engine-deploy-6O7NKZCA.js} +17 -17
- package/dist/{local-engine-process-6VZ7JJBP.js → local-engine-process-ZLLZEIRF.js} +12 -12
- package/dist/{local-engine-state-TJWPWCC4.js → local-engine-state-OCW5YDD7.js} +3 -3
- package/dist/{local-engine-update-check-R5SPDVEJ.js → local-engine-update-check-LVX4HBBI.js} +8 -8
- package/dist/{lock-TS465GVY.js → lock-HDCHD2ON.js} +5 -3
- package/dist/{lock-commands-4VT3L5W5.js → lock-commands-X2OECR4R.js} +62 -61
- package/dist/{login-command-O6WA4FYL.js → login-command-RLLKD565.js} +31 -30
- package/dist/{logout-command-6CPWGFY2.js → logout-command-XDMSXCDO.js} +17 -17
- package/dist/{loop-UFHKSOQ4.js → loop-SUB6C2LK.js} +9 -10
- package/dist/{marketplace-command-HKACSYKS.js → marketplace-command-2NHHY2X3.js} +89 -53
- package/dist/{marketplace-resolve-KLFYVRWS.js → marketplace-resolve-OTZYT4FG.js} +9 -8
- package/dist/{meta-client-73PX6UGJ.js → meta-client-TMHVBZFY.js} +15 -15
- package/dist/{module-manifest-GIKFNXPE.js → module-manifest-FNMW23IX.js} +7 -4
- package/dist/node.d.ts +5 -5
- package/dist/node.js +63 -63
- package/dist/operation-outcome-RN62735X.js +51 -0
- package/dist/{output-target-SZMBNYF4.js → output-target-MOLCTPBP.js} +21 -20
- package/dist/{package-manager-PRAHUSCN.js → package-manager-K762W7XT.js} +2 -2
- package/dist/{plan-disclosure-BHYG7TZ7.js → plan-disclosure-CY7AF6KP.js} +21 -22
- package/dist/{plugin-contributions-X4V22PJQ.js → plugin-contributions-WR26U7NT.js} +6 -6
- package/dist/{plugin-prompt-DKNQHW6Y.js → plugin-prompt-ZUYQQIX4.js} +5 -5
- package/dist/{plugin-questions-CQRVOWFK.js → plugin-questions-HAZOQ67R.js} +4 -4
- package/dist/plugin.d.ts +254 -10
- package/dist/{preflight-command-EBQ6XQF3.js → preflight-command-OHJXYND3.js} +70 -70
- package/dist/{profile-command-NPKBJYPM.js → profile-command-6JWT2BTL.js} +33 -32
- package/dist/{profile-pointer-UOO7JNFG.js → profile-pointer-PDA5XBIB.js} +5 -5
- package/dist/{profile-select-74TRDEPD.js → profile-select-45G5VPJK.js} +2 -2
- package/dist/{project-dependency-RRMTWOPC.js → project-dependency-GZWWGWEW.js} +13 -10
- package/dist/{project-sdk-FOR4IOXL.js → project-sdk-3W72H5QO.js} +4 -4
- package/dist/promote-command-UYAMUXKB.js +146 -0
- package/dist/{prompt-5GUQTCSP.js → prompt-U37K5RPQ.js} +4 -4
- package/dist/{publish-command-LGLZBOCB.js → publish-command-BUS27HGB.js} +138 -66
- package/dist/pull-command-ZGUNP27P.js +168 -0
- package/dist/{pull-superseded-GGURV5J3.js → pull-superseded-EZBGYRZF.js} +4 -4
- package/dist/{raw-where-EoWl5fqY.d.ts → raw-where-ZMLND6AG.d.ts} +20 -3
- package/dist/release-command-BQ6OHS3P.js +150 -0
- package/dist/{release-ns-command-EIBN3JVM.js → release-ns-command-ATGVBVIU.js} +94 -94
- package/dist/{retry-command-Y5YJGOH3.js → retry-command-QJ57WVW7.js} +9 -9
- package/dist/{routes-manifest-3BNZIVST.js → routes-manifest-YR4ZIMLM.js} +16 -8
- package/dist/routes-manifest-file-UALYSZLY.js +41 -0
- package/dist/scaffold.js +3 -3
- package/dist/{secrets-file-FUG7WCES.js → secrets-file-LMS7KX3E.js} +20 -19
- package/dist/{secrets-fill-command-QEOCUOAY.js → secrets-fill-command-QNBDGCGM.js} +61 -60
- package/dist/{seed-GJHJSEUE.js → seed-SZ6OS5DQ.js} +9 -9
- package/dist/{source-resolve-DMDZVPMM.js → source-resolve-MKLNYFWG.js} +24 -24
- package/dist/{static-host-WM24RG25.js → static-host-ONEHA4LI.js} +10 -10
- package/dist/{status-command-XUH5OGQX.js → status-command-XKIFKBGM.js} +57 -56
- package/dist/{store-CfgPaVPO.d.ts → store-Bg4Na6Sm.d.ts} +4 -4
- package/dist/{store-MR7IKXKK.js → store-X6ZH7EC3.js} +7 -7
- package/dist/sveltekit.d.ts +5 -5
- package/dist/sveltekit.js +1 -1
- package/dist/sync-baseline-DOV5AGIO.js +36 -0
- package/dist/{sync-contributions-DHP7XSTX.js → sync-contributions-HNVHDIQW.js} +21 -13
- package/dist/sync-record-PRXHLK4S.js +42 -0
- package/dist/{table-ZBDPKMNH.js → table-DC36QA4Y.js} +10 -10
- package/dist/{tables-command-X3JK7VSK.js → tables-command-UQLKTELN.js} +44 -43
- package/dist/{tenant-GKXMOYLK.js → tenant-EKNQGG5A.js} +11 -11
- package/dist/{tenant-command-P27EQHBU.js → tenant-command-2LWP2MPB.js} +105 -100
- package/dist/{test-command-A4G2FP7G.js → test-command-IU5MBBXY.js} +44 -43
- package/dist/{tests-C55M5EQS.js → tests-RG2Y5EQ4.js} +7 -7
- package/dist/{token-CMAB35GD.js → token-7AWSJLKO.js} +13 -13
- package/dist/toolchain-hooks-4ZMQLBPQ.js +46 -0
- package/dist/{toolchain-modules-3M7QDJBV.js → toolchain-modules-VU7SURVJ.js} +9 -6
- package/dist/toolchain-peers-CIDNEEQV.js +28 -0
- package/dist/tracked-backend-4BHSV7NC.js +81 -0
- package/dist/{update-check-LNNKIMML.js → update-check-A7FXIINW.js} +60 -59
- package/dist/{upgrade-command-7EUXML3P.js → upgrade-command-C5KBITFI.js} +64 -63
- package/dist/{whoami-command-KNWFWAX6.js → whoami-command-7WQII2H4.js} +16 -16
- package/dist/{workspace-TGPYOODG.js → workspace-Z46PUZNI.js} +6 -6
- package/dist/{workspace-binding-2TWZBHQY.js → workspace-binding-JE6YNDZJ.js} +15 -15
- package/dist/{workspace-command-T7Z2BDHD.js → workspace-command-FC4IMLAE.js} +119 -88
- package/dist/{workspace-env-VA7XN3UX.js → workspace-env-N4ZPFT6A.js} +17 -16
- package/dist/{workspace-export-AIGM6LC7.js → workspace-export-3A5BZTPS.js} +6 -6
- package/dist/{writable-FYJBTJOU.js → writable-D7KCZI5N.js} +4 -4
- package/dist/{xano-BSHYVFSE.js → xano-LCI7VWPS.js} +9 -9
- package/dist/{xanosdk-import-J6SRBZHW.js → xanosdk-import-P2A2KSXM.js} +10 -10
- package/dist/xanosdk-project-6AGMW2SL.js +42 -0
- package/guides/README.md +1 -0
- package/guides/authoring.md +3 -5
- package/guides/bundle.md +45 -0
- package/guides/cli.md +36 -34
- package/guides/codegen.md +5 -4
- package/guides/codes.md +16 -11
- package/guides/deploying.md +115 -58
- package/guides/environment.md +13 -13
- package/guides/marketplace.md +21 -0
- package/guides/module-contract.md +80 -4
- package/guides/project-structure.md +14 -0
- package/guides/typed-frontend.md +37 -0
- package/llms/client.md +14 -5
- package/llms/errors.md +1 -1
- package/llms/filters.md +4 -0
- package/llms/kinds-core.md +1 -1
- package/llms/statements-data.md +3 -2
- package/llms/tests.md +2 -2
- package/llms/toolchain.md +12 -0
- package/llms-full.txt +47 -21
- package/llms.txt +10 -10
- package/manifest.json +110 -107
- package/package.json +4 -4
- package/dist/agent-file-refresh-LB6KIMFY.js +0 -38
- package/dist/chunk-XXZZGXW2.js +0 -243
- package/dist/deploy-source-5CET3A5D.js +0 -81
- package/dist/env-example-refresh-ZO6XAV44.js +0 -127
- package/dist/init-command-27SFBW2F.js +0 -126
- package/dist/local-engine-choice-6BSPEG3E.js +0 -79
- package/dist/operation-outcome-2P4BVSEV.js +0 -51
- package/dist/promote-command-4F2NAE6P.js +0 -141
- package/dist/pull-command-WQFPLITW.js +0 -162
- package/dist/release-command-2OTNVMIL.js +0 -147
- package/dist/toolchain-hooks-BGZBDFAT.js +0 -96
- package/dist/tracked-backend-PZGUWD5J.js +0 -80
- package/dist/xanosdk-project-6KTCO47O.js +0 -41
|
@@ -1,16 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
openBrowser
|
|
3
|
+
} from "./chunk-FQOF7E2E.js";
|
|
1
4
|
import {
|
|
2
5
|
isAwaited,
|
|
3
6
|
microserviceLine,
|
|
4
7
|
readyRatio,
|
|
5
8
|
waitForMicroservices
|
|
6
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-QXYMDARD.js";
|
|
7
10
|
import {
|
|
8
11
|
passwordHashesWarning,
|
|
9
12
|
passwordOrigin
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import {
|
|
12
|
-
openBrowser
|
|
13
|
-
} from "./chunk-FQOF7E2E.js";
|
|
13
|
+
} from "./chunk-ZJSTUD6D.js";
|
|
14
14
|
import {
|
|
15
15
|
EXIT_STATIC_FAILED,
|
|
16
16
|
assertStaticHostExists,
|
|
@@ -25,13 +25,13 @@ import {
|
|
|
25
25
|
staticRetryHint,
|
|
26
26
|
unknownStaticOutcome,
|
|
27
27
|
warnStaticTeardown
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-EADVVTDK.js";
|
|
29
29
|
import {
|
|
30
30
|
HostedFilesUnresolvedError,
|
|
31
31
|
ImportNotSentError,
|
|
32
32
|
XanoSdkImportRefusal,
|
|
33
33
|
xanosdkImport
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-ND43ZOS3.js";
|
|
35
35
|
import {
|
|
36
36
|
archiveHostedFiles,
|
|
37
37
|
decodeWorkspaceArchive,
|
|
@@ -48,23 +48,23 @@ import {
|
|
|
48
48
|
missingLockDir,
|
|
49
49
|
refuseCompileValueFlags,
|
|
50
50
|
refuseValueFlagsBesideBundle
|
|
51
|
-
} from "./chunk-
|
|
51
|
+
} from "./chunk-XFBGXB7X.js";
|
|
52
52
|
import {
|
|
53
53
|
recordDeployed
|
|
54
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-WZHLMU6T.js";
|
|
55
55
|
import {
|
|
56
56
|
lookupEphemeral
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-3II44CUJ.js";
|
|
58
58
|
import {
|
|
59
59
|
getAccessToken
|
|
60
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-YGLMRH5U.js";
|
|
61
61
|
import {
|
|
62
62
|
otherCredentialRefusal
|
|
63
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-ITC2R2OT.js";
|
|
64
64
|
import {
|
|
65
65
|
engineNameForProject,
|
|
66
66
|
getEngineRecord
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-Q22BMRPF.js";
|
|
68
68
|
import {
|
|
69
69
|
environmentKey,
|
|
70
70
|
ephemeralLandedOn,
|
|
@@ -75,7 +75,7 @@ import {
|
|
|
75
75
|
readEphemeralState,
|
|
76
76
|
recordStaticUrl,
|
|
77
77
|
setEnvironment
|
|
78
|
-
} from "./chunk-
|
|
78
|
+
} from "./chunk-U6MTGB46.js";
|
|
79
79
|
import {
|
|
80
80
|
selectDeployArm
|
|
81
81
|
} from "./chunk-ZYJP6BOO.js";
|
|
@@ -89,41 +89,41 @@ import {
|
|
|
89
89
|
namedEphemeral,
|
|
90
90
|
renameEphemeral,
|
|
91
91
|
waitUntilReady
|
|
92
|
-
} from "./chunk-
|
|
92
|
+
} from "./chunk-SPKA2LV6.js";
|
|
93
93
|
import {
|
|
94
94
|
pipedYes,
|
|
95
95
|
retryCommand,
|
|
96
96
|
withheldNote,
|
|
97
97
|
yesRerun
|
|
98
|
-
} from "./chunk-
|
|
98
|
+
} from "./chunk-6X3MY2JP.js";
|
|
99
99
|
import {
|
|
100
100
|
andList
|
|
101
101
|
} from "./chunk-622HUCZT.js";
|
|
102
102
|
import {
|
|
103
103
|
contextFlags,
|
|
104
104
|
credentialFileOf
|
|
105
|
-
} from "./chunk-
|
|
105
|
+
} from "./chunk-N5I37JFB.js";
|
|
106
106
|
import {
|
|
107
107
|
describeWrite,
|
|
108
108
|
noteLanded
|
|
109
109
|
} from "./chunk-4KHEMC32.js";
|
|
110
110
|
import {
|
|
111
111
|
readLockFile
|
|
112
|
-
} from "./chunk-
|
|
112
|
+
} from "./chunk-CJDPSCMX.js";
|
|
113
113
|
import {
|
|
114
114
|
storedColumnsOf,
|
|
115
115
|
withStoredColumns
|
|
116
|
-
} from "./chunk-
|
|
116
|
+
} from "./chunk-MFWF2NZJ.js";
|
|
117
117
|
import {
|
|
118
118
|
SENT_AFTERMATH,
|
|
119
119
|
TransportError,
|
|
120
120
|
certificateFailureCode,
|
|
121
121
|
closeSentence,
|
|
122
122
|
withoutReadAftermath
|
|
123
|
-
} from "./chunk-
|
|
123
|
+
} from "./chunk-YR2I5HGE.js";
|
|
124
124
|
import {
|
|
125
125
|
DEFAULT_PROFILE
|
|
126
|
-
} from "./chunk-
|
|
126
|
+
} from "./chunk-MF4W6FHU.js";
|
|
127
127
|
import {
|
|
128
128
|
CliError,
|
|
129
129
|
EXIT_OUTCOME_UNKNOWN,
|
|
@@ -151,10 +151,10 @@ import {
|
|
|
151
151
|
withSpinner,
|
|
152
152
|
writeJson,
|
|
153
153
|
writeTargetPayload
|
|
154
|
-
} from "./chunk-
|
|
154
|
+
} from "./chunk-D7BUMOKU.js";
|
|
155
155
|
import {
|
|
156
156
|
codePinnedTables
|
|
157
|
-
} from "./chunk-
|
|
157
|
+
} from "./chunk-5KJBWIDZ.js";
|
|
158
158
|
import {
|
|
159
159
|
shellQuote
|
|
160
160
|
} from "./chunk-5ZSO4T2G.js";
|
|
@@ -204,7 +204,7 @@ function deriveDisplay(bundleText, cwd, source) {
|
|
|
204
204
|
return basename(cwd) || "xanosdk-app";
|
|
205
205
|
}
|
|
206
206
|
async function assertNoSeedLeaks(dir, values, opts = {}) {
|
|
207
|
-
const { assertStaticDir, findSeedLeaks, StaticDirError } = await import("./static-host-
|
|
207
|
+
const { assertStaticDir, findSeedLeaks, StaticDirError } = await import("./static-host-ONEHA4LI.js");
|
|
208
208
|
try {
|
|
209
209
|
assertStaticDir(dir, "--static", void 0, opts);
|
|
210
210
|
} catch (err) {
|
|
@@ -266,11 +266,11 @@ async function runDeployedTests(auth, summary, args) {
|
|
|
266
266
|
try {
|
|
267
267
|
return await runTestsOrThrow(auth, summary, args, settled, notRun);
|
|
268
268
|
} catch (err) {
|
|
269
|
-
const { isSuiteUnreachable, suiteUnreachableCheck } = await import("./test-command-
|
|
269
|
+
const { isSuiteUnreachable, suiteUnreachableCheck } = await import("./test-command-IU5MBBXY.js");
|
|
270
270
|
const message = err instanceof Error ? err.message : String(err);
|
|
271
271
|
const reason = isSuiteUnreachable(err) ? `${message.split("\n")[0] ?? message}
|
|
272
272
|
${suiteUnreachableCheck(
|
|
273
|
-
summary.
|
|
273
|
+
summary.engine !== void 0 ? { kind: "local", env: summary.engine.name } : { kind: "ephemeral", env: summary.ephemeral?.name ?? null },
|
|
274
274
|
args
|
|
275
275
|
)}.` : withoutReadAftermath(message);
|
|
276
276
|
const again = testRunAllCommand(summary, args);
|
|
@@ -283,27 +283,27 @@ ${suiteUnreachableCheck(
|
|
|
283
283
|
}
|
|
284
284
|
}
|
|
285
285
|
function testRunAllCommand(summary, args) {
|
|
286
|
-
const on = summary.
|
|
286
|
+
const on = summary.engine !== void 0 ? `local:${shellQuote(summary.engine.name)}` : summary.ephemeral?.name !== void 0 ? `ephemeral:${shellQuote(summary.ephemeral.name)}` : void 0;
|
|
287
287
|
if (on === void 0) return void 0;
|
|
288
288
|
const kind = args.kind !== void 0 ? ` --kind ${args.kind}` : "";
|
|
289
289
|
const concurrency = args.concurrency !== void 0 ? ` --concurrency ${args.concurrency}` : "";
|
|
290
|
-
const flags = summary.
|
|
290
|
+
const flags = summary.engine !== void 0 ? "" : contextFlags(args);
|
|
291
291
|
return `xanosdk test run-all --on ${on}${kind}${concurrency}${flags}`;
|
|
292
292
|
}
|
|
293
293
|
async function testSummaryOf(outcomes, notRun = []) {
|
|
294
|
-
const { suiteCounts, testRow } = await import("./test-command-
|
|
294
|
+
const { suiteCounts, testRow } = await import("./test-command-IU5MBBXY.js");
|
|
295
295
|
return { ...suiteCounts(outcomes, notRun), tests: outcomes.map(testRow) };
|
|
296
296
|
}
|
|
297
297
|
async function runTestsOrThrow(auth, summary, args, settled, notRun) {
|
|
298
|
-
const { runSuite, printTally, noTestsFound, EXIT_TESTS_FAILED } = await import("./test-command-
|
|
299
|
-
const { qualifiedName } = await import("./tests-
|
|
298
|
+
const { runSuite, printTally, noTestsFound, EXIT_TESTS_FAILED } = await import("./test-command-IU5MBBXY.js");
|
|
299
|
+
const { qualifiedName } = await import("./tests-RG2Y5EQ4.js");
|
|
300
300
|
if (summary.url === void 0) {
|
|
301
301
|
warn("Skipped --test: the ephemeral reported no base URL to run against.", "deploy.tests-not-run");
|
|
302
302
|
return void 0;
|
|
303
303
|
}
|
|
304
|
-
const local = summary.
|
|
304
|
+
const local = summary.engine;
|
|
305
305
|
const name = summary.ephemeral?.name;
|
|
306
|
-
const target = local ? { base: summary.url, workspaceId: local.workspaceId, label: `
|
|
306
|
+
const target = local ? { base: summary.url, workspaceId: local.workspaceId, label: `Xano Engine "${local.name}"` } : {
|
|
307
307
|
base: summary.url,
|
|
308
308
|
workspaceId: 1,
|
|
309
309
|
// Named as `test run-all` names it: `ephemeral "x" ("Display")`.
|
|
@@ -339,15 +339,15 @@ async function ignoreBackendSecretFilesRead(args) {
|
|
|
339
339
|
if (args.bundle !== void 0 || args.file === void 0) return;
|
|
340
340
|
const paths = [];
|
|
341
341
|
if (args.envFile === void 0) {
|
|
342
|
-
const { defaultWorkspaceEnvPath } = await import("./workspace-env-
|
|
342
|
+
const { defaultWorkspaceEnvPath } = await import("./workspace-env-N4ZPFT6A.js");
|
|
343
343
|
paths.push(defaultWorkspaceEnvPath(args.file));
|
|
344
344
|
}
|
|
345
345
|
if (args.secretsFile === void 0) {
|
|
346
|
-
const { defaultWorkspaceSecretsPath } = await import("./secrets-file-
|
|
346
|
+
const { defaultWorkspaceSecretsPath } = await import("./secrets-file-LMS7KX3E.js");
|
|
347
347
|
paths.push(defaultWorkspaceSecretsPath(args.file));
|
|
348
348
|
}
|
|
349
|
-
const { gitSaysIgnored } = await import("./store-
|
|
350
|
-
const { ensureSecretPathGitignored, refuseIfTracked, secretPathLabel } = await import("./gitignore-
|
|
349
|
+
const { gitSaysIgnored } = await import("./store-X6ZH7EC3.js");
|
|
350
|
+
const { ensureSecretPathGitignored, refuseIfTracked, secretPathLabel } = await import("./gitignore-EWQBXNX2.js");
|
|
351
351
|
for (const path of paths) {
|
|
352
352
|
if (!existsSync(path)) continue;
|
|
353
353
|
if (gitSaysIgnored(path) !== false) continue;
|
|
@@ -371,7 +371,7 @@ async function ignoreBackendSecretFilesRead(args) {
|
|
|
371
371
|
}
|
|
372
372
|
function recordedLanding(dest, isEphemeral, flags = "") {
|
|
373
373
|
if (dest.kind === "workspace") return `\`xanosdk promote <name>${flags}\``;
|
|
374
|
-
if (isEphemeral) return `\`xanosdk deploy release:<name
|
|
374
|
+
if (isEphemeral) return `\`xanosdk deploy release:<name> --ephemeral${flags}\``;
|
|
375
375
|
return `\`xanosdk tenant deploy ${shellQuote(dest.name)} <name>${flags}\``;
|
|
376
376
|
}
|
|
377
377
|
function storeAsReleaseHint(dest, isEphemeral, typed, flags = "", yes = false, shipsFiles = false) {
|
|
@@ -389,7 +389,7 @@ function storeAsReleaseHint(dest, isEphemeral, typed, flags = "", yes = false, s
|
|
|
389
389
|
return `\`xanosdk release create <name> --from ephemeral:${shellQuote(dest.name)}${against}${flags}\` stores what it now runs as a release that ${landed}.`;
|
|
390
390
|
}
|
|
391
391
|
const source = typed.bundle !== void 0 ? ` --bundle ${shellQuote(typed.bundle)}` : typed.file !== void 0 ? ` ${shellQuote(typed.file)}` : "";
|
|
392
|
-
return `A release is cut from a backend that ran on the instance, and a standard tenant cannot be cut from. To keep this source as one that ${landed}: \`xanosdk deploy${source}${flags}\` (to this project's ephemeral), then \`xanosdk release create <name>${against}${flags}\`, then ${land} lands it here \u2014 it REPLACES what the tenant runs with that release, so anything else merged onto it (another project's objects) is dropped.`;
|
|
392
|
+
return `A release is cut from a backend that ran on the instance, and a standard tenant cannot be cut from. To keep this source as one that ${landed}: \`xanosdk deploy${source} --ephemeral${flags}\` (to this project's ephemeral), then \`xanosdk release create <name>${against}${flags}\`, then ${land} lands it here \u2014 it REPLACES what the tenant runs with that release, so anything else merged onto it (another project's objects) is dropped.`;
|
|
393
393
|
}
|
|
394
394
|
function tenantWithoutWorkspace(tenant, named, typed, args) {
|
|
395
395
|
const flags = contextFlags(args);
|
|
@@ -406,7 +406,7 @@ function tenantWithoutWorkspace(tenant, named, typed, args) {
|
|
|
406
406
|
return new CliError(
|
|
407
407
|
"SDK_USAGE",
|
|
408
408
|
`${named} has no workspace yet, so there is nothing for \`deploy --to\` to merge into or preview against \u2014 a tenant on its own domain gets its workspace when its first release lands. Nothing was written.
|
|
409
|
-
Land a release on it first: ${land("<release>")} (\`xanosdk release list${flags}\` names them). To land this source, deploy it to this project's ephemeral (\`xanosdk deploy${source}${flags}\`), cut it (\`xanosdk release create <name>${against}${seed}${flags}\`), and land that: ${land("<name>")}.
|
|
409
|
+
Land a release on it first: ${land("<release>")} (\`xanosdk release list${flags}\` names them). To land this source, deploy it to this project's ephemeral (\`xanosdk deploy${source} --ephemeral${flags}\`), cut it (\`xanosdk release create <name>${against}${seed}${flags}\`), and land that: ${land("<name>")}.
|
|
410
410
|
After that, \`${rerun.command}\` ${args.dryRun ? "previews merging" : "merges"} onto it.${withheldNote(rerun.withheld)}`,
|
|
411
411
|
{ details: { reason: "tenant-has-no-workspace", tenant } }
|
|
412
412
|
);
|
|
@@ -416,14 +416,14 @@ function shipsStoredFiles(bundle) {
|
|
|
416
416
|
return Array.isArray(payload?.vault) && payload.vault.length > 0;
|
|
417
417
|
}
|
|
418
418
|
async function soleTrackedEphemeral() {
|
|
419
|
-
const { readEphemeralState: readEphemeralState2 } = await import("./ephemeral-state-
|
|
419
|
+
const { readEphemeralState: readEphemeralState2 } = await import("./ephemeral-state-SNZOX2YK.js");
|
|
420
420
|
const names = new Set(Object.values(readEphemeralState2(process.cwd()).environments).map((r) => r.name));
|
|
421
421
|
return names.size === 1 ? [...names][0] : void 0;
|
|
422
422
|
}
|
|
423
423
|
async function runDeployToDestination(args, to) {
|
|
424
|
-
const { requireBackendSlot, parseSlot } = await import("./backend-slot-
|
|
425
|
-
const { resolveSource, describeBackend } = await import("./source-resolve-
|
|
426
|
-
const { looksLikeSource, resolveProjectEntry } = await import("./deploy-source-
|
|
424
|
+
const { requireBackendSlot, parseSlot } = await import("./backend-slot-JREP27UD.js");
|
|
425
|
+
const { resolveSource, describeBackend } = await import("./source-resolve-MKLNYFWG.js");
|
|
426
|
+
const { looksLikeSource, resolveProjectEntry } = await import("./deploy-source-YLQ7WMYR.js");
|
|
427
427
|
const dest = parseSlot(requireBackendSlot("deploy", void 0, "to"), to, to.trim() === "ephemeral" ? await soleTrackedEphemeral() : void 0);
|
|
428
428
|
if (dest.kind !== "workspace" && dest.kind !== "tenant") {
|
|
429
429
|
throw new Error(`Internal: \`deploy --to\` parsed ${withArticle(dest.kind)}, which its slot does not accept.`);
|
|
@@ -432,7 +432,7 @@ async function runDeployToDestination(args, to) {
|
|
|
432
432
|
const flags = contextFlags(args);
|
|
433
433
|
const release = /^release:(.*)$/.exec(args.file)?.[1];
|
|
434
434
|
const releaseWord = release === void 0 || release === "" ? "<name>" : shellQuote(release);
|
|
435
|
-
const { pipedYes: pipedYes2 } = await import("./retry-command-
|
|
435
|
+
const { pipedYes: pipedYes2 } = await import("./retry-command-QJ57WVW7.js");
|
|
436
436
|
const yes = args.dryRun === true ? "" : pipedYes2(args);
|
|
437
437
|
const tenantLanding = `\`xanosdk tenant deploy ${dest.kind === "tenant" ? shellQuote(dest.name) : "<tenant>"} ${releaseWord}${yes}${flags}\``;
|
|
438
438
|
const landing = `${args.branch === void 0 ? "" : ` --branch ${shellQuote(args.branch)}`}${args.setLive === true ? " --set-live" : ""}`;
|
|
@@ -473,7 +473,7 @@ async function runDeployToDestination(args, to) {
|
|
|
473
473
|
}
|
|
474
474
|
const named = describeBackend(resolved);
|
|
475
475
|
if (dest.kind === "tenant" && !isEphemeral && resolved.backend.kind === "hosted") {
|
|
476
|
-
const { tenantHasWorkspace } = await import("./tenant-
|
|
476
|
+
const { tenantHasWorkspace } = await import("./tenant-EKNQGG5A.js");
|
|
477
477
|
if (!await tenantHasWorkspace(resolved.backend.auth, resolved.target.base)) {
|
|
478
478
|
throw tenantWithoutWorkspace(dest.name, named, typed, args);
|
|
479
479
|
}
|
|
@@ -498,7 +498,7 @@ async function runDeployToDestination(args, to) {
|
|
|
498
498
|
)
|
|
499
499
|
);
|
|
500
500
|
};
|
|
501
|
-
const { runReleaseCommand } = await import("./release-command-
|
|
501
|
+
const { runReleaseCommand } = await import("./release-command-BQ6OHS3P.js");
|
|
502
502
|
return runReleaseCommand(args, {
|
|
503
503
|
base: resolved.target.base,
|
|
504
504
|
workspaceId: resolved.target.workspaceId,
|
|
@@ -528,10 +528,10 @@ var DESTINATION_ONLY = [
|
|
|
528
528
|
{ key: "resetData", flag: "--reset-data", why: "a refresh already replaces the rows unless `--keep-data` keeps them (`--reset` overrides that)" },
|
|
529
529
|
{ key: "seed", flag: "--seed", why: "a refresh already seeds when it replaces and never when `--keep-data` keeps the rows" },
|
|
530
530
|
{ key: "allowSharedSchemaChanges", flag: "--allow-shared-schema-changes", why: "the environment is this project's own, with no shared schema to gate" },
|
|
531
|
-
{ key: "allowBranchDeletion", flag: "--allow-branch-deletion", why: "an ephemeral or
|
|
532
|
-
{ key: "branch", flag: "--branch", why: "an ephemeral or
|
|
533
|
-
{ key: "setLive", flag: "--set-live", why: "an ephemeral or
|
|
534
|
-
{ key: "backupBranch", flag: "--backup-branch", why: "an ephemeral or
|
|
531
|
+
{ key: "allowBranchDeletion", flag: "--allow-branch-deletion", why: "an ephemeral or Xano Engine has no branches to delete" },
|
|
532
|
+
{ key: "branch", flag: "--branch", why: "an ephemeral or Xano Engine has no branch to name" },
|
|
533
|
+
{ key: "setLive", flag: "--set-live", why: "an ephemeral or Xano Engine has no branch to make live" },
|
|
534
|
+
{ key: "backupBranch", flag: "--backup-branch", why: "an ephemeral or Xano Engine has no branch to back up" }
|
|
535
535
|
];
|
|
536
536
|
function assertNoDestinationFlags(args) {
|
|
537
537
|
const passed = DESTINATION_ONLY.filter((f) => args[f.key] !== void 0 && args[f.key] !== false);
|
|
@@ -540,7 +540,7 @@ function assertNoDestinationFlags(args) {
|
|
|
540
540
|
const one = names.length === 1;
|
|
541
541
|
const why = passed.map((f) => one ? f.why : `\`${f.flag}\`: ${f.why}`).join("; ");
|
|
542
542
|
throw new UsageError(
|
|
543
|
-
`${andList(names)} ${one ? "needs" : "need"} a destination, and this deploy names none \u2014 it refreshes this project's own ephemeral or
|
|
543
|
+
`${andList(names)} ${one ? "needs" : "need"} a destination, and this deploy names none \u2014 it refreshes this project's own ephemeral or Xano Engine, and ${why}. Add \`--to workspace\` (or \`--to tenant:<name>\`) to reach a real destination, or drop ${one ? "the flag" : "the flags"}.` + (args.keepData ? ` \`--keep-data\` still keeps this environment's rows without them.` : "") + (args.dryRun ? ` ${previewOwnEphemeral(args)}` : ""),
|
|
544
544
|
{ hintFor: { command: "deploy" } }
|
|
545
545
|
);
|
|
546
546
|
}
|
|
@@ -601,13 +601,13 @@ function assertNoEphemeralFlags(args) {
|
|
|
601
601
|
}
|
|
602
602
|
}
|
|
603
603
|
function resolveDeployDestination(args) {
|
|
604
|
-
return args.localEngine ? { kind: "local
|
|
604
|
+
return args.localEngine ? { kind: "local", downloadUrl: args.localEngineUrl } : { kind: "ephemeral" };
|
|
605
605
|
}
|
|
606
606
|
async function assertLocalEngineUsable(args, dest) {
|
|
607
|
-
if (dest.kind !== "local
|
|
607
|
+
if (dest.kind !== "local") return;
|
|
608
608
|
if (args.to !== void 0) {
|
|
609
609
|
throw new UsageError(
|
|
610
|
-
"`--local
|
|
610
|
+
"`--local` and `--to` are two destinations, and a deploy has one. Drop whichever is not meant: `--local` runs this workspace on an engine on this machine, `--to` merges it into a backend that already exists. Either one alone still works exactly as it did.",
|
|
611
611
|
{ hintFor: { command: "deploy" } }
|
|
612
612
|
);
|
|
613
613
|
}
|
|
@@ -618,11 +618,11 @@ async function assertLocalEngineUsable(args, dest) {
|
|
|
618
618
|
if (ephemeralOnly.length > 0) {
|
|
619
619
|
const one = ephemeralOnly.length === 1;
|
|
620
620
|
throw new UsageError(
|
|
621
|
-
`${andList(ephemeralOnly)} ${one ? "describes" : "describe"} an ephemeral, and a
|
|
621
|
+
`${andList(ephemeralOnly)} ${one ? "describes" : "describe"} an ephemeral, and a Xano Engine has no display name or expiry, so ${one ? "it is" : "they are"} refused rather than quietly skipped. Drop ${one ? "it" : "them"}, or add \`--ephemeral\` to deploy to an ephemeral.`,
|
|
622
622
|
{ hintFor: { command: "deploy" } }
|
|
623
623
|
);
|
|
624
624
|
}
|
|
625
|
-
const { engineSourceRefusal, MISSING_ARCHIVE, resolveEnginePlatform, SUPPORTED_PLATFORMS } = await import("./local-engine-config-
|
|
625
|
+
const { engineSourceRefusal, MISSING_ARCHIVE, resolveEnginePlatform, SUPPORTED_PLATFORMS } = await import("./local-engine-config-W3KB7RWM.js");
|
|
626
626
|
const sourceRefusal = engineSourceRefusal(dest.downloadUrl);
|
|
627
627
|
if (sourceRefusal !== void 0) {
|
|
628
628
|
const Refusal = sourceRefusal.startsWith(MISSING_ARCHIVE) ? LocalFileNotFoundError : UsageError;
|
|
@@ -630,7 +630,7 @@ async function assertLocalEngineUsable(args, dest) {
|
|
|
630
630
|
}
|
|
631
631
|
if (resolveEnginePlatform() === void 0) {
|
|
632
632
|
throw new Error(
|
|
633
|
-
`There is no
|
|
633
|
+
`There is no Xano Engine build for ${process.platform} ${process.arch} \u2014 it runs on ${SUPPORTED_PLATFORMS.join(", ")} and nothing else, so there is no engine to run here. Deploy from one of those machines, or add \`--ephemeral\`: \`xanosdk deploy --ephemeral\` reaches an ephemeral from anywhere.`
|
|
634
634
|
);
|
|
635
635
|
}
|
|
636
636
|
}
|
|
@@ -638,9 +638,9 @@ async function deployToLocalEngine(args, dest, sourceCredential, ctx) {
|
|
|
638
638
|
const { startedAt } = ctx;
|
|
639
639
|
const dir = process.cwd();
|
|
640
640
|
const fetchedSource = sourceCredential !== void 0 && args.file !== void 0 ? { credential: sourceCredential, spec: args.file } : void 0;
|
|
641
|
-
const { discoverToolchainPlugins } = await import("./toolchain-modules-
|
|
641
|
+
const { discoverToolchainPlugins } = await import("./toolchain-modules-VU7SURVJ.js");
|
|
642
642
|
const toolchain = await discoverToolchainPlugins(dir, { frozen: args.frozenLock === true });
|
|
643
|
-
const { archive, shownSource, bundleObject, bundleText, content, passwordColumns, classifiedLock, commitLock, nonPublicSeedValues } = fetchedSource ? await import("./deploy-source-
|
|
643
|
+
const { archive, shownSource, bundleObject, bundleText, content, passwordColumns, classifiedLock, commitLock, nonPublicSeedValues } = fetchedSource ? await import("./deploy-source-YLQ7WMYR.js").then(async (m) => {
|
|
644
644
|
const f = await m.fetchSourceArchive(fetchedSource.credential, fetchedSource.spec, dir);
|
|
645
645
|
const decoded = decodeWorkspaceArchive(f.archive);
|
|
646
646
|
noteReleaseCarriesNoEnv(fetchedSource.spec, m.gatedApiGroups(decoded));
|
|
@@ -681,9 +681,9 @@ async function deployToLocalEngine(args, dest, sourceCredential, ctx) {
|
|
|
681
681
|
if (args.static !== void 0) {
|
|
682
682
|
await assertNoSeedLeaks(args.static, nonPublicSeedValues, { serverRendered: true });
|
|
683
683
|
}
|
|
684
|
-
step(`Deploying ${shownSource} \u2192
|
|
684
|
+
step(`Deploying ${shownSource} \u2192 Xano Engine`);
|
|
685
685
|
{
|
|
686
|
-
const { runBundleHooks } = await import("./toolchain-hooks-
|
|
686
|
+
const { runBundleHooks } = await import("./toolchain-hooks-4ZMQLBPQ.js");
|
|
687
687
|
const { readVersion } = await import("./cli.js");
|
|
688
688
|
await runBundleHooks(
|
|
689
689
|
toolchain.loaded,
|
|
@@ -701,13 +701,13 @@ async function deployToLocalEngine(args, dest, sourceCredential, ctx) {
|
|
|
701
701
|
"; nothing was deployed"
|
|
702
702
|
);
|
|
703
703
|
}
|
|
704
|
-
const { chooseLocalEngine, explainOverrideFailure, pinAfterAcquire } = await import("./local-engine-choice-
|
|
704
|
+
const { chooseLocalEngine, explainOverrideFailure, pinAfterAcquire } = await import("./local-engine-choice-VD5LNXJU.js");
|
|
705
705
|
const choice = await chooseLocalEngine(dest.downloadUrl, dir, isMachineOutput(args));
|
|
706
|
-
const { ensureProjectEngine } = await import("./local-engine-deploy-
|
|
706
|
+
const { ensureProjectEngine } = await import("./local-engine-deploy-6O7NKZCA.js");
|
|
707
707
|
const pin = pinAfterAcquire(choice, dir);
|
|
708
708
|
const flags = { keepData: args.keepData, reset: args.reset };
|
|
709
709
|
const { engine, reused, previousUrl, hadRecord, priorFilled, engineVersion, replaced, sweptOrphans } = await withSpinner(
|
|
710
|
-
"Preparing the
|
|
710
|
+
"Preparing the Xano Engine\u2026",
|
|
711
711
|
() => ensureProjectEngine({
|
|
712
712
|
dir,
|
|
713
713
|
source: choice.source,
|
|
@@ -720,12 +720,12 @@ async function deployToLocalEngine(args, dest, sourceCredential, ctx) {
|
|
|
720
720
|
pin.announce();
|
|
721
721
|
if (sweptOrphans !== void 0) {
|
|
722
722
|
info(
|
|
723
|
-
`Stopped ${sweptOrphans.length === 1 ? "a process" : `${sweptOrphans.length} processes`} a crashed
|
|
723
|
+
`Stopped ${sweptOrphans.length === 1 ? "a process" : `${sweptOrphans.length} processes`} a crashed Xano Engine left running (pid ${sweptOrphans.join(", ")}).`
|
|
724
724
|
);
|
|
725
725
|
}
|
|
726
726
|
if (replaced !== void 0) {
|
|
727
727
|
info(
|
|
728
|
-
`Replaced
|
|
728
|
+
`Replaced Xano Engine ${replaced.name} (${replaced.from ?? "an unrecorded version"} \u2192 ${replaced.to ?? "the resolved engine"}). It starts empty, so this deploy seeds it.`
|
|
729
729
|
);
|
|
730
730
|
}
|
|
731
731
|
const arm = selectDeployArm({
|
|
@@ -737,34 +737,34 @@ async function deployToLocalEngine(args, dest, sourceCredential, ctx) {
|
|
|
737
737
|
});
|
|
738
738
|
await refuseEnvClearedByFallbackReplace(arm);
|
|
739
739
|
const target = {
|
|
740
|
-
kind: "local
|
|
740
|
+
kind: "local",
|
|
741
741
|
url: engine.url,
|
|
742
742
|
workspaceId: engine.workspaceId
|
|
743
743
|
};
|
|
744
744
|
discloseWriteTarget(target);
|
|
745
|
-
announceArm(arm, "local
|
|
745
|
+
announceArm(arm, "local");
|
|
746
746
|
const bearer = { access_token: engine.token, instance: engine.url };
|
|
747
747
|
let merged;
|
|
748
748
|
let sent = false;
|
|
749
749
|
const sending = () => {
|
|
750
750
|
sent = true;
|
|
751
|
-
if (reused) recordDeployed(dir, "local
|
|
751
|
+
if (reused) recordDeployed(dir, "local");
|
|
752
752
|
};
|
|
753
753
|
try {
|
|
754
754
|
if (arm.arm === "merge") {
|
|
755
|
-
const { mergeKeepingData } = await import("./keep-data-merge-
|
|
755
|
+
const { mergeKeepingData } = await import("./keep-data-merge-QR2TMKEO.js");
|
|
756
756
|
merged = await mergeKeepingData({
|
|
757
757
|
auth: bearer,
|
|
758
758
|
baseUrl: engine.url,
|
|
759
759
|
workspaceId: engine.workspaceId,
|
|
760
|
-
label: `
|
|
760
|
+
label: `Xano Engine ${engine.name}`,
|
|
761
761
|
bundle: bundleText ?? JSON.stringify(bundleObject),
|
|
762
762
|
content,
|
|
763
763
|
files: archiveHostedFiles(archive),
|
|
764
|
-
// No credential flags: a
|
|
765
|
-
stateCheck: `Check what
|
|
766
|
-
envSetTo: ` --to ${shellQuote(`local
|
|
767
|
-
kind: "local
|
|
764
|
+
// No credential flags: a Xano Engine refuses them.
|
|
765
|
+
stateCheck: `Check what Xano Engine ${engine.name} now holds with \`xanosdk tables local:${shellQuote(engine.name)}\` before retrying.`,
|
|
766
|
+
envSetTo: ` --to ${shellQuote(`local:${engine.name}`)}`,
|
|
767
|
+
kind: "local",
|
|
768
768
|
rerun: rerunOf(args),
|
|
769
769
|
// The lock waits for the import itself, not only its refusals: an
|
|
770
770
|
// engine that cannot apply this merge (a 501) wrote nothing, and a lock
|
|
@@ -788,16 +788,16 @@ async function deployToLocalEngine(args, dest, sourceCredential, ctx) {
|
|
|
788
788
|
mode: "replace",
|
|
789
789
|
dryRun: false,
|
|
790
790
|
preserveGuids: true,
|
|
791
|
-
label: `
|
|
791
|
+
label: `Xano Engine ${engine.name}`
|
|
792
792
|
})
|
|
793
793
|
);
|
|
794
794
|
}
|
|
795
795
|
} catch (err) {
|
|
796
796
|
if (err instanceof XanoSdkImportRefusal && err.retryable) {
|
|
797
|
-
const { importInProgressError } = await import("./keep-data-merge-
|
|
798
|
-
throw importInProgressError(`
|
|
797
|
+
const { importInProgressError } = await import("./keep-data-merge-QR2TMKEO.js");
|
|
798
|
+
throw importInProgressError(`Xano Engine ${engine.name}`, rerunOf(args), err);
|
|
799
799
|
}
|
|
800
|
-
const { explainUnsupportedEngineImport } = await import("./local-engine-deploy-
|
|
800
|
+
const { explainUnsupportedEngineImport } = await import("./local-engine-deploy-6O7NKZCA.js");
|
|
801
801
|
const unsupported = explainUnsupportedEngineImport(err, engineVersion, {
|
|
802
802
|
latest: await latestEngineRelease(err),
|
|
803
803
|
resetRerun: arm.arm === "merge" ? `${rerunOf(args).command} --reset` : void 0
|
|
@@ -806,22 +806,22 @@ async function deployToLocalEngine(args, dest, sourceCredential, ctx) {
|
|
|
806
806
|
const rerun = rerunOf(args);
|
|
807
807
|
warn(
|
|
808
808
|
"The import failed \u2014 the engine is still running, so nothing needs restarting:",
|
|
809
|
-
"local
|
|
809
|
+
"local.import-failed",
|
|
810
810
|
[
|
|
811
811
|
unsupported !== void 0 ? `It is serving at ${engine.url}, holding what it held \u2014 this engine cannot run this import; the error below names what can.` : `It is serving at ${engine.url}. Fix what the error below names, then run \`${rerun.command}\` again.${rerun.note}`,
|
|
812
|
-
`Stop it with \`xanosdk local
|
|
812
|
+
`Stop it with \`xanosdk local stop ${engine.name}\`.`
|
|
813
813
|
]
|
|
814
814
|
);
|
|
815
815
|
}
|
|
816
816
|
throw unsupported ?? err;
|
|
817
817
|
}
|
|
818
818
|
commitLock?.();
|
|
819
|
-
const { markEngineFilled } = await import("./local-engine-state-
|
|
819
|
+
const { markEngineFilled } = await import("./local-engine-state-OCW5YDD7.js");
|
|
820
820
|
markEngineFilled(dir, engine.url);
|
|
821
821
|
const urlChanged = !reused || previousUrl !== engine.url;
|
|
822
822
|
if (urlChanged) {
|
|
823
|
-
success(`
|
|
824
|
-
info("New
|
|
823
|
+
success(`Xano Engine ${engine.name} deployed${elapsedSuffix(startedAt)}`);
|
|
824
|
+
info("New Xano Engine URL:");
|
|
825
825
|
link(engine.url);
|
|
826
826
|
} else {
|
|
827
827
|
const kept = arm.arm === "merge" ? ", keeping its data" : "";
|
|
@@ -829,8 +829,8 @@ async function deployToLocalEngine(args, dest, sourceCredential, ctx) {
|
|
|
829
829
|
link(engine.url);
|
|
830
830
|
}
|
|
831
831
|
detail(`Open the builder: ${engine.signInUrl}`);
|
|
832
|
-
detail(`Meta API bearer (the local XANO_META_TOKEN): \`xanosdk local
|
|
833
|
-
detail(`Stop it with \`xanosdk local
|
|
832
|
+
detail(`Meta API bearer (the local XANO_META_TOKEN): \`xanosdk local token\``);
|
|
833
|
+
detail(`Stop it with \`xanosdk local stop ${engine.name}\``);
|
|
834
834
|
let staticSummary;
|
|
835
835
|
if (args.static !== void 0) {
|
|
836
836
|
staticSummary = await publishStaticToLocalEngine(args, args.static, engine, engineVersion);
|
|
@@ -840,14 +840,14 @@ async function deployToLocalEngine(args, dest, sourceCredential, ctx) {
|
|
|
840
840
|
);
|
|
841
841
|
}
|
|
842
842
|
const summary = {
|
|
843
|
-
kind: "local
|
|
843
|
+
kind: "local",
|
|
844
844
|
destination: { ...writeTargetPayload(target), label: engine.name, url: engine.url },
|
|
845
845
|
// Nothing chose a credential for this run, so there is no profile to name.
|
|
846
846
|
// Null rather than omitted: the field is non-optional, and a wrapper that
|
|
847
847
|
// reads it everywhere must not have to branch on the destination first.
|
|
848
848
|
profile: null,
|
|
849
849
|
url: engine.url,
|
|
850
|
-
|
|
850
|
+
engine: {
|
|
851
851
|
name: engine.name,
|
|
852
852
|
workspaceId: engine.workspaceId,
|
|
853
853
|
logPath: engine.logPath,
|
|
@@ -881,7 +881,7 @@ async function publishStaticToLocalEngine(args, dir, engine, engineVersion) {
|
|
|
881
881
|
const summary = await deployStaticTo(
|
|
882
882
|
dir,
|
|
883
883
|
{ access_token: engine.token },
|
|
884
|
-
{ baseUrl: engine.url, workspaceId: engine.workspaceId, label: `
|
|
884
|
+
{ baseUrl: engine.url, workspaceId: engine.workspaceId, label: `Xano Engine ${engine.name}` },
|
|
885
885
|
buildStaticEnv(engine.url, args.staticEnv),
|
|
886
886
|
Object.keys(args.staticEnv).length > 0,
|
|
887
887
|
args.staticHost,
|
|
@@ -898,18 +898,18 @@ async function publishStaticToLocalEngine(args, dir, engine, engineVersion) {
|
|
|
898
898
|
} catch (err) {
|
|
899
899
|
const unknown = err instanceof Error && statesOutcomeUnknown(err.message);
|
|
900
900
|
const tooOld = err.status === 501;
|
|
901
|
-
const which = engineVersion === void 0 ? "This
|
|
902
|
-
const message = tooOld ? `${which} cannot host a static site (HTTP 501): static hosting on a
|
|
901
|
+
const which = engineVersion === void 0 ? "This Xano Engine" : `Xano Engine ${engineVersion}`;
|
|
902
|
+
const message = tooOld ? `${which} cannot host a static site (HTTP 501): static hosting on a Xano Engine came in a later release. \`xanosdk local update\` moves this project to the newest one.` : unknownStaticOutcome(err instanceof Error ? err.message : String(err), unknown);
|
|
903
903
|
warn("The static-host upload failed \u2014 the backend deploy stands:", "static.upload-failed", [
|
|
904
904
|
message,
|
|
905
|
-
`Retry with \`${retry}\` (it re-imports the backend, which is quick on a
|
|
905
|
+
`Retry with \`${retry}\` (it re-imports the backend, which is quick on a Xano Engine).`
|
|
906
906
|
]);
|
|
907
907
|
process.exitCode = unknown ? EXIT_OUTCOME_UNKNOWN : EXIT_STATIC_FAILED;
|
|
908
908
|
return { url: void 0, error: message, retry, completed: unknown ? "unknown" : "no" };
|
|
909
909
|
}
|
|
910
910
|
}
|
|
911
911
|
async function parseDeploySource(raw) {
|
|
912
|
-
const { requireBackendSlot, parseSlot } = await import("./backend-slot-
|
|
912
|
+
const { requireBackendSlot, parseSlot } = await import("./backend-slot-JREP27UD.js");
|
|
913
913
|
const source = parseSlot(requireBackendSlot("deploy", void 0, "subject"), raw);
|
|
914
914
|
if (source.kind === "file") throw new Error(`Internal: "${raw}" parsed as a bundle path on the fetch arm.`);
|
|
915
915
|
return source;
|
|
@@ -989,7 +989,7 @@ async function notePasswordHashesDoNotTravel(credential, raw, columns, landedOn)
|
|
|
989
989
|
const release = raw.slice("release:".length);
|
|
990
990
|
const origin = await passwordOrigin(await credential(), release);
|
|
991
991
|
if (landedOn !== void 0 && origin?.name === landedOn) return void 0;
|
|
992
|
-
const where = landedOn === void 0 ? "the
|
|
992
|
+
const where = landedOn === void 0 ? "the Xano Engine" : `ephemeral "${landedOn}"`;
|
|
993
993
|
warn(passwordHashesWarning(release, columns, where, "the deploy", origin?.phrase), "seed.password-hashes");
|
|
994
994
|
return [...columns];
|
|
995
995
|
}
|
|
@@ -1007,11 +1007,11 @@ function noteBundleFileCarriesNoRows(path, reset) {
|
|
|
1007
1007
|
);
|
|
1008
1008
|
}
|
|
1009
1009
|
function refuseSameEngine(source, dir) {
|
|
1010
|
-
if (source?.kind !== "local
|
|
1010
|
+
if (source?.kind !== "local") return;
|
|
1011
1011
|
const own = getEngineRecord(dir)?.name ?? engineNameForProject(dir);
|
|
1012
1012
|
if (source.name !== void 0 && source.name !== own) return;
|
|
1013
1013
|
throw new UsageError(
|
|
1014
|
-
`"${source.name === void 0 ? "local
|
|
1014
|
+
`"${source.name === void 0 ? "local" : `local:${source.name}`}" is this project's own engine (${own}), which is also where \`--local\` deploys \u2014 the same engine as source and destination. Nothing was downloaded or stopped. \`xanosdk deploy local\` stands its export up as an ephemeral; \`xanosdk deploy local:<name> --local\` copies another engine into this one.`,
|
|
1015
1015
|
{ hintFor: { command: "deploy" } }
|
|
1016
1016
|
);
|
|
1017
1017
|
}
|
|
@@ -1024,8 +1024,8 @@ function refuseSameEphemeral(source, auth, dir, flags = "", keepsData = false) {
|
|
|
1024
1024
|
if (!named) return;
|
|
1025
1025
|
const typed = source.name === void 0 ? source.kind : `${source.kind}:${source.name}`;
|
|
1026
1026
|
throw new UsageError(
|
|
1027
|
-
`"${typed}" is this project's own ephemeral (${own}), which is also where \`xanosdk deploy\` lands \u2014 the same environment as source and destination. ` + (keepsData ? `Merging it into itself would land its own export back onto it, so there is nothing to change. ` : `A redeploy of it from itself would replace it with an export that carries no rows, so every table would come back empty. `) + `Nothing was fetched or changed.
|
|
1028
|
-
` + (keepsData ? `Redeploy the project with \`xanosdk deploy --keep-data${flags}\`, or merge another environment in with \`xanosdk deploy ephemeral:<other> --keep-data${flags}\`.` : `Redeploy the project with \`xanosdk deploy${flags}\` (add \`--keep-data\` to keep the rows), or copy another environment in with \`xanosdk deploy ephemeral:<other
|
|
1027
|
+
`"${typed}" is this project's own ephemeral (${own}), which is also where \`xanosdk deploy --ephemeral\` lands \u2014 the same environment as source and destination. ` + (keepsData ? `Merging it into itself would land its own export back onto it, so there is nothing to change. ` : `A redeploy of it from itself would replace it with an export that carries no rows, so every table would come back empty. `) + `Nothing was fetched or changed.
|
|
1028
|
+
` + (keepsData ? `Redeploy the project with \`xanosdk deploy --ephemeral --keep-data${flags}\`, or merge another environment in with \`xanosdk deploy ephemeral:<other> --ephemeral --keep-data${flags}\`.` : `Redeploy the project with \`xanosdk deploy --ephemeral${flags}\` (add \`--keep-data\` to keep the rows), or copy another environment in with \`xanosdk deploy ephemeral:<other> --ephemeral${flags}\`.`),
|
|
1029
1029
|
{ hintFor: { command: "deploy" } }
|
|
1030
1030
|
);
|
|
1031
1031
|
}
|
|
@@ -1095,7 +1095,7 @@ async function runDeploy(args) {
|
|
|
1095
1095
|
await assertLocalEngineUsable(args, destination);
|
|
1096
1096
|
if (args.keepData && args.to !== void 0) {
|
|
1097
1097
|
throw new UsageError(
|
|
1098
|
-
"`--keep-data` keeps an ephemeral's or a
|
|
1098
|
+
"`--keep-data` keeps an ephemeral's or a Xano Engine's rows across a redeploy, and `--to` already merges \u2014 it empties tables only when `--replace` or `--reset-data` asks. Drop `--keep-data`; `--to` without those keeps the destination's data as it always has.",
|
|
1099
1099
|
{ hintFor: { command: "deploy" } }
|
|
1100
1100
|
);
|
|
1101
1101
|
}
|
|
@@ -1109,16 +1109,16 @@ async function runDeploy(args) {
|
|
|
1109
1109
|
if (args.reset && !args.keepData) {
|
|
1110
1110
|
info("`--reset` changes nothing here: it only overrides `--keep-data`, and without it a deploy already replaces the environment.");
|
|
1111
1111
|
}
|
|
1112
|
-
const { looksLikeSource, resolveProjectEntry, fetchSourceArchive, passwordSeedColumns, archiveSeedContent, gatedApiGroups } = await import("./deploy-source-
|
|
1112
|
+
const { looksLikeSource, resolveProjectEntry, fetchSourceArchive, passwordSeedColumns, archiveSeedContent, gatedApiGroups } = await import("./deploy-source-YLQ7WMYR.js");
|
|
1113
1113
|
const fetching = args.file !== void 0 && looksLikeSource(args.file);
|
|
1114
1114
|
const sourceSpec = fetching ? await parseDeploySource(args.file) : void 0;
|
|
1115
1115
|
if (sourceSpec !== void 0) refuseValueFlagsForSource(args, args.file, sourceSpec);
|
|
1116
|
-
if (destination.kind === "local
|
|
1116
|
+
if (destination.kind === "local") {
|
|
1117
1117
|
refuseSameEngine(sourceSpec, process.cwd());
|
|
1118
|
-
const { refuseProfileForLocal } = await import("./tracked-backend-
|
|
1119
|
-
refuseProfileForLocal(args.profile, sourceSpec === void 0 ? ["local
|
|
1120
|
-
const { refuseCredentialFlagsForLocal } = await import("./local-engine-choice-
|
|
1121
|
-
refuseCredentialFlagsForLocal(args, sourceSpec === void 0 ? ["local
|
|
1118
|
+
const { refuseProfileForLocal } = await import("./tracked-backend-4BHSV7NC.js");
|
|
1119
|
+
refuseProfileForLocal(args.profile, sourceSpec === void 0 ? ["local"] : ["local", sourceSpec.kind], void 0, {});
|
|
1120
|
+
const { refuseCredentialFlagsForLocal } = await import("./local-engine-choice-VD5LNXJU.js");
|
|
1121
|
+
refuseCredentialFlagsForLocal(args, sourceSpec === void 0 ? ["local"] : ["local", sourceSpec.kind]);
|
|
1122
1122
|
}
|
|
1123
1123
|
if (!fetching) {
|
|
1124
1124
|
if (args.file === void 0 && args.bundle === void 0) {
|
|
@@ -1132,8 +1132,8 @@ async function runDeploy(args) {
|
|
|
1132
1132
|
refuseMissingLockDir(args);
|
|
1133
1133
|
}
|
|
1134
1134
|
refuseMissingStaticDir(args);
|
|
1135
|
-
if (destination.kind === "local
|
|
1136
|
-
const { memoCredential } = await import("./tracked-backend-
|
|
1135
|
+
if (destination.kind === "local") {
|
|
1136
|
+
const { memoCredential } = await import("./tracked-backend-4BHSV7NC.js");
|
|
1137
1137
|
return deployToLocalEngine(
|
|
1138
1138
|
args,
|
|
1139
1139
|
destination,
|
|
@@ -1145,7 +1145,7 @@ async function runDeploy(args) {
|
|
|
1145
1145
|
const auth = await getAccessToken(args);
|
|
1146
1146
|
refuseSameEphemeral(sourceSpec, auth, process.cwd(), contextFlags(args), args.keepData && !args.reset);
|
|
1147
1147
|
await noteRunScopeFor(auth);
|
|
1148
|
-
const { discoverToolchainPlugins } = await import("./toolchain-modules-
|
|
1148
|
+
const { discoverToolchainPlugins } = await import("./toolchain-modules-VU7SURVJ.js");
|
|
1149
1149
|
const toolchain = await discoverToolchainPlugins(process.cwd(), {
|
|
1150
1150
|
frozen: args.frozenLock === true
|
|
1151
1151
|
});
|
|
@@ -1189,7 +1189,7 @@ async function runDeploy(args) {
|
|
|
1189
1189
|
);
|
|
1190
1190
|
}
|
|
1191
1191
|
{
|
|
1192
|
-
const { runBundleHooks } = await import("./toolchain-hooks-
|
|
1192
|
+
const { runBundleHooks } = await import("./toolchain-hooks-4ZMQLBPQ.js");
|
|
1193
1193
|
const { readVersion } = await import("./cli.js");
|
|
1194
1194
|
await runBundleHooks(
|
|
1195
1195
|
toolchain.loaded,
|
|
@@ -1279,9 +1279,9 @@ async function runDeploy(args) {
|
|
|
1279
1279
|
}).finally(() => noteLanded(void 0));
|
|
1280
1280
|
if (staticSummary !== void 0) summary.static = staticSummary;
|
|
1281
1281
|
if (summary.ephemeral !== void 0) {
|
|
1282
|
-
const { landingLockPath, recordLanding, recordForeignLanding } = await import("./landing-record-
|
|
1282
|
+
const { landingLockPath, recordLanding, recordForeignLanding } = await import("./landing-record-MWXFIRCP.js");
|
|
1283
1283
|
const dest = { kind: "ephemeral", name: summary.ephemeral.name };
|
|
1284
|
-
const { storedColumnsAfter } = await import("./live-diff-
|
|
1284
|
+
const { storedColumnsAfter } = await import("./live-diff-5E2BQWQ7.js");
|
|
1285
1285
|
const sent = JSON.parse(bundle);
|
|
1286
1286
|
const stored = summary.data === "kept" ? removedOut.storedColumns : storedColumnsAfter(sent, void 0, /* @__PURE__ */ new Map(), "rebuild");
|
|
1287
1287
|
if (fetching || args.bundle !== void 0) {
|
|
@@ -1296,7 +1296,7 @@ async function runDeploy(args) {
|
|
|
1296
1296
|
...removedOut.removedGuids !== void 0 ? { removedGuids: removedOut.removedGuids, removedBy: "merge" } : {}
|
|
1297
1297
|
});
|
|
1298
1298
|
} else {
|
|
1299
|
-
const { landedIdentities } = await import("./landed-
|
|
1299
|
+
const { landedIdentities } = await import("./landed-F7PCHGCK.js");
|
|
1300
1300
|
summary.landingRecord = recordLanding({
|
|
1301
1301
|
lockPath: landingLockPath(args, { ...args.file !== void 0 ? { entryFile: args.file } : {}, fromProject: false }),
|
|
1302
1302
|
instance: auth.instance,
|
|
@@ -1343,7 +1343,7 @@ async function runDeploy(args) {
|
|
|
1343
1343
|
async function syncDevEnvAfterDeploy(args, summary, cwd = process.cwd(), opts = {}) {
|
|
1344
1344
|
if (args.noDevEnv || summary.url === void 0) return;
|
|
1345
1345
|
if (opts.staticServing === true || summary.static !== void 0 && summary.static.error === void 0) {
|
|
1346
|
-
const { staleDevEnv } = await import("./dev-env-sync-
|
|
1346
|
+
const { staleDevEnv } = await import("./dev-env-sync-TMJTNU3U.js");
|
|
1347
1347
|
let stale;
|
|
1348
1348
|
try {
|
|
1349
1349
|
stale = staleDevEnv(cwd, summary.url);
|
|
@@ -1357,7 +1357,7 @@ async function syncDevEnvAfterDeploy(args, summary, cwd = process.cwd(), opts =
|
|
|
1357
1357
|
}
|
|
1358
1358
|
return;
|
|
1359
1359
|
}
|
|
1360
|
-
const { syncDevEnv } = await import("./dev-env-sync-
|
|
1360
|
+
const { syncDevEnv } = await import("./dev-env-sync-TMJTNU3U.js");
|
|
1361
1361
|
try {
|
|
1362
1362
|
const written = syncDevEnv(cwd, summary.url);
|
|
1363
1363
|
if (written === void 0) return;
|
|
@@ -1399,7 +1399,7 @@ function announceArm(arm, kind, landedBefore = false, seeded = true) {
|
|
|
1399
1399
|
if (arm.arm !== "replace" || arm.skipped === void 0) return;
|
|
1400
1400
|
const why = {
|
|
1401
1401
|
new: "Nothing to keep yet \u2014 this environment is new, so it is replaced and seeded. Later deploys with `--keep-data` keep its rows.",
|
|
1402
|
-
// An ephemeral expires or is deleted; a
|
|
1402
|
+
// An ephemeral expires or is deleted; a Xano Engine's rows go when its
|
|
1403
1403
|
// process restarts. Each told its own reason.
|
|
1404
1404
|
recreated: kind === "ephemeral" ? "Nothing to keep \u2014 the ephemeral recorded for this project is gone (it expired, or was deleted), so a new one is created, replaced and seeded." : "Nothing to keep \u2014 the environment recorded for this project is gone (the engine restarted), so this one is replaced and seeded.",
|
|
1405
1405
|
// Two different stories behind the same missing marker, each told as it
|
|
@@ -1457,22 +1457,22 @@ function rerunOf(args) {
|
|
|
1457
1457
|
return { command: retry.command, note: withheldNote(retry.withheld) };
|
|
1458
1458
|
}
|
|
1459
1459
|
async function latestEngineRelease(err) {
|
|
1460
|
-
const { ImportHttpError } = await import("./import-
|
|
1460
|
+
const { ImportHttpError } = await import("./import-7Z4GCCPO.js");
|
|
1461
1461
|
if (!(err instanceof ImportHttpError) || err.status !== 501) return void 0;
|
|
1462
|
-
const { resolveEnginePlatform } = await import("./local-engine-config-
|
|
1462
|
+
const { resolveEnginePlatform } = await import("./local-engine-config-W3KB7RWM.js");
|
|
1463
1463
|
const platform = resolveEnginePlatform();
|
|
1464
1464
|
if (platform === void 0) return void 0;
|
|
1465
|
-
const { latestKnownVersion } = await import("./local-engine-update-check-
|
|
1465
|
+
const { latestKnownVersion } = await import("./local-engine-update-check-LVX4HBBI.js");
|
|
1466
1466
|
return latestKnownVersion({ platform });
|
|
1467
1467
|
}
|
|
1468
1468
|
async function mergeGuards(args, lock, outgoing) {
|
|
1469
1469
|
const interactive = process.stdin.isTTY === true && !isMachineOutput(args);
|
|
1470
|
-
const pinned = outgoing === void 0 ? [] : (await import("./release-command-
|
|
1470
|
+
const pinned = outgoing === void 0 ? [] : (await import("./release-command-BQ6OHS3P.js")).pinnedCanonicalGuids(outgoing.bundle, lock, outgoing.compiled);
|
|
1471
1471
|
const guards = {
|
|
1472
1472
|
...pinned.length > 0 ? { pinned } : {},
|
|
1473
1473
|
allowForeignDeletes: args.yes === true,
|
|
1474
1474
|
...interactive ? {
|
|
1475
|
-
confirm: async (q) => (await import("./prompt-
|
|
1475
|
+
confirm: async (q) => (await import("./prompt-U37K5RPQ.js")).confirm(q, {
|
|
1476
1476
|
flag: "--yes",
|
|
1477
1477
|
refusal: { details: { deployed: false }, ...yesRerun(args, "deploy") }
|
|
1478
1478
|
})
|
|
@@ -1488,7 +1488,7 @@ async function mergeGuards(args, lock, outgoing) {
|
|
|
1488
1488
|
for (const guid of e.replaced ?? []) replaced.set(guid, key.slice("dbo:".length));
|
|
1489
1489
|
}
|
|
1490
1490
|
const { orphanFixUps, resolveLockPath, composedChildren } = await import("./cli.js");
|
|
1491
|
-
const { clearReplacedCommand } = await import("./keep-data-merge-
|
|
1491
|
+
const { clearReplacedCommand } = await import("./keep-data-merge-QR2TMKEO.js");
|
|
1492
1492
|
const lockPath = resolveLockPath(args, entry);
|
|
1493
1493
|
const run = (line) => (line ?? "").replace(/^(renamed|deleted)\? run: /, "");
|
|
1494
1494
|
const keys = Object.keys(lock.objects);
|
|
@@ -1561,7 +1561,7 @@ function fetchedSourceOf(file) {
|
|
|
1561
1561
|
const kind = colon < 0 ? file : file.slice(0, colon);
|
|
1562
1562
|
const name = colon < 0 ? void 0 : file.slice(colon + 1).trim();
|
|
1563
1563
|
if (kind === "release" || kind === "tenant") return name ? { kind, name } : void 0;
|
|
1564
|
-
if (kind === "ephemeral" || kind === "local
|
|
1564
|
+
if (kind === "ephemeral" || kind === "local") return name ? { kind, name } : { kind };
|
|
1565
1565
|
if (kind === "workspace" && colon < 0) return { kind };
|
|
1566
1566
|
return void 0;
|
|
1567
1567
|
}
|
|
@@ -1581,7 +1581,7 @@ function explainDuplicateArchiveGuid(err, file, flags = "") {
|
|
|
1581
1581
|
} else if (source.kind === "release") {
|
|
1582
1582
|
why = `Release "${source.name}" was stored with two ${section} objects under guid ${guid}. ${keeps}; \`xanosdk tenant deploy\` gives every object a new identity, which is why it can land the same release. Re-cut the release from a backend that holds one ${section} per guid to deploy it here.`;
|
|
1583
1583
|
} else {
|
|
1584
|
-
const label = source.kind === "workspace" ? "The workspace" : source.name === void 0 ? `The ${source.kind}` : `${source.kind === "tenant" ? "Tenant" : source.kind === "ephemeral" ? "Ephemeral" : "
|
|
1584
|
+
const label = source.kind === "workspace" ? "The workspace" : source.name === void 0 ? `The ${source.kind}` : `${source.kind === "tenant" ? "Tenant" : source.kind === "ephemeral" ? "Ephemeral" : "Xano Engine"} ${source.name}`;
|
|
1585
1585
|
const reland = source.kind === "tenant" ? `, land it there again with \`xanosdk deploy --to ${shellQuote(`tenant:${source.name}`)}${flags}\`` : source.kind === "workspace" ? `, land it there again with \`xanosdk deploy --to workspace${flags}\`` : source.kind === "ephemeral" ? `, deploy it there again from the project that tracks it` : `, land it there again`;
|
|
1586
1586
|
why = `${label} holds two ${section} objects under guid ${guid}. ${keeps}, so redeploying from it fails the same way until the duplicate is fixed where it is authored: give one of them its own guid${reland}, then run this deploy again.`;
|
|
1587
1587
|
}
|
|
@@ -1656,9 +1656,9 @@ function failDeploy() {
|
|
|
1656
1656
|
}
|
|
1657
1657
|
function ephemeralDisabledError(source) {
|
|
1658
1658
|
return new Error(
|
|
1659
|
-
`Ephemeral environments are not enabled on this instance, so there is nothing for \`xanosdk deploy ${source}\` to create
|
|
1659
|
+
`Ephemeral environments are not enabled on this instance, so there is nothing for \`xanosdk deploy ${source} --ephemeral\` to create.
|
|
1660
1660
|
Ask whoever administers the instance to enable them.
|
|
1661
|
-
Until then \`xanosdk export\` still writes the bundle, and \`xanosdk preflight\` still checks the round-trip, without needing one.`
|
|
1661
|
+
Until then \`xanosdk deploy ${source}\` runs it on the Xano Engine on this machine, \`xanosdk export\` still writes the bundle, and \`xanosdk preflight\` still checks the round-trip, without needing one.`
|
|
1662
1662
|
);
|
|
1663
1663
|
}
|
|
1664
1664
|
function notReadyError(err, name, flags, created, retry) {
|
|
@@ -1666,7 +1666,7 @@ function notReadyError(err, name, flags, created, retry) {
|
|
|
1666
1666
|
const unanswered = isUnansweredPoll(err);
|
|
1667
1667
|
const failure = new Error(
|
|
1668
1668
|
`${head}
|
|
1669
|
-
${created ? `Ephemeral "${name}" was created and is` : `Ephemeral "${name}" is`} recorded in .xano/ephemeral.json, but ${unanswered ? "whether it is ready could not be read" : "it is not ready yet"}, so nothing was imported. \`${retry?.command ?? `xanosdk deploy${flags}`}\` retries onto it; \`xanosdk ephemeral delete ${name}${flags}${offTerminalYes()}\` removes it.${withheldNote(retry?.withheld ?? [])}${unanswered ? " The poll got no answer (a server error or a network failure), so this run exits 8." : ""}`,
|
|
1669
|
+
${created ? `Ephemeral "${name}" was created and is` : `Ephemeral "${name}" is`} recorded in .xano/ephemeral.json, but ${unanswered ? "whether it is ready could not be read" : "it is not ready yet"}, so nothing was imported. \`${retry?.command ?? `xanosdk deploy --ephemeral${flags}`}\` retries onto it; \`xanosdk ephemeral delete ${name}${flags}${offTerminalYes()}\` removes it.${withheldNote(retry?.withheld ?? [])}${unanswered ? " The poll got no answer (a server error or a network failure), so this run exits 8." : ""}`,
|
|
1670
1670
|
{ cause: err }
|
|
1671
1671
|
);
|
|
1672
1672
|
return unanswered ? Object.assign(failure, { exitCode: 8 }) : failure;
|
|
@@ -1703,7 +1703,7 @@ async function warnSameDisplayName(auth, parentWorkspaceId, created, recorded, f
|
|
|
1703
1703
|
function unknownCreateOutcome(err, display, flags, retry) {
|
|
1704
1704
|
if (!(err instanceof Error) || !/may or may not have taken effect/.test(err.message)) return err;
|
|
1705
1705
|
const head = closeSentence(err.message.split("\n")[0]);
|
|
1706
|
-
const again = retry?.command ?? `xanosdk deploy${flags}`;
|
|
1706
|
+
const again = retry?.command ?? `xanosdk deploy --ephemeral${flags}`;
|
|
1707
1707
|
const message = `${head}
|
|
1708
1708
|
The request was sent, so ephemeral "${display}" may or may not have been created \u2014 check with \`xanosdk ephemeral list${flags}\` before retrying. If it is listed, it exists and this project does not track it: delete it with \`xanosdk ephemeral delete <handle>${flags}${offTerminalYes()}\` and run \`${again}\`, or keep it and merge into it with \`xanosdk deploy --to tenant:<handle>${flags}\` (a retry as it is creates a second one beside it). If it is not listed, run \`${again}\` again.${withheldNote(retry?.withheld ?? [])}`;
|
|
1709
1709
|
return err instanceof TransportError ? new TransportError(message, err.timeout, { cause: err.cause }) : new Error(message, { cause: err });
|
|
@@ -1727,9 +1727,9 @@ Re-run as \`${rerun}\` to answer yes without being asked.${note}`,
|
|
|
1727
1727
|
{ exitCode: 1, details: { reason: "needs-confirmation", ...details } }
|
|
1728
1728
|
);
|
|
1729
1729
|
}
|
|
1730
|
-
const { confirm } = await import("./prompt-
|
|
1730
|
+
const { confirm } = await import("./prompt-U37K5RPQ.js");
|
|
1731
1731
|
if (await confirm(question, { flag: "--yes", refusal: { details, rerun, note } })) return;
|
|
1732
|
-
const { KeepDataDeclined } = await import("./keep-data-merge-
|
|
1732
|
+
const { KeepDataDeclined } = await import("./keep-data-merge-QR2TMKEO.js");
|
|
1733
1733
|
throw new KeepDataDeclined(label, "deployed");
|
|
1734
1734
|
}
|
|
1735
1735
|
function recordedEntry(file) {
|
|
@@ -1764,7 +1764,7 @@ async function refuseOtherProfileEphemeral(state, auth) {
|
|
|
1764
1764
|
{ hintFor: { command: "deploy" } }
|
|
1765
1765
|
);
|
|
1766
1766
|
if (refusal === void 0) return;
|
|
1767
|
-
const { reachableFirst } = await import("./env-target-
|
|
1767
|
+
const { reachableFirst } = await import("./env-target-FZROWYFS.js");
|
|
1768
1768
|
throw await reachableFirst(refusal, auth);
|
|
1769
1769
|
}
|
|
1770
1770
|
async function refuseKeepDataElsewhere(state, auth) {
|
|
@@ -1778,7 +1778,7 @@ async function refuseKeepDataElsewhere(state, auth) {
|
|
|
1778
1778
|
{ hintFor: { command: "deploy" } }
|
|
1779
1779
|
);
|
|
1780
1780
|
if (refusal === void 0) return;
|
|
1781
|
-
const { reachableFirst } = await import("./env-target-
|
|
1781
|
+
const { reachableFirst } = await import("./env-target-FZROWYFS.js");
|
|
1782
1782
|
throw await reachableFirst(refusal, auth);
|
|
1783
1783
|
}
|
|
1784
1784
|
async function reconcileRename(err, auth, name, display) {
|
|
@@ -1813,7 +1813,7 @@ If no deploy is running in this project, its guard was left behind: remove \`${s
|
|
|
1813
1813
|
}
|
|
1814
1814
|
async function deployEphemeral(auth, ctx) {
|
|
1815
1815
|
const dir = process.cwd();
|
|
1816
|
-
const { assertReadWritable } = await import("./writable-
|
|
1816
|
+
const { assertReadWritable } = await import("./writable-D7KCZI5N.js");
|
|
1817
1817
|
assertReadWritable(ephemeralStatePath(dir));
|
|
1818
1818
|
const guard = await takeCreateGuard(dir, ctx.args);
|
|
1819
1819
|
try {
|
|
@@ -1832,7 +1832,7 @@ async function deployEphemeralGuarded(auth, ctx, createGuard) {
|
|
|
1832
1832
|
};
|
|
1833
1833
|
const parentWorkspaceId = auth.workspaceId;
|
|
1834
1834
|
const dir = process.cwd();
|
|
1835
|
-
const { assertReadWritable, assertWritable } = await import("./writable-
|
|
1835
|
+
const { assertReadWritable, assertWritable } = await import("./writable-D7KCZI5N.js");
|
|
1836
1836
|
assertReadWritable(ephemeralStatePath(dir));
|
|
1837
1837
|
if (ctx.lockPath !== void 0) assertWritable(ctx.lockPath, "build without a lock with `--no-lock`");
|
|
1838
1838
|
const state = readEphemeralState(dir);
|
|
@@ -1890,7 +1890,7 @@ async function deployEphemeralGuarded(auth, ctx, createGuard) {
|
|
|
1890
1890
|
}).finally(() => creating?.clear()).catch(async (err) => {
|
|
1891
1891
|
if (isEphemeralDisabled(err)) throw ephemeralDisabledError(source);
|
|
1892
1892
|
if (err.status === 404) {
|
|
1893
|
-
const { refuseUnreachableWorkspace } = await import("./workspace-binding-
|
|
1893
|
+
const { refuseUnreachableWorkspace } = await import("./workspace-binding-JE6YNDZJ.js");
|
|
1894
1894
|
await refuseUnreachableWorkspace(auth);
|
|
1895
1895
|
}
|
|
1896
1896
|
throw unknownCreateOutcome(err, display, flags, retryCommand(args, { creates: true }));
|
|
@@ -1958,7 +1958,7 @@ ${createdButFailedNote(fresh.name, false, args, false, { untracked: true })}`);
|
|
|
1958
1958
|
if (arm.arm === "replace") refuseStaticHostAReplaceClears(args, true);
|
|
1959
1959
|
else await assertStaticHostExists(args, auth, { baseUrl, workspaceId: 1 });
|
|
1960
1960
|
if (arm.arm === "replace") {
|
|
1961
|
-
const { gateForeignReplace } = await import("./keep-data-merge-
|
|
1961
|
+
const { gateForeignReplace } = await import("./keep-data-merge-QR2TMKEO.js");
|
|
1962
1962
|
const { allowForeignDeletes, confirm } = await mergeGuards(args, void 0);
|
|
1963
1963
|
await gateForeignReplace({
|
|
1964
1964
|
auth,
|
|
@@ -2030,7 +2030,7 @@ ${createdButFailedNote(fresh.name, false, args, false, { untracked: true })}`);
|
|
|
2030
2030
|
let merged;
|
|
2031
2031
|
try {
|
|
2032
2032
|
if (arm.arm === "merge") {
|
|
2033
|
-
const { mergeKeepingData } = await import("./keep-data-merge-
|
|
2033
|
+
const { mergeKeepingData } = await import("./keep-data-merge-QR2TMKEO.js");
|
|
2034
2034
|
merged = await mergeKeepingData({
|
|
2035
2035
|
auth,
|
|
2036
2036
|
baseUrl,
|
|
@@ -2084,11 +2084,11 @@ ${createdButFailedNote(fresh.name, false, args, false, { untracked: true })}`);
|
|
|
2084
2084
|
if (!lockCommitted) ctx.warnOrphansUncommitted?.();
|
|
2085
2085
|
if (err instanceof Error && err.name === "KeepDataDeclined") throw err;
|
|
2086
2086
|
if (err instanceof XanoSdkImportRefusal && err.retryable) {
|
|
2087
|
-
const { importInProgressError } = await import("./keep-data-merge-
|
|
2087
|
+
const { importInProgressError } = await import("./keep-data-merge-QR2TMKEO.js");
|
|
2088
2088
|
const retry = retryCommand(args);
|
|
2089
2089
|
throw importInProgressError(namedEphemeral(target), { command: retry.command, note: withheldNote(retry.withheld) }, err);
|
|
2090
2090
|
}
|
|
2091
|
-
const { withSignatureHint } = await import("./release-command-
|
|
2091
|
+
const { withSignatureHint } = await import("./release-command-BQ6OHS3P.js");
|
|
2092
2092
|
importFailure = withSignatureHint(err, args.bundle);
|
|
2093
2093
|
}
|
|
2094
2094
|
if (arm.arm === "merge" && renamedTo !== void 0) target = { ...target, display: renamedTo };
|
|
@@ -2252,7 +2252,7 @@ ${createdButFailedNote(target.name, unknown, args, landedUnresolved, { futile })
|
|
|
2252
2252
|
};
|
|
2253
2253
|
}
|
|
2254
2254
|
async function deployStaticTo(dir, auth, target, env, explicit, host, skipLiveness, routing, dirLabel, opts = {}) {
|
|
2255
|
-
const { deployStaticHost } = await import("./static-host-
|
|
2255
|
+
const { deployStaticHost } = await import("./static-host-ONEHA4LI.js");
|
|
2256
2256
|
const where = target.label && target.label !== "" ? target.label : `workspace #${target.workspaceId}`;
|
|
2257
2257
|
if (target.announced !== true) step(`Deploying static frontend ${dir} \u2192 ${where}${host ? ` (host: ${host})` : ""}`);
|
|
2258
2258
|
const sh = await describeWrite(
|
|
@@ -2274,7 +2274,7 @@ async function deployStaticTo(dir, auth, target, env, explicit, host, skipLivene
|
|
|
2274
2274
|
);
|
|
2275
2275
|
if (sh.serverBundle === "omitted") {
|
|
2276
2276
|
detail(
|
|
2277
|
-
"Server half (.xano-ssr/) not uploaded: this host serves files only. `xanosdk deploy --local
|
|
2277
|
+
"Server half (.xano-ssr/) not uploaded: this host serves files only. `xanosdk deploy --local --static` renders it."
|
|
2278
2278
|
);
|
|
2279
2279
|
}
|
|
2280
2280
|
if (sh.hiddenUnserved !== void 0) {
|
|
@@ -2382,4 +2382,4 @@ export {
|
|
|
2382
2382
|
unknownCreateOutcome,
|
|
2383
2383
|
deployStaticTo
|
|
2384
2384
|
};
|
|
2385
|
-
//# sourceMappingURL=chunk-
|
|
2385
|
+
//# sourceMappingURL=chunk-ZDP6GDAB.js.map
|