dreamcontext 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dashboard/assets/{BrainCanvas3D-hy-bJKIJ.js → BrainCanvas3D-BvuUW-Ij.js} +1 -1
- package/dist/dashboard/assets/{_baseUniq-DduL-UlQ.js → _baseUniq-BNAWiBFl.js} +1 -1
- package/dist/dashboard/assets/{ar-SA-G6X2FPQ2-CrmB7xfA.js → ar-SA-G6X2FPQ2-rNEb6-jN.js} +1 -1
- package/dist/dashboard/assets/{arc-sHUGY_nD.js → arc-DDLjNpXk.js} +1 -1
- package/dist/dashboard/assets/{architectureDiagram-Q4EWVU46-DgYle1Hc.js → architectureDiagram-Q4EWVU46-P208qO4N.js} +1 -1
- package/dist/dashboard/assets/{az-AZ-76LH7QW2-xoplM1zS.js → az-AZ-76LH7QW2-Dwql62JX.js} +1 -1
- package/dist/dashboard/assets/{bg-BG-XCXSNQG7-BF4iIrZQ.js → bg-BG-XCXSNQG7-BgteTNp8.js} +1 -1
- package/dist/dashboard/assets/{blockDiagram-DXYQGD6D-YPBR1t-F.js → blockDiagram-DXYQGD6D-BDSceoPt.js} +1 -1
- package/dist/dashboard/assets/{bn-BD-2XOGV67Q-KGLt7gMU.js → bn-BD-2XOGV67Q-BYJ6_efF.js} +1 -1
- package/dist/dashboard/assets/{c4Diagram-AHTNJAMY-B1KEuF7Q.js → c4Diagram-AHTNJAMY-CRbiwdrM.js} +1 -1
- package/dist/dashboard/assets/{ca-ES-6MX7JW3Y-BYuoubhq.js → ca-ES-6MX7JW3Y-CtFrXfas.js} +1 -1
- package/dist/dashboard/assets/channel-CJWWthUO.js +1 -0
- package/dist/dashboard/assets/{chunk-4BX2VUAB-BALrhoW_.js → chunk-4BX2VUAB-kqN0Cg_r.js} +1 -1
- package/dist/dashboard/assets/{chunk-4TB4RGXK-8uLOmmU8.js → chunk-4TB4RGXK-CpwYPUdR.js} +1 -1
- package/dist/dashboard/assets/{chunk-55IACEB6-D2hViX7K.js → chunk-55IACEB6-CQ_4M3g4.js} +1 -1
- package/dist/dashboard/assets/{chunk-EDXVE4YY-C9foqo-F.js → chunk-EDXVE4YY--HdVil0f.js} +1 -1
- package/dist/dashboard/assets/{chunk-FMBD7UC4-D1G0o3Ow.js → chunk-FMBD7UC4-CrbfOH-q.js} +1 -1
- package/dist/dashboard/assets/{chunk-OYMX7WX6-CiVziVyS.js → chunk-OYMX7WX6-BrcCZnqx.js} +1 -1
- package/dist/dashboard/assets/{chunk-QZHKN3VN-DE5GBsSY.js → chunk-QZHKN3VN-Cby58gGN.js} +1 -1
- package/dist/dashboard/assets/{chunk-YZCP3GAM-BpQQIx3b.js → chunk-YZCP3GAM-tvOjDART.js} +1 -1
- package/dist/dashboard/assets/classDiagram-6PBFFD2Q-D8yKg5c-.js +1 -0
- package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-D8yKg5c-.js +1 -0
- package/dist/dashboard/assets/clone-DkTWs9rv.js +1 -0
- package/dist/dashboard/assets/{cose-bilkent-S5V4N54A-KvwZaKE7.js → cose-bilkent-S5V4N54A-CuwbWQzD.js} +1 -1
- package/dist/dashboard/assets/{cs-CZ-2BRQDIVT-xYBULEJ9.js → cs-CZ-2BRQDIVT-DfVAwqqU.js} +1 -1
- package/dist/dashboard/assets/{da-DK-5WZEPLOC-DF2tyJRb.js → da-DK-5WZEPLOC-D1QJqNxG.js} +1 -1
- package/dist/dashboard/assets/{dagre-KV5264BT-Du_qjhF2.js → dagre-KV5264BT-Bbf-wMho.js} +1 -1
- package/dist/dashboard/assets/{de-DE-XR44H4JA-DlmZt5e9.js → de-DE-XR44H4JA-CbCdH8Mp.js} +1 -1
- package/dist/dashboard/assets/{diagram-5BDNPKRD-D7slatQr.js → diagram-5BDNPKRD-CvMJJUvv.js} +1 -1
- package/dist/dashboard/assets/{diagram-G4DWMVQ6-DiCZYy5B.js → diagram-G4DWMVQ6-BBz7ebE8.js} +1 -1
- package/dist/dashboard/assets/{diagram-MMDJMWI5-BxckEUHv.js → diagram-MMDJMWI5-U7IcL5ZQ.js} +1 -1
- package/dist/dashboard/assets/{diagram-TYMM5635-BGh7adH7.js → diagram-TYMM5635-BfTLwlSm.js} +1 -1
- package/dist/dashboard/assets/{el-GR-BZB4AONW-3_nYTnDJ.js → el-GR-BZB4AONW-DvGrscY6.js} +1 -1
- package/dist/dashboard/assets/{erDiagram-SMLLAGMA-Bgu7PR3l.js → erDiagram-SMLLAGMA-C1ncTn9B.js} +1 -1
- package/dist/dashboard/assets/{es-ES-U4NZUMDT-Blp-jVT8.js → es-ES-U4NZUMDT-BlawPkmw.js} +1 -1
- package/dist/dashboard/assets/{eu-ES-A7QVB2H4-DksJfC54.js → eu-ES-A7QVB2H4-p5lXDFKY.js} +1 -1
- package/dist/dashboard/assets/{fa-IR-HGAKTJCU-DgwscI8H.js → fa-IR-HGAKTJCU-DbY6Wzu9.js} +1 -1
- package/dist/dashboard/assets/{fi-FI-Z5N7JZ37-D5xWl1j1.js → fi-FI-Z5N7JZ37-HyRJneut.js} +1 -1
- package/dist/dashboard/assets/{flowDiagram-DWJPFMVM-DRYxEOwt.js → flowDiagram-DWJPFMVM-tySa4G4z.js} +1 -1
- package/dist/dashboard/assets/{fr-FR-RHASNOE6-C5ic6hfW.js → fr-FR-RHASNOE6-C0ElnhzM.js} +1 -1
- package/dist/dashboard/assets/{ganttDiagram-T4ZO3ILL-CNf0-tRS.js → ganttDiagram-T4ZO3ILL-BQsJPxAU.js} +1 -1
- package/dist/dashboard/assets/{gitGraphDiagram-UUTBAWPF-B-fWXvro.js → gitGraphDiagram-UUTBAWPF-B2jHjMzI.js} +1 -1
- package/dist/dashboard/assets/{gl-ES-HMX3MZ6V-CYsGLfzn.js → gl-ES-HMX3MZ6V-D5qSPU7d.js} +1 -1
- package/dist/dashboard/assets/{graph-CqM3kXVs.js → graph-deVQIt7H.js} +1 -1
- package/dist/dashboard/assets/{he-IL-6SHJWFNN-DZp7dZBD.js → he-IL-6SHJWFNN-CNsRxzJL.js} +1 -1
- package/dist/dashboard/assets/{hi-IN-IWLTKZ5I-DZ-8BLt8.js → hi-IN-IWLTKZ5I-CCLXIBWK.js} +1 -1
- package/dist/dashboard/assets/{hu-HU-A5ZG7DT2-cIzehzha.js → hu-HU-A5ZG7DT2-Dq17BfYB.js} +1 -1
- package/dist/dashboard/assets/{id-ID-SAP4L64H-CHmT4Y6G.js → id-ID-SAP4L64H-CRL19WJa.js} +1 -1
- package/dist/dashboard/assets/{index-WuRpIREk.js → index-BO_pjfQA.js} +1 -1
- package/dist/dashboard/assets/index-CQkBs_Vm.js +484 -0
- package/dist/dashboard/assets/index-aCkhI_aO.css +1 -0
- package/dist/dashboard/assets/{infoDiagram-42DDH7IO-zeTnmz1D.js → infoDiagram-42DDH7IO-DKXhFQx1.js} +1 -1
- package/dist/dashboard/assets/{ishikawaDiagram-UXIWVN3A-Bb756K5U.js → ishikawaDiagram-UXIWVN3A-ixuXBV9q.js} +1 -1
- package/dist/dashboard/assets/{it-IT-JPQ66NNP-D6lXGD0z.js → it-IT-JPQ66NNP-B-3gnXYZ.js} +1 -1
- package/dist/dashboard/assets/{ja-JP-DBVTYXUO-DyuGqonM.js → ja-JP-DBVTYXUO-GCqLTdC-.js} +1 -1
- package/dist/dashboard/assets/{journeyDiagram-VCZTEJTY-DFWvXLzk.js → journeyDiagram-VCZTEJTY-Cda6rfE1.js} +1 -1
- package/dist/dashboard/assets/{kaa-6HZHGXH3-oNCeqt-A.js → kaa-6HZHGXH3-DUr4YiJc.js} +1 -1
- package/dist/dashboard/assets/{kab-KAB-ZGHBKWFO-DfP6kptf.js → kab-KAB-ZGHBKWFO-DGcoDq7_.js} +1 -1
- package/dist/dashboard/assets/{kanban-definition-6JOO6SKY-DhKLuu7C.js → kanban-definition-6JOO6SKY-8II0TptL.js} +1 -1
- package/dist/dashboard/assets/{kk-KZ-P5N5QNE5-B63w7yii.js → kk-KZ-P5N5QNE5-OnQ3fZQr.js} +1 -1
- package/dist/dashboard/assets/{km-KH-HSX4SM5Z-C8nYbGAM.js → km-KH-HSX4SM5Z-BgLH2RAX.js} +1 -1
- package/dist/dashboard/assets/{ko-KR-MTYHY66A-D3wzPaIE.js → ko-KR-MTYHY66A-BFRlVzp3.js} +1 -1
- package/dist/dashboard/assets/{ku-TR-6OUDTVRD-C59UaChS.js → ku-TR-6OUDTVRD-KXxCpHg7.js} +1 -1
- package/dist/dashboard/assets/{layout-CtFtUFag.js → layout-Bk1_SQxF.js} +1 -1
- package/dist/dashboard/assets/{linear-DubzSxx7.js → linear-NBVeSfQr.js} +1 -1
- package/dist/dashboard/assets/{lt-LT-XHIRWOB4-C_buJu91.js → lt-LT-XHIRWOB4-zYih94tH.js} +1 -1
- package/dist/dashboard/assets/{lv-LV-5QDEKY6T-BhQWVAR-.js → lv-LV-5QDEKY6T-BfR2lGJU.js} +1 -1
- package/dist/dashboard/assets/{min-DcWdHBie.js → min-Czsp1-lf.js} +1 -1
- package/dist/dashboard/assets/{mindmap-definition-QFDTVHPH-BSWtNXnF.js → mindmap-definition-QFDTVHPH-B7iHNGK3.js} +1 -1
- package/dist/dashboard/assets/{mr-IN-CRQNXWMA-DEac6VeJ.js → mr-IN-CRQNXWMA-CbecgcF-.js} +1 -1
- package/dist/dashboard/assets/{my-MM-5M5IBNSE-DcSFgD6q.js → my-MM-5M5IBNSE-CsdHXw4v.js} +1 -1
- package/dist/dashboard/assets/{nb-NO-T6EIAALU-CMd5OV1y.js → nb-NO-T6EIAALU-r8FpCRvQ.js} +1 -1
- package/dist/dashboard/assets/{nl-NL-IS3SIHDZ-CX2kfxhY.js → nl-NL-IS3SIHDZ-Dp3Z4P6_.js} +1 -1
- package/dist/dashboard/assets/{nn-NO-6E72VCQL-MpSm1-uc.js → nn-NO-6E72VCQL-CQcuUlUa.js} +1 -1
- package/dist/dashboard/assets/{oc-FR-POXYY2M6-Nso9HjoJ.js → oc-FR-POXYY2M6-Dz9rwf28.js} +1 -1
- package/dist/dashboard/assets/{pa-IN-N4M65BXN-Bc_09DWN.js → pa-IN-N4M65BXN-AuAonL3w.js} +1 -1
- package/dist/dashboard/assets/{percentages-BXMCSKIN-DP6uG13u.js → percentages-BXMCSKIN-D9EnbREi.js} +7 -7
- package/dist/dashboard/assets/{pica-CMpqUhac.js → pica---loOZLP.js} +1 -1
- package/dist/dashboard/assets/{pieDiagram-DEJITSTG-BNsvSiV8.js → pieDiagram-DEJITSTG-CiDTXifX.js} +1 -1
- package/dist/dashboard/assets/{pl-PL-T2D74RX3-CJWz-KGN.js → pl-PL-T2D74RX3-4k9qJgDf.js} +1 -1
- package/dist/dashboard/assets/{pt-BR-5N22H2LF-DHX3cV6G.js → pt-BR-5N22H2LF-DvKuT6kK.js} +1 -1
- package/dist/dashboard/assets/{pt-PT-UZXXM6DQ-CU_RnGju.js → pt-PT-UZXXM6DQ-ijbr_1VI.js} +1 -1
- package/dist/dashboard/assets/{quadrantDiagram-34T5L4WZ-CnG8TUp0.js → quadrantDiagram-34T5L4WZ-Bu9Comci.js} +1 -1
- package/dist/dashboard/assets/{requirementDiagram-MS252O5E-CVzV4vf5.js → requirementDiagram-MS252O5E-D62TW6xA.js} +1 -1
- package/dist/dashboard/assets/{ro-RO-JPDTUUEW-aYl76VP7.js → ro-RO-JPDTUUEW-C0llzWmG.js} +1 -1
- package/dist/dashboard/assets/{ru-RU-B4JR7IUQ-B_y9bRe1.js → ru-RU-B4JR7IUQ-BeSwVB2r.js} +1 -1
- package/dist/dashboard/assets/{sankeyDiagram-XADWPNL6-CZLhklJg.js → sankeyDiagram-XADWPNL6-TlSEi12K.js} +1 -1
- package/dist/dashboard/assets/{sequenceDiagram-FGHM5R23-DjCIzK1N.js → sequenceDiagram-FGHM5R23-ScKG2Xsm.js} +1 -1
- package/dist/dashboard/assets/{si-LK-N5RQ5JYF-DYVfARgr.js → si-LK-N5RQ5JYF-DWeue3dw.js} +1 -1
- package/dist/dashboard/assets/{sk-SK-C5VTKIMK-B6Mg_bJ9.js → sk-SK-C5VTKIMK-C2sh3w4f.js} +1 -1
- package/dist/dashboard/assets/{sl-SI-NN7IZMDC-Ck2a-g0A.js → sl-SI-NN7IZMDC-CeXk9ucf.js} +1 -1
- package/dist/dashboard/assets/{stateDiagram-FHFEXIEX-D9Z-sJAh.js → stateDiagram-FHFEXIEX-BB1JoyXM.js} +1 -1
- package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-BqR3Ofhf.js +1 -0
- package/dist/dashboard/assets/{subset-shared.chunk-CE199FVY.js → subset-shared.chunk-CWvpWWsn.js} +1 -1
- package/dist/dashboard/assets/{subset-worker.chunk-DKgKGIuW.js → subset-worker.chunk-D7Ec71V-.js} +1 -1
- package/dist/dashboard/assets/{sv-SE-XGPEYMSR-C9Hkuq3i.js → sv-SE-XGPEYMSR-8YPrynz7.js} +1 -1
- package/dist/dashboard/assets/{ta-IN-2NMHFXQM-IEhskXEC.js → ta-IN-2NMHFXQM-CmMKeEZv.js} +1 -1
- package/dist/dashboard/assets/{th-TH-HPSO5L25-DTb8f2Te.js → th-TH-HPSO5L25-BIxym374.js} +1 -1
- package/dist/dashboard/assets/{timeline-definition-GMOUNBTQ-n1YhmZQ4.js → timeline-definition-GMOUNBTQ-Cx1z6jhx.js} +1 -1
- package/dist/dashboard/assets/{tr-TR-DEFEU3FU-CnEnSvd1.js → tr-TR-DEFEU3FU-BZUk--nT.js} +1 -1
- package/dist/dashboard/assets/{uk-UA-QMV73CPH-CV5yaOns.js → uk-UA-QMV73CPH-DKP6R9nZ.js} +1 -1
- package/dist/dashboard/assets/{vennDiagram-DHZGUBPP-EZuBw-Y1.js → vennDiagram-DHZGUBPP-CHrTxlSz.js} +1 -1
- package/dist/dashboard/assets/{vi-VN-M7AON7JQ-C_pZqaaY.js → vi-VN-M7AON7JQ-D1tkx3Op.js} +1 -1
- package/dist/dashboard/assets/{wardley-RL74JXVD-CEAA3DK-.js → wardley-RL74JXVD-DuzpwUu5.js} +1 -1
- package/dist/dashboard/assets/{wardleyDiagram-NUSXRM2D-DhmpY-nw.js → wardleyDiagram-NUSXRM2D-x03tOVd0.js} +1 -1
- package/dist/dashboard/assets/{xychartDiagram-5P7HB3ND-BCfqQ3yb.js → xychartDiagram-5P7HB3ND-CufD9zuW.js} +1 -1
- package/dist/dashboard/assets/{zh-CN-LNUGB5OW-C9EPIaEx.js → zh-CN-LNUGB5OW-CpicUYEV.js} +1 -1
- package/dist/dashboard/assets/{zh-HK-E62DVLB3-RZGyfbKw.js → zh-HK-E62DVLB3-DyNkpg-N.js} +1 -1
- package/dist/dashboard/assets/{zh-TW-RAJ6MFWO-CfQ4KbkI.js → zh-TW-RAJ6MFWO-Cg30MEjI.js} +1 -1
- package/dist/dashboard/index.html +2 -2
- package/dist/index.js +553 -287
- package/package.json +1 -1
- package/dist/dashboard/assets/channel-BvyIgIvU.js +0 -1
- package/dist/dashboard/assets/classDiagram-6PBFFD2Q-B2f-mNIc.js +0 -1
- package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-B2f-mNIc.js +0 -1
- package/dist/dashboard/assets/clone-BOZwMwp7.js +0 -1
- package/dist/dashboard/assets/index-B_cYqPxr.js +0 -482
- package/dist/dashboard/assets/index-D1nedbBU.css +0 -1
- package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-nhVyYoyX.js +0 -1
package/dist/index.js
CHANGED
|
@@ -25,9 +25,9 @@ var __export = (target, all) => {
|
|
|
25
25
|
};
|
|
26
26
|
var __copyProps = (to, from, except, desc) => {
|
|
27
27
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
28
|
-
for (let
|
|
29
|
-
if (!__hasOwnProp.call(to,
|
|
30
|
-
__defProp(to,
|
|
28
|
+
for (let key2 of __getOwnPropNames(from))
|
|
29
|
+
if (!__hasOwnProp.call(to, key2) && key2 !== except)
|
|
30
|
+
__defProp(to, key2, { get: () => from[key2], enumerable: !(desc = __getOwnPropDesc(from, key2)) || desc.enumerable });
|
|
31
31
|
}
|
|
32
32
|
return to;
|
|
33
33
|
};
|
|
@@ -1006,9 +1006,9 @@ var require_option = __commonJS({
|
|
|
1006
1006
|
this.positiveOptions.set(option.attributeName(), option);
|
|
1007
1007
|
}
|
|
1008
1008
|
});
|
|
1009
|
-
this.negativeOptions.forEach((value,
|
|
1010
|
-
if (this.positiveOptions.has(
|
|
1011
|
-
this.dualOptions.add(
|
|
1009
|
+
this.negativeOptions.forEach((value, key2) => {
|
|
1010
|
+
if (this.positiveOptions.has(key2)) {
|
|
1011
|
+
this.dualOptions.add(key2);
|
|
1012
1012
|
}
|
|
1013
1013
|
});
|
|
1014
1014
|
}
|
|
@@ -1928,11 +1928,11 @@ Expecting one of '${allowedValues.join("', '")}'`);
|
|
|
1928
1928
|
* @param {string} key
|
|
1929
1929
|
* @return {object} value
|
|
1930
1930
|
*/
|
|
1931
|
-
getOptionValue(
|
|
1931
|
+
getOptionValue(key2) {
|
|
1932
1932
|
if (this._storeOptionsAsProperties) {
|
|
1933
|
-
return this[
|
|
1933
|
+
return this[key2];
|
|
1934
1934
|
}
|
|
1935
|
-
return this._optionValues[
|
|
1935
|
+
return this._optionValues[key2];
|
|
1936
1936
|
}
|
|
1937
1937
|
/**
|
|
1938
1938
|
* Store option value.
|
|
@@ -1941,8 +1941,8 @@ Expecting one of '${allowedValues.join("', '")}'`);
|
|
|
1941
1941
|
* @param {object} value
|
|
1942
1942
|
* @return {Command} `this` command for chaining
|
|
1943
1943
|
*/
|
|
1944
|
-
setOptionValue(
|
|
1945
|
-
return this.setOptionValueWithSource(
|
|
1944
|
+
setOptionValue(key2, value) {
|
|
1945
|
+
return this.setOptionValueWithSource(key2, value, void 0);
|
|
1946
1946
|
}
|
|
1947
1947
|
/**
|
|
1948
1948
|
* Store option value and where the value came from.
|
|
@@ -1952,13 +1952,13 @@ Expecting one of '${allowedValues.join("', '")}'`);
|
|
|
1952
1952
|
* @param {string} source - expected values are default/config/env/cli/implied
|
|
1953
1953
|
* @return {Command} `this` command for chaining
|
|
1954
1954
|
*/
|
|
1955
|
-
setOptionValueWithSource(
|
|
1955
|
+
setOptionValueWithSource(key2, value, source) {
|
|
1956
1956
|
if (this._storeOptionsAsProperties) {
|
|
1957
|
-
this[
|
|
1957
|
+
this[key2] = value;
|
|
1958
1958
|
} else {
|
|
1959
|
-
this._optionValues[
|
|
1959
|
+
this._optionValues[key2] = value;
|
|
1960
1960
|
}
|
|
1961
|
-
this._optionValueSources[
|
|
1961
|
+
this._optionValueSources[key2] = source;
|
|
1962
1962
|
return this;
|
|
1963
1963
|
}
|
|
1964
1964
|
/**
|
|
@@ -1968,8 +1968,8 @@ Expecting one of '${allowedValues.join("', '")}'`);
|
|
|
1968
1968
|
* @param {string} key
|
|
1969
1969
|
* @return {string}
|
|
1970
1970
|
*/
|
|
1971
|
-
getOptionValueSource(
|
|
1972
|
-
return this._optionValueSources[
|
|
1971
|
+
getOptionValueSource(key2) {
|
|
1972
|
+
return this._optionValueSources[key2];
|
|
1973
1973
|
}
|
|
1974
1974
|
/**
|
|
1975
1975
|
* Get source of option value. See also .optsWithGlobals().
|
|
@@ -1978,11 +1978,11 @@ Expecting one of '${allowedValues.join("', '")}'`);
|
|
|
1978
1978
|
* @param {string} key
|
|
1979
1979
|
* @return {string}
|
|
1980
1980
|
*/
|
|
1981
|
-
getOptionValueSourceWithGlobals(
|
|
1981
|
+
getOptionValueSourceWithGlobals(key2) {
|
|
1982
1982
|
let source;
|
|
1983
1983
|
this._getCommandAndAncestors().forEach((cmd) => {
|
|
1984
|
-
if (cmd.getOptionValueSource(
|
|
1985
|
-
source = cmd.getOptionValueSource(
|
|
1984
|
+
if (cmd.getOptionValueSource(key2) !== void 0) {
|
|
1985
|
+
source = cmd.getOptionValueSource(key2);
|
|
1986
1986
|
}
|
|
1987
1987
|
});
|
|
1988
1988
|
return source;
|
|
@@ -2703,8 +2703,8 @@ Expecting one of '${allowedValues.join("', '")}'`);
|
|
|
2703
2703
|
const result = {};
|
|
2704
2704
|
const len = this.options.length;
|
|
2705
2705
|
for (let i = 0; i < len; i++) {
|
|
2706
|
-
const
|
|
2707
|
-
result[
|
|
2706
|
+
const key2 = this.options[i].attributeName();
|
|
2707
|
+
result[key2] = key2 === this._versionOptionName ? this._version : this[key2];
|
|
2708
2708
|
}
|
|
2709
2709
|
return result;
|
|
2710
2710
|
}
|
|
@@ -3624,7 +3624,7 @@ function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
|
|
|
3624
3624
|
return 1;
|
|
3625
3625
|
}
|
|
3626
3626
|
if ("CI" in env) {
|
|
3627
|
-
if (["GITHUB_ACTIONS", "GITEA_ACTIONS", "CIRCLECI"].some((
|
|
3627
|
+
if (["GITHUB_ACTIONS", "GITEA_ACTIONS", "CIRCLECI"].some((key2) => key2 in env)) {
|
|
3628
3628
|
return 3;
|
|
3629
3629
|
}
|
|
3630
3630
|
if (["TRAVIS", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env) || env.CI_NAME === "codeship") {
|
|
@@ -3890,23 +3890,23 @@ var isUpKey, isDownKey, isSpaceKey, isBackspaceKey, isTabKey, isNumberKey, isEnt
|
|
|
3890
3890
|
var init_key = __esm({
|
|
3891
3891
|
"node_modules/@inquirer/core/dist/esm/lib/key.js"() {
|
|
3892
3892
|
"use strict";
|
|
3893
|
-
isUpKey = (
|
|
3893
|
+
isUpKey = (key2, keybindings = []) => (
|
|
3894
3894
|
// The up key
|
|
3895
|
-
|
|
3896
|
-
keybindings.includes("vim") &&
|
|
3897
|
-
keybindings.includes("emacs") &&
|
|
3895
|
+
key2.name === "up" || // Vim keybinding: hjkl keys map to left/down/up/right
|
|
3896
|
+
keybindings.includes("vim") && key2.name === "k" || // Emacs keybinding: Ctrl+P means "previous" in Emacs navigation conventions
|
|
3897
|
+
keybindings.includes("emacs") && key2.ctrl && key2.name === "p"
|
|
3898
3898
|
);
|
|
3899
|
-
isDownKey = (
|
|
3899
|
+
isDownKey = (key2, keybindings = []) => (
|
|
3900
3900
|
// The down key
|
|
3901
|
-
|
|
3902
|
-
keybindings.includes("vim") &&
|
|
3903
|
-
keybindings.includes("emacs") &&
|
|
3901
|
+
key2.name === "down" || // Vim keybinding: hjkl keys map to left/down/up/right
|
|
3902
|
+
keybindings.includes("vim") && key2.name === "j" || // Emacs keybinding: Ctrl+N means "next" in Emacs navigation conventions
|
|
3903
|
+
keybindings.includes("emacs") && key2.ctrl && key2.name === "n"
|
|
3904
3904
|
);
|
|
3905
|
-
isSpaceKey = (
|
|
3906
|
-
isBackspaceKey = (
|
|
3907
|
-
isTabKey = (
|
|
3908
|
-
isNumberKey = (
|
|
3909
|
-
isEnterKey = (
|
|
3905
|
+
isSpaceKey = (key2) => key2.name === "space";
|
|
3906
|
+
isBackspaceKey = (key2) => key2.name === "backspace";
|
|
3907
|
+
isTabKey = (key2) => key2.name === "tab";
|
|
3908
|
+
isNumberKey = (key2) => "1234567890".includes(key2.name);
|
|
3909
|
+
isEnterKey = (key2) => key2.name === "enter" || key2.name === "return";
|
|
3910
3910
|
}
|
|
3911
3911
|
});
|
|
3912
3912
|
|
|
@@ -4512,9 +4512,9 @@ function isPlainObject(value) {
|
|
|
4512
4512
|
function deepMerge(...objects) {
|
|
4513
4513
|
const output = {};
|
|
4514
4514
|
for (const obj of objects) {
|
|
4515
|
-
for (const [
|
|
4516
|
-
const prevValue = output[
|
|
4517
|
-
output[
|
|
4515
|
+
for (const [key2, value] of Object.entries(obj)) {
|
|
4516
|
+
const prevValue = output[key2];
|
|
4517
|
+
output[key2] = isPlainObject(prevValue) && isPlainObject(value) ? deepMerge(prevValue, value) : value;
|
|
4518
4518
|
}
|
|
4519
4519
|
}
|
|
4520
4520
|
return output;
|
|
@@ -4643,9 +4643,9 @@ var require_cli_width = __commonJS({
|
|
|
4643
4643
|
if (!options2) {
|
|
4644
4644
|
return defaultOpts;
|
|
4645
4645
|
}
|
|
4646
|
-
Object.keys(defaultOpts).forEach(function(
|
|
4647
|
-
if (!options2[
|
|
4648
|
-
options2[
|
|
4646
|
+
Object.keys(defaultOpts).forEach(function(key2) {
|
|
4647
|
+
if (!options2[key2]) {
|
|
4648
|
+
options2[key2] = defaultOpts[key2];
|
|
4649
4649
|
}
|
|
4650
4650
|
});
|
|
4651
4651
|
return options2;
|
|
@@ -4938,8 +4938,8 @@ var require_conversions = __commonJS({
|
|
|
4938
4938
|
"use strict";
|
|
4939
4939
|
var cssKeywords = require_color_name();
|
|
4940
4940
|
var reverseKeywords = {};
|
|
4941
|
-
for (const
|
|
4942
|
-
reverseKeywords[cssKeywords[
|
|
4941
|
+
for (const key2 of Object.keys(cssKeywords)) {
|
|
4942
|
+
reverseKeywords[cssKeywords[key2]] = key2;
|
|
4943
4943
|
}
|
|
4944
4944
|
var convert = {
|
|
4945
4945
|
rgb: { channels: 3, labels: "rgb" },
|
|
@@ -6141,12 +6141,12 @@ var require_lib = __commonJS({
|
|
|
6141
6141
|
this._prompt = opts.prompt || null;
|
|
6142
6142
|
this._hadControl = false;
|
|
6143
6143
|
}
|
|
6144
|
-
#destSrc(
|
|
6144
|
+
#destSrc(key2, def) {
|
|
6145
6145
|
if (this._dest) {
|
|
6146
|
-
return this._dest[
|
|
6146
|
+
return this._dest[key2];
|
|
6147
6147
|
}
|
|
6148
6148
|
if (this._src) {
|
|
6149
|
-
return this._src[
|
|
6149
|
+
return this._src[key2];
|
|
6150
6150
|
}
|
|
6151
6151
|
return def;
|
|
6152
6152
|
}
|
|
@@ -6835,7 +6835,7 @@ var init_esm5 = __esm({
|
|
|
6835
6835
|
disabledChoice: (text) => import_yoctocolors_cjs3.default.dim(`- ${text}`),
|
|
6836
6836
|
renderSelectedChoices: (selectedChoices) => selectedChoices.map((choice) => choice.short).join(", "),
|
|
6837
6837
|
description: (text) => import_yoctocolors_cjs3.default.cyan(text),
|
|
6838
|
-
keysHelpTip: (keys) => keys.map(([
|
|
6838
|
+
keysHelpTip: (keys) => keys.map(([key2, action]) => `${import_yoctocolors_cjs3.default.bold(key2)} ${import_yoctocolors_cjs3.default.dim(action)}`).join(import_yoctocolors_cjs3.default.dim(" \u2022 "))
|
|
6839
6839
|
},
|
|
6840
6840
|
helpMode: "always",
|
|
6841
6841
|
keybindings: []
|
|
@@ -6865,8 +6865,8 @@ var init_esm5 = __esm({
|
|
|
6865
6865
|
}, [items]);
|
|
6866
6866
|
const [active, setActive] = useState(bounds.first);
|
|
6867
6867
|
const [errorMsg, setError] = useState();
|
|
6868
|
-
useKeypress(async (
|
|
6869
|
-
if (isEnterKey(
|
|
6868
|
+
useKeypress(async (key2) => {
|
|
6869
|
+
if (isEnterKey(key2)) {
|
|
6870
6870
|
const selection = items.filter(isChecked);
|
|
6871
6871
|
const isValid = await validate([...selection]);
|
|
6872
6872
|
if (required && !items.some(isChecked)) {
|
|
@@ -6877,25 +6877,25 @@ var init_esm5 = __esm({
|
|
|
6877
6877
|
} else {
|
|
6878
6878
|
setError(isValid || "You must select a valid value");
|
|
6879
6879
|
}
|
|
6880
|
-
} else if (isUpKey(
|
|
6881
|
-
if (loop || isUpKey(
|
|
6882
|
-
const offset = isUpKey(
|
|
6880
|
+
} else if (isUpKey(key2, keybindings) || isDownKey(key2, keybindings)) {
|
|
6881
|
+
if (loop || isUpKey(key2, keybindings) && active !== bounds.first || isDownKey(key2, keybindings) && active !== bounds.last) {
|
|
6882
|
+
const offset = isUpKey(key2, keybindings) ? -1 : 1;
|
|
6883
6883
|
let next = active;
|
|
6884
6884
|
do {
|
|
6885
6885
|
next = (next + offset + items.length) % items.length;
|
|
6886
6886
|
} while (!isSelectable(items[next]));
|
|
6887
6887
|
setActive(next);
|
|
6888
6888
|
}
|
|
6889
|
-
} else if (isSpaceKey(
|
|
6889
|
+
} else if (isSpaceKey(key2)) {
|
|
6890
6890
|
setError(void 0);
|
|
6891
6891
|
setItems(items.map((choice, i) => i === active ? toggle(choice) : choice));
|
|
6892
|
-
} else if (
|
|
6892
|
+
} else if (key2.name === shortcuts.all) {
|
|
6893
6893
|
const selectAll = items.some((choice) => isSelectable(choice) && !choice.checked);
|
|
6894
6894
|
setItems(items.map(check(selectAll)));
|
|
6895
|
-
} else if (
|
|
6895
|
+
} else if (key2.name === shortcuts.invert) {
|
|
6896
6896
|
setItems(items.map(toggle));
|
|
6897
|
-
} else if (isNumberKey(
|
|
6898
|
-
const selectedIndex = Number(
|
|
6897
|
+
} else if (isNumberKey(key2)) {
|
|
6898
|
+
const selectedIndex = Number(key2.name) - 1;
|
|
6899
6899
|
let selectableIndex = -1;
|
|
6900
6900
|
const position = items.findIndex((item) => {
|
|
6901
6901
|
if (Separator.isSeparator(item))
|
|
@@ -12611,17 +12611,17 @@ var require_safer = __commonJS({
|
|
|
12611
12611
|
var buffer = __require("buffer");
|
|
12612
12612
|
var Buffer2 = buffer.Buffer;
|
|
12613
12613
|
var safer = {};
|
|
12614
|
-
var
|
|
12615
|
-
for (
|
|
12616
|
-
if (!buffer.hasOwnProperty(
|
|
12617
|
-
if (
|
|
12618
|
-
safer[
|
|
12614
|
+
var key2;
|
|
12615
|
+
for (key2 in buffer) {
|
|
12616
|
+
if (!buffer.hasOwnProperty(key2)) continue;
|
|
12617
|
+
if (key2 === "SlowBuffer" || key2 === "Buffer") continue;
|
|
12618
|
+
safer[key2] = buffer[key2];
|
|
12619
12619
|
}
|
|
12620
12620
|
var Safer = safer.Buffer = {};
|
|
12621
|
-
for (
|
|
12622
|
-
if (!Buffer2.hasOwnProperty(
|
|
12623
|
-
if (
|
|
12624
|
-
Safer[
|
|
12621
|
+
for (key2 in Buffer2) {
|
|
12622
|
+
if (!Buffer2.hasOwnProperty(key2)) continue;
|
|
12623
|
+
if (key2 === "allocUnsafe" || key2 === "allocUnsafeSlow") continue;
|
|
12624
|
+
Safer[key2] = Buffer2[key2];
|
|
12625
12625
|
}
|
|
12626
12626
|
safer.Buffer.prototype = Buffer2.prototype;
|
|
12627
12627
|
if (!Safer.from || Safer.from === Uint8Array.from) {
|
|
@@ -12724,9 +12724,9 @@ var require_merge_exports = __commonJS({
|
|
|
12724
12724
|
"use strict";
|
|
12725
12725
|
var hasOwn = typeof Object.hasOwn === "undefined" ? Function.call.bind(Object.prototype.hasOwnProperty) : Object.hasOwn;
|
|
12726
12726
|
function mergeModules(target, module3) {
|
|
12727
|
-
for (var
|
|
12728
|
-
if (hasOwn(module3,
|
|
12729
|
-
target[
|
|
12727
|
+
for (var key2 in module3) {
|
|
12728
|
+
if (hasOwn(module3, key2)) {
|
|
12729
|
+
target[key2] = module3[key2];
|
|
12730
12730
|
}
|
|
12731
12731
|
}
|
|
12732
12732
|
}
|
|
@@ -16314,8 +16314,8 @@ var require_lib3 = __commonJS({
|
|
|
16314
16314
|
enc = codecDef;
|
|
16315
16315
|
break;
|
|
16316
16316
|
case "object":
|
|
16317
|
-
for (var
|
|
16318
|
-
codecOptions[
|
|
16317
|
+
for (var key2 in codecDef) {
|
|
16318
|
+
codecOptions[key2] = codecDef[key2];
|
|
16319
16319
|
}
|
|
16320
16320
|
if (!codecOptions.encodingName) {
|
|
16321
16321
|
codecOptions.encodingName = enc;
|
|
@@ -16669,11 +16669,11 @@ var init_esm7 = __esm({
|
|
|
16669
16669
|
startEditor(rl);
|
|
16670
16670
|
}
|
|
16671
16671
|
}, []);
|
|
16672
|
-
useKeypress((
|
|
16672
|
+
useKeypress((key2, rl) => {
|
|
16673
16673
|
if (status !== "idle") {
|
|
16674
16674
|
return;
|
|
16675
16675
|
}
|
|
16676
|
-
if (isEnterKey(
|
|
16676
|
+
if (isEnterKey(key2)) {
|
|
16677
16677
|
startEditor(rl);
|
|
16678
16678
|
}
|
|
16679
16679
|
});
|
|
@@ -16717,15 +16717,15 @@ var init_esm8 = __esm({
|
|
|
16717
16717
|
const [value, setValue] = useState("");
|
|
16718
16718
|
const theme = makeTheme(config.theme);
|
|
16719
16719
|
const prefix = usePrefix({ status, theme });
|
|
16720
|
-
useKeypress((
|
|
16720
|
+
useKeypress((key2, rl) => {
|
|
16721
16721
|
if (status !== "idle")
|
|
16722
16722
|
return;
|
|
16723
|
-
if (isEnterKey(
|
|
16723
|
+
if (isEnterKey(key2)) {
|
|
16724
16724
|
const answer = getBooleanValue(value, config.default);
|
|
16725
16725
|
setValue(transformer(answer));
|
|
16726
16726
|
setStatus2("done");
|
|
16727
16727
|
done(answer);
|
|
16728
|
-
} else if (isTabKey(
|
|
16728
|
+
} else if (isTabKey(key2)) {
|
|
16729
16729
|
const answer = boolToString(!getBooleanValue(value, config.default));
|
|
16730
16730
|
rl.clearLine(0);
|
|
16731
16731
|
rl.write(answer);
|
|
@@ -16777,11 +16777,11 @@ var init_esm9 = __esm({
|
|
|
16777
16777
|
}
|
|
16778
16778
|
return true;
|
|
16779
16779
|
}
|
|
16780
|
-
useKeypress(async (
|
|
16780
|
+
useKeypress(async (key2, rl) => {
|
|
16781
16781
|
if (status !== "idle") {
|
|
16782
16782
|
return;
|
|
16783
16783
|
}
|
|
16784
|
-
if (isEnterKey(
|
|
16784
|
+
if (isEnterKey(key2)) {
|
|
16785
16785
|
const answer = value || defaultValue;
|
|
16786
16786
|
setStatus2("loading");
|
|
16787
16787
|
const isValid = await validate(answer);
|
|
@@ -16798,9 +16798,9 @@ var init_esm9 = __esm({
|
|
|
16798
16798
|
setError(isValid);
|
|
16799
16799
|
setStatus2("idle");
|
|
16800
16800
|
}
|
|
16801
|
-
} else if (isBackspaceKey(
|
|
16801
|
+
} else if (isBackspaceKey(key2) && !value) {
|
|
16802
16802
|
setDefaultValue(void 0);
|
|
16803
|
-
} else if (isTabKey(
|
|
16803
|
+
} else if (isTabKey(key2) && !value) {
|
|
16804
16804
|
setDefaultValue(void 0);
|
|
16805
16805
|
rl.clearLine(0);
|
|
16806
16806
|
rl.write(defaultValue);
|
|
@@ -16870,11 +16870,11 @@ var init_esm10 = __esm({
|
|
|
16870
16870
|
const [defaultValue = "", setDefaultValue] = useState(validDefault);
|
|
16871
16871
|
const [errorMsg, setError] = useState();
|
|
16872
16872
|
const prefix = usePrefix({ status, theme });
|
|
16873
|
-
useKeypress(async (
|
|
16873
|
+
useKeypress(async (key2, rl) => {
|
|
16874
16874
|
if (status !== "idle") {
|
|
16875
16875
|
return;
|
|
16876
16876
|
}
|
|
16877
|
-
if (isEnterKey(
|
|
16877
|
+
if (isEnterKey(key2)) {
|
|
16878
16878
|
const input2 = value || defaultValue;
|
|
16879
16879
|
const answer = input2 === "" ? void 0 : Number(input2);
|
|
16880
16880
|
setStatus2("loading");
|
|
@@ -16894,9 +16894,9 @@ var init_esm10 = __esm({
|
|
|
16894
16894
|
setError(isValid || "You must provide a valid numeric value");
|
|
16895
16895
|
setStatus2("idle");
|
|
16896
16896
|
}
|
|
16897
|
-
} else if (isBackspaceKey(
|
|
16897
|
+
} else if (isBackspaceKey(key2) && !value) {
|
|
16898
16898
|
setDefaultValue(void 0);
|
|
16899
|
-
} else if (isTabKey(
|
|
16899
|
+
} else if (isTabKey(key2) && !value) {
|
|
16900
16900
|
setDefaultValue(void 0);
|
|
16901
16901
|
rl.clearLine(0);
|
|
16902
16902
|
rl.write(defaultValue);
|
|
@@ -17092,8 +17092,8 @@ var init_esm12 = __esm({
|
|
|
17092
17092
|
}
|
|
17093
17093
|
return { first, last };
|
|
17094
17094
|
}, [choices]);
|
|
17095
|
-
useKeypress((
|
|
17096
|
-
if (isEnterKey(
|
|
17095
|
+
useKeypress((key2, rl) => {
|
|
17096
|
+
if (isEnterKey(key2)) {
|
|
17097
17097
|
const [selectedChoice] = getSelectedChoice(value, choices);
|
|
17098
17098
|
if (isSelectableChoice(selectedChoice)) {
|
|
17099
17099
|
setValue(selectedChoice.short);
|
|
@@ -17104,14 +17104,14 @@ var init_esm12 = __esm({
|
|
|
17104
17104
|
} else {
|
|
17105
17105
|
setError(`"${import_yoctocolors_cjs5.default.red(value)}" isn't an available option`);
|
|
17106
17106
|
}
|
|
17107
|
-
} else if (isUpKey(
|
|
17107
|
+
} else if (isUpKey(key2) || isDownKey(key2)) {
|
|
17108
17108
|
rl.clearLine(0);
|
|
17109
17109
|
const [selectedChoice, active] = getSelectedChoice(value, choices);
|
|
17110
17110
|
if (!selectedChoice) {
|
|
17111
|
-
const firstChoice = isDownKey(
|
|
17111
|
+
const firstChoice = isDownKey(key2) ? choices.find(isSelectableChoice) : choices.findLast(isSelectableChoice);
|
|
17112
17112
|
setValue(firstChoice.key);
|
|
17113
|
-
} else if (loop || isUpKey(
|
|
17114
|
-
const offset = isUpKey(
|
|
17113
|
+
} else if (loop || isUpKey(key2) && active !== bounds.first || isDownKey(key2) && active !== bounds.last) {
|
|
17114
|
+
const offset = isUpKey(key2) ? -1 : 1;
|
|
17115
17115
|
let next = active;
|
|
17116
17116
|
do {
|
|
17117
17117
|
next = (next + offset + choices.length) % choices.length;
|
|
@@ -17163,11 +17163,11 @@ var init_esm13 = __esm({
|
|
|
17163
17163
|
const [errorMsg, setError] = useState();
|
|
17164
17164
|
const [value, setValue] = useState("");
|
|
17165
17165
|
const prefix = usePrefix({ status, theme });
|
|
17166
|
-
useKeypress(async (
|
|
17166
|
+
useKeypress(async (key2, rl) => {
|
|
17167
17167
|
if (status !== "idle") {
|
|
17168
17168
|
return;
|
|
17169
17169
|
}
|
|
17170
|
-
if (isEnterKey(
|
|
17170
|
+
if (isEnterKey(key2)) {
|
|
17171
17171
|
const answer = value;
|
|
17172
17172
|
setStatus2("loading");
|
|
17173
17173
|
const isValid = await validate(answer);
|
|
@@ -17249,7 +17249,7 @@ var init_esm14 = __esm({
|
|
|
17249
17249
|
disabled: (text) => import_yoctocolors_cjs6.default.dim(`- ${text}`),
|
|
17250
17250
|
searchTerm: (text) => import_yoctocolors_cjs6.default.cyan(text),
|
|
17251
17251
|
description: (text) => import_yoctocolors_cjs6.default.cyan(text),
|
|
17252
|
-
keysHelpTip: (keys) => keys.map(([
|
|
17252
|
+
keysHelpTip: (keys) => keys.map(([key2, action]) => `${import_yoctocolors_cjs6.default.bold(key2)} ${import_yoctocolors_cjs6.default.dim(action)}`).join(import_yoctocolors_cjs6.default.dim(" \u2022 "))
|
|
17253
17253
|
},
|
|
17254
17254
|
helpMode: "always"
|
|
17255
17255
|
};
|
|
@@ -17294,8 +17294,8 @@ var init_esm14 = __esm({
|
|
|
17294
17294
|
};
|
|
17295
17295
|
}, [searchTerm]);
|
|
17296
17296
|
const selectedChoice = searchResults[active];
|
|
17297
|
-
useKeypress(async (
|
|
17298
|
-
if (isEnterKey(
|
|
17297
|
+
useKeypress(async (key2, rl) => {
|
|
17298
|
+
if (isEnterKey(key2)) {
|
|
17299
17299
|
if (selectedChoice) {
|
|
17300
17300
|
setStatus2("loading");
|
|
17301
17301
|
const isValid = await validate(selectedChoice.value);
|
|
@@ -17312,14 +17312,14 @@ var init_esm14 = __esm({
|
|
|
17312
17312
|
} else {
|
|
17313
17313
|
rl.write(searchTerm);
|
|
17314
17314
|
}
|
|
17315
|
-
} else if (isTabKey(
|
|
17315
|
+
} else if (isTabKey(key2) && selectedChoice) {
|
|
17316
17316
|
rl.clearLine(0);
|
|
17317
17317
|
rl.write(selectedChoice.name);
|
|
17318
17318
|
setSearchTerm(selectedChoice.name);
|
|
17319
|
-
} else if (status !== "loading" && (isUpKey(
|
|
17319
|
+
} else if (status !== "loading" && (isUpKey(key2) || isDownKey(key2))) {
|
|
17320
17320
|
rl.clearLine(0);
|
|
17321
|
-
if (isUpKey(
|
|
17322
|
-
const offset = isUpKey(
|
|
17321
|
+
if (isUpKey(key2) && active !== bounds.first || isDownKey(key2) && active !== bounds.last) {
|
|
17322
|
+
const offset = isUpKey(key2) ? -1 : 1;
|
|
17323
17323
|
let next = active;
|
|
17324
17324
|
do {
|
|
17325
17325
|
next = (next + offset + searchResults.length) % searchResults.length;
|
|
@@ -17429,7 +17429,7 @@ var init_esm15 = __esm({
|
|
|
17429
17429
|
style: {
|
|
17430
17430
|
disabled: (text) => import_yoctocolors_cjs7.default.dim(`- ${text}`),
|
|
17431
17431
|
description: (text) => import_yoctocolors_cjs7.default.cyan(text),
|
|
17432
|
-
keysHelpTip: (keys) => keys.map(([
|
|
17432
|
+
keysHelpTip: (keys) => keys.map(([key2, action]) => `${import_yoctocolors_cjs7.default.bold(key2)} ${import_yoctocolors_cjs7.default.dim(action)}`).join(import_yoctocolors_cjs7.default.dim(" \u2022 "))
|
|
17433
17433
|
},
|
|
17434
17434
|
helpMode: "always",
|
|
17435
17435
|
indexMode: "hidden",
|
|
@@ -17459,22 +17459,22 @@ var init_esm15 = __esm({
|
|
|
17459
17459
|
}, [config.default, items]);
|
|
17460
17460
|
const [active, setActive] = useState(defaultItemIndex === -1 ? bounds.first : defaultItemIndex);
|
|
17461
17461
|
const selectedChoice = items[active];
|
|
17462
|
-
useKeypress((
|
|
17462
|
+
useKeypress((key2, rl) => {
|
|
17463
17463
|
clearTimeout(searchTimeoutRef.current);
|
|
17464
|
-
if (isEnterKey(
|
|
17464
|
+
if (isEnterKey(key2)) {
|
|
17465
17465
|
setStatus2("done");
|
|
17466
17466
|
done(selectedChoice.value);
|
|
17467
|
-
} else if (isUpKey(
|
|
17467
|
+
} else if (isUpKey(key2, keybindings) || isDownKey(key2, keybindings)) {
|
|
17468
17468
|
rl.clearLine(0);
|
|
17469
|
-
if (loop || isUpKey(
|
|
17470
|
-
const offset = isUpKey(
|
|
17469
|
+
if (loop || isUpKey(key2, keybindings) && active !== bounds.first || isDownKey(key2, keybindings) && active !== bounds.last) {
|
|
17470
|
+
const offset = isUpKey(key2, keybindings) ? -1 : 1;
|
|
17471
17471
|
let next = active;
|
|
17472
17472
|
do {
|
|
17473
17473
|
next = (next + offset + items.length) % items.length;
|
|
17474
17474
|
} while (!isSelectable3(items[next]));
|
|
17475
17475
|
setActive(next);
|
|
17476
17476
|
}
|
|
17477
|
-
} else if (isNumberKey(
|
|
17477
|
+
} else if (isNumberKey(key2) && !Number.isNaN(Number(rl.line))) {
|
|
17478
17478
|
const selectedIndex = Number(rl.line) - 1;
|
|
17479
17479
|
let selectableIndex = -1;
|
|
17480
17480
|
const position = items.findIndex((item2) => {
|
|
@@ -17490,7 +17490,7 @@ var init_esm15 = __esm({
|
|
|
17490
17490
|
searchTimeoutRef.current = setTimeout(() => {
|
|
17491
17491
|
rl.clearLine(0);
|
|
17492
17492
|
}, 700);
|
|
17493
|
-
} else if (isBackspaceKey(
|
|
17493
|
+
} else if (isBackspaceKey(key2)) {
|
|
17494
17494
|
rl.clearLine(0);
|
|
17495
17495
|
} else if (searchEnabled) {
|
|
17496
17496
|
const searchTerm = rl.line.toLowerCase();
|
|
@@ -18711,14 +18711,14 @@ var require_extend_shallow = __commonJS({
|
|
|
18711
18711
|
return o;
|
|
18712
18712
|
};
|
|
18713
18713
|
function assign(a, b) {
|
|
18714
|
-
for (var
|
|
18715
|
-
if (hasOwn(b,
|
|
18716
|
-
a[
|
|
18714
|
+
for (var key2 in b) {
|
|
18715
|
+
if (hasOwn(b, key2)) {
|
|
18716
|
+
a[key2] = b[key2];
|
|
18717
18717
|
}
|
|
18718
18718
|
}
|
|
18719
18719
|
}
|
|
18720
|
-
function hasOwn(obj,
|
|
18721
|
-
return Object.prototype.hasOwnProperty.call(obj,
|
|
18720
|
+
function hasOwn(obj, key2) {
|
|
18721
|
+
return Object.prototype.hasOwnProperty.call(obj, key2);
|
|
18722
18722
|
}
|
|
18723
18723
|
}
|
|
18724
18724
|
});
|
|
@@ -18846,12 +18846,12 @@ var require_common = __commonJS({
|
|
|
18846
18846
|
return [sequence];
|
|
18847
18847
|
}
|
|
18848
18848
|
function extend(target, source) {
|
|
18849
|
-
var index, length,
|
|
18849
|
+
var index, length, key2, sourceKeys;
|
|
18850
18850
|
if (source) {
|
|
18851
18851
|
sourceKeys = Object.keys(source);
|
|
18852
18852
|
for (index = 0, length = sourceKeys.length; index < length; index += 1) {
|
|
18853
|
-
|
|
18854
|
-
target[
|
|
18853
|
+
key2 = sourceKeys[index];
|
|
18854
|
+
target[key2] = source[key2];
|
|
18855
18855
|
}
|
|
18856
18856
|
}
|
|
18857
18857
|
return target;
|
|
@@ -19756,10 +19756,10 @@ var require_set = __commonJS({
|
|
|
19756
19756
|
var _hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
19757
19757
|
function resolveYamlSet(data) {
|
|
19758
19758
|
if (data === null) return true;
|
|
19759
|
-
var
|
|
19760
|
-
for (
|
|
19761
|
-
if (_hasOwnProperty.call(object,
|
|
19762
|
-
if (object[
|
|
19759
|
+
var key2, object = data;
|
|
19760
|
+
for (key2 in object) {
|
|
19761
|
+
if (_hasOwnProperty.call(object, key2)) {
|
|
19762
|
+
if (object[key2] !== null) return false;
|
|
19763
19763
|
}
|
|
19764
19764
|
}
|
|
19765
19765
|
return true;
|
|
@@ -20020,16 +20020,16 @@ var require_loader = __commonJS({
|
|
|
20020
20020
|
(c - 65536 & 1023) + 56320
|
|
20021
20021
|
);
|
|
20022
20022
|
}
|
|
20023
|
-
function setProperty(object,
|
|
20024
|
-
if (
|
|
20025
|
-
Object.defineProperty(object,
|
|
20023
|
+
function setProperty(object, key2, value) {
|
|
20024
|
+
if (key2 === "__proto__") {
|
|
20025
|
+
Object.defineProperty(object, key2, {
|
|
20026
20026
|
configurable: true,
|
|
20027
20027
|
enumerable: true,
|
|
20028
20028
|
writable: true,
|
|
20029
20029
|
value
|
|
20030
20030
|
});
|
|
20031
20031
|
} else {
|
|
20032
|
-
object[
|
|
20032
|
+
object[key2] = value;
|
|
20033
20033
|
}
|
|
20034
20034
|
}
|
|
20035
20035
|
var simpleEscapeCheck = new Array(256);
|
|
@@ -20131,16 +20131,16 @@ var require_loader = __commonJS({
|
|
|
20131
20131
|
}
|
|
20132
20132
|
}
|
|
20133
20133
|
function mergeMappings(state, destination, source, overridableKeys) {
|
|
20134
|
-
var sourceKeys,
|
|
20134
|
+
var sourceKeys, key2, index, quantity;
|
|
20135
20135
|
if (!common2.isObject(source)) {
|
|
20136
20136
|
throwError(state, "cannot merge mappings; the provided source object is unacceptable");
|
|
20137
20137
|
}
|
|
20138
20138
|
sourceKeys = Object.keys(source);
|
|
20139
20139
|
for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {
|
|
20140
|
-
|
|
20141
|
-
if (!_hasOwnProperty.call(destination,
|
|
20142
|
-
setProperty(destination,
|
|
20143
|
-
overridableKeys[
|
|
20140
|
+
key2 = sourceKeys[index];
|
|
20141
|
+
if (!_hasOwnProperty.call(destination, key2)) {
|
|
20142
|
+
setProperty(destination, key2, source[key2]);
|
|
20143
|
+
overridableKeys[key2] = true;
|
|
20144
20144
|
}
|
|
20145
20145
|
}
|
|
20146
20146
|
}
|
|
@@ -21710,8 +21710,8 @@ var require_utils2 = __commonJS({
|
|
|
21710
21710
|
"use strict";
|
|
21711
21711
|
var stripBom = require_strip_bom_string();
|
|
21712
21712
|
var typeOf = require_kind_of();
|
|
21713
|
-
exports2.define = function(obj,
|
|
21714
|
-
Reflect.defineProperty(obj,
|
|
21713
|
+
exports2.define = function(obj, key2, val) {
|
|
21714
|
+
Reflect.defineProperty(obj, key2, {
|
|
21715
21715
|
enumerable: false,
|
|
21716
21716
|
configurable: true,
|
|
21717
21717
|
writable: true,
|
|
@@ -23579,8 +23579,8 @@ var require_to_regex_range = __commonJS({
|
|
|
23579
23579
|
function compare(a, b) {
|
|
23580
23580
|
return a > b ? 1 : b > a ? -1 : 0;
|
|
23581
23581
|
}
|
|
23582
|
-
function contains(arr,
|
|
23583
|
-
return arr.some((ele) => ele[
|
|
23582
|
+
function contains(arr, key2, val) {
|
|
23583
|
+
return arr.some((ele) => ele[key2] === val);
|
|
23584
23584
|
}
|
|
23585
23585
|
function countNines(min, len) {
|
|
23586
23586
|
return Number(String(min).slice(0, -len) + "9".repeat(len));
|
|
@@ -26207,7 +26207,7 @@ var require_micromatch = __commonJS({
|
|
|
26207
26207
|
}
|
|
26208
26208
|
let keys = micromatch(Object.keys(obj), patterns, options2);
|
|
26209
26209
|
let res = {};
|
|
26210
|
-
for (let
|
|
26210
|
+
for (let key2 of keys) res[key2] = obj[key2];
|
|
26211
26211
|
return res;
|
|
26212
26212
|
};
|
|
26213
26213
|
micromatch.some = (list, patterns, options2) => {
|
|
@@ -26906,9 +26906,9 @@ var require_run_parallel = __commonJS({
|
|
|
26906
26906
|
if (!pending) {
|
|
26907
26907
|
done(null);
|
|
26908
26908
|
} else if (keys) {
|
|
26909
|
-
keys.forEach(function(
|
|
26910
|
-
tasks[
|
|
26911
|
-
each(
|
|
26909
|
+
keys.forEach(function(key2) {
|
|
26910
|
+
tasks[key2](function(err, result) {
|
|
26911
|
+
each(key2, err, result);
|
|
26912
26912
|
});
|
|
26913
26913
|
});
|
|
26914
26914
|
} else {
|
|
@@ -30149,8 +30149,8 @@ function copyObsidianConfig(destDir) {
|
|
|
30149
30149
|
}
|
|
30150
30150
|
function replaceTokens(content, tokens) {
|
|
30151
30151
|
let result = content;
|
|
30152
|
-
for (const [
|
|
30153
|
-
result = result.replaceAll(`{{${
|
|
30152
|
+
for (const [key2, value] of Object.entries(tokens)) {
|
|
30153
|
+
result = result.replaceAll(`{{${key2}}}`, value);
|
|
30154
30154
|
}
|
|
30155
30155
|
return result;
|
|
30156
30156
|
}
|
|
@@ -31373,12 +31373,12 @@ function registerFeaturesCommand(program2) {
|
|
|
31373
31373
|
error(`Feature not found: ${name}`);
|
|
31374
31374
|
return;
|
|
31375
31375
|
}
|
|
31376
|
-
const
|
|
31376
|
+
const key2 = field.toLowerCase();
|
|
31377
31377
|
const value = valueParts.join(" ").trim();
|
|
31378
31378
|
const updates = {};
|
|
31379
|
-
if (
|
|
31380
|
-
updates[
|
|
31381
|
-
} else if (
|
|
31379
|
+
if (key2 === "tags" || key2 === "related_tasks" || key2 === "related-tasks") {
|
|
31380
|
+
updates[key2 === "tags" ? "tags" : "related_tasks"] = parseCsv(value);
|
|
31381
|
+
} else if (key2 === "status") {
|
|
31382
31382
|
if (!VALID_FEATURE_STATUSES.includes(value)) {
|
|
31383
31383
|
error(`Status must be one of: ${VALID_FEATURE_STATUSES.join(", ")}`);
|
|
31384
31384
|
return;
|
|
@@ -31390,7 +31390,7 @@ function registerFeaturesCommand(program2) {
|
|
|
31390
31390
|
}
|
|
31391
31391
|
updates.updated = today();
|
|
31392
31392
|
updateFrontmatterFields(file, updates);
|
|
31393
|
-
success(`Set ${
|
|
31393
|
+
success(`Set ${key2} on ${basename5(file, ".md")}`);
|
|
31394
31394
|
});
|
|
31395
31395
|
features.command("insert").argument("<name>").argument(
|
|
31396
31396
|
"<section>",
|
|
@@ -31979,23 +31979,23 @@ function filterTasks(tasks, filter = {}) {
|
|
|
31979
31979
|
return true;
|
|
31980
31980
|
});
|
|
31981
31981
|
}
|
|
31982
|
-
function groupRank(groupBy,
|
|
31982
|
+
function groupRank(groupBy, key2) {
|
|
31983
31983
|
if (groupBy === "priority") {
|
|
31984
|
-
const i = PRIORITY_ORDER.indexOf(
|
|
31984
|
+
const i = PRIORITY_ORDER.indexOf(key2.toLowerCase());
|
|
31985
31985
|
return i === -1 ? 99 : i;
|
|
31986
31986
|
}
|
|
31987
31987
|
if (groupBy === "status") {
|
|
31988
|
-
const i = STATUS_ORDER.indexOf(
|
|
31988
|
+
const i = STATUS_ORDER.indexOf(key2.toLowerCase());
|
|
31989
31989
|
return i === -1 ? 99 : i;
|
|
31990
31990
|
}
|
|
31991
|
-
return
|
|
31991
|
+
return key2 === NONE_KEY[groupBy] ? 99 : 0;
|
|
31992
31992
|
}
|
|
31993
31993
|
function groupTasks(tasks, groupBy) {
|
|
31994
31994
|
const map = /* @__PURE__ */ new Map();
|
|
31995
|
-
const push = (
|
|
31996
|
-
const arr = map.get(
|
|
31995
|
+
const push = (key2, t) => {
|
|
31996
|
+
const arr = map.get(key2);
|
|
31997
31997
|
if (arr) arr.push(t);
|
|
31998
|
-
else map.set(
|
|
31998
|
+
else map.set(key2, [t]);
|
|
31999
31999
|
};
|
|
32000
32000
|
for (const t of tasks) {
|
|
32001
32001
|
if (groupBy === "tag") {
|
|
@@ -32009,7 +32009,7 @@ function groupTasks(tasks, groupBy) {
|
|
|
32009
32009
|
push(t.status || NONE_KEY.status, t);
|
|
32010
32010
|
}
|
|
32011
32011
|
}
|
|
32012
|
-
return [...map.keys()].sort((a, b) => groupRank(groupBy, a) - groupRank(groupBy, b) || a.localeCompare(b, "en", { sensitivity: "base" })).map((
|
|
32012
|
+
return [...map.keys()].sort((a, b) => groupRank(groupBy, a) - groupRank(groupBy, b) || a.localeCompare(b, "en", { sensitivity: "base" })).map((key2) => ({ key: key2, tasks: map.get(key2) }));
|
|
32013
32013
|
}
|
|
32014
32014
|
function collectTags(tasks) {
|
|
32015
32015
|
const counts = /* @__PURE__ */ new Map();
|
|
@@ -32064,19 +32064,23 @@ function isSafeTaskSlug(slug) {
|
|
|
32064
32064
|
function hasBacklogTag(tags) {
|
|
32065
32065
|
return Array.isArray(tags) && tags.some((t) => String(t).toLowerCase() === BACKLOG_TAG);
|
|
32066
32066
|
}
|
|
32067
|
+
function isSet(v) {
|
|
32068
|
+
return v !== null && v !== void 0;
|
|
32069
|
+
}
|
|
32067
32070
|
function normalizeBacklogFields(prev, patch) {
|
|
32068
32071
|
const nextTags = patch.tags !== void 0 ? patch.tags : prev.tags;
|
|
32069
32072
|
const nextDue = patch.due_date !== void 0 ? patch.due_date : prev.due_date ?? null;
|
|
32070
|
-
|
|
32071
|
-
|
|
32073
|
+
const nextStart = patch.start_date !== void 0 ? patch.start_date : prev.start_date ?? null;
|
|
32074
|
+
if (!hasBacklogTag(nextTags) || !isSet(nextDue) && !isSet(nextStart)) return patch;
|
|
32075
|
+
const dateExplicit = patch.due_date !== void 0 && patch.due_date !== null || patch.start_date !== void 0 && patch.start_date !== null;
|
|
32072
32076
|
const backlogAdded = patch.tags !== void 0 && hasBacklogTag(patch.tags) && !hasBacklogTag(prev.tags);
|
|
32073
|
-
if (
|
|
32077
|
+
if (dateExplicit && !backlogAdded) {
|
|
32074
32078
|
const tags = (Array.isArray(nextTags) ? nextTags : []).filter(
|
|
32075
32079
|
(t) => String(t).toLowerCase() !== BACKLOG_TAG
|
|
32076
32080
|
);
|
|
32077
32081
|
return { ...patch, tags };
|
|
32078
32082
|
}
|
|
32079
|
-
return { ...patch, due_date: null };
|
|
32083
|
+
return { ...patch, due_date: null, start_date: null };
|
|
32080
32084
|
}
|
|
32081
32085
|
function getTaskTemplate() {
|
|
32082
32086
|
const candidates = [
|
|
@@ -32186,6 +32190,7 @@ function readTaskFile(filePath) {
|
|
|
32186
32190
|
related_feature: data.related_feature ?? null,
|
|
32187
32191
|
version: data.version ?? null,
|
|
32188
32192
|
rice: normalizeRice(data.rice),
|
|
32193
|
+
start_date: data.start_date ?? null,
|
|
32189
32194
|
due_date: data.due_date ?? null,
|
|
32190
32195
|
assignee: data.assignee ?? null,
|
|
32191
32196
|
why: readSectionSafe(filePath, "Why"),
|
|
@@ -32253,8 +32258,8 @@ var init_local = __esm({
|
|
|
32253
32258
|
return readTaskFile(path2);
|
|
32254
32259
|
}
|
|
32255
32260
|
async create(input2) {
|
|
32256
|
-
if (input2.due_date && (input2.tags ?? []).some((t) => t.toLowerCase() === BACKLOG_TAG)) {
|
|
32257
|
-
input2 = { ...input2, due_date: null };
|
|
32261
|
+
if ((input2.due_date || input2.start_date) && (input2.tags ?? []).some((t) => t.toLowerCase() === BACKLOG_TAG)) {
|
|
32262
|
+
input2 = { ...input2, due_date: null, start_date: null };
|
|
32258
32263
|
}
|
|
32259
32264
|
const slug = slugify(input2.name.trim());
|
|
32260
32265
|
if (!isSafeTaskSlug(slug)) {
|
|
@@ -32271,6 +32276,9 @@ var init_local = __esm({
|
|
|
32271
32276
|
if (input2.rice) {
|
|
32272
32277
|
updateFrontmatterFields(filePath, { rice: input2.rice });
|
|
32273
32278
|
}
|
|
32279
|
+
if (input2.start_date) {
|
|
32280
|
+
updateFrontmatterFields(filePath, { start_date: input2.start_date });
|
|
32281
|
+
}
|
|
32274
32282
|
if (input2.due_date) {
|
|
32275
32283
|
updateFrontmatterFields(filePath, { due_date: input2.due_date });
|
|
32276
32284
|
}
|
|
@@ -32332,6 +32340,9 @@ ${input2.why || "(To be defined)"}
|
|
|
32332
32340
|
- Task created.
|
|
32333
32341
|
`;
|
|
32334
32342
|
writeFileSync19(filePath, content, "utf-8");
|
|
32343
|
+
if (input2.start_date) {
|
|
32344
|
+
updateFrontmatterFields(filePath, { start_date: input2.start_date });
|
|
32345
|
+
}
|
|
32335
32346
|
if (input2.due_date) {
|
|
32336
32347
|
updateFrontmatterFields(filePath, { due_date: input2.due_date });
|
|
32337
32348
|
}
|
|
@@ -32340,7 +32351,7 @@ ${input2.why || "(To be defined)"}
|
|
|
32340
32351
|
}
|
|
32341
32352
|
async updateFields(slug, fields, opts) {
|
|
32342
32353
|
const path2 = this.requirePath(slug);
|
|
32343
|
-
if (fields.tags !== void 0 || fields.due_date !== void 0) {
|
|
32354
|
+
if (fields.tags !== void 0 || fields.due_date !== void 0 || fields.start_date !== void 0) {
|
|
32344
32355
|
const { data: prev } = readFrontmatter(path2);
|
|
32345
32356
|
fields = normalizeBacklogFields(prev, fields);
|
|
32346
32357
|
}
|
|
@@ -32407,6 +32418,7 @@ ${input2.why || "(To be defined)"}
|
|
|
32407
32418
|
pendingQueue: 0,
|
|
32408
32419
|
errors: [],
|
|
32409
32420
|
failedPushes: [],
|
|
32421
|
+
warnings: [],
|
|
32410
32422
|
watermark: null,
|
|
32411
32423
|
noop: true
|
|
32412
32424
|
};
|
|
@@ -32591,8 +32603,8 @@ function priorityToClickUp(priority) {
|
|
|
32591
32603
|
}
|
|
32592
32604
|
function priorityFromClickUp(p) {
|
|
32593
32605
|
if (!p) return "medium";
|
|
32594
|
-
const
|
|
32595
|
-
return PRIORITY_FROM_CLICKUP[
|
|
32606
|
+
const key2 = String(p.id ?? p.priority ?? "").toLowerCase();
|
|
32607
|
+
return PRIORITY_FROM_CLICKUP[key2] ?? "medium";
|
|
32596
32608
|
}
|
|
32597
32609
|
function tagsToClickUp(tags, version) {
|
|
32598
32610
|
const out = [...tags];
|
|
@@ -32607,12 +32619,12 @@ function tagsFromClickUp(remote) {
|
|
|
32607
32619
|
version: versionTag ? versionTag.slice("version:".length) : null
|
|
32608
32620
|
};
|
|
32609
32621
|
}
|
|
32610
|
-
function
|
|
32622
|
+
function calendarDateToClickUp(date) {
|
|
32611
32623
|
if (!date) return null;
|
|
32612
32624
|
const ms = Date.parse(`${date}T12:00:00Z`);
|
|
32613
32625
|
return Number.isFinite(ms) ? ms : null;
|
|
32614
32626
|
}
|
|
32615
|
-
function
|
|
32627
|
+
function calendarDateFromClickUp(value) {
|
|
32616
32628
|
const ms = serverTimeMs(value ?? null);
|
|
32617
32629
|
return ms === null ? null : new Date(ms).toISOString().split("T")[0];
|
|
32618
32630
|
}
|
|
@@ -32649,7 +32661,7 @@ function splitChangelogEntries(changelogSection) {
|
|
|
32649
32661
|
function normalizeEntry(entry) {
|
|
32650
32662
|
return entry.replace(/\s+/g, " ").trim();
|
|
32651
32663
|
}
|
|
32652
|
-
var STATUS_CANDIDATES, STATUS_FROM_CLICKUP, PRIORITY_TO_CLICKUP, PRIORITY_FROM_CLICKUP;
|
|
32664
|
+
var STATUS_CANDIDATES, STATUS_FROM_CLICKUP, PRIORITY_TO_CLICKUP, PRIORITY_FROM_CLICKUP, dueDateToClickUp, dueDateFromClickUp, startDateToClickUp, startDateFromClickUp;
|
|
32653
32665
|
var init_clickup_map = __esm({
|
|
32654
32666
|
"src/lib/task-backend/clickup-map.ts"() {
|
|
32655
32667
|
"use strict";
|
|
@@ -32685,6 +32697,10 @@ var init_clickup_map = __esm({
|
|
|
32685
32697
|
normal: "medium",
|
|
32686
32698
|
low: "low"
|
|
32687
32699
|
};
|
|
32700
|
+
dueDateToClickUp = calendarDateToClickUp;
|
|
32701
|
+
dueDateFromClickUp = calendarDateFromClickUp;
|
|
32702
|
+
startDateToClickUp = calendarDateToClickUp;
|
|
32703
|
+
startDateFromClickUp = calendarDateFromClickUp;
|
|
32688
32704
|
}
|
|
32689
32705
|
});
|
|
32690
32706
|
|
|
@@ -32703,9 +32719,9 @@ function matchCustomFields(defs) {
|
|
|
32703
32719
|
}
|
|
32704
32720
|
return bindings;
|
|
32705
32721
|
}
|
|
32706
|
-
function localFieldValue(fm,
|
|
32722
|
+
function localFieldValue(fm, key2) {
|
|
32707
32723
|
const rice = fm.rice ?? null;
|
|
32708
|
-
switch (
|
|
32724
|
+
switch (key2) {
|
|
32709
32725
|
case "urgency":
|
|
32710
32726
|
return strOrNull2(fm.urgency);
|
|
32711
32727
|
case "description":
|
|
@@ -33376,12 +33392,12 @@ var init_sync_state = __esm({
|
|
|
33376
33392
|
state.members = members;
|
|
33377
33393
|
this.writeSyncState(state);
|
|
33378
33394
|
}
|
|
33379
|
-
readThrottle(
|
|
33380
|
-
return this.readSyncState()[
|
|
33395
|
+
readThrottle(key2) {
|
|
33396
|
+
return this.readSyncState()[key2] ?? null;
|
|
33381
33397
|
}
|
|
33382
|
-
writeThrottle(
|
|
33398
|
+
writeThrottle(key2, at) {
|
|
33383
33399
|
const state = this.readSyncState();
|
|
33384
|
-
state[
|
|
33400
|
+
state[key2] = at;
|
|
33385
33401
|
this.writeSyncState(state);
|
|
33386
33402
|
}
|
|
33387
33403
|
/** Advance the global pull watermark (server time, monotonic). */
|
|
@@ -33877,6 +33893,7 @@ var init_clickup = __esm({
|
|
|
33877
33893
|
pendingQueue: 0,
|
|
33878
33894
|
errors: [],
|
|
33879
33895
|
failedPushes: [],
|
|
33896
|
+
warnings: [],
|
|
33880
33897
|
watermark: null,
|
|
33881
33898
|
noop: false
|
|
33882
33899
|
};
|
|
@@ -33959,16 +33976,31 @@ var init_clickup = __esm({
|
|
|
33959
33976
|
const currentEntries = splitChangelogEntries(task.changelog);
|
|
33960
33977
|
const baseNorm = new Set(baseEntries.map(normalizeEntry));
|
|
33961
33978
|
const newEntries = currentEntries.filter((e) => !baseNorm.has(normalizeEntry(e)));
|
|
33962
|
-
const assigneeIds =
|
|
33979
|
+
const assigneeIds = [];
|
|
33980
|
+
const unmappedAssignees = [];
|
|
33981
|
+
for (const s of assigneeSlugsOf(task.raw, task.tags)) {
|
|
33982
|
+
const id = this.memberIdFor(s);
|
|
33983
|
+
if (id !== null) assigneeIds.push(Number(id));
|
|
33984
|
+
else unmappedAssignees.push(s);
|
|
33985
|
+
}
|
|
33986
|
+
if (unmappedAssignees.length > 0) {
|
|
33987
|
+
report.warnings.push(
|
|
33988
|
+
`push ${slug}: assignee ${unmappedAssignees.map((s) => `person:${s}`).join(", ")} maps to no ClickUp member \u2014 left unassigned (add them to the list, or map with \`dreamcontext config clickup-member <slug> <id>\`).`
|
|
33989
|
+
);
|
|
33990
|
+
}
|
|
33963
33991
|
const mappedStatus = statusToClickUp(task.status, this.ledger.readListStatuses());
|
|
33964
33992
|
const isBacklog = task.tags.some((t) => t.toLowerCase() === BACKLOG_TAG);
|
|
33965
33993
|
const dueLocal = isBacklog ? null : task.raw.due_date ?? null;
|
|
33966
|
-
const
|
|
33994
|
+
const startLocal = isBacklog ? null : task.raw.start_date ?? null;
|
|
33995
|
+
const baseSnapshotFm = entry?.base_snapshot ? (0, import_gray_matter5.default)(entry.base_snapshot.body).data : null;
|
|
33996
|
+
const baseFmDue = baseSnapshotFm?.due_date ?? null;
|
|
33997
|
+
const baseFmStart = baseSnapshotFm?.start_date ?? null;
|
|
33967
33998
|
const fields = {
|
|
33968
33999
|
name: task.name,
|
|
33969
34000
|
description: bodyToDescription(task.body),
|
|
33970
34001
|
...mappedStatus !== null ? { status: mappedStatus } : {},
|
|
33971
34002
|
priority: priorityToClickUp(task.priority),
|
|
34003
|
+
...startLocal !== null || baseFmStart !== null ? { start_date: startDateToClickUp(startLocal), start_date_time: false } : {},
|
|
33972
34004
|
...dueLocal !== null || baseFmDue !== null ? { due_date: dueDateToClickUp(dueLocal), due_date_time: false } : {}
|
|
33973
34005
|
};
|
|
33974
34006
|
let remoteId = this.ledger.remoteIdFor(slug);
|
|
@@ -34189,6 +34221,7 @@ var init_clickup = __esm({
|
|
|
34189
34221
|
const remotePriority = priorityFromClickUp(remote.priority);
|
|
34190
34222
|
const remoteDesc = (remote.description ?? "").replace(/\r\n/g, "\n").trim();
|
|
34191
34223
|
const remoteDue = dueDateFromClickUp(remote.due_date);
|
|
34224
|
+
const remoteStart = startDateFromClickUp(remote.start_date);
|
|
34192
34225
|
const remoteAssignees = [
|
|
34193
34226
|
...new Set(
|
|
34194
34227
|
(remote.assignees ?? []).map(
|
|
@@ -34213,6 +34246,7 @@ var init_clickup = __esm({
|
|
|
34213
34246
|
related_feature: null,
|
|
34214
34247
|
version: remoteVersion,
|
|
34215
34248
|
rice: null,
|
|
34249
|
+
start_date: remoteStart,
|
|
34216
34250
|
due_date: remoteDue,
|
|
34217
34251
|
created_by: "clickup",
|
|
34218
34252
|
updated_by: "clickup"
|
|
@@ -34310,7 +34344,12 @@ var init_clickup = __esm({
|
|
|
34310
34344
|
local.raw.due_date ?? null,
|
|
34311
34345
|
remoteDue
|
|
34312
34346
|
);
|
|
34313
|
-
const
|
|
34347
|
+
const startM = scalar(
|
|
34348
|
+
baseFm?.start_date ?? null,
|
|
34349
|
+
local.raw.start_date ?? null,
|
|
34350
|
+
remoteStart
|
|
34351
|
+
);
|
|
34352
|
+
const scalarResults = [statusM, priorityM, nameM, tagsM, versionM, assigneeM, dueM, startM];
|
|
34314
34353
|
const anyLocalWin = scalarResults.some((r) => r.winner === "local") || fieldWinners.some((r) => r.winner === "local");
|
|
34315
34354
|
const anyRemoteWin = scalarResults.some((r) => r.winner === "remote") || fieldWinners.some((r) => r.winner === "remote");
|
|
34316
34355
|
const remoteAddedEntries = mergedEntries.length > localEntries.length;
|
|
@@ -34327,6 +34366,7 @@ var init_clickup = __esm({
|
|
|
34327
34366
|
tags: withPersonTags(tagsM.value, assigneeM.value),
|
|
34328
34367
|
version: versionM.value,
|
|
34329
34368
|
// Product rule: backlog ⇒ undated (applies to remote-originated state too).
|
|
34369
|
+
start_date: tagsM.value.some((t) => t.toLowerCase() === BACKLOG_TAG) ? null : startM.value,
|
|
34330
34370
|
due_date: tagsM.value.some((t) => t.toLowerCase() === BACKLOG_TAG) ? null : dueM.value,
|
|
34331
34371
|
updated_at: remoteContributed && remoteTime !== null ? dateOf(remoteTime) : local.updated_at,
|
|
34332
34372
|
// updated_by records the WINNER of the merge.
|
|
@@ -34355,17 +34395,17 @@ var init_clickup = __esm({
|
|
|
34355
34395
|
if (keptLocal) {
|
|
34356
34396
|
const remoteFmOverrides = {};
|
|
34357
34397
|
let remoteRice = normalizeRice(fm.rice);
|
|
34358
|
-
for (const [
|
|
34359
|
-
if (RICE_KEYS.includes(
|
|
34360
|
-
remoteRice = mergeRice(remoteRice, { [
|
|
34361
|
-
} else if (
|
|
34398
|
+
for (const [key2, value] of Object.entries(remoteFieldState)) {
|
|
34399
|
+
if (RICE_KEYS.includes(key2)) {
|
|
34400
|
+
remoteRice = mergeRice(remoteRice, { [key2]: value ?? void 0 });
|
|
34401
|
+
} else if (key2 === "version") {
|
|
34362
34402
|
remoteFmOverrides.version = value;
|
|
34363
34403
|
} else {
|
|
34364
|
-
remoteFmOverrides[
|
|
34404
|
+
remoteFmOverrides[key2] = value;
|
|
34365
34405
|
}
|
|
34366
34406
|
}
|
|
34367
34407
|
const remoteRender = this.renderMirror(
|
|
34368
|
-
{ ...fm, name: remote.name, status: remoteStatus, priority: remotePriority, tags: withPersonTags(remoteTags, remoteAssignees), version: remoteVersion, due_date: remoteTags.some((t) => t.toLowerCase() === BACKLOG_TAG) ? null : remoteDue, ...remoteFmOverrides, rice: remoteRice },
|
|
34408
|
+
{ ...fm, name: remote.name, status: remoteStatus, priority: remotePriority, tags: withPersonTags(remoteTags, remoteAssignees), version: remoteVersion, start_date: remoteTags.some((t) => t.toLowerCase() === BACKLOG_TAG) ? null : remoteStart, due_date: remoteTags.some((t) => t.toLowerCase() === BACKLOG_TAG) ? null : remoteDue, ...remoteFmOverrides, rice: remoteRice },
|
|
34369
34409
|
remoteDesc,
|
|
34370
34410
|
remoteEntries
|
|
34371
34411
|
);
|
|
@@ -34395,7 +34435,8 @@ var init_clickup = __esm({
|
|
|
34395
34435
|
["tags", tagsM, stripPersonTags(local.tags)],
|
|
34396
34436
|
["version", versionM, local.version],
|
|
34397
34437
|
["assignees", assigneeM, assigneeSlugsOf(local.raw, local.tags)],
|
|
34398
|
-
["due_date", dueM, local.raw.due_date ?? null]
|
|
34438
|
+
["due_date", dueM, local.raw.due_date ?? null],
|
|
34439
|
+
["start_date", startM, local.raw.start_date ?? null]
|
|
34399
34440
|
];
|
|
34400
34441
|
for (const [field, merged, from] of namedScalars) {
|
|
34401
34442
|
if (merged.winner === "remote") {
|
|
@@ -34590,6 +34631,53 @@ function bodyToIssueBody(body) {
|
|
|
34590
34631
|
}
|
|
34591
34632
|
return out.join("\n").trimEnd() + "\n";
|
|
34592
34633
|
}
|
|
34634
|
+
function renderDatesBlock(start, due) {
|
|
34635
|
+
const parts = [];
|
|
34636
|
+
if (start) parts.push(`**Start:** ${start}`);
|
|
34637
|
+
if (due) parts.push(`**Due:** ${due}`);
|
|
34638
|
+
if (parts.length === 0) return "";
|
|
34639
|
+
return `${DATES_OPEN}
|
|
34640
|
+
> \u{1F5D3}\uFE0F ${parts.join(" \xB7 ")}
|
|
34641
|
+
${DATES_CLOSE}`;
|
|
34642
|
+
}
|
|
34643
|
+
function parseDatesBlock(body) {
|
|
34644
|
+
if (!body) return { start: null, due: null };
|
|
34645
|
+
const open = body.indexOf(DATES_OPEN);
|
|
34646
|
+
const close = body.indexOf(DATES_CLOSE);
|
|
34647
|
+
if (open === -1 || close === -1 || close < open) return { start: null, due: null };
|
|
34648
|
+
const inner = body.slice(open + DATES_OPEN.length, close);
|
|
34649
|
+
const startMatch = inner.match(/\*\*Start:\*\*\s*/);
|
|
34650
|
+
const dueMatch = inner.match(/\*\*Due:\*\*\s*/);
|
|
34651
|
+
const after = (m) => {
|
|
34652
|
+
if (!m || m.index === void 0) return null;
|
|
34653
|
+
const d = inner.slice(m.index + m[0].length).match(DATE_RE);
|
|
34654
|
+
return d ? d[1] : null;
|
|
34655
|
+
};
|
|
34656
|
+
return { start: after(startMatch), due: after(dueMatch) };
|
|
34657
|
+
}
|
|
34658
|
+
function stripDatesBlock(body) {
|
|
34659
|
+
if (!body) return "";
|
|
34660
|
+
const open = body.indexOf(DATES_OPEN);
|
|
34661
|
+
const close = body.indexOf(DATES_CLOSE);
|
|
34662
|
+
if (open === -1 || close === -1 || close < open) return body;
|
|
34663
|
+
const before = body.slice(0, open).replace(/\n+$/, "");
|
|
34664
|
+
const after = body.slice(close + DATES_CLOSE.length).replace(/^\n+/, "");
|
|
34665
|
+
if (before && after) return `${before}
|
|
34666
|
+
|
|
34667
|
+
${after}`;
|
|
34668
|
+
return before || after;
|
|
34669
|
+
}
|
|
34670
|
+
function composeIssueBody(prose, start, due) {
|
|
34671
|
+
const cleanProse = stripDatesBlock(prose).trimEnd();
|
|
34672
|
+
const block = renderDatesBlock(start, due);
|
|
34673
|
+
if (!block) return cleanProse ? `${cleanProse}
|
|
34674
|
+
` : "";
|
|
34675
|
+
return cleanProse ? `${block}
|
|
34676
|
+
|
|
34677
|
+
${cleanProse}
|
|
34678
|
+
` : `${block}
|
|
34679
|
+
`;
|
|
34680
|
+
}
|
|
34593
34681
|
function githubTimeMs(iso) {
|
|
34594
34682
|
if (iso === null || iso === void 0) return null;
|
|
34595
34683
|
const ms = Date.parse(iso);
|
|
@@ -34599,7 +34687,7 @@ function githubTimeIso(ms) {
|
|
|
34599
34687
|
if (ms === null || ms === void 0 || !Number.isFinite(ms)) return null;
|
|
34600
34688
|
return new Date(ms).toISOString();
|
|
34601
34689
|
}
|
|
34602
|
-
var PRIORITY_PREFIX, URGENCY_PREFIX, VERSION_PREFIX, DC_PREFIX, STATE_REASON_COMPLETED, STATE_REASON_NOT_PLANNED, STATE_REASON_REOPENED, DELETED_SENTINEL, STATUS_TO_LABEL, LABEL_TO_STATUS, PRIORITIES;
|
|
34690
|
+
var PRIORITY_PREFIX, URGENCY_PREFIX, VERSION_PREFIX, DC_PREFIX, STATE_REASON_COMPLETED, STATE_REASON_NOT_PLANNED, STATE_REASON_REOPENED, DELETED_SENTINEL, STATUS_TO_LABEL, LABEL_TO_STATUS, PRIORITIES, DATES_OPEN, DATES_CLOSE, DATE_RE;
|
|
34603
34691
|
var init_github_map = __esm({
|
|
34604
34692
|
"src/lib/task-backend/github-map.ts"() {
|
|
34605
34693
|
"use strict";
|
|
@@ -34623,6 +34711,9 @@ var init_github_map = __esm({
|
|
|
34623
34711
|
[`${DC_PREFIX}todo`]: "todo"
|
|
34624
34712
|
};
|
|
34625
34713
|
PRIORITIES = /* @__PURE__ */ new Set(["critical", "high", "medium", "low"]);
|
|
34714
|
+
DATES_OPEN = "<!-- dc:dates -->";
|
|
34715
|
+
DATES_CLOSE = "<!-- /dc:dates -->";
|
|
34716
|
+
DATE_RE = /\b(\d{4}-\d{2}-\d{2})\b/;
|
|
34626
34717
|
}
|
|
34627
34718
|
});
|
|
34628
34719
|
|
|
@@ -35004,6 +35095,7 @@ var init_github = __esm({
|
|
|
35004
35095
|
pendingQueue: 0,
|
|
35005
35096
|
errors: [],
|
|
35006
35097
|
failedPushes: [],
|
|
35098
|
+
warnings: [],
|
|
35007
35099
|
watermark: null,
|
|
35008
35100
|
noop: false
|
|
35009
35101
|
};
|
|
@@ -35083,7 +35175,18 @@ var init_github = __esm({
|
|
|
35083
35175
|
const currentEntries = splitChangelogEntries(task.changelog);
|
|
35084
35176
|
const baseNorm = new Set(baseEntries.map(normalizeEntry));
|
|
35085
35177
|
const newEntries = currentEntries.filter((e) => !baseNorm.has(normalizeEntry(e)));
|
|
35086
|
-
const assignees =
|
|
35178
|
+
const assignees = [];
|
|
35179
|
+
const unmappedAssignees = [];
|
|
35180
|
+
for (const s of assigneeSlugsOf2(task.raw, task.tags)) {
|
|
35181
|
+
const login = this.loginForSlug(s);
|
|
35182
|
+
if (login !== null) assignees.push(login);
|
|
35183
|
+
else unmappedAssignees.push(s);
|
|
35184
|
+
}
|
|
35185
|
+
if (unmappedAssignees.length > 0) {
|
|
35186
|
+
report.warnings.push(
|
|
35187
|
+
`push ${slug}: assignee ${unmappedAssignees.map((s) => `person:${s}`).join(", ")} is not a collaborator on this repo \u2014 left unassigned (invite them, or use a \`person:<slug>\` matching their GitHub login).`
|
|
35188
|
+
);
|
|
35189
|
+
}
|
|
35087
35190
|
const labels = labelsToGitHub({
|
|
35088
35191
|
tags: stripPersonTags2(task.tags),
|
|
35089
35192
|
priority: task.priority,
|
|
@@ -35091,7 +35194,10 @@ var init_github = __esm({
|
|
|
35091
35194
|
version: task.version,
|
|
35092
35195
|
status: task.status
|
|
35093
35196
|
});
|
|
35094
|
-
const
|
|
35197
|
+
const isBacklog = task.tags.some((t) => t.toLowerCase() === BACKLOG_TAG);
|
|
35198
|
+
const startLocal = isBacklog ? null : task.raw.start_date ?? null;
|
|
35199
|
+
const dueLocal = isBacklog ? null : task.raw.due_date ?? null;
|
|
35200
|
+
const body = composeIssueBody(bodyToIssueBody(task.body), startLocal, dueLocal);
|
|
35095
35201
|
let remoteId = this.ledger.remoteIdFor(slug);
|
|
35096
35202
|
let serverTime = null;
|
|
35097
35203
|
if (!remoteId) {
|
|
@@ -35273,7 +35379,12 @@ var init_github = __esm({
|
|
|
35273
35379
|
const remoteComments = await this.fetchIssueComments(adapter, owner, repo, remoteId);
|
|
35274
35380
|
const remoteEntries = remoteComments.map((c) => (c.body ?? "").trim()).filter(Boolean);
|
|
35275
35381
|
const { tags: remoteTags, priority: remotePriority, urgency: remoteUrgency, version: remoteVersion } = labelsFromGitHub(issue.labels);
|
|
35276
|
-
const
|
|
35382
|
+
const normalizedIssueBody = (issue.body ?? "").replace(/\r\n/g, "\n");
|
|
35383
|
+
const { start: remoteStartRaw, due: remoteDueRaw } = parseDatesBlock(normalizedIssueBody);
|
|
35384
|
+
const remoteBacklog = remoteTags.some((t) => t.toLowerCase() === BACKLOG_TAG);
|
|
35385
|
+
const remoteStart = remoteBacklog ? null : remoteStartRaw;
|
|
35386
|
+
const remoteDue = remoteBacklog ? null : remoteDueRaw;
|
|
35387
|
+
const remoteBody = stripDatesBlock(normalizedIssueBody).trim();
|
|
35277
35388
|
const remoteAssignees = [
|
|
35278
35389
|
...new Set(
|
|
35279
35390
|
(issue.assignees ?? []).map((a) => {
|
|
@@ -35302,7 +35413,8 @@ var init_github = __esm({
|
|
|
35302
35413
|
related_feature: null,
|
|
35303
35414
|
version: remoteVersion,
|
|
35304
35415
|
rice: null,
|
|
35305
|
-
|
|
35416
|
+
start_date: remoteStart,
|
|
35417
|
+
due_date: remoteDue,
|
|
35306
35418
|
created_by: "github",
|
|
35307
35419
|
updated_by: "github"
|
|
35308
35420
|
};
|
|
@@ -35386,7 +35498,17 @@ var init_github = __esm({
|
|
|
35386
35498
|
assigneeSlugsOf2(local.raw, local.tags),
|
|
35387
35499
|
remoteAssignees
|
|
35388
35500
|
);
|
|
35389
|
-
const
|
|
35501
|
+
const dueM = scalar(
|
|
35502
|
+
baseFm?.due_date ?? null,
|
|
35503
|
+
local.raw.due_date ?? null,
|
|
35504
|
+
remoteDue
|
|
35505
|
+
);
|
|
35506
|
+
const startM = scalar(
|
|
35507
|
+
baseFm?.start_date ?? null,
|
|
35508
|
+
local.raw.start_date ?? null,
|
|
35509
|
+
remoteStart
|
|
35510
|
+
);
|
|
35511
|
+
const scalarResults = [statusM, priorityM, urgencyM, nameM, tagsM, versionM, assigneeM, dueM, startM];
|
|
35390
35512
|
const anyLocalWin = scalarResults.some((r) => r.winner === "local");
|
|
35391
35513
|
const anyRemoteWin = scalarResults.some((r) => r.winner === "remote");
|
|
35392
35514
|
const remoteAddedEntries = mergedEntries.length > localEntries.length;
|
|
@@ -35403,7 +35525,8 @@ var init_github = __esm({
|
|
|
35403
35525
|
urgency: urgencyM.value,
|
|
35404
35526
|
tags: withPersonTags2(tagsM.value, assigneeM.value),
|
|
35405
35527
|
version: versionM.value,
|
|
35406
|
-
|
|
35528
|
+
start_date: tagsM.value.some((t) => t.toLowerCase() === BACKLOG_TAG) ? null : startM.value,
|
|
35529
|
+
due_date: tagsM.value.some((t) => t.toLowerCase() === BACKLOG_TAG) ? null : dueM.value,
|
|
35407
35530
|
updated_at: remoteContributed && remoteTime !== null ? dateOf2(remoteTime) : local.updated_at,
|
|
35408
35531
|
updated_by: anyRemoteWin || conflicts.length > 0 ? "github" : local.raw.updated_by ?? null
|
|
35409
35532
|
};
|
|
@@ -35420,7 +35543,8 @@ var init_github = __esm({
|
|
|
35420
35543
|
urgency: remoteUrgency ?? fm.urgency,
|
|
35421
35544
|
tags: withPersonTags2(remoteTags, remoteAssignees),
|
|
35422
35545
|
version: remoteVersion,
|
|
35423
|
-
|
|
35546
|
+
start_date: remoteTags.some((t) => t.toLowerCase() === BACKLOG_TAG) ? null : remoteStart,
|
|
35547
|
+
due_date: remoteTags.some((t) => t.toLowerCase() === BACKLOG_TAG) ? null : remoteDue
|
|
35424
35548
|
},
|
|
35425
35549
|
remoteBody,
|
|
35426
35550
|
remoteEntries
|
|
@@ -35451,7 +35575,9 @@ var init_github = __esm({
|
|
|
35451
35575
|
["name", nameM, local.name],
|
|
35452
35576
|
["tags", tagsM, stripPersonTags2(local.tags)],
|
|
35453
35577
|
["version", versionM, local.version],
|
|
35454
|
-
["assignees", assigneeM, assigneeSlugsOf2(local.raw, local.tags)]
|
|
35578
|
+
["assignees", assigneeM, assigneeSlugsOf2(local.raw, local.tags)],
|
|
35579
|
+
["due_date", dueM, local.raw.due_date ?? null],
|
|
35580
|
+
["start_date", startM, local.raw.start_date ?? null]
|
|
35455
35581
|
];
|
|
35456
35582
|
for (const [field, merged, from] of namedScalars) {
|
|
35457
35583
|
if (merged.winner === "remote") {
|
|
@@ -36891,6 +37017,10 @@ function registerSleepCommand(program2) {
|
|
|
36891
37017
|
warn(`Task sync: completed with ${report.errors.length} non-fatal error(s):`);
|
|
36892
37018
|
for (const e of report.errors) warn(` ${e}`);
|
|
36893
37019
|
}
|
|
37020
|
+
if (report.warnings.length > 0) {
|
|
37021
|
+
warn(`Task sync: ${report.warnings.length} assignment warning(s):`);
|
|
37022
|
+
for (const w of report.warnings) warn(` ${w}`);
|
|
37023
|
+
}
|
|
36894
37024
|
}
|
|
36895
37025
|
} catch (err) {
|
|
36896
37026
|
warn(`Task sync: skipped \u2014 ${err.message ?? err}`);
|
|
@@ -37151,6 +37281,34 @@ var init_knowledge = __esm({
|
|
|
37151
37281
|
}
|
|
37152
37282
|
});
|
|
37153
37283
|
|
|
37284
|
+
// src/lib/task-backend/member-match.ts
|
|
37285
|
+
function key(s) {
|
|
37286
|
+
return slugify(foldAscii(s));
|
|
37287
|
+
}
|
|
37288
|
+
function matchesSegment(slug, q) {
|
|
37289
|
+
return slug === q || slug.startsWith(`${q}-`) || slug.split("-").includes(q);
|
|
37290
|
+
}
|
|
37291
|
+
function matchMember(input2, members) {
|
|
37292
|
+
const q = key(input2);
|
|
37293
|
+
if (!q) return { kind: "none" };
|
|
37294
|
+
const real = members.filter((m) => m.id !== "");
|
|
37295
|
+
const exact = real.find((m) => m.slug === q);
|
|
37296
|
+
if (exact) return { kind: "exact", member: exact };
|
|
37297
|
+
const matches = real.filter(
|
|
37298
|
+
(m) => matchesSegment(m.slug, q) || matchesSegment(key(m.name), q)
|
|
37299
|
+
);
|
|
37300
|
+
if (matches.length === 1) return { kind: "fuzzy", member: matches[0] };
|
|
37301
|
+
if (matches.length > 1) return { kind: "ambiguous", matches };
|
|
37302
|
+
return { kind: "none" };
|
|
37303
|
+
}
|
|
37304
|
+
var init_member_match = __esm({
|
|
37305
|
+
"src/lib/task-backend/member-match.ts"() {
|
|
37306
|
+
"use strict";
|
|
37307
|
+
init_id();
|
|
37308
|
+
init_clickup_map();
|
|
37309
|
+
}
|
|
37310
|
+
});
|
|
37311
|
+
|
|
37154
37312
|
// src/cli/commands/tasks.ts
|
|
37155
37313
|
import { join as join43, basename as basename12, dirname as dirname22 } from "path";
|
|
37156
37314
|
function getStateDir() {
|
|
@@ -37160,6 +37318,57 @@ function getStateDir() {
|
|
|
37160
37318
|
function collectOption(value, previous) {
|
|
37161
37319
|
return previous.concat(value);
|
|
37162
37320
|
}
|
|
37321
|
+
function isCalendarDate(value) {
|
|
37322
|
+
return /^\d{4}-\d{2}-\d{2}$/.test(value) && !Number.isNaN(Date.parse(`${value}T00:00:00Z`));
|
|
37323
|
+
}
|
|
37324
|
+
async function setTaskDate(backend, slug, field, raw) {
|
|
37325
|
+
const label = field === "start_date" ? "Start date" : "Due date";
|
|
37326
|
+
if (raw.toLowerCase() === "clear") {
|
|
37327
|
+
await backend.updateFields(slug, { [field]: null, updated_at: today() });
|
|
37328
|
+
success(`${label} cleared on ${slug}`);
|
|
37329
|
+
return;
|
|
37330
|
+
}
|
|
37331
|
+
if (!isCalendarDate(raw)) {
|
|
37332
|
+
error(`${label} must be a valid YYYY-MM-DD (or "clear").`);
|
|
37333
|
+
return;
|
|
37334
|
+
}
|
|
37335
|
+
const before = await backend.get(slug);
|
|
37336
|
+
const start = field === "start_date" ? raw : before?.start_date ?? null;
|
|
37337
|
+
const due = field === "due_date" ? raw : before?.due_date ?? null;
|
|
37338
|
+
if (start && due && start > due) {
|
|
37339
|
+
error(`Start date (${start}) cannot be after the due date (${due}). Adjust or clear the other date first.`);
|
|
37340
|
+
return;
|
|
37341
|
+
}
|
|
37342
|
+
const updated = await backend.updateFields(slug, { [field]: raw, updated_at: today() });
|
|
37343
|
+
success(`${label} on ${slug}: ${raw}`);
|
|
37344
|
+
if (before?.tags.some((t) => t.toLowerCase() === "backlog") && !updated.tags.some((t) => t.toLowerCase() === "backlog")) {
|
|
37345
|
+
console.log(source_default.dim(" backlog tag removed \u2014 a dated task is planned, not backlog."));
|
|
37346
|
+
}
|
|
37347
|
+
}
|
|
37348
|
+
async function resolvePersonSlug(backend, input2) {
|
|
37349
|
+
const fallback = slugify(input2);
|
|
37350
|
+
if (!backend.listMembers) return { slug: fallback };
|
|
37351
|
+
let members;
|
|
37352
|
+
try {
|
|
37353
|
+
members = await backend.listMembers();
|
|
37354
|
+
} catch {
|
|
37355
|
+
return { slug: fallback };
|
|
37356
|
+
}
|
|
37357
|
+
if (members.length === 0) return { slug: fallback };
|
|
37358
|
+
const match = matchMember(input2, members);
|
|
37359
|
+
if (match.kind === "exact" || match.kind === "fuzzy") {
|
|
37360
|
+
if (match.member.slug !== fallback) {
|
|
37361
|
+
console.log(source_default.dim(` \u2192 assignee "${input2}" resolved to ${match.member.slug} (${match.member.name}).`));
|
|
37362
|
+
}
|
|
37363
|
+
return { slug: match.member.slug };
|
|
37364
|
+
}
|
|
37365
|
+
if (match.kind === "ambiguous") {
|
|
37366
|
+
error(`Ambiguous assignee "${input2}" \u2014 matches ${match.matches.map((m) => m.slug).join(", ")}. Be more specific.`);
|
|
37367
|
+
return { abort: true };
|
|
37368
|
+
}
|
|
37369
|
+
warn(`"${input2}" matches no member on the "${backend.name}" backend \u2014 recording person:${fallback}, but it will NOT sync until they are a member (see \`dreamcontext tasks members\`).`);
|
|
37370
|
+
return { slug: fallback };
|
|
37371
|
+
}
|
|
37163
37372
|
function renderTaskLine(t, opts = {}) {
|
|
37164
37373
|
const statusColor2 = t.status === "in_progress" ? source_default.yellow : t.status === "in_review" ? source_default.magenta : t.status === "completed" ? source_default.green : source_default.white;
|
|
37165
37374
|
const prio = t.priority !== "-" ? source_default.dim(` [${t.priority}]`) : "";
|
|
@@ -37267,7 +37476,7 @@ function registerTasksCommand(program2) {
|
|
|
37267
37476
|
console.log(` ${c.tag.padEnd(width)} ${source_default.dim(String(c.count))}`);
|
|
37268
37477
|
}
|
|
37269
37478
|
});
|
|
37270
|
-
tasks.command("create").argument("<name>").description("Create a new task").option("-d, --description <desc>", "Task description").option("-p, --priority <priority>", "Priority (critical, high, medium, low)").option("-u, --urgency <level>", "Urgency (critical, high, medium, low)").option("-s, --status <status>", "Status (todo, in_progress, in_review, completed)").option("-t, --tags <tags>", "Comma-separated tags").option("-w, --why <why>", "Why is this task needed?").option("-v, --version <version>", "Version/milestone").option("--person <name>", "Responsible person (records a person:<slug> tag when multi-person)").option("--reach <n>", "RICE reach (integer 1\u201310)").option("--impact <n>", "RICE impact (integer 1\u20135)").option("--confidence <n>", "RICE confidence (25, 50, 75, or 100)").option("--effort <n>", "RICE effort in weeks (> 0, \u2264 52)").option("--due <date>", "Due date (YYYY-MM-DD)").action(async (name, opts) => {
|
|
37479
|
+
tasks.command("create").argument("<name>").description("Create a new task").option("-d, --description <desc>", "Task description").option("-p, --priority <priority>", "Priority (critical, high, medium, low)").option("-u, --urgency <level>", "Urgency (critical, high, medium, low)").option("-s, --status <status>", "Status (todo, in_progress, in_review, completed)").option("-t, --tags <tags>", "Comma-separated tags").option("-w, --why <why>", "Why is this task needed?").option("-v, --version <version>", "Version/milestone").option("--person <name>", "Responsible person (records a person:<slug> tag when multi-person)").option("--reach <n>", "RICE reach (integer 1\u201310)").option("--impact <n>", "RICE impact (integer 1\u20135)").option("--confidence <n>", "RICE confidence (25, 50, 75, or 100)").option("--effort <n>", "RICE effort in weeks (> 0, \u2264 52)").option("--start <date>", "Planned start date (YYYY-MM-DD)").option("--due <date>", "Due/end date (YYYY-MM-DD)").action(async (name, opts) => {
|
|
37271
37480
|
const backend = getTaskBackend();
|
|
37272
37481
|
const slug = slugify(name);
|
|
37273
37482
|
if (await backend.get(slug) !== null) {
|
|
@@ -37296,7 +37505,9 @@ function registerTasksCommand(program2) {
|
|
|
37296
37505
|
if (opts.person && opts.person.trim()) {
|
|
37297
37506
|
const projectRoot = dirname22(ensureContextRoot());
|
|
37298
37507
|
if (isMultiPerson(readSetupConfig(projectRoot))) {
|
|
37299
|
-
const
|
|
37508
|
+
const resolved = await resolvePersonSlug(backend, opts.person);
|
|
37509
|
+
if ("abort" in resolved) return;
|
|
37510
|
+
const personTag = `person:${resolved.slug}`;
|
|
37300
37511
|
if (!tags.includes(personTag)) tags.push(personTag);
|
|
37301
37512
|
}
|
|
37302
37513
|
}
|
|
@@ -37316,8 +37527,16 @@ function registerTasksCommand(program2) {
|
|
|
37316
37527
|
}
|
|
37317
37528
|
riceBlock = mergeRice(null, riceInput);
|
|
37318
37529
|
}
|
|
37319
|
-
if (opts.due !== void 0 &&
|
|
37320
|
-
error("Due date must be YYYY-MM-DD.");
|
|
37530
|
+
if (opts.due !== void 0 && !isCalendarDate(opts.due)) {
|
|
37531
|
+
error("Due date must be a valid YYYY-MM-DD.");
|
|
37532
|
+
return;
|
|
37533
|
+
}
|
|
37534
|
+
if (opts.start !== void 0 && !isCalendarDate(opts.start)) {
|
|
37535
|
+
error("Start date must be a valid YYYY-MM-DD.");
|
|
37536
|
+
return;
|
|
37537
|
+
}
|
|
37538
|
+
if (opts.start && opts.due && opts.start > opts.due) {
|
|
37539
|
+
error(`Start date (${opts.start}) cannot be after the due date (${opts.due}).`);
|
|
37321
37540
|
return;
|
|
37322
37541
|
}
|
|
37323
37542
|
try {
|
|
@@ -37331,6 +37550,7 @@ function registerTasksCommand(program2) {
|
|
|
37331
37550
|
why,
|
|
37332
37551
|
version,
|
|
37333
37552
|
rice: riceBlock,
|
|
37553
|
+
start_date: opts.start ?? null,
|
|
37334
37554
|
due_date: opts.due ?? null,
|
|
37335
37555
|
variant: "cli"
|
|
37336
37556
|
});
|
|
@@ -37410,25 +37630,17 @@ function registerTasksCommand(program2) {
|
|
|
37410
37630
|
await backend.delete(slug);
|
|
37411
37631
|
success(`Task deleted: ${slug}${backend.name !== "local" ? " (remote deletion on next sync)" : ""}`);
|
|
37412
37632
|
});
|
|
37413
|
-
tasks.command("
|
|
37633
|
+
tasks.command("start").argument("<name>", "Task slug or name").argument("<date>", 'YYYY-MM-DD, or "clear" to remove').description("Set or clear a task planned start date (the range start)").action(async (name, date) => {
|
|
37414
37634
|
const backend = getTaskBackend();
|
|
37415
37635
|
const slug = await resolveTaskSlug(backend, name);
|
|
37416
37636
|
if (!slug) return;
|
|
37417
|
-
|
|
37418
|
-
|
|
37419
|
-
|
|
37420
|
-
|
|
37421
|
-
|
|
37422
|
-
if (
|
|
37423
|
-
|
|
37424
|
-
return;
|
|
37425
|
-
}
|
|
37426
|
-
const before = await backend.get(slug);
|
|
37427
|
-
const updated = await backend.updateFields(slug, { due_date: date, updated_at: today() });
|
|
37428
|
-
success(`Due date on ${slug}: ${date}`);
|
|
37429
|
-
if (before?.tags.some((t) => t.toLowerCase() === "backlog") && !updated.tags.some((t) => t.toLowerCase() === "backlog")) {
|
|
37430
|
-
console.log(source_default.dim(" backlog tag removed \u2014 a dated task is planned, not backlog."));
|
|
37431
|
-
}
|
|
37637
|
+
await setTaskDate(backend, slug, "start_date", date);
|
|
37638
|
+
});
|
|
37639
|
+
tasks.command("due").argument("<name>", "Task slug or name").argument("<date>", 'YYYY-MM-DD, or "clear" to remove').description("Set or clear a task due/end date (the range end)").action(async (name, date) => {
|
|
37640
|
+
const backend = getTaskBackend();
|
|
37641
|
+
const slug = await resolveTaskSlug(backend, name);
|
|
37642
|
+
if (!slug) return;
|
|
37643
|
+
await setTaskDate(backend, slug, "due_date", date);
|
|
37432
37644
|
});
|
|
37433
37645
|
tasks.command("tag").argument("<name>", "Task slug or name").argument("<tags...>", "Tags to add (or remove with --remove); person:<slug> assigns a person").description("Add or remove tags on a task").option("--remove", "Remove the given tags instead of adding them").action(async (name, tagArgs, opts) => {
|
|
37434
37646
|
const backend = getTaskBackend();
|
|
@@ -37449,13 +37661,28 @@ function registerTasksCommand(program2) {
|
|
|
37449
37661
|
const drop = new Set(given.map((t) => t.toLowerCase()));
|
|
37450
37662
|
next = task.tags.filter((t) => !drop.has(t.toLowerCase()));
|
|
37451
37663
|
} else {
|
|
37452
|
-
|
|
37664
|
+
const addTags = [];
|
|
37453
37665
|
for (const t of given) {
|
|
37666
|
+
if (t.startsWith("person:")) {
|
|
37667
|
+
const raw = t.slice("person:".length).trim();
|
|
37668
|
+
if (!raw) {
|
|
37669
|
+
error("Empty assignee: `person:` needs a slug, e.g. `person:emrecan-tetik` (see `dreamcontext tasks members`).");
|
|
37670
|
+
return;
|
|
37671
|
+
}
|
|
37672
|
+
const resolved = await resolvePersonSlug(backend, raw);
|
|
37673
|
+
if ("abort" in resolved) return;
|
|
37674
|
+
addTags.push(`person:${resolved.slug}`);
|
|
37675
|
+
} else {
|
|
37676
|
+
addTags.push(t);
|
|
37677
|
+
}
|
|
37678
|
+
}
|
|
37679
|
+
next = [...task.tags];
|
|
37680
|
+
for (const t of addTags) {
|
|
37454
37681
|
if (!next.some((x) => x.toLowerCase() === t.toLowerCase())) next.push(t);
|
|
37455
37682
|
}
|
|
37456
37683
|
const persons = next.filter((t) => t.startsWith("person:"));
|
|
37457
37684
|
if (persons.length > 1) {
|
|
37458
|
-
const keep =
|
|
37685
|
+
const keep = addTags.filter((t) => t.startsWith("person:")).pop() ?? persons[persons.length - 1];
|
|
37459
37686
|
next = next.filter((t) => !t.startsWith("person:") || t === keep);
|
|
37460
37687
|
}
|
|
37461
37688
|
}
|
|
@@ -37587,6 +37814,9 @@ function registerTasksCommand(program2) {
|
|
|
37587
37814
|
for (const e of report.errors) {
|
|
37588
37815
|
console.log(source_default.red(` error: ${e}`));
|
|
37589
37816
|
}
|
|
37817
|
+
for (const w of report.warnings) {
|
|
37818
|
+
console.log(source_default.yellow(` warning: ${w}`));
|
|
37819
|
+
}
|
|
37590
37820
|
} catch (err) {
|
|
37591
37821
|
if (opts.hook) {
|
|
37592
37822
|
console.log(source_default.dim(`tasks sync: skipped (${err.message ?? err})`));
|
|
@@ -37753,6 +37983,7 @@ var init_tasks = __esm({
|
|
|
37753
37983
|
init_prompt();
|
|
37754
37984
|
init_id();
|
|
37755
37985
|
init_format();
|
|
37986
|
+
init_member_match();
|
|
37756
37987
|
init_setup_config();
|
|
37757
37988
|
init_active_version();
|
|
37758
37989
|
init_rice();
|
|
@@ -41032,9 +41263,9 @@ function detectSalience(distilled) {
|
|
|
41032
41263
|
const push = (message, salience) => {
|
|
41033
41264
|
const clamped = clamp(message);
|
|
41034
41265
|
if (!clamped) return;
|
|
41035
|
-
const
|
|
41036
|
-
if (seen.has(
|
|
41037
|
-
seen.add(
|
|
41266
|
+
const key2 = `${salience}::${clamped.toLowerCase()}`;
|
|
41267
|
+
if (seen.has(key2)) return;
|
|
41268
|
+
seen.add(key2);
|
|
41038
41269
|
moments.push({ message: clamped, salience });
|
|
41039
41270
|
};
|
|
41040
41271
|
for (const msg of distilled.userMessages) {
|
|
@@ -41378,9 +41609,9 @@ function haikuRecall(rawPrompt, contextRoot, opts) {
|
|
|
41378
41609
|
const seen = /* @__PURE__ */ new Set();
|
|
41379
41610
|
subset = [];
|
|
41380
41611
|
for (const h of ranked) {
|
|
41381
|
-
const
|
|
41382
|
-
if (seen.has(
|
|
41383
|
-
seen.add(
|
|
41612
|
+
const key2 = docKey(h.doc);
|
|
41613
|
+
if (seen.has(key2)) continue;
|
|
41614
|
+
seen.add(key2);
|
|
41384
41615
|
subset.push(h.doc);
|
|
41385
41616
|
}
|
|
41386
41617
|
} else {
|
|
@@ -41404,17 +41635,17 @@ function haikuRecall(rawPrompt, contextRoot, opts) {
|
|
|
41404
41635
|
}
|
|
41405
41636
|
const hits = [];
|
|
41406
41637
|
for (const entry of rawDocs) {
|
|
41407
|
-
let
|
|
41638
|
+
let key2;
|
|
41408
41639
|
let reason = "";
|
|
41409
41640
|
if (typeof entry === "string") {
|
|
41410
|
-
|
|
41641
|
+
key2 = entry;
|
|
41411
41642
|
} else if (entry && typeof entry === "object" && typeof entry.key === "string") {
|
|
41412
|
-
|
|
41643
|
+
key2 = entry.key;
|
|
41413
41644
|
reason = String(entry.reason ?? "");
|
|
41414
41645
|
} else {
|
|
41415
41646
|
continue;
|
|
41416
41647
|
}
|
|
41417
|
-
const doc = lookup.get(
|
|
41648
|
+
const doc = lookup.get(key2);
|
|
41418
41649
|
if (!doc) continue;
|
|
41419
41650
|
hits.push({ doc, score: 0, rankScore: 0, snippet: reason });
|
|
41420
41651
|
if (hits.length >= 3) break;
|
|
@@ -43248,6 +43479,26 @@ async function handleTasksCreate(req, res, _params, contextRoot) {
|
|
|
43248
43479
|
}
|
|
43249
43480
|
riceBlock = mergeRice(null, riceInput);
|
|
43250
43481
|
}
|
|
43482
|
+
const isYmdDate = (v) => typeof v === "string" && /^\d{4}-\d{2}-\d{2}$/.test(v) && !Number.isNaN(Date.parse(`${v}T00:00:00Z`));
|
|
43483
|
+
let startDate = null;
|
|
43484
|
+
let dueDate = null;
|
|
43485
|
+
for (const [key2, set] of [["start_date", (v) => {
|
|
43486
|
+
startDate = v;
|
|
43487
|
+
}], ["due_date", (v) => {
|
|
43488
|
+
dueDate = v;
|
|
43489
|
+
}]]) {
|
|
43490
|
+
if (body[key2] !== void 0 && body[key2] !== null) {
|
|
43491
|
+
if (!isYmdDate(body[key2])) {
|
|
43492
|
+
sendError(res, 400, `invalid_${key2}`, `${key2} must be YYYY-MM-DD or null.`);
|
|
43493
|
+
return;
|
|
43494
|
+
}
|
|
43495
|
+
set(body[key2]);
|
|
43496
|
+
}
|
|
43497
|
+
}
|
|
43498
|
+
if (startDate && dueDate && startDate > dueDate) {
|
|
43499
|
+
sendError(res, 400, "invalid_date_range", `start_date (${startDate}) cannot be after due_date (${dueDate}).`);
|
|
43500
|
+
return;
|
|
43501
|
+
}
|
|
43251
43502
|
const backend = backendFor(contextRoot);
|
|
43252
43503
|
let task;
|
|
43253
43504
|
try {
|
|
@@ -43260,6 +43511,8 @@ async function handleTasksCreate(req, res, _params, contextRoot) {
|
|
|
43260
43511
|
why,
|
|
43261
43512
|
version,
|
|
43262
43513
|
rice: riceBlock,
|
|
43514
|
+
start_date: startDate,
|
|
43515
|
+
due_date: dueDate,
|
|
43263
43516
|
variant: "dashboard"
|
|
43264
43517
|
});
|
|
43265
43518
|
} catch (err) {
|
|
@@ -43343,7 +43596,11 @@ async function handleTasksMembers(_req, res, _params, contextRoot) {
|
|
|
43343
43596
|
if (!bySlug.has(m.slug)) bySlug.set(m.slug, m);
|
|
43344
43597
|
}
|
|
43345
43598
|
for (const m of remote) bySlug.set(m.slug, m);
|
|
43346
|
-
|
|
43599
|
+
let members = [...bySlug.values()];
|
|
43600
|
+
if (backend.listMembers && remote.length > 0) {
|
|
43601
|
+
members = members.filter((m) => m.id !== "");
|
|
43602
|
+
}
|
|
43603
|
+
sendJson(res, 200, { members });
|
|
43347
43604
|
}
|
|
43348
43605
|
async function handleTasksContainers(_req, res, _params, contextRoot) {
|
|
43349
43606
|
const backend = backendFor(contextRoot);
|
|
@@ -43446,7 +43703,7 @@ async function handleTasksUpdate(req, res, params, contextRoot) {
|
|
|
43446
43703
|
});
|
|
43447
43704
|
}
|
|
43448
43705
|
}
|
|
43449
|
-
const allowedFields = ["status", "priority", "urgency", "description", "tags", "name", "related_feature", "version", "due_date", "assignee"];
|
|
43706
|
+
const allowedFields = ["status", "priority", "urgency", "description", "tags", "name", "related_feature", "version", "start_date", "due_date", "assignee"];
|
|
43450
43707
|
for (const field of allowedFields) {
|
|
43451
43708
|
if (body[field] !== void 0) {
|
|
43452
43709
|
const oldVal = oldData[field] ?? null;
|
|
@@ -43491,9 +43748,18 @@ async function handleTasksUpdate(req, res, params, contextRoot) {
|
|
|
43491
43748
|
sendError(res, 400, "invalid_assignee", "assignee must be a string or null.");
|
|
43492
43749
|
return;
|
|
43493
43750
|
}
|
|
43494
|
-
|
|
43495
|
-
|
|
43496
|
-
|
|
43751
|
+
const isYmd = (v) => typeof v === "string" && /^\d{4}-\d{2}-\d{2}$/.test(v) && !Number.isNaN(Date.parse(`${v}T00:00:00Z`));
|
|
43752
|
+
for (const dateField of ["start_date", "due_date"]) {
|
|
43753
|
+
if (updates[dateField] !== void 0 && updates[dateField] !== null && !isYmd(updates[dateField])) {
|
|
43754
|
+
sendError(res, 400, `invalid_${dateField}`, `${dateField} must be YYYY-MM-DD or null.`);
|
|
43755
|
+
return;
|
|
43756
|
+
}
|
|
43757
|
+
}
|
|
43758
|
+
{
|
|
43759
|
+
const effStart = updates.start_date !== void 0 ? updates.start_date : existing.start_date;
|
|
43760
|
+
const effDue = updates.due_date !== void 0 ? updates.due_date : existing.due_date;
|
|
43761
|
+
if (isYmd(effStart) && isYmd(effDue) && effStart > effDue) {
|
|
43762
|
+
sendError(res, 400, "invalid_date_range", `start_date (${effStart}) cannot be after due_date (${effDue}).`);
|
|
43497
43763
|
return;
|
|
43498
43764
|
}
|
|
43499
43765
|
}
|
|
@@ -44803,27 +45069,27 @@ var require_lrucache = __commonJS({
|
|
|
44803
45069
|
this.max = 1e3;
|
|
44804
45070
|
this.map = /* @__PURE__ */ new Map();
|
|
44805
45071
|
}
|
|
44806
|
-
get(
|
|
44807
|
-
const value = this.map.get(
|
|
45072
|
+
get(key2) {
|
|
45073
|
+
const value = this.map.get(key2);
|
|
44808
45074
|
if (value === void 0) {
|
|
44809
45075
|
return void 0;
|
|
44810
45076
|
} else {
|
|
44811
|
-
this.map.delete(
|
|
44812
|
-
this.map.set(
|
|
45077
|
+
this.map.delete(key2);
|
|
45078
|
+
this.map.set(key2, value);
|
|
44813
45079
|
return value;
|
|
44814
45080
|
}
|
|
44815
45081
|
}
|
|
44816
|
-
delete(
|
|
44817
|
-
return this.map.delete(
|
|
45082
|
+
delete(key2) {
|
|
45083
|
+
return this.map.delete(key2);
|
|
44818
45084
|
}
|
|
44819
|
-
set(
|
|
44820
|
-
const deleted = this.delete(
|
|
45085
|
+
set(key2, value) {
|
|
45086
|
+
const deleted = this.delete(key2);
|
|
44821
45087
|
if (!deleted && value !== void 0) {
|
|
44822
45088
|
if (this.map.size >= this.max) {
|
|
44823
45089
|
const firstKey = this.map.keys().next().value;
|
|
44824
45090
|
this.delete(firstKey);
|
|
44825
45091
|
}
|
|
44826
|
-
this.map.set(
|
|
45092
|
+
this.map.set(key2, value);
|
|
44827
45093
|
}
|
|
44828
45094
|
return this;
|
|
44829
45095
|
}
|
|
@@ -47650,9 +47916,9 @@ var require_color = __commonJS({
|
|
|
47650
47916
|
};
|
|
47651
47917
|
var __copyProps2 = (to, from, except, desc) => {
|
|
47652
47918
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
47653
|
-
for (let
|
|
47654
|
-
if (!__hasOwnProp2.call(to,
|
|
47655
|
-
__defProp2(to,
|
|
47919
|
+
for (let key2 of __getOwnPropNames2(from))
|
|
47920
|
+
if (!__hasOwnProp2.call(to, key2) && key2 !== except)
|
|
47921
|
+
__defProp2(to, key2, { get: () => from[key2], enumerable: !(desc = __getOwnPropDesc2(from, key2)) || desc.enumerable });
|
|
47656
47922
|
}
|
|
47657
47923
|
return to;
|
|
47658
47924
|
};
|
|
@@ -47979,8 +48245,8 @@ var require_color = __commonJS({
|
|
|
47979
48245
|
}
|
|
47980
48246
|
var color_string_default = cs;
|
|
47981
48247
|
var reverseKeywords = {};
|
|
47982
|
-
for (const
|
|
47983
|
-
reverseKeywords[color_name_default[
|
|
48248
|
+
for (const key2 of Object.keys(color_name_default)) {
|
|
48249
|
+
reverseKeywords[color_name_default[key2]] = key2;
|
|
47984
48250
|
}
|
|
47985
48251
|
var convert = {
|
|
47986
48252
|
rgb: { channels: 3, labels: "rgb" },
|
|
@@ -49288,9 +49554,9 @@ var require_colour2 = __commonJS({
|
|
|
49288
49554
|
throw is.invalidParameterError("background", "object or string", value);
|
|
49289
49555
|
}
|
|
49290
49556
|
}
|
|
49291
|
-
function _setBackgroundColourOption(
|
|
49557
|
+
function _setBackgroundColourOption(key2, value) {
|
|
49292
49558
|
if (is.defined(value)) {
|
|
49293
|
-
this.options[
|
|
49559
|
+
this.options[key2] = _getBackgroundColourOption(value);
|
|
49294
49560
|
}
|
|
49295
49561
|
}
|
|
49296
49562
|
module2.exports = (Sharp) => {
|
|
@@ -50122,11 +50388,11 @@ var require_output = __commonJS({
|
|
|
50122
50388
|
}
|
|
50123
50389
|
return this;
|
|
50124
50390
|
}
|
|
50125
|
-
function _setBooleanOption(
|
|
50391
|
+
function _setBooleanOption(key2, val) {
|
|
50126
50392
|
if (is.bool(val)) {
|
|
50127
|
-
this.options[
|
|
50393
|
+
this.options[key2] = val;
|
|
50128
50394
|
} else {
|
|
50129
|
-
throw is.invalidParameterError(
|
|
50395
|
+
throw is.invalidParameterError(key2, "boolean", val);
|
|
50130
50396
|
}
|
|
50131
50397
|
}
|
|
50132
50398
|
function _read() {
|
|
@@ -50415,16 +50681,16 @@ function parseEmbeddedFiles(body) {
|
|
|
50415
50681
|
}
|
|
50416
50682
|
return out;
|
|
50417
50683
|
}
|
|
50418
|
-
function cacheGet(
|
|
50419
|
-
const hit = assetCache.get(
|
|
50684
|
+
function cacheGet(key2) {
|
|
50685
|
+
const hit = assetCache.get(key2);
|
|
50420
50686
|
if (hit) {
|
|
50421
|
-
assetCache.delete(
|
|
50422
|
-
assetCache.set(
|
|
50687
|
+
assetCache.delete(key2);
|
|
50688
|
+
assetCache.set(key2, hit);
|
|
50423
50689
|
}
|
|
50424
50690
|
return hit;
|
|
50425
50691
|
}
|
|
50426
|
-
function cacheSet(
|
|
50427
|
-
assetCache.set(
|
|
50692
|
+
function cacheSet(key2, value) {
|
|
50693
|
+
assetCache.set(key2, value);
|
|
50428
50694
|
while (assetCache.size > ASSET_CACHE_MAX) {
|
|
50429
50695
|
const oldest = assetCache.keys().next().value;
|
|
50430
50696
|
if (oldest === void 0) break;
|
|
@@ -50442,8 +50708,8 @@ async function loadAssetDataURL(abs, maxDim, quality) {
|
|
|
50442
50708
|
} catch {
|
|
50443
50709
|
return null;
|
|
50444
50710
|
}
|
|
50445
|
-
const
|
|
50446
|
-
const cached = cacheGet(
|
|
50711
|
+
const key2 = `${abs}:${mtimeMs}:${maxDim}:${quality}`;
|
|
50712
|
+
const cached = cacheGet(key2);
|
|
50447
50713
|
if (cached) return cached;
|
|
50448
50714
|
const ext = extname5(abs).toLowerCase();
|
|
50449
50715
|
const origMime = IMAGE_MIME[ext] ?? "application/octet-stream";
|
|
@@ -50456,7 +50722,7 @@ async function loadAssetDataURL(abs, maxDim, quality) {
|
|
|
50456
50722
|
dataURL: `data:image/webp;base64,${buf.toString("base64")}`,
|
|
50457
50723
|
bytes: buf.length
|
|
50458
50724
|
};
|
|
50459
|
-
cacheSet(
|
|
50725
|
+
cacheSet(key2, out);
|
|
50460
50726
|
return out;
|
|
50461
50727
|
} catch {
|
|
50462
50728
|
}
|
|
@@ -50468,7 +50734,7 @@ async function loadAssetDataURL(abs, maxDim, quality) {
|
|
|
50468
50734
|
dataURL: `data:${origMime};base64,${raw.toString("base64")}`,
|
|
50469
50735
|
bytes: raw.length
|
|
50470
50736
|
};
|
|
50471
|
-
assetCache.set(
|
|
50737
|
+
assetCache.set(key2, out);
|
|
50472
50738
|
return out;
|
|
50473
50739
|
} catch {
|
|
50474
50740
|
return null;
|
|
@@ -51670,13 +51936,13 @@ async function handleConfigUpdate(req, res, _params, contextRoot) {
|
|
|
51670
51936
|
}
|
|
51671
51937
|
const raw = body.clickup;
|
|
51672
51938
|
const picked = {};
|
|
51673
|
-
for (const
|
|
51674
|
-
if (raw[
|
|
51675
|
-
if (typeof raw[
|
|
51676
|
-
sendError(res, 400, "invalid_clickup", `clickup.${
|
|
51939
|
+
for (const key2 of ["teamId", "spaceId", "listId"]) {
|
|
51940
|
+
if (raw[key2] !== void 0) {
|
|
51941
|
+
if (typeof raw[key2] !== "string" || !raw[key2].trim()) {
|
|
51942
|
+
sendError(res, 400, "invalid_clickup", `clickup.${key2} must be a non-empty string.`);
|
|
51677
51943
|
return;
|
|
51678
51944
|
}
|
|
51679
|
-
picked[
|
|
51945
|
+
picked[key2] = raw[key2].trim();
|
|
51680
51946
|
}
|
|
51681
51947
|
}
|
|
51682
51948
|
if (raw.changelogTarget !== void 0) {
|
|
@@ -51696,13 +51962,13 @@ async function handleConfigUpdate(req, res, _params, contextRoot) {
|
|
|
51696
51962
|
}
|
|
51697
51963
|
const raw = body.github;
|
|
51698
51964
|
const picked = {};
|
|
51699
|
-
for (const
|
|
51700
|
-
if (raw[
|
|
51701
|
-
if (typeof raw[
|
|
51702
|
-
sendError(res, 400, "invalid_github", `github.${
|
|
51965
|
+
for (const key2 of ["owner", "repo"]) {
|
|
51966
|
+
if (raw[key2] !== void 0) {
|
|
51967
|
+
if (typeof raw[key2] !== "string" || !raw[key2].trim()) {
|
|
51968
|
+
sendError(res, 400, "invalid_github", `github.${key2} must be a non-empty string.`);
|
|
51703
51969
|
return;
|
|
51704
51970
|
}
|
|
51705
|
-
picked[
|
|
51971
|
+
picked[key2] = raw[key2].trim();
|
|
51706
51972
|
}
|
|
51707
51973
|
}
|
|
51708
51974
|
if (raw.changelogTarget !== void 0) {
|
|
@@ -52348,9 +52614,9 @@ async function handleLauncherFederationGraph(_req, res, _params, _contextRoot) {
|
|
|
52348
52614
|
if (c.status === "stale") continue;
|
|
52349
52615
|
connections.push({ from: v.name, to: c.vault, direction: c.direction });
|
|
52350
52616
|
if (c.direction !== "out" && c.direction !== "both") continue;
|
|
52351
|
-
const
|
|
52352
|
-
if (seen.has(
|
|
52353
|
-
seen.add(
|
|
52617
|
+
const key2 = `${v.name} ${c.vault}`;
|
|
52618
|
+
if (seen.has(key2)) continue;
|
|
52619
|
+
seen.add(key2);
|
|
52354
52620
|
edges.push({ source: v.name, target: c.vault, active: shareableByName.get(c.vault) === true });
|
|
52355
52621
|
}
|
|
52356
52622
|
}
|
|
@@ -54566,15 +54832,15 @@ function parseEnv(raw) {
|
|
|
54566
54832
|
if (raw.startsWith("export ", i)) i += "export ".length;
|
|
54567
54833
|
const keyStart = i;
|
|
54568
54834
|
while (i < n && raw[i] !== "=" && raw[i] !== "\n" && raw[i] !== "\r") i++;
|
|
54569
|
-
const
|
|
54835
|
+
const key2 = raw.slice(keyStart, i).trim();
|
|
54570
54836
|
if (i >= n || raw[i] !== "=") {
|
|
54571
|
-
if (
|
|
54837
|
+
if (key2) errors.push({ line, message: `missing '=' for key ${key2}` });
|
|
54572
54838
|
readToEol();
|
|
54573
54839
|
continue;
|
|
54574
54840
|
}
|
|
54575
54841
|
i++;
|
|
54576
|
-
if (!KEY_RE.test(
|
|
54577
|
-
errors.push({ line, message: `invalid key: ${JSON.stringify(
|
|
54842
|
+
if (!KEY_RE.test(key2)) {
|
|
54843
|
+
errors.push({ line, message: `invalid key: ${JSON.stringify(key2)}` });
|
|
54578
54844
|
readToEol();
|
|
54579
54845
|
continue;
|
|
54580
54846
|
}
|
|
@@ -54625,7 +54891,7 @@ function parseEnv(raw) {
|
|
|
54625
54891
|
i++;
|
|
54626
54892
|
}
|
|
54627
54893
|
if (i > n) {
|
|
54628
|
-
errors.push({ line: startLine, message: `unterminated double-quoted value for ${
|
|
54894
|
+
errors.push({ line: startLine, message: `unterminated double-quoted value for ${key2}` });
|
|
54629
54895
|
}
|
|
54630
54896
|
readToEol();
|
|
54631
54897
|
} else if (i < n && raw[i] === "'") {
|
|
@@ -54637,7 +54903,7 @@ function parseEnv(raw) {
|
|
|
54637
54903
|
}
|
|
54638
54904
|
if (i < n && raw[i] === "'") {
|
|
54639
54905
|
i++;
|
|
54640
|
-
} else errors.push({ line: startLine, message: `unterminated single-quoted value for ${
|
|
54906
|
+
} else errors.push({ line: startLine, message: `unterminated single-quoted value for ${key2}` });
|
|
54641
54907
|
readToEol();
|
|
54642
54908
|
} else {
|
|
54643
54909
|
let raw_value = "";
|
|
@@ -54650,7 +54916,7 @@ function parseEnv(raw) {
|
|
|
54650
54916
|
value = raw_value.trim();
|
|
54651
54917
|
readToEol();
|
|
54652
54918
|
}
|
|
54653
|
-
values[
|
|
54919
|
+
values[key2] = value;
|
|
54654
54920
|
}
|
|
54655
54921
|
return { values, errors };
|
|
54656
54922
|
}
|
|
@@ -55730,11 +55996,11 @@ function isCreate(init) {
|
|
|
55730
55996
|
init.path.replace(/\?.*$/, "")
|
|
55731
55997
|
);
|
|
55732
55998
|
}
|
|
55733
|
-
function idemCachePath(
|
|
55734
|
-
return `${MARKETING_PATHS.byIdemDir()}/${
|
|
55999
|
+
function idemCachePath(key2) {
|
|
56000
|
+
return `${MARKETING_PATHS.byIdemDir()}/${key2}.json`;
|
|
55735
56001
|
}
|
|
55736
|
-
function readIdem(
|
|
55737
|
-
const p = idemCachePath(
|
|
56002
|
+
function readIdem(key2) {
|
|
56003
|
+
const p = idemCachePath(key2);
|
|
55738
56004
|
if (!existsSync81(p)) return null;
|
|
55739
56005
|
try {
|
|
55740
56006
|
return JSON.parse(readFileSync60(p, "utf8"));
|
|
@@ -60736,13 +61002,13 @@ function registerConfigCommand(program2) {
|
|
|
60736
61002
|
const cfg = readSetupConfig(projectRoot);
|
|
60737
61003
|
if (process.stdin.isTTY) {
|
|
60738
61004
|
if (!token) {
|
|
60739
|
-
const
|
|
61005
|
+
const key2 = (await promptInput({
|
|
60740
61006
|
message: "ClickUp API key (pk_\u2026; goes to the gitignored secrets file \u2014 leave empty to add later):"
|
|
60741
61007
|
})).trim();
|
|
60742
|
-
if (
|
|
61008
|
+
if (key2) {
|
|
60743
61009
|
try {
|
|
60744
|
-
writeClickUpToken(projectRoot,
|
|
60745
|
-
success(`ClickUp token stored (${maskToken(
|
|
61010
|
+
writeClickUpToken(projectRoot, key2);
|
|
61011
|
+
success(`ClickUp token stored (${maskToken(key2)}).`);
|
|
60746
61012
|
} catch (err) {
|
|
60747
61013
|
error(err.message);
|
|
60748
61014
|
}
|
|
@@ -60831,13 +61097,13 @@ function registerConfigCommand(program2) {
|
|
|
60831
61097
|
const cfg = readSetupConfig(projectRoot);
|
|
60832
61098
|
if (process.stdin.isTTY) {
|
|
60833
61099
|
if (!token) {
|
|
60834
|
-
const
|
|
61100
|
+
const key2 = (await promptInput({
|
|
60835
61101
|
message: "GitHub token (classic PAT with `repo`, or fine-grained with Issues + Metadata; goes to the gitignored secrets file \u2014 leave empty to add later):"
|
|
60836
61102
|
})).trim();
|
|
60837
|
-
if (
|
|
61103
|
+
if (key2) {
|
|
60838
61104
|
try {
|
|
60839
|
-
writeGitHubToken(projectRoot,
|
|
60840
|
-
success(`GitHub token stored (${maskToken(
|
|
61105
|
+
writeGitHubToken(projectRoot, key2);
|
|
61106
|
+
success(`GitHub token stored (${maskToken(key2)}).`);
|
|
60841
61107
|
} catch (err) {
|
|
60842
61108
|
error(err.message);
|
|
60843
61109
|
}
|