@coze-arch/cli 0.0.36-alpha.1b252b → 0.0.36-alpha.2c0689
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/README.md +65 -114
- package/docs/deploy.md +10 -2
- package/lib/__templates__/expo/.cozeproj/scripts/dev_run.sh +74 -18
- package/lib/__templates__/expo/.cozeproj/scripts/prod_run.sh +1 -1
- package/lib/__templates__/expo/.cozeproj/scripts/server_dev_run.sh +1 -1
- package/lib/__templates__/expo/client/metro.config.js +3 -1
- package/lib/__templates__/expo/pnpm-lock.yaml +5 -5
- package/lib/__templates__/expo/server/package.json +2 -2
- package/lib/__templates__/expo/server/src/index.ts +1 -1
- package/lib/__templates__/expo/template.config.js +11 -2
- package/lib/__templates__/native-static/.coze +2 -0
- package/lib/__templates__/native-static/scripts/serve.ps1 +7 -0
- package/lib/__templates__/nextjs/.coze +5 -0
- package/lib/__templates__/nextjs/package.json +1 -1
- package/lib/__templates__/nextjs/pnpm-lock.yaml +5 -5
- package/lib/__templates__/nextjs/scripts/build.ps1 +16 -0
- package/lib/__templates__/nextjs/scripts/dev.ps1 +63 -0
- package/lib/__templates__/nextjs/scripts/dev.sh +83 -2
- package/lib/__templates__/nextjs/scripts/prepare.ps1 +18 -0
- package/lib/__templates__/nextjs/scripts/start.ps1 +11 -0
- package/lib/__templates__/nextjs/scripts/validate.ps1 +8 -0
- package/lib/__templates__/nextjs/template.config.js +1 -1
- package/lib/__templates__/nuxt-vue/.coze +5 -0
- package/lib/__templates__/nuxt-vue/package.json +1 -1
- package/lib/__templates__/nuxt-vue/pnpm-lock.yaml +5 -5
- package/lib/__templates__/nuxt-vue/scripts/build.ps1 +12 -0
- package/lib/__templates__/nuxt-vue/scripts/dev.ps1 +63 -0
- package/lib/__templates__/nuxt-vue/scripts/dev.sh +82 -1
- package/lib/__templates__/nuxt-vue/scripts/prepare.ps1 +12 -0
- package/lib/__templates__/nuxt-vue/scripts/start.ps1 +11 -0
- package/lib/__templates__/nuxt-vue/scripts/validate.ps1 +8 -0
- package/lib/__templates__/phaser/.coze +5 -0
- package/lib/__templates__/phaser/README.md +8 -0
- package/lib/__templates__/phaser/scripts/build.ps1 +12 -0
- package/lib/__templates__/phaser/scripts/dev.ps1 +49 -0
- package/lib/__templates__/phaser/scripts/prepare.ps1 +8 -0
- package/lib/__templates__/phaser/scripts/start.ps1 +49 -0
- package/lib/__templates__/phaser/scripts/validate.ps1 +7 -0
- package/lib/__templates__/phaser/src/global.d.ts +3 -0
- package/lib/__templates__/phaser/src/scene/BootScene.ts +4 -0
- package/lib/__templates__/phaser/src/scene/DevLoadingScene.ts +3 -0
- package/lib/__templates__/phaser/src/utils/mark-editable.ts +8 -1
- package/lib/__templates__/phaser/vite.config.ts +1 -1
- package/lib/__templates__/phaser-static/.coze +15 -0
- package/lib/__templates__/phaser-static/README.md +40 -0
- package/lib/__templates__/phaser-static/_gitignore +6 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0001.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0002.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0003.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0004.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0005.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0006.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0007.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0008.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0009.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0010.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0011.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0012.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0013.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0014.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0015.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0016.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0017.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0018.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0019.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0020.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0021.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0022.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0023.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/frame_0024.png +0 -0
- package/lib/__templates__/phaser-static/assets/image_sequence/coze-game-loading/manifest.json +11 -0
- package/lib/__templates__/phaser-static/debug-runtime/flow-graph.json +20 -0
- package/lib/__templates__/phaser-static/index.html +17 -0
- package/lib/__templates__/phaser-static/scripts/serve.ps1 +7 -0
- package/lib/__templates__/phaser-static/src/assets.js +15 -0
- package/lib/__templates__/phaser-static/src/main.js +26 -0
- package/lib/__templates__/phaser-static/src/phaser.js +7 -0
- package/lib/__templates__/phaser-static/src/scene/BootScene.js +205 -0
- package/lib/__templates__/phaser-static/src/scene/DevLoadingScene.js +67 -0
- package/lib/__templates__/phaser-static/src/style.css +28 -0
- package/lib/__templates__/phaser-static/src/utils/asset-loader.js +267 -0
- package/lib/__templates__/phaser-static/src/utils/index.js +2 -0
- package/lib/__templates__/phaser-static/src/utils/mark-editable.js +3 -0
- package/lib/__templates__/phaser-static/template.config.js +35 -0
- package/lib/__templates__/pi-agent/package.json +1 -1
- package/lib/__templates__/pi-agent/pnpm-lock.yaml +5 -5
- package/lib/__templates__/taro/.cozeproj/scripts/deploy_run.sh +1 -1
- package/lib/__templates__/taro/.cozeproj/scripts/dev_run.sh +150 -68
- package/lib/__templates__/taro/AGENTS.md +11 -7
- package/lib/__templates__/taro/README.md +4 -4
- package/lib/__templates__/taro/config/index.ts +10 -2
- package/lib/__templates__/taro/pnpm-lock.yaml +5 -5
- package/lib/__templates__/taro/server/package.json +1 -1
- package/lib/__templates__/taro/server/src/main.ts +8 -2
- package/lib/__templates__/templates.json +26 -1
- package/lib/__templates__/vite/.coze +5 -0
- package/lib/__templates__/vite/package.json +1 -1
- package/lib/__templates__/vite/pnpm-lock.yaml +5 -5
- package/lib/__templates__/vite/scripts/build.ps1 +16 -0
- package/lib/__templates__/vite/scripts/dev.ps1 +63 -0
- package/lib/__templates__/vite/scripts/dev.sh +82 -1
- package/lib/__templates__/vite/scripts/prepare.ps1 +18 -0
- package/lib/__templates__/vite/scripts/start.ps1 +11 -0
- package/lib/__templates__/vite/scripts/validate.ps1 +8 -0
- package/lib/__templates__/vite/template.config.js +1 -1
- package/lib/cli.js +647 -358
- package/lib/deploy/package-project.js +28 -4
- package/lib/deploy/package-project.py +21 -3
- package/package.json +1 -1
package/lib/cli.js
CHANGED
|
@@ -28,6 +28,7 @@ var node_os = require('node:os');
|
|
|
28
28
|
var promises = require('node:fs/promises');
|
|
29
29
|
var node_child_process = require('node:child_process');
|
|
30
30
|
var node_util = require('node:util');
|
|
31
|
+
var tar = require('tar');
|
|
31
32
|
var node_stream = require('node:stream');
|
|
32
33
|
|
|
33
34
|
/**
|
|
@@ -1634,7 +1635,7 @@ function createNodeTransport() {
|
|
|
1634
1635
|
};
|
|
1635
1636
|
}
|
|
1636
1637
|
|
|
1637
|
-
function _nullishCoalesce$c(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain$
|
|
1638
|
+
function _nullishCoalesce$c(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain$D(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }/**
|
|
1638
1639
|
* Slardar CLI Reporter 主类
|
|
1639
1640
|
* 封装 @slardar/base 的初始化和上报逻辑
|
|
1640
1641
|
*/
|
|
@@ -1706,7 +1707,7 @@ class SlardarCLIReporter {constructor() { SlardarCLIReporter.prototype.__init.ca
|
|
|
1706
1707
|
this.client.on('send', (ev) => {
|
|
1707
1708
|
log$6(
|
|
1708
1709
|
'send hook called for event: %s',
|
|
1709
|
-
(_optionalChain$
|
|
1710
|
+
(_optionalChain$D([ev, 'optionalAccess', _ => _.ev_type]) ) || 'unknown',
|
|
1710
1711
|
);
|
|
1711
1712
|
});
|
|
1712
1713
|
|
|
@@ -1764,7 +1765,7 @@ class SlardarCLIReporter {constructor() { SlardarCLIReporter.prototype.__init.ca
|
|
|
1764
1765
|
)
|
|
1765
1766
|
: undefined;
|
|
1766
1767
|
|
|
1767
|
-
_optionalChain$
|
|
1768
|
+
_optionalChain$D([this, 'access', _2 => _2.client, 'access', _3 => _3.sendEvent, 'optionalCall', _4 => _4({
|
|
1768
1769
|
name,
|
|
1769
1770
|
metrics: cleanMetrics ,
|
|
1770
1771
|
categories: cleanCategories ,
|
|
@@ -1835,7 +1836,7 @@ class SlardarCLIReporter {constructor() { SlardarCLIReporter.prototype.__init.ca
|
|
|
1835
1836
|
log$6('Reporting JS error:', {
|
|
1836
1837
|
name: error.name,
|
|
1837
1838
|
message: error.message.slice(0, 100),
|
|
1838
|
-
stack: _optionalChain$
|
|
1839
|
+
stack: _optionalChain$D([error, 'access', _5 => _5.stack, 'optionalAccess', _6 => _6.slice, 'call', _7 => _7(0, 200)]),
|
|
1839
1840
|
extra,
|
|
1840
1841
|
source,
|
|
1841
1842
|
});
|
|
@@ -1855,7 +1856,7 @@ class SlardarCLIReporter {constructor() { SlardarCLIReporter.prototype.__init.ca
|
|
|
1855
1856
|
if (!this.ensureInitialized()) {
|
|
1856
1857
|
return;
|
|
1857
1858
|
}
|
|
1858
|
-
_optionalChain$
|
|
1859
|
+
_optionalChain$D([this, 'access', _8 => _8.client, 'access', _9 => _9.context, 'optionalAccess', _10 => _10.set, 'call', _11 => _11(key, value)]);
|
|
1859
1860
|
}
|
|
1860
1861
|
|
|
1861
1862
|
/**
|
|
@@ -1866,7 +1867,7 @@ class SlardarCLIReporter {constructor() { SlardarCLIReporter.prototype.__init.ca
|
|
|
1866
1867
|
return;
|
|
1867
1868
|
}
|
|
1868
1869
|
log$6('Merging context:', context);
|
|
1869
|
-
_optionalChain$
|
|
1870
|
+
_optionalChain$D([this, 'access', _12 => _12.client, 'access', _13 => _13.context, 'optionalAccess', _14 => _14.merge, 'call', _15 => _15(context)]);
|
|
1870
1871
|
}
|
|
1871
1872
|
|
|
1872
1873
|
/**
|
|
@@ -1876,7 +1877,7 @@ class SlardarCLIReporter {constructor() { SlardarCLIReporter.prototype.__init.ca
|
|
|
1876
1877
|
if (!this.ensureInitialized()) {
|
|
1877
1878
|
return;
|
|
1878
1879
|
}
|
|
1879
|
-
_optionalChain$
|
|
1880
|
+
_optionalChain$D([this, 'access', _16 => _16.client, 'access', _17 => _17.context, 'optionalAccess', _18 => _18.delete, 'call', _19 => _19(key)]);
|
|
1880
1881
|
}
|
|
1881
1882
|
|
|
1882
1883
|
/**
|
|
@@ -1886,7 +1887,7 @@ class SlardarCLIReporter {constructor() { SlardarCLIReporter.prototype.__init.ca
|
|
|
1886
1887
|
if (!this.ensureInitialized()) {
|
|
1887
1888
|
return;
|
|
1888
1889
|
}
|
|
1889
|
-
_optionalChain$
|
|
1890
|
+
_optionalChain$D([this, 'access', _20 => _20.client, 'access', _21 => _21.context, 'optionalAccess', _22 => _22.clear, 'call', _23 => _23()]);
|
|
1890
1891
|
}
|
|
1891
1892
|
|
|
1892
1893
|
/**
|
|
@@ -1923,7 +1924,7 @@ class SlardarCLIReporter {constructor() { SlardarCLIReporter.prototype.__init.ca
|
|
|
1923
1924
|
return;
|
|
1924
1925
|
}
|
|
1925
1926
|
log$6('Flushing Slardar data...');
|
|
1926
|
-
_optionalChain$
|
|
1927
|
+
_optionalChain$D([this, 'access', _24 => _24.client, 'access', _25 => _25.getSender, 'optionalCall', _26 => _26(), 'optionalAccess', _27 => _27.flush, 'call', _28 => _28()]);
|
|
1927
1928
|
log$6('Waiting %dms for events to be sent...', waitMs);
|
|
1928
1929
|
await new Promise(resolve => setTimeout(resolve, waitMs));
|
|
1929
1930
|
log$6('Slardar data flushed');
|
|
@@ -1942,7 +1943,7 @@ class SlardarCLIReporter {constructor() { SlardarCLIReporter.prototype.__init.ca
|
|
|
1942
1943
|
*/
|
|
1943
1944
|
const reporter = new SlardarCLIReporter();
|
|
1944
1945
|
|
|
1945
|
-
function _optionalChain$
|
|
1946
|
+
function _optionalChain$C(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
1946
1947
|
|
|
1947
1948
|
|
|
1948
1949
|
|
|
@@ -2002,11 +2003,11 @@ const EventBuilder = {
|
|
|
2002
2003
|
name: CLI_EVENTS.CLI_COMMAND,
|
|
2003
2004
|
categories: {
|
|
2004
2005
|
command,
|
|
2005
|
-
args: _optionalChain$
|
|
2006
|
+
args: _optionalChain$C([options, 'optionalAccess', _ => _.args]),
|
|
2006
2007
|
status: 'running' ,
|
|
2007
|
-
..._optionalChain$
|
|
2008
|
+
..._optionalChain$C([options, 'optionalAccess', _2 => _2.categories]),
|
|
2008
2009
|
},
|
|
2009
|
-
metrics: _optionalChain$
|
|
2010
|
+
metrics: _optionalChain$C([options, 'optionalAccess', _3 => _3.metrics]),
|
|
2010
2011
|
};
|
|
2011
2012
|
},
|
|
2012
2013
|
|
|
@@ -2027,13 +2028,13 @@ const EventBuilder = {
|
|
|
2027
2028
|
name: CLI_EVENTS.CLI_COMMAND_COMPLETE,
|
|
2028
2029
|
categories: {
|
|
2029
2030
|
command,
|
|
2030
|
-
args: _optionalChain$
|
|
2031
|
+
args: _optionalChain$C([options, 'optionalAccess', _4 => _4.args]),
|
|
2031
2032
|
status: success ? ('success' ) : ('fail' ),
|
|
2032
|
-
..._optionalChain$
|
|
2033
|
+
..._optionalChain$C([options, 'optionalAccess', _5 => _5.categories]),
|
|
2033
2034
|
},
|
|
2034
2035
|
metrics: {
|
|
2035
2036
|
duration,
|
|
2036
|
-
...(_optionalChain$
|
|
2037
|
+
...(_optionalChain$C([options, 'optionalAccess', _6 => _6.errorCode]) && { errorCode: options.errorCode }),
|
|
2037
2038
|
},
|
|
2038
2039
|
};
|
|
2039
2040
|
},
|
|
@@ -2054,12 +2055,12 @@ const EventBuilder = {
|
|
|
2054
2055
|
name: CLI_EVENTS.NETWORK_REQUEST,
|
|
2055
2056
|
categories: {
|
|
2056
2057
|
url,
|
|
2057
|
-
method: _optionalChain$
|
|
2058
|
-
statusCode: _optionalChain$
|
|
2059
|
-
status: _optionalChain$
|
|
2058
|
+
method: _optionalChain$C([options, 'optionalAccess', _7 => _7.method]) || 'GET',
|
|
2059
|
+
statusCode: _optionalChain$C([options, 'optionalAccess', _8 => _8.statusCode, 'optionalAccess', _9 => _9.toString, 'call', _10 => _10()]),
|
|
2060
|
+
status: _optionalChain$C([options, 'optionalAccess', _11 => _11.success]) ? ('success' ) : ('fail' ),
|
|
2060
2061
|
},
|
|
2061
2062
|
metrics: {
|
|
2062
|
-
duration: _optionalChain$
|
|
2063
|
+
duration: _optionalChain$C([options, 'optionalAccess', _12 => _12.duration]),
|
|
2063
2064
|
},
|
|
2064
2065
|
};
|
|
2065
2066
|
},
|
|
@@ -2081,11 +2082,11 @@ const EventBuilder = {
|
|
|
2081
2082
|
categories: {
|
|
2082
2083
|
operation,
|
|
2083
2084
|
filePath,
|
|
2084
|
-
status: _optionalChain$
|
|
2085
|
+
status: _optionalChain$C([options, 'optionalAccess', _13 => _13.success]) ? ('success' ) : ('fail' ),
|
|
2085
2086
|
},
|
|
2086
2087
|
metrics: {
|
|
2087
|
-
duration: _optionalChain$
|
|
2088
|
-
fileSize: _optionalChain$
|
|
2088
|
+
duration: _optionalChain$C([options, 'optionalAccess', _14 => _14.duration]),
|
|
2089
|
+
fileSize: _optionalChain$C([options, 'optionalAccess', _15 => _15.fileSize]),
|
|
2089
2090
|
},
|
|
2090
2091
|
};
|
|
2091
2092
|
},
|
|
@@ -2113,7 +2114,7 @@ const EventBuilder = {
|
|
|
2113
2114
|
};
|
|
2114
2115
|
|
|
2115
2116
|
var name = "@coze-arch/cli";
|
|
2116
|
-
var version = "0.0.36-alpha.
|
|
2117
|
+
var version = "0.0.36-alpha.2c0689";
|
|
2117
2118
|
var description = "coze coding devtools cli";
|
|
2118
2119
|
var license = "MIT";
|
|
2119
2120
|
var author = "fanwenjie.fe@bytedance.com";
|
|
@@ -2223,7 +2224,7 @@ var packageJson = {
|
|
|
2223
2224
|
cozePublishConfig: cozePublishConfig
|
|
2224
2225
|
};
|
|
2225
2226
|
|
|
2226
|
-
function _optionalChain$
|
|
2227
|
+
function _optionalChain$B(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }/**
|
|
2227
2228
|
* Slardar 监控初始化和上报
|
|
2228
2229
|
*/
|
|
2229
2230
|
|
|
@@ -2326,11 +2327,11 @@ const reportCommandComplete = safeRun(
|
|
|
2326
2327
|
,
|
|
2327
2328
|
) => {
|
|
2328
2329
|
const event = EventBuilder.cliCommandComplete(command, success, duration, {
|
|
2329
|
-
args: _optionalChain$
|
|
2330
|
-
errorCode: _optionalChain$
|
|
2330
|
+
args: _optionalChain$B([options, 'optionalAccess', _ => _.args]),
|
|
2331
|
+
errorCode: _optionalChain$B([options, 'optionalAccess', _2 => _2.errorCode]),
|
|
2331
2332
|
categories: {
|
|
2332
|
-
...(_optionalChain$
|
|
2333
|
-
..._optionalChain$
|
|
2333
|
+
...(_optionalChain$B([options, 'optionalAccess', _3 => _3.errorMessage]) && { errorMessage: options.errorMessage }),
|
|
2334
|
+
..._optionalChain$B([options, 'optionalAccess', _4 => _4.categories]),
|
|
2334
2335
|
},
|
|
2335
2336
|
});
|
|
2336
2337
|
reporter.sendEvent(event.name, event.metrics, event.categories);
|
|
@@ -2389,7 +2390,7 @@ const flushSlardar = safeRun('flushSlardar', async () => {
|
|
|
2389
2390
|
await reporter.flush();
|
|
2390
2391
|
});
|
|
2391
2392
|
|
|
2392
|
-
function _nullishCoalesce$b(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain$
|
|
2393
|
+
function _nullishCoalesce$b(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain$A(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var LogLevel; (function (LogLevel) {
|
|
2393
2394
|
const ERROR = 0; LogLevel[LogLevel["ERROR"] = ERROR] = "ERROR";
|
|
2394
2395
|
const WARN = 1; LogLevel[LogLevel["WARN"] = WARN] = "WARN";
|
|
2395
2396
|
const SUCCESS = 2; LogLevel[LogLevel["SUCCESS"] = SUCCESS] = "SUCCESS";
|
|
@@ -2436,7 +2437,7 @@ class Logger {
|
|
|
2436
2437
|
return level;
|
|
2437
2438
|
}
|
|
2438
2439
|
|
|
2439
|
-
const envLevel = _optionalChain$
|
|
2440
|
+
const envLevel = _optionalChain$A([process, 'access', _ => _.env, 'access', _2 => _2.LOG_LEVEL, 'optionalAccess', _3 => _3.toLowerCase, 'call', _4 => _4()]);
|
|
2440
2441
|
if (envLevel && envLevel in LOG_LEVEL_MAP) {
|
|
2441
2442
|
// envLevel 已通过 `in` 检查确认为 LOG_LEVEL_MAP 的键;
|
|
2442
2443
|
// 显式判空以满足 noUncheckedIndexedAccess,运行时行为不变
|
|
@@ -2453,7 +2454,7 @@ class Logger {
|
|
|
2453
2454
|
// 简单检测:Node.js 环境且支持 TTY
|
|
2454
2455
|
return (
|
|
2455
2456
|
typeof process !== 'undefined' &&
|
|
2456
|
-
_optionalChain$
|
|
2457
|
+
_optionalChain$A([process, 'access', _5 => _5.stdout, 'optionalAccess', _6 => _6.isTTY]) === true &&
|
|
2457
2458
|
process.env.NO_COLOR === undefined
|
|
2458
2459
|
);
|
|
2459
2460
|
}
|
|
@@ -3261,7 +3262,7 @@ const registerCommand$6 = program => {
|
|
|
3261
3262
|
});
|
|
3262
3263
|
};
|
|
3263
3264
|
|
|
3264
|
-
function _optionalChain$
|
|
3265
|
+
function _optionalChain$z(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// Safe JSON parsing utilities with type safety and error handling
|
|
3265
3266
|
// Provides fallback values, validation, and error monitoring capabilities
|
|
3266
3267
|
|
|
3267
3268
|
/**
|
|
@@ -3361,12 +3362,12 @@ function safeJsonParse(
|
|
|
3361
3362
|
const parsed = JSON.parse(String(input));
|
|
3362
3363
|
|
|
3363
3364
|
// Optional validation
|
|
3364
|
-
if (_optionalChain$
|
|
3365
|
+
if (_optionalChain$z([options, 'optionalAccess', _ => _.validate])) {
|
|
3365
3366
|
if (options.validate(parsed)) {
|
|
3366
3367
|
return parsed;
|
|
3367
3368
|
} else {
|
|
3368
3369
|
const validationError = new Error('JSON validation failed');
|
|
3369
|
-
_optionalChain$
|
|
3370
|
+
_optionalChain$z([options, 'access', _2 => _2.onError, 'optionalCall', _3 => _3(validationError, input)]);
|
|
3370
3371
|
|
|
3371
3372
|
if (options.throwOnValidationError) {
|
|
3372
3373
|
throw validationError;
|
|
@@ -3378,10 +3379,10 @@ function safeJsonParse(
|
|
|
3378
3379
|
return parsed;
|
|
3379
3380
|
} catch (error) {
|
|
3380
3381
|
// Re-throw validation errors when throwOnValidationError is true
|
|
3381
|
-
if (error instanceof Error && error.message === 'JSON validation failed' && _optionalChain$
|
|
3382
|
+
if (error instanceof Error && error.message === 'JSON validation failed' && _optionalChain$z([options, 'optionalAccess', _4 => _4.throwOnValidationError])) {
|
|
3382
3383
|
throw error;
|
|
3383
3384
|
}
|
|
3384
|
-
_optionalChain$
|
|
3385
|
+
_optionalChain$z([options, 'optionalAccess', _5 => _5.onError, 'optionalCall', _6 => _6(error , input)]);
|
|
3385
3386
|
return defaultValue;
|
|
3386
3387
|
}
|
|
3387
3388
|
}
|
|
@@ -3421,7 +3422,7 @@ function isNode(node) {
|
|
|
3421
3422
|
}
|
|
3422
3423
|
const hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;
|
|
3423
3424
|
|
|
3424
|
-
function _optionalChain$
|
|
3425
|
+
function _optionalChain$y(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
3425
3426
|
const BREAK = Symbol('break visit');
|
|
3426
3427
|
const SKIP = Symbol('skip children');
|
|
3427
3428
|
const REMOVE = Symbol('remove node');
|
|
@@ -3534,15 +3535,15 @@ function callVisitor(key, node, visitor, path) {
|
|
|
3534
3535
|
if (typeof visitor === 'function')
|
|
3535
3536
|
return visitor(key, node, path);
|
|
3536
3537
|
if (isMap(node))
|
|
3537
|
-
return _optionalChain$
|
|
3538
|
+
return _optionalChain$y([visitor, 'access', _ => _.Map, 'optionalCall', _2 => _2(key, node, path)]);
|
|
3538
3539
|
if (isSeq(node))
|
|
3539
|
-
return _optionalChain$
|
|
3540
|
+
return _optionalChain$y([visitor, 'access', _3 => _3.Seq, 'optionalCall', _4 => _4(key, node, path)]);
|
|
3540
3541
|
if (isPair(node))
|
|
3541
|
-
return _optionalChain$
|
|
3542
|
+
return _optionalChain$y([visitor, 'access', _5 => _5.Pair, 'optionalCall', _6 => _6(key, node, path)]);
|
|
3542
3543
|
if (isScalar(node))
|
|
3543
|
-
return _optionalChain$
|
|
3544
|
+
return _optionalChain$y([visitor, 'access', _7 => _7.Scalar, 'optionalCall', _8 => _8(key, node, path)]);
|
|
3544
3545
|
if (isAlias(node))
|
|
3545
|
-
return _optionalChain$
|
|
3546
|
+
return _optionalChain$y([visitor, 'access', _9 => _9.Alias, 'optionalCall', _10 => _10(key, node, path)]);
|
|
3546
3547
|
return undefined;
|
|
3547
3548
|
}
|
|
3548
3549
|
function replaceNode(key, path, node) {
|
|
@@ -3633,7 +3634,7 @@ function applyReviver(reviver, obj, key, val) {
|
|
|
3633
3634
|
return reviver.call(obj, key, val);
|
|
3634
3635
|
}
|
|
3635
3636
|
|
|
3636
|
-
function _optionalChain$
|
|
3637
|
+
function _optionalChain$x(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
3637
3638
|
/**
|
|
3638
3639
|
* Recursively convert any node or its contents to native JavaScript
|
|
3639
3640
|
*
|
|
@@ -3663,7 +3664,7 @@ function toJS(value, arg, ctx) {
|
|
|
3663
3664
|
ctx.onCreate(res);
|
|
3664
3665
|
return res;
|
|
3665
3666
|
}
|
|
3666
|
-
if (typeof value === 'bigint' && !_optionalChain$
|
|
3667
|
+
if (typeof value === 'bigint' && !_optionalChain$x([ctx, 'optionalAccess', _ => _.keep]))
|
|
3667
3668
|
return Number(value);
|
|
3668
3669
|
return value;
|
|
3669
3670
|
}
|
|
@@ -3701,7 +3702,7 @@ class NodeBase {
|
|
|
3701
3702
|
}
|
|
3702
3703
|
}
|
|
3703
3704
|
|
|
3704
|
-
function _optionalChain$
|
|
3705
|
+
function _optionalChain$w(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
3705
3706
|
class Alias extends NodeBase {
|
|
3706
3707
|
constructor(source) {
|
|
3707
3708
|
super(ALIAS);
|
|
@@ -3717,10 +3718,10 @@ class Alias extends NodeBase {
|
|
|
3717
3718
|
* instance of the `source` anchor before this node.
|
|
3718
3719
|
*/
|
|
3719
3720
|
resolve(doc, ctx) {
|
|
3720
|
-
if (_optionalChain$
|
|
3721
|
+
if (_optionalChain$w([ctx, 'optionalAccess', _ => _.maxAliasCount]) === 0)
|
|
3721
3722
|
throw new ReferenceError('Alias resolution is disabled');
|
|
3722
3723
|
let nodes;
|
|
3723
|
-
if (_optionalChain$
|
|
3724
|
+
if (_optionalChain$w([ctx, 'optionalAccess', _2 => _2.aliasResolveCache])) {
|
|
3724
3725
|
nodes = ctx.aliasResolveCache;
|
|
3725
3726
|
}
|
|
3726
3727
|
else {
|
|
@@ -3759,7 +3760,7 @@ class Alias extends NodeBase {
|
|
|
3759
3760
|
data = anchors.get(source);
|
|
3760
3761
|
}
|
|
3761
3762
|
/* istanbul ignore if */
|
|
3762
|
-
if (_optionalChain$
|
|
3763
|
+
if (_optionalChain$w([data, 'optionalAccess', _3 => _3.res]) === undefined) {
|
|
3763
3764
|
const msg = 'This should not happen: Alias anchor was not resolved?';
|
|
3764
3765
|
throw new ReferenceError(msg);
|
|
3765
3766
|
}
|
|
@@ -3811,7 +3812,7 @@ function getAliasCount(doc, node, anchors) {
|
|
|
3811
3812
|
return 1;
|
|
3812
3813
|
}
|
|
3813
3814
|
|
|
3814
|
-
function _optionalChain$
|
|
3815
|
+
function _optionalChain$v(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
3815
3816
|
const isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');
|
|
3816
3817
|
class Scalar extends NodeBase {
|
|
3817
3818
|
constructor(value) {
|
|
@@ -3819,7 +3820,7 @@ class Scalar extends NodeBase {
|
|
|
3819
3820
|
this.value = value;
|
|
3820
3821
|
}
|
|
3821
3822
|
toJSON(arg, ctx) {
|
|
3822
|
-
return _optionalChain$
|
|
3823
|
+
return _optionalChain$v([ctx, 'optionalAccess', _ => _.keep]) ? this.value : toJS(this.value, arg, ctx);
|
|
3823
3824
|
}
|
|
3824
3825
|
toString() {
|
|
3825
3826
|
return String(this.value);
|
|
@@ -3831,7 +3832,7 @@ Scalar.PLAIN = 'PLAIN';
|
|
|
3831
3832
|
Scalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';
|
|
3832
3833
|
Scalar.QUOTE_SINGLE = 'QUOTE_SINGLE';
|
|
3833
3834
|
|
|
3834
|
-
function _nullishCoalesce$a(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain$
|
|
3835
|
+
function _nullishCoalesce$a(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain$u(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
3835
3836
|
const defaultTagPrefix = 'tag:yaml.org,2002:';
|
|
3836
3837
|
function findTagObject(value, tagName, tags) {
|
|
3837
3838
|
if (tagName) {
|
|
@@ -3841,7 +3842,7 @@ function findTagObject(value, tagName, tags) {
|
|
|
3841
3842
|
throw new Error(`Tag ${tagName} not found`);
|
|
3842
3843
|
return tagObj;
|
|
3843
3844
|
}
|
|
3844
|
-
return tags.find(t => _optionalChain$
|
|
3845
|
+
return tags.find(t => _optionalChain$u([t, 'access', _ => _.identify, 'optionalCall', _2 => _2(value)]) && !t.format);
|
|
3845
3846
|
}
|
|
3846
3847
|
function createNode(value, tagName, ctx) {
|
|
3847
3848
|
if (isDocument(value))
|
|
@@ -3849,7 +3850,7 @@ function createNode(value, tagName, ctx) {
|
|
|
3849
3850
|
if (isNode(value))
|
|
3850
3851
|
return value;
|
|
3851
3852
|
if (isPair(value)) {
|
|
3852
|
-
const map = _optionalChain$
|
|
3853
|
+
const map = _optionalChain$u([ctx, 'access', _3 => _3.schema, 'access', _4 => _4[MAP], 'access', _5 => _5.createNode, 'optionalCall', _6 => _6(ctx.schema, null, ctx)]);
|
|
3853
3854
|
map.items.push(value);
|
|
3854
3855
|
return map;
|
|
3855
3856
|
}
|
|
@@ -3876,7 +3877,7 @@ function createNode(value, tagName, ctx) {
|
|
|
3876
3877
|
sourceObjects.set(value, ref);
|
|
3877
3878
|
}
|
|
3878
3879
|
}
|
|
3879
|
-
if (_optionalChain$
|
|
3880
|
+
if (_optionalChain$u([tagName, 'optionalAccess', _7 => _7.startsWith, 'call', _8 => _8('!!')]))
|
|
3880
3881
|
tagName = defaultTagPrefix + tagName.slice(2);
|
|
3881
3882
|
let tagObj = findTagObject(value, tagName, schema.tags);
|
|
3882
3883
|
if (!tagObj) {
|
|
@@ -3901,9 +3902,9 @@ function createNode(value, tagName, ctx) {
|
|
|
3901
3902
|
onTagObj(tagObj);
|
|
3902
3903
|
delete ctx.onTagObj;
|
|
3903
3904
|
}
|
|
3904
|
-
const node = _optionalChain$
|
|
3905
|
+
const node = _optionalChain$u([tagObj, 'optionalAccess', _9 => _9.createNode])
|
|
3905
3906
|
? tagObj.createNode(ctx.schema, value, ctx)
|
|
3906
|
-
: typeof _optionalChain$
|
|
3907
|
+
: typeof _optionalChain$u([tagObj, 'optionalAccess', _10 => _10.nodeClass, 'optionalAccess', _11 => _11.from]) === 'function'
|
|
3907
3908
|
? tagObj.nodeClass.from(ctx.schema, value, ctx)
|
|
3908
3909
|
: new Scalar(value);
|
|
3909
3910
|
if (tagName)
|
|
@@ -4221,7 +4222,7 @@ function consumeMoreIndentedLines(text, i, indent) {
|
|
|
4221
4222
|
return end;
|
|
4222
4223
|
}
|
|
4223
4224
|
|
|
4224
|
-
function _optionalChain$
|
|
4225
|
+
function _optionalChain$t(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
4225
4226
|
const getFoldOptions = (ctx, isBlock) => ({
|
|
4226
4227
|
indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,
|
|
4227
4228
|
lineWidth: ctx.options.lineWidth,
|
|
@@ -4506,9 +4507,9 @@ function plainString(item, ctx, onComment, onChompKeep) {
|
|
|
4506
4507
|
// booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),
|
|
4507
4508
|
// and others in v1.1.
|
|
4508
4509
|
if (actualString) {
|
|
4509
|
-
const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && _optionalChain$
|
|
4510
|
+
const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && _optionalChain$t([tag, 'access', _ => _.test, 'optionalAccess', _2 => _2.test, 'call', _3 => _3(str)]);
|
|
4510
4511
|
const { compat, tags } = ctx.doc.schema;
|
|
4511
|
-
if (tags.some(test) || _optionalChain$
|
|
4512
|
+
if (tags.some(test) || _optionalChain$t([compat, 'optionalAccess', _4 => _4.some, 'call', _5 => _5(test)]))
|
|
4512
4513
|
return quotedString(value, ctx);
|
|
4513
4514
|
}
|
|
4514
4515
|
return implicitKey
|
|
@@ -4554,7 +4555,7 @@ function stringifyString(item, ctx, onComment, onChompKeep) {
|
|
|
4554
4555
|
return res;
|
|
4555
4556
|
}
|
|
4556
4557
|
|
|
4557
|
-
function _nullishCoalesce$9(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain$
|
|
4558
|
+
function _nullishCoalesce$9(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain$s(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
4558
4559
|
function createStringifyContext(doc, options) {
|
|
4559
4560
|
const opt = Object.assign({
|
|
4560
4561
|
blockQuote: true,
|
|
@@ -4607,7 +4608,7 @@ function getTagObject(tags, item) {
|
|
|
4607
4608
|
let obj;
|
|
4608
4609
|
if (isScalar(item)) {
|
|
4609
4610
|
obj = item.value;
|
|
4610
|
-
let match = tags.filter(t => _optionalChain$
|
|
4611
|
+
let match = tags.filter(t => _optionalChain$s([t, 'access', _ => _.identify, 'optionalCall', _2 => _2(obj)]));
|
|
4611
4612
|
if (match.length > 1) {
|
|
4612
4613
|
const testMatch = match.filter(t => t.test);
|
|
4613
4614
|
if (testMatch.length > 0)
|
|
@@ -4621,7 +4622,7 @@ function getTagObject(tags, item) {
|
|
|
4621
4622
|
tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);
|
|
4622
4623
|
}
|
|
4623
4624
|
if (!tagObj) {
|
|
4624
|
-
const name = _nullishCoalesce$9(_optionalChain$
|
|
4625
|
+
const name = _nullishCoalesce$9(_optionalChain$s([obj, 'optionalAccess', _3 => _3.constructor, 'optionalAccess', _4 => _4.name]), () => ( (obj === null ? 'null' : typeof obj)));
|
|
4625
4626
|
throw new Error(`Tag not resolved for ${name} value`);
|
|
4626
4627
|
}
|
|
4627
4628
|
return tagObj;
|
|
@@ -4647,7 +4648,7 @@ function stringify(item, ctx, onComment, onChompKeep) {
|
|
|
4647
4648
|
if (isAlias(item)) {
|
|
4648
4649
|
if (ctx.doc.directives)
|
|
4649
4650
|
return item.toString(ctx);
|
|
4650
|
-
if (_optionalChain$
|
|
4651
|
+
if (_optionalChain$s([ctx, 'access', _5 => _5.resolvedAliases, 'optionalAccess', _6 => _6.has, 'call', _7 => _7(item)])) {
|
|
4651
4652
|
throw new TypeError(`Cannot stringify circular structure without alias nodes`);
|
|
4652
4653
|
}
|
|
4653
4654
|
else {
|
|
@@ -4829,7 +4830,7 @@ function warn(logLevel, warning) {
|
|
|
4829
4830
|
}
|
|
4830
4831
|
}
|
|
4831
4832
|
|
|
4832
|
-
function _optionalChain$
|
|
4833
|
+
function _optionalChain$r(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
4833
4834
|
// If the value associated with a merge key is a single mapping node, each of
|
|
4834
4835
|
// its key/value pairs is inserted into the current mapping, unless the key
|
|
4835
4836
|
// already exists in it. If the value associated with the merge key is a
|
|
@@ -4853,7 +4854,7 @@ const isMergeKey = (ctx, key) => (merge.identify(key) ||
|
|
|
4853
4854
|
(isScalar(key) &&
|
|
4854
4855
|
(!key.type || key.type === Scalar.PLAIN) &&
|
|
4855
4856
|
merge.identify(key.value))) &&
|
|
4856
|
-
_optionalChain$
|
|
4857
|
+
_optionalChain$r([ctx, 'optionalAccess', _ => _.doc, 'access', _2 => _2.schema, 'access', _3 => _3.tags, 'access', _4 => _4.some, 'call', _5 => _5(tag => tag.tag === merge.tag && tag.default)]);
|
|
4857
4858
|
function addMergeToJSMap(ctx, map, value) {
|
|
4858
4859
|
const source = resolveAliasValue(ctx, value);
|
|
4859
4860
|
if (isSeq(source))
|
|
@@ -4893,7 +4894,7 @@ function resolveAliasValue(ctx, value) {
|
|
|
4893
4894
|
return ctx && isAlias(value) ? value.resolve(ctx.doc, ctx) : value;
|
|
4894
4895
|
}
|
|
4895
4896
|
|
|
4896
|
-
function _optionalChain$
|
|
4897
|
+
function _optionalChain$q(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
4897
4898
|
function addPairToJSMap(ctx, map, { key, value }) {
|
|
4898
4899
|
if (isNode(key) && key.addToJSMap)
|
|
4899
4900
|
key.addToJSMap(ctx, map, value);
|
|
@@ -4930,7 +4931,7 @@ function stringifyKey(key, jsKey, ctx) {
|
|
|
4930
4931
|
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
4931
4932
|
if (typeof jsKey !== 'object')
|
|
4932
4933
|
return String(jsKey);
|
|
4933
|
-
if (isNode(key) && _optionalChain$
|
|
4934
|
+
if (isNode(key) && _optionalChain$q([ctx, 'optionalAccess', _ => _.doc])) {
|
|
4934
4935
|
const strCtx = createStringifyContext(ctx.doc, {});
|
|
4935
4936
|
strCtx.anchors = new Set();
|
|
4936
4937
|
for (const node of ctx.anchors.keys())
|
|
@@ -4950,7 +4951,7 @@ function stringifyKey(key, jsKey, ctx) {
|
|
|
4950
4951
|
return JSON.stringify(jsKey);
|
|
4951
4952
|
}
|
|
4952
4953
|
|
|
4953
|
-
function _optionalChain$
|
|
4954
|
+
function _optionalChain$p(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
4954
4955
|
function createPair(key, value, ctx) {
|
|
4955
4956
|
const k = createNode(key, undefined, ctx);
|
|
4956
4957
|
const v = createNode(value, undefined, ctx);
|
|
@@ -4971,17 +4972,17 @@ class Pair {
|
|
|
4971
4972
|
return new Pair(key, value);
|
|
4972
4973
|
}
|
|
4973
4974
|
toJSON(_, ctx) {
|
|
4974
|
-
const pair = _optionalChain$
|
|
4975
|
+
const pair = _optionalChain$p([ctx, 'optionalAccess', _2 => _2.mapAsMap]) ? new Map() : {};
|
|
4975
4976
|
return addPairToJSMap(ctx, pair, this);
|
|
4976
4977
|
}
|
|
4977
4978
|
toString(ctx, onComment, onChompKeep) {
|
|
4978
|
-
return _optionalChain$
|
|
4979
|
+
return _optionalChain$p([ctx, 'optionalAccess', _3 => _3.doc])
|
|
4979
4980
|
? stringifyPair(this, ctx, onComment, onChompKeep)
|
|
4980
4981
|
: JSON.stringify(this);
|
|
4981
4982
|
}
|
|
4982
4983
|
}
|
|
4983
4984
|
|
|
4984
|
-
function _nullishCoalesce$7(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain$
|
|
4985
|
+
function _nullishCoalesce$7(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain$o(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
4985
4986
|
function stringifyCollection(collection, ctx, options) {
|
|
4986
4987
|
const flow = _nullishCoalesce$7(ctx.inFlow, () => ( collection.flow));
|
|
4987
4988
|
const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;
|
|
@@ -5075,7 +5076,7 @@ function stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {
|
|
|
5075
5076
|
if (iv.commentBefore)
|
|
5076
5077
|
reqNewline = true;
|
|
5077
5078
|
}
|
|
5078
|
-
else if (item.value == null && _optionalChain$
|
|
5079
|
+
else if (item.value == null && _optionalChain$o([ik, 'optionalAccess', _ => _.comment])) {
|
|
5079
5080
|
comment = ik.comment;
|
|
5080
5081
|
}
|
|
5081
5082
|
}
|
|
@@ -5130,7 +5131,7 @@ function addCommentBefore({ indent, options: { commentString } }, lines, comment
|
|
|
5130
5131
|
}
|
|
5131
5132
|
}
|
|
5132
5133
|
|
|
5133
|
-
function _nullishCoalesce$6(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain$
|
|
5134
|
+
function _nullishCoalesce$6(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain$n(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
5134
5135
|
function findPair(items, key) {
|
|
5135
5136
|
const k = isScalar(key) ? key.value : key;
|
|
5136
5137
|
for (const it of items) {
|
|
@@ -5191,12 +5192,12 @@ class YAMLMap extends Collection {
|
|
|
5191
5192
|
_pair = pair;
|
|
5192
5193
|
else if (!pair || typeof pair !== 'object' || !('key' in pair)) {
|
|
5193
5194
|
// In TypeScript, this never happens.
|
|
5194
|
-
_pair = new Pair(pair, _optionalChain$
|
|
5195
|
+
_pair = new Pair(pair, _optionalChain$n([pair, 'optionalAccess', _2 => _2.value]));
|
|
5195
5196
|
}
|
|
5196
5197
|
else
|
|
5197
5198
|
_pair = new Pair(pair.key, pair.value);
|
|
5198
5199
|
const prev = findPair(this.items, _pair.key);
|
|
5199
|
-
const sortEntries = _optionalChain$
|
|
5200
|
+
const sortEntries = _optionalChain$n([this, 'access', _3 => _3.schema, 'optionalAccess', _4 => _4.sortMapEntries]);
|
|
5200
5201
|
if (prev) {
|
|
5201
5202
|
if (!overwrite)
|
|
5202
5203
|
throw new Error(`Key ${_pair.key} already set`);
|
|
@@ -5226,7 +5227,7 @@ class YAMLMap extends Collection {
|
|
|
5226
5227
|
}
|
|
5227
5228
|
get(key, keepScalar) {
|
|
5228
5229
|
const it = findPair(this.items, key);
|
|
5229
|
-
const node = _optionalChain$
|
|
5230
|
+
const node = _optionalChain$n([it, 'optionalAccess', _5 => _5.value]);
|
|
5230
5231
|
return _nullishCoalesce$6((!keepScalar && isScalar(node) ? node.value : node), () => ( undefined));
|
|
5231
5232
|
}
|
|
5232
5233
|
has(key) {
|
|
@@ -5241,8 +5242,8 @@ class YAMLMap extends Collection {
|
|
|
5241
5242
|
* @returns Instance of Type, Map, or Object
|
|
5242
5243
|
*/
|
|
5243
5244
|
toJSON(_, ctx, Type) {
|
|
5244
|
-
const map = Type ? new Type() : _optionalChain$
|
|
5245
|
-
if (_optionalChain$
|
|
5245
|
+
const map = Type ? new Type() : _optionalChain$n([ctx, 'optionalAccess', _6 => _6.mapAsMap]) ? new Map() : {};
|
|
5246
|
+
if (_optionalChain$n([ctx, 'optionalAccess', _7 => _7.onCreate]))
|
|
5246
5247
|
ctx.onCreate(map);
|
|
5247
5248
|
for (const item of this.items)
|
|
5248
5249
|
addPairToJSMap(ctx, map, item);
|
|
@@ -5267,7 +5268,7 @@ class YAMLMap extends Collection {
|
|
|
5267
5268
|
}
|
|
5268
5269
|
}
|
|
5269
5270
|
|
|
5270
|
-
function _optionalChain$
|
|
5271
|
+
function _optionalChain$m(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
5271
5272
|
class YAMLSeq extends Collection {
|
|
5272
5273
|
static get tagName() {
|
|
5273
5274
|
return 'tag:yaml.org,2002:seq';
|
|
@@ -5330,7 +5331,7 @@ class YAMLSeq extends Collection {
|
|
|
5330
5331
|
}
|
|
5331
5332
|
toJSON(_, ctx) {
|
|
5332
5333
|
const seq = [];
|
|
5333
|
-
if (_optionalChain$
|
|
5334
|
+
if (_optionalChain$m([ctx, 'optionalAccess', _2 => _2.onCreate]))
|
|
5334
5335
|
ctx.onCreate(seq);
|
|
5335
5336
|
let i = 0;
|
|
5336
5337
|
for (const item of this.items)
|
|
@@ -5409,7 +5410,7 @@ function createPairs(schema, iterable, ctx) {
|
|
|
5409
5410
|
return pairs;
|
|
5410
5411
|
}
|
|
5411
5412
|
|
|
5412
|
-
function _optionalChain$
|
|
5413
|
+
function _optionalChain$l(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
5413
5414
|
class YAMLOMap extends YAMLSeq {
|
|
5414
5415
|
constructor() {
|
|
5415
5416
|
super();
|
|
@@ -5428,7 +5429,7 @@ class YAMLOMap extends YAMLSeq {
|
|
|
5428
5429
|
if (!ctx)
|
|
5429
5430
|
return super.toJSON(_);
|
|
5430
5431
|
const map = new Map();
|
|
5431
|
-
if (_optionalChain$
|
|
5432
|
+
if (_optionalChain$l([ctx, 'optionalAccess', _2 => _2.onCreate]))
|
|
5432
5433
|
ctx.onCreate(map);
|
|
5433
5434
|
for (const pair of this.items) {
|
|
5434
5435
|
let key, value;
|
|
@@ -5546,7 +5547,7 @@ const isDirExists = async (file) => {
|
|
|
5546
5547
|
}
|
|
5547
5548
|
};
|
|
5548
5549
|
|
|
5549
|
-
function _optionalChain$
|
|
5550
|
+
function _optionalChain$k(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// ABOUTME: Project type detection utility
|
|
5550
5551
|
|
|
5551
5552
|
/**
|
|
5552
5553
|
* 支持的项目类型枚举
|
|
@@ -5648,7 +5649,7 @@ const collectProjectInfo = async (
|
|
|
5648
5649
|
}
|
|
5649
5650
|
|
|
5650
5651
|
const scripts = Object.entries(
|
|
5651
|
-
(_optionalChain$
|
|
5652
|
+
(_optionalChain$k([packageJson, 'optionalAccess', _ => _.scripts]) ) || {},
|
|
5652
5653
|
).reduce((acc, [name, script]) => {
|
|
5653
5654
|
if (typeof script === 'string') {
|
|
5654
5655
|
acc[name] = script;
|
|
@@ -5802,7 +5803,7 @@ const detectProjectType = async (
|
|
|
5802
5803
|
};
|
|
5803
5804
|
};
|
|
5804
5805
|
|
|
5805
|
-
function _optionalChain$
|
|
5806
|
+
function _optionalChain$j(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
5806
5807
|
|
|
5807
5808
|
|
|
5808
5809
|
/**
|
|
@@ -5961,35 +5962,66 @@ const saveProjectPatchState = async (
|
|
|
5961
5962
|
await saveTomlCozeConfig(config, projectPath);
|
|
5962
5963
|
};
|
|
5963
5964
|
|
|
5964
|
-
|
|
5965
|
-
|
|
5966
|
-
|
|
5967
|
-
* @param config - .coze 配置对象
|
|
5968
|
-
* @param commandName - 命令名称 (dev/build/start)
|
|
5969
|
-
* @returns 命令配置数组
|
|
5970
|
-
*/
|
|
5971
|
-
const getCommandConfig = (
|
|
5965
|
+
|
|
5966
|
+
|
|
5967
|
+
const getDefaultCommandConfig = (
|
|
5972
5968
|
config,
|
|
5973
5969
|
commandName,
|
|
5974
5970
|
) => {
|
|
5975
|
-
|
|
5971
|
+
switch (commandName) {
|
|
5972
|
+
case 'dev':
|
|
5973
|
+
return _optionalChain$j([config, 'access', _ => _.dev, 'optionalAccess', _2 => _2.run]);
|
|
5974
|
+
case 'build':
|
|
5975
|
+
return _optionalChain$j([config, 'access', _3 => _3.deploy, 'optionalAccess', _4 => _4.build]);
|
|
5976
|
+
case 'start':
|
|
5977
|
+
return _optionalChain$j([config, 'access', _5 => _5.deploy, 'optionalAccess', _6 => _6.run]);
|
|
5978
|
+
case 'validate':
|
|
5979
|
+
return _optionalChain$j([config, 'access', _7 => _7.dev, 'optionalAccess', _8 => _8.validate]);
|
|
5980
|
+
default:
|
|
5981
|
+
throw new Error(`Unknown command: ${commandName}`);
|
|
5982
|
+
}
|
|
5983
|
+
};
|
|
5976
5984
|
|
|
5985
|
+
const getWindowsCommandConfig = (
|
|
5986
|
+
config,
|
|
5987
|
+
commandName,
|
|
5988
|
+
) => {
|
|
5977
5989
|
switch (commandName) {
|
|
5978
5990
|
case 'dev':
|
|
5979
|
-
|
|
5980
|
-
break;
|
|
5991
|
+
return _optionalChain$j([config, 'access', _9 => _9.dev, 'optionalAccess', _10 => _10.run_win]);
|
|
5981
5992
|
case 'build':
|
|
5982
|
-
|
|
5983
|
-
break;
|
|
5993
|
+
return _optionalChain$j([config, 'access', _11 => _11.deploy, 'optionalAccess', _12 => _12.build_win]);
|
|
5984
5994
|
case 'start':
|
|
5985
|
-
|
|
5986
|
-
break;
|
|
5995
|
+
return _optionalChain$j([config, 'access', _13 => _13.deploy, 'optionalAccess', _14 => _14.run_win]);
|
|
5987
5996
|
case 'validate':
|
|
5988
|
-
|
|
5989
|
-
break;
|
|
5997
|
+
return _optionalChain$j([config, 'access', _15 => _15.dev, 'optionalAccess', _16 => _16.validate_win]);
|
|
5990
5998
|
default:
|
|
5991
5999
|
throw new Error(`Unknown command: ${commandName}`);
|
|
5992
6000
|
}
|
|
6001
|
+
};
|
|
6002
|
+
|
|
6003
|
+
/**
|
|
6004
|
+
* 获取指定命令的配置
|
|
6005
|
+
*
|
|
6006
|
+
* Windows 优先使用非空的 *_win 配置;其他平台(包括 WSL)始终使用默认配置。
|
|
6007
|
+
*
|
|
6008
|
+
* @param config - .coze 配置对象
|
|
6009
|
+
* @param commandName - 命令名称 (dev/build/start)
|
|
6010
|
+
* @returns 命令配置数组
|
|
6011
|
+
*/
|
|
6012
|
+
const getCommandConfig = (
|
|
6013
|
+
config,
|
|
6014
|
+
commandName,
|
|
6015
|
+
platform = process.platform,
|
|
6016
|
+
) => {
|
|
6017
|
+
const defaultCommandConfig = getDefaultCommandConfig(config, commandName);
|
|
6018
|
+
const windowsCommandConfig =
|
|
6019
|
+
platform === 'win32'
|
|
6020
|
+
? getWindowsCommandConfig(config, commandName)
|
|
6021
|
+
: undefined;
|
|
6022
|
+
const commandConfig = _optionalChain$j([windowsCommandConfig, 'optionalAccess', _17 => _17.length])
|
|
6023
|
+
? windowsCommandConfig
|
|
6024
|
+
: defaultCommandConfig;
|
|
5993
6025
|
|
|
5994
6026
|
if (!commandConfig || commandConfig.length === 0) {
|
|
5995
6027
|
throw new Error(
|
|
@@ -6136,7 +6168,7 @@ const byFlag = (flag) => {
|
|
|
6136
6168
|
return predicate;
|
|
6137
6169
|
};
|
|
6138
6170
|
|
|
6139
|
-
function _optionalChain$
|
|
6171
|
+
function _optionalChain$i(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
6140
6172
|
|
|
6141
6173
|
|
|
6142
6174
|
|
|
@@ -6167,7 +6199,7 @@ echo "Validate passed!"
|
|
|
6167
6199
|
* @returns
|
|
6168
6200
|
*/
|
|
6169
6201
|
const isCozeValid$3 = (cozeConfig) => {
|
|
6170
|
-
if (_optionalChain$
|
|
6202
|
+
if (_optionalChain$i([cozeConfig, 'access', _ => _.dev, 'optionalAccess', _2 => _2.validate])) {
|
|
6171
6203
|
logger.info('[patch-expo-validate] NOT APPLY: dev.validate exists');
|
|
6172
6204
|
return false;
|
|
6173
6205
|
}
|
|
@@ -6312,7 +6344,7 @@ const patchExpoValidate = {
|
|
|
6312
6344
|
},
|
|
6313
6345
|
};
|
|
6314
6346
|
|
|
6315
|
-
function _optionalChain$
|
|
6347
|
+
function _optionalChain$h(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
6316
6348
|
|
|
6317
6349
|
|
|
6318
6350
|
|
|
@@ -6345,7 +6377,7 @@ echo "Validate passed!"
|
|
|
6345
6377
|
* @returns
|
|
6346
6378
|
*/
|
|
6347
6379
|
const isCozeValid$2 = (cozeConfig) => {
|
|
6348
|
-
if (_optionalChain$
|
|
6380
|
+
if (_optionalChain$h([cozeConfig, 'access', _ => _.dev, 'optionalAccess', _2 => _2.validate])) {
|
|
6349
6381
|
logger.info('[patch-nextjs-validate] NOT APPLY: dev.validate exists');
|
|
6350
6382
|
return false;
|
|
6351
6383
|
}
|
|
@@ -6493,7 +6525,7 @@ const patchNextjsValidate = {
|
|
|
6493
6525
|
},
|
|
6494
6526
|
};
|
|
6495
6527
|
|
|
6496
|
-
function _optionalChain$
|
|
6528
|
+
function _optionalChain$g(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
6497
6529
|
|
|
6498
6530
|
const PATCH_ID$5 = 'nextjs/validate-concurrently@0.0.30';
|
|
6499
6531
|
const PACKAGE_JSON_FILE$3 = 'package.json';
|
|
@@ -6526,7 +6558,7 @@ const readPackageJson = async (projectFolder) => {
|
|
|
6526
6558
|
};
|
|
6527
6559
|
|
|
6528
6560
|
const getTargetValidateScript = (packageJson) => {
|
|
6529
|
-
const validateScript = _optionalChain$
|
|
6561
|
+
const validateScript = _optionalChain$g([packageJson, 'access', _ => _.scripts, 'optionalAccess', _2 => _2.validate]);
|
|
6530
6562
|
if (typeof validateScript !== 'string') {
|
|
6531
6563
|
return null;
|
|
6532
6564
|
}
|
|
@@ -6543,7 +6575,7 @@ const getTargetValidateScript = (packageJson) => {
|
|
|
6543
6575
|
|
|
6544
6576
|
const canStackAfterNextjsValidatePatch = async (context, packageJson) => {
|
|
6545
6577
|
const scripts = packageJson.scripts || {};
|
|
6546
|
-
if (typeof scripts.validate !== 'undefined' || typeof scripts['ts-check'] !== 'string' || _optionalChain$
|
|
6578
|
+
if (typeof scripts.validate !== 'undefined' || typeof scripts['ts-check'] !== 'string' || _optionalChain$g([context, 'access', _3 => _3.cozeConfig, 'access', _4 => _4.dev, 'optionalAccess', _5 => _5.validate])) {
|
|
6547
6579
|
return false;
|
|
6548
6580
|
}
|
|
6549
6581
|
|
|
@@ -6612,7 +6644,7 @@ const patchNextjsValidateConcurrently = {
|
|
|
6612
6644
|
apply: patchPackageJson$2,
|
|
6613
6645
|
};
|
|
6614
6646
|
|
|
6615
|
-
function _optionalChain$
|
|
6647
|
+
function _optionalChain$f(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
6616
6648
|
|
|
6617
6649
|
|
|
6618
6650
|
|
|
@@ -6645,7 +6677,7 @@ echo "Validate passed!"
|
|
|
6645
6677
|
* @returns
|
|
6646
6678
|
*/
|
|
6647
6679
|
const isCozeValid$1 = (cozeConfig) => {
|
|
6648
|
-
if (_optionalChain$
|
|
6680
|
+
if (_optionalChain$f([cozeConfig, 'access', _ => _.dev, 'optionalAccess', _2 => _2.validate])) {
|
|
6649
6681
|
logger.info('[patch-vite-validate] NOT APPLY: dev.validate exists');
|
|
6650
6682
|
return false;
|
|
6651
6683
|
}
|
|
@@ -6790,7 +6822,7 @@ const patchViteValidate = {
|
|
|
6790
6822
|
},
|
|
6791
6823
|
};
|
|
6792
6824
|
|
|
6793
|
-
function _optionalChain$
|
|
6825
|
+
function _optionalChain$e(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
6794
6826
|
|
|
6795
6827
|
|
|
6796
6828
|
|
|
@@ -6827,7 +6859,7 @@ echo "Validate passed!"
|
|
|
6827
6859
|
* @returns
|
|
6828
6860
|
*/
|
|
6829
6861
|
const isCozeValid = (cozeConfig) => {
|
|
6830
|
-
if (_optionalChain$
|
|
6862
|
+
if (_optionalChain$e([cozeConfig, 'access', _ => _.dev, 'optionalAccess', _2 => _2.validate])) {
|
|
6831
6863
|
logger.info('[patch-taro-validate] NOT APPLY: dev.validate exists');
|
|
6832
6864
|
return false;
|
|
6833
6865
|
}
|
|
@@ -6976,7 +7008,7 @@ const patchTaroValidate = {
|
|
|
6976
7008
|
},
|
|
6977
7009
|
};
|
|
6978
7010
|
|
|
6979
|
-
function _optionalChain$
|
|
7011
|
+
function _optionalChain$d(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
6980
7012
|
const PATCH_ID$2 = 'taro/update-pack-script-for-tt-build@0.0.13';
|
|
6981
7013
|
const PACKAGE_JSON_FILE = 'package.json';
|
|
6982
7014
|
const PACK_SCRIPT_FILE = '.cozeproj/scripts/pack.sh';
|
|
@@ -7055,12 +7087,12 @@ const readPackageScripts = async (
|
|
|
7055
7087
|
const packageJsonContent = await fs$1.readFile(packageJsonPath, 'utf-8');
|
|
7056
7088
|
const packageJson = safeJsonParse(packageJsonContent, null);
|
|
7057
7089
|
|
|
7058
|
-
return _optionalChain$
|
|
7090
|
+
return _optionalChain$d([packageJson, 'optionalAccess', _ => _.scripts]) || null;
|
|
7059
7091
|
};
|
|
7060
7092
|
|
|
7061
7093
|
const hasBuildTtScript = async (projectFolder) => {
|
|
7062
7094
|
const scripts = await readPackageScripts(projectFolder);
|
|
7063
|
-
return typeof _optionalChain$
|
|
7095
|
+
return typeof _optionalChain$d([scripts, 'optionalAccess', _2 => _2['build:tt']]) === 'string';
|
|
7064
7096
|
};
|
|
7065
7097
|
|
|
7066
7098
|
const hasLegacyPackScript = async (projectFolder) => {
|
|
@@ -7414,7 +7446,7 @@ const getTemplatePatches = (
|
|
|
7414
7446
|
) =>
|
|
7415
7447
|
patches.filter(patch => patch.template === template);
|
|
7416
7448
|
|
|
7417
|
-
function _nullishCoalesce$5(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain$
|
|
7449
|
+
function _nullishCoalesce$5(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain$c(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
7418
7450
|
const DEFAULT_LEGACY_VERSION = 'legacy';
|
|
7419
7451
|
|
|
7420
7452
|
const loadFlagsWithFallback = async () => {
|
|
@@ -7520,7 +7552,7 @@ const getNextPatchState = (
|
|
|
7520
7552
|
|
|
7521
7553
|
) => ({
|
|
7522
7554
|
template,
|
|
7523
|
-
version: _optionalChain$
|
|
7555
|
+
version: _optionalChain$c([config, 'access', _ => _.project, 'optionalAccess', _2 => _2.version]) || DEFAULT_LEGACY_VERSION,
|
|
7524
7556
|
appliedPatches: [...appliedPatches, patchId],
|
|
7525
7557
|
});
|
|
7526
7558
|
|
|
@@ -7544,15 +7576,15 @@ const executePatch = async (
|
|
|
7544
7576
|
}
|
|
7545
7577
|
|
|
7546
7578
|
const template =
|
|
7547
|
-
_optionalChain$
|
|
7579
|
+
_optionalChain$c([config, 'access', _3 => _3.project, 'optionalAccess', _4 => _4.template]) || (await detectTemplateKey(projectFolder));
|
|
7548
7580
|
|
|
7549
7581
|
if (!template) {
|
|
7550
7582
|
logger.info('Patch skipped: template not detected');
|
|
7551
7583
|
return;
|
|
7552
7584
|
}
|
|
7553
7585
|
|
|
7554
|
-
const appliedPatches = [...(_optionalChain$
|
|
7555
|
-
const projectVersion = _optionalChain$
|
|
7586
|
+
const appliedPatches = [...(_optionalChain$c([config, 'access', _5 => _5.project, 'optionalAccess', _6 => _6.appliedPatches]) || [])];
|
|
7587
|
+
const projectVersion = _optionalChain$c([config, 'access', _7 => _7.project, 'optionalAccess', _8 => _8.version]);
|
|
7556
7588
|
const flags = await loadFlagsWithFallback();
|
|
7557
7589
|
|
|
7558
7590
|
const context = {
|
|
@@ -7655,14 +7687,14 @@ const registerCommand$5 = program => {
|
|
|
7655
7687
|
) => {
|
|
7656
7688
|
await executePatch({
|
|
7657
7689
|
directory,
|
|
7658
|
-
dryRun: _optionalChain$
|
|
7659
|
-
showFlags: _optionalChain$
|
|
7690
|
+
dryRun: _optionalChain$c([command, 'optionalAccess', _9 => _9.dryRun]),
|
|
7691
|
+
showFlags: _optionalChain$c([command, 'optionalAccess', _10 => _10.showFlags]),
|
|
7660
7692
|
});
|
|
7661
7693
|
},
|
|
7662
7694
|
);
|
|
7663
7695
|
};
|
|
7664
7696
|
|
|
7665
|
-
function _nullishCoalesce$4(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain$
|
|
7697
|
+
function _nullishCoalesce$4(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain$b(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
7666
7698
|
const d$1 = debug('coze-init-cli:run');
|
|
7667
7699
|
|
|
7668
7700
|
/**
|
|
@@ -7793,12 +7825,12 @@ const executeRun = async (commandName, options = {}) => {
|
|
|
7793
7825
|
}
|
|
7794
7826
|
|
|
7795
7827
|
// 将输出同时写入控制台和日志文件
|
|
7796
|
-
_optionalChain$
|
|
7828
|
+
_optionalChain$b([childProcess, 'access', _ => _.stdout, 'optionalAccess', _2 => _2.on, 'call', _3 => _3('data', (data) => {
|
|
7797
7829
|
process.stdout.write(data);
|
|
7798
7830
|
logStream.write(data);
|
|
7799
7831
|
})]);
|
|
7800
7832
|
|
|
7801
|
-
_optionalChain$
|
|
7833
|
+
_optionalChain$b([childProcess, 'access', _4 => _4.stderr, 'optionalAccess', _5 => _5.on, 'call', _6 => _6('data', (data) => {
|
|
7802
7834
|
process.stderr.write(data);
|
|
7803
7835
|
logStream.write(data);
|
|
7804
7836
|
})]);
|
|
@@ -8742,7 +8774,7 @@ const scanRoutesOnce = async (
|
|
|
8742
8774
|
}
|
|
8743
8775
|
};
|
|
8744
8776
|
|
|
8745
|
-
function _optionalChain$
|
|
8777
|
+
function _optionalChain$a(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// Route manifest generation command
|
|
8746
8778
|
|
|
8747
8779
|
|
|
8748
8780
|
const log = debug('coze:routes');
|
|
@@ -8843,7 +8875,7 @@ const registerCommand$3 = program => {
|
|
|
8843
8875
|
'Output file path (defaults to ~/.coze/routes.json)',
|
|
8844
8876
|
)
|
|
8845
8877
|
.action(async (directory, options) => {
|
|
8846
|
-
await executeRoutes({ directory, output: _optionalChain$
|
|
8878
|
+
await executeRoutes({ directory, output: _optionalChain$a([options, 'optionalAccess', _ => _.output]) });
|
|
8847
8879
|
});
|
|
8848
8880
|
};
|
|
8849
8881
|
|
|
@@ -10434,7 +10466,7 @@ const withRequestedApplicationType = (
|
|
|
10434
10466
|
};
|
|
10435
10467
|
};
|
|
10436
10468
|
|
|
10437
|
-
function _optionalChain$
|
|
10469
|
+
function _optionalChain$9(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
10438
10470
|
|
|
10439
10471
|
const DEFAULT_CONFIG = {
|
|
10440
10472
|
apiBaseUrl: 'https://code.coze.cn/',
|
|
@@ -10463,7 +10495,7 @@ const readJson = async (path) => {
|
|
|
10463
10495
|
};
|
|
10464
10496
|
|
|
10465
10497
|
const configuredPath = (options) =>
|
|
10466
|
-
_optionalChain$
|
|
10498
|
+
_optionalChain$9([options, 'optionalAccess', _ => _.config]) || process.env.COZE_CONFIG_FILE;
|
|
10467
10499
|
|
|
10468
10500
|
const loadConfig = async (options = {}) => {
|
|
10469
10501
|
const customPath = configuredPath(options);
|
|
@@ -10484,11 +10516,15 @@ const loadConfig = async (options = {}) => {
|
|
|
10484
10516
|
}
|
|
10485
10517
|
: {}),
|
|
10486
10518
|
...(process.env.COZE_ORG_ID ? { organizationId: process.env.COZE_ORG_ID } : {}),
|
|
10519
|
+
...(process.env.COZE_ACCOUNT_ID ? { cozeAccountId: process.env.COZE_ACCOUNT_ID } : {}),
|
|
10487
10520
|
...(process.env.COZE_SPACE_ID ? { spaceId: process.env.COZE_SPACE_ID } : {}),
|
|
10488
10521
|
...(process.env.COZE_PROJECT_ID ? { projectId: process.env.COZE_PROJECT_ID } : {}),
|
|
10489
10522
|
...(options.orgId ? { organizationId: options.orgId } : {}),
|
|
10490
10523
|
...(options.spaceId ? { spaceId: options.spaceId } : {}),
|
|
10491
10524
|
...(options.apiBaseUrl ? { apiBaseUrl: options.apiBaseUrl } : {}),
|
|
10525
|
+
// Runtime-only trust decision: a value persisted in config.json must never enable
|
|
10526
|
+
// project-secret injection for an OAuth access token.
|
|
10527
|
+
injectApiToken: Boolean(environmentAccessToken),
|
|
10492
10528
|
};
|
|
10493
10529
|
return config;
|
|
10494
10530
|
};
|
|
@@ -10814,7 +10850,7 @@ const loginWithOAuth = async (
|
|
|
10814
10850
|
await saveOAuthToken(config, options, await pollToken(config, deviceCode));
|
|
10815
10851
|
};
|
|
10816
10852
|
|
|
10817
|
-
function _optionalChain$
|
|
10853
|
+
function _optionalChain$8(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
10818
10854
|
|
|
10819
10855
|
|
|
10820
10856
|
|
|
@@ -10880,10 +10916,10 @@ const unwrap = (
|
|
|
10880
10916
|
responseMetadata,
|
|
10881
10917
|
) => {
|
|
10882
10918
|
const root = isRecord(payload) ? payload : undefined;
|
|
10883
|
-
const first = isRecord(_optionalChain$
|
|
10884
|
-
const second = isRecord(_optionalChain$
|
|
10919
|
+
const first = isRecord(_optionalChain$8([root, 'optionalAccess', _ => _.data])) ? root.data : undefined;
|
|
10920
|
+
const second = isRecord(_optionalChain$8([first, 'optionalAccess', _2 => _2.data])) ? first.data : undefined;
|
|
10885
10921
|
const envelope = [root, first].find(candidate => candidate && 'code' in candidate);
|
|
10886
|
-
if (_optionalChain$
|
|
10922
|
+
if (_optionalChain$8([envelope, 'optionalAccess', _3 => _3.code]) !== undefined && Number(envelope.code) !== 0) {
|
|
10887
10923
|
throw new CliError(
|
|
10888
10924
|
typeof envelope.msg === 'string'
|
|
10889
10925
|
? envelope.msg.slice(0, MAX_MESSAGE_LENGTH)
|
|
@@ -10932,10 +10968,22 @@ class DeployApiClient {
|
|
|
10932
10968
|
'agw-js-conv': 'str',
|
|
10933
10969
|
'x-request-from-coze-cli': '1',
|
|
10934
10970
|
};
|
|
10935
|
-
|
|
10936
|
-
|
|
10971
|
+
// Only an explicit environment credential may become a project runtime secret.
|
|
10972
|
+
// OAuth credentials loaded from config.json remain authentication-only.
|
|
10973
|
+
if (
|
|
10974
|
+
this.config.injectApiToken &&
|
|
10975
|
+
path === '/deploy_history/create' &&
|
|
10976
|
+
useApiPrefix
|
|
10977
|
+
) {
|
|
10978
|
+
headers['x-coze-deploy-inject-api-token'] = 'true';
|
|
10979
|
+
}
|
|
10980
|
+
// Coze account id: an explicit COZE_ACCOUNT_ID (config.cozeAccountId) always wins;
|
|
10981
|
+
// otherwise fall back to the organization id resolved from login/config.
|
|
10982
|
+
const cozeAccount = this.config.cozeAccountId || this.config.organizationId;
|
|
10983
|
+
if (cozeAccount) {
|
|
10984
|
+
headers['x-coze-account'] = cozeAccount;
|
|
10937
10985
|
}
|
|
10938
|
-
const lane = _optionalChain$
|
|
10986
|
+
const lane = _optionalChain$8([this, 'access', _4 => _4.globalOptions, 'access', _5 => _5.lane, 'optionalAccess', _6 => _6.trim, 'call', _7 => _7()]) || _optionalChain$8([this, 'access', _8 => _8.config, 'access', _9 => _9.xTTEnv, 'optionalAccess', _10 => _10.trim, 'call', _11 => _11()]);
|
|
10939
10987
|
if (lane) {
|
|
10940
10988
|
headers['x-use-ppe'] = '1';
|
|
10941
10989
|
headers['x-tt-env'] = lane;
|
|
@@ -10966,7 +11014,7 @@ class DeployApiClient {
|
|
|
10966
11014
|
if (!response.ok) {
|
|
10967
11015
|
const root = isRecord(payload) ? payload : undefined;
|
|
10968
11016
|
throw new CliError(
|
|
10969
|
-
typeof _optionalChain$
|
|
11017
|
+
typeof _optionalChain$8([root, 'optionalAccess', _12 => _12.msg]) === 'string'
|
|
10970
11018
|
? root.msg.slice(0, MAX_MESSAGE_LENGTH)
|
|
10971
11019
|
: `Deployment API failed: ${response.status} ${response.statusText}` +
|
|
10972
11020
|
`${validJson ? '' : '; response was not JSON'}`,
|
|
@@ -11171,6 +11219,35 @@ class DeployApiClient {
|
|
|
11171
11219
|
);
|
|
11172
11220
|
}
|
|
11173
11221
|
|
|
11222
|
+
authorizeMiniProgram(body
|
|
11223
|
+
|
|
11224
|
+
|
|
11225
|
+
|
|
11226
|
+
|
|
11227
|
+
|
|
11228
|
+
|
|
11229
|
+
) {
|
|
11230
|
+
return this.post
|
|
11231
|
+
|
|
11232
|
+
|
|
11233
|
+
|
|
11234
|
+
('/mini_program/auth', body);
|
|
11235
|
+
}
|
|
11236
|
+
|
|
11237
|
+
createMiniProgramPreview(body
|
|
11238
|
+
|
|
11239
|
+
|
|
11240
|
+
|
|
11241
|
+
|
|
11242
|
+
) {
|
|
11243
|
+
return this.post
|
|
11244
|
+
|
|
11245
|
+
|
|
11246
|
+
|
|
11247
|
+
|
|
11248
|
+
('/mini_program/preview', body);
|
|
11249
|
+
}
|
|
11250
|
+
|
|
11174
11251
|
listDomains(appId, unitType) {
|
|
11175
11252
|
return this.post(
|
|
11176
11253
|
'/domain/list', {
|
|
@@ -11404,7 +11481,7 @@ const registerDoctor = (program) => {
|
|
|
11404
11481
|
});
|
|
11405
11482
|
};
|
|
11406
11483
|
|
|
11407
|
-
function _optionalChain$
|
|
11484
|
+
function _optionalChain$7(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
11408
11485
|
|
|
11409
11486
|
|
|
11410
11487
|
|
|
@@ -11435,7 +11512,7 @@ function _optionalChain$8(ops) { let lastAccessLHS = undefined; let value = ops[
|
|
|
11435
11512
|
|
|
11436
11513
|
|
|
11437
11514
|
const getDeployParentOptions = (command) =>
|
|
11438
|
-
_optionalChain$
|
|
11515
|
+
_optionalChain$7([command, 'access', _ => _.parent, 'optionalAccess', _2 => _2.opts, 'call', _3 => _3()]) || {};
|
|
11439
11516
|
|
|
11440
11517
|
const getDeployAppIdOption = (
|
|
11441
11518
|
options,
|
|
@@ -11485,10 +11562,10 @@ const TERMINAL_STATUSES = new Set([
|
|
|
11485
11562
|
const getDeployStatusText = (status) =>
|
|
11486
11563
|
status ? STATUS_NAMES[status] || 'Unknown' : 'Unknown';
|
|
11487
11564
|
|
|
11488
|
-
function _optionalChain$
|
|
11565
|
+
function _optionalChain$6(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
11489
11566
|
|
|
11490
11567
|
const formatDeployDetails = (history) =>
|
|
11491
|
-
(_optionalChain$
|
|
11568
|
+
(_optionalChain$6([history, 'optionalAccess', _ => _.deploy_detail]) || []).map(detail => ({
|
|
11492
11569
|
target: detail.target,
|
|
11493
11570
|
status: getDeployStatusText(detail.status),
|
|
11494
11571
|
deploy_log_key: detail.deploy_log_key,
|
|
@@ -11498,7 +11575,7 @@ const formatDeployDetails = (history) =>
|
|
|
11498
11575
|
const getDeployLogKeys = (history) =>
|
|
11499
11576
|
[...new Set(
|
|
11500
11577
|
(history.deploy_detail || [])
|
|
11501
|
-
.map(detail => _optionalChain$
|
|
11578
|
+
.map(detail => _optionalChain$6([detail, 'access', _2 => _2.deploy_log_key, 'optionalAccess', _3 => _3.trim, 'call', _4 => _4()]))
|
|
11502
11579
|
.filter((key) => Boolean(key)),
|
|
11503
11580
|
)];
|
|
11504
11581
|
|
|
@@ -11513,16 +11590,17 @@ const resolveDeployHistoryId = (
|
|
|
11513
11590
|
) =>
|
|
11514
11591
|
normalizePositiveId(deployHistoryId) || normalizePositiveId(previousDeployHistoryId);
|
|
11515
11592
|
|
|
11516
|
-
function _optionalChain$
|
|
11593
|
+
function _optionalChain$5(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
11517
11594
|
|
|
11518
11595
|
const SOURCE_SNAPSHOT_BYTES = 20;
|
|
11596
|
+
const PROJECT_METADATA_FILE_MODE = 0o644;
|
|
11519
11597
|
|
|
11520
11598
|
const isId = (value) =>
|
|
11521
11599
|
typeof value === 'string' && /^\d+$/u.test(value);
|
|
11522
11600
|
|
|
11523
11601
|
|
|
11524
11602
|
const resolveAppId = async (cwd, appId) => {
|
|
11525
|
-
const explicit = _optionalChain$
|
|
11603
|
+
const explicit = _optionalChain$5([appId, 'optionalAccess', _ => _.trim, 'call', _2 => _2()]);
|
|
11526
11604
|
if (explicit) {
|
|
11527
11605
|
return explicit;
|
|
11528
11606
|
}
|
|
@@ -11568,11 +11646,11 @@ const readProjectMetadata = async (
|
|
|
11568
11646
|
}
|
|
11569
11647
|
throw error;
|
|
11570
11648
|
}
|
|
11571
|
-
const projectSection = _optionalChain$
|
|
11649
|
+
const projectSection = _optionalChain$5([cozeFileContent, 'access', _3 => _3.match, 'call', _4 => _4(
|
|
11572
11650
|
/^\s*\[project\]\s*(?:#.*)?$([\s\S]*?)(?=^\s*\[[^\]]+\]\s*(?:#.*)?$|(?![\s\S]))/mu,
|
|
11573
11651
|
), 'optionalAccess', _5 => _5[1]]);
|
|
11574
11652
|
const readProjectString = (key) =>
|
|
11575
|
-
_optionalChain$
|
|
11653
|
+
_optionalChain$5([projectSection
|
|
11576
11654
|
, 'optionalAccess', _6 => _6.match, 'call', _7 => _7(new RegExp(`^\\s*${key}\\s*=\\s*["']([^"']+)["']`, 'mu')), 'optionalAccess', _8 => _8[1]
|
|
11577
11655
|
, 'optionalAccess', _9 => _9.trim, 'call', _10 => _10()]);
|
|
11578
11656
|
const name = readProjectString('name');
|
|
@@ -11580,7 +11658,7 @@ const readProjectMetadata = async (
|
|
|
11580
11658
|
const projectId = readProjectString('project_id');
|
|
11581
11659
|
const appId = readProjectString('app_id');
|
|
11582
11660
|
const hasUnquotedId = (key) =>
|
|
11583
|
-
Boolean(_optionalChain$
|
|
11661
|
+
Boolean(_optionalChain$5([projectSection, 'optionalAccess', _11 => _11.match, 'call', _12 => _12(new RegExp(`^\\s*${key}\\s*=\\s*(?!["'])\\S+`, 'mu'))]));
|
|
11584
11662
|
if (hasUnquotedId('project_id') || hasUnquotedId('app_id')) {
|
|
11585
11663
|
throw new CliError(
|
|
11586
11664
|
'.coze [project].project_id and app_id must be quoted decimal strings.',
|
|
@@ -11605,7 +11683,7 @@ const updateProjectValue = (content, key, value) => {
|
|
|
11605
11683
|
const sectionStart = sectionMatch.index + sectionMatch[0].length;
|
|
11606
11684
|
const following = content.slice(sectionStart);
|
|
11607
11685
|
const nextSection = /^\s*\[[^\]]+\]\s*(?:#.*)?$/mu.exec(following);
|
|
11608
|
-
const sectionEnd = _optionalChain$
|
|
11686
|
+
const sectionEnd = _optionalChain$5([nextSection, 'optionalAccess', _13 => _13.index]) === undefined
|
|
11609
11687
|
? content.length
|
|
11610
11688
|
: sectionStart + nextSection.index;
|
|
11611
11689
|
const before = content.slice(0, sectionStart);
|
|
@@ -11636,7 +11714,11 @@ const writeProjectBinding = async (
|
|
|
11636
11714
|
}
|
|
11637
11715
|
const tempPath = node_path.join(node_path.dirname(path), `.coze-${node_crypto.randomUUID()}.tmp`);
|
|
11638
11716
|
try {
|
|
11639
|
-
await promises.writeFile(tempPath, content, {
|
|
11717
|
+
await promises.writeFile(tempPath, content, {
|
|
11718
|
+
encoding: 'utf8',
|
|
11719
|
+
mode: PROJECT_METADATA_FILE_MODE,
|
|
11720
|
+
});
|
|
11721
|
+
await promises.chmod(tempPath, PROJECT_METADATA_FILE_MODE);
|
|
11640
11722
|
await promises.rename(tempPath, path);
|
|
11641
11723
|
} finally {
|
|
11642
11724
|
await promises.rm(tempPath, { force: true });
|
|
@@ -11655,17 +11737,18 @@ const ensureProjectMetadata = async (
|
|
|
11655
11737
|
throw error;
|
|
11656
11738
|
}
|
|
11657
11739
|
}
|
|
11658
|
-
const name = _optionalChain$
|
|
11659
|
-
const projectType = _optionalChain$
|
|
11740
|
+
const name = _optionalChain$5([options, 'access', _14 => _14.name, 'optionalAccess', _15 => _15.trim, 'call', _16 => _16()]) || 'Pages application';
|
|
11741
|
+
const projectType = _optionalChain$5([options, 'access', _17 => _17.projectType, 'optionalAccess', _18 => _18.trim, 'call', _19 => _19()]) || 'web';
|
|
11660
11742
|
await promises.writeFile(
|
|
11661
11743
|
node_path.join(sourceRoot, '.coze'),
|
|
11662
11744
|
`[project]\nname = ${JSON.stringify(name)}\nproject_type = ${JSON.stringify(projectType)}\n`,
|
|
11663
|
-
{ encoding: 'utf8', mode:
|
|
11745
|
+
{ encoding: 'utf8', mode: PROJECT_METADATA_FILE_MODE },
|
|
11664
11746
|
);
|
|
11747
|
+
await promises.chmod(node_path.join(sourceRoot, '.coze'), PROJECT_METADATA_FILE_MODE);
|
|
11665
11748
|
return readProjectMetadata(sourceRoot);
|
|
11666
11749
|
};
|
|
11667
11750
|
|
|
11668
|
-
function _optionalChain$
|
|
11751
|
+
function _optionalChain$4(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
11669
11752
|
const isFile = async (path) => {
|
|
11670
11753
|
try {
|
|
11671
11754
|
return (await promises.stat(path)).isFile();
|
|
@@ -11695,14 +11778,14 @@ const validatePagesSource = async (
|
|
|
11695
11778
|
);
|
|
11696
11779
|
}
|
|
11697
11780
|
const project = config.project ;
|
|
11698
|
-
if (typeof _optionalChain$
|
|
11781
|
+
if (typeof _optionalChain$4([project, 'optionalAccess', _ => _.template]) !== 'string' || project.template.trim().toLowerCase() !== 'nextjs') {
|
|
11699
11782
|
throw new CliError(
|
|
11700
11783
|
'Pages source contains no index.html; .coze project.template must be "nextjs".',
|
|
11701
11784
|
'PAGES_BUILD_CONFIG_REQUIRED',
|
|
11702
11785
|
);
|
|
11703
11786
|
}
|
|
11704
11787
|
const deploy = config.deploy ;
|
|
11705
|
-
const build = _optionalChain$
|
|
11788
|
+
const build = _optionalChain$4([deploy, 'optionalAccess', _2 => _2.build]);
|
|
11706
11789
|
if (!Array.isArray(build) || build.length === 0 || !build.every(part => typeof part === 'string' && part.length > 0)) {
|
|
11707
11790
|
throw new CliError(
|
|
11708
11791
|
'Pages source contains no index.html; .coze deploy.build must be a non-empty string array.',
|
|
@@ -11743,7 +11826,159 @@ const readDeployLocalContext = async (
|
|
|
11743
11826
|
return { ...sourceSnapshot, metadata, isPagesDeployment };
|
|
11744
11827
|
};
|
|
11745
11828
|
|
|
11829
|
+
// 服务端 deploy_app/list 的 page_size 上限,超了会被判参数错误。
|
|
11830
|
+
// 客户端先拦一道,是为了把错误说在本地(带上上限值),而不是回一句服务端的通用参数错误。
|
|
11831
|
+
const APP_LIST_MAX_PAGE_SIZE = 100;
|
|
11832
|
+
|
|
11833
|
+
// page_token 是**页码的十进制字符串**(服务端口径,与 deploy_history/list 一致),不是不透明游标。
|
|
11834
|
+
// 所以这里能、也应该在本地校验:`--page-token abc` 早报错,比发出去再被拒强。
|
|
11835
|
+
const parsePositiveInt = (
|
|
11836
|
+
raw,
|
|
11837
|
+
option,
|
|
11838
|
+
code,
|
|
11839
|
+
max,
|
|
11840
|
+
) => {
|
|
11841
|
+
const value = Number(raw);
|
|
11842
|
+
if (!Number.isSafeInteger(value) || value <= 0) {
|
|
11843
|
+
throw new CliError(`${option} must be a positive integer.`, code, { [option]: raw });
|
|
11844
|
+
}
|
|
11845
|
+
if (max !== undefined && value > max) {
|
|
11846
|
+
throw new CliError(`${option} must not exceed ${String(max)}.`, code, { [option]: raw });
|
|
11847
|
+
}
|
|
11848
|
+
return value;
|
|
11849
|
+
};
|
|
11850
|
+
|
|
11851
|
+
// ⛔ 别再用 `Number(options.pageSize || 20)`:`--page-size abc` 会算出 NaN,
|
|
11852
|
+
// JSON.stringify 把它写成 null 发给服务端,最后表现为「参数没生效」而不是「参数写错了」。
|
|
11853
|
+
const parsePageSize = (
|
|
11854
|
+
raw,
|
|
11855
|
+
fallback,
|
|
11856
|
+
max,
|
|
11857
|
+
) => {
|
|
11858
|
+
if (raw === undefined || raw === '') {
|
|
11859
|
+
return fallback;
|
|
11860
|
+
}
|
|
11861
|
+
return parsePositiveInt(raw, '--page-size', 'INVALID_PAGE_SIZE', max);
|
|
11862
|
+
};
|
|
11863
|
+
|
|
11864
|
+
const parsePageToken = (raw) => {
|
|
11865
|
+
if (raw === undefined || raw === '') {
|
|
11866
|
+
return undefined;
|
|
11867
|
+
}
|
|
11868
|
+
parsePositiveInt(raw, '--page-token', 'INVALID_PAGE_TOKEN');
|
|
11869
|
+
return raw;
|
|
11870
|
+
};
|
|
11871
|
+
|
|
11872
|
+
|
|
11873
|
+
|
|
11874
|
+
|
|
11875
|
+
|
|
11876
|
+
|
|
11877
|
+
|
|
11878
|
+
// collectAllPages 顺着 next_page_token 把所有页取回来。
|
|
11879
|
+
//
|
|
11880
|
+
// 服务端从「全量单页」改成真分页之后,`app list` 一次只回一页;想要「我的全部应用」就得翻页。
|
|
11881
|
+
// 与其让每个调用方各写一遍循环,不如给一个 --all。
|
|
11882
|
+
//
|
|
11883
|
+
// ⚠️ 不设页数上限截断:静默截断正是这次要修掉的毛病。只防死循环——服务端如果一直回同一个
|
|
11884
|
+
// token(或说 has_more 却不给 token),直接报错,而不是无限翻。
|
|
11885
|
+
const collectAllPages = async (
|
|
11886
|
+
fetchPage,
|
|
11887
|
+
) => {
|
|
11888
|
+
const items = [];
|
|
11889
|
+
const seen = new Set();
|
|
11890
|
+
let pageToken;
|
|
11891
|
+
let pages = 0;
|
|
11892
|
+
for (;;) {
|
|
11893
|
+
const page = await fetchPage(pageToken);
|
|
11894
|
+
items.push(...(page.items || []));
|
|
11895
|
+
pages += 1;
|
|
11896
|
+
if (!page.has_more) {
|
|
11897
|
+
return { items, pages };
|
|
11898
|
+
}
|
|
11899
|
+
const next = page.next_page_token;
|
|
11900
|
+
if (!next || seen.has(next)) {
|
|
11901
|
+
throw new CliError(
|
|
11902
|
+
'The server reported more pages but returned no usable next_page_token.',
|
|
11903
|
+
'INVALID_PAGE_TOKEN',
|
|
11904
|
+
{ next_page_token: next, pages },
|
|
11905
|
+
);
|
|
11906
|
+
}
|
|
11907
|
+
seen.add(next);
|
|
11908
|
+
pageToken = next;
|
|
11909
|
+
}
|
|
11910
|
+
};
|
|
11911
|
+
|
|
11912
|
+
async function _asyncOptionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = await fn(value); } else if (op === 'call' || op === 'optionalCall') { value = await fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
11913
|
+
|
|
11746
11914
|
const registerDeployReadCommands = (deploy) => {
|
|
11915
|
+
deploy
|
|
11916
|
+
.command('status')
|
|
11917
|
+
.option('--app-id <appId>', 'Application ID')
|
|
11918
|
+
.option('--deploy-id <deployId>', 'Deployment history ID')
|
|
11919
|
+
.action(async (options, command) => {
|
|
11920
|
+
const runtime = await getRuntime(command);
|
|
11921
|
+
const appId = await requireAppId(runtime.cwd, getDeployAppIdOption(options, command));
|
|
11922
|
+
let deployHistoryId = options.deployId;
|
|
11923
|
+
if (!deployHistoryId) {
|
|
11924
|
+
deployHistoryId = await _asyncOptionalChain([(
|
|
11925
|
+
await runtime.client.listDeployHistory({ app_id: appId, page_size: 1 })
|
|
11926
|
+
), 'access', async _ => _.deploy_history_list, 'optionalAccess', async _2 => _2[0], 'optionalAccess', async _3 => _3.deploy_history_id]);
|
|
11927
|
+
}
|
|
11928
|
+
if (!deployHistoryId) {
|
|
11929
|
+
throw new CliError('No deployment history found.', 'DEPLOYMENT_NOT_FOUND');
|
|
11930
|
+
}
|
|
11931
|
+
const history = await runtime.client.getDeployHistory({
|
|
11932
|
+
app_id: appId,
|
|
11933
|
+
deploy_history_id: deployHistoryId,
|
|
11934
|
+
});
|
|
11935
|
+
runtime.output.print({
|
|
11936
|
+
app_id: appId,
|
|
11937
|
+
deploy_history_id: deployHistoryId,
|
|
11938
|
+
status: getDeployStatusText(history.status),
|
|
11939
|
+
commit_hash: history.commit_hash,
|
|
11940
|
+
commit_message: history.commit_message,
|
|
11941
|
+
domains: history.domain_list || [],
|
|
11942
|
+
error_analysis: history.error_analysis,
|
|
11943
|
+
deploy_detail: formatDeployDetails(history),
|
|
11944
|
+
connector_data_list: history.connector_data_list || [],
|
|
11945
|
+
mobile_artifact_list: history.mobile_artifact_list || [],
|
|
11946
|
+
});
|
|
11947
|
+
});
|
|
11948
|
+
|
|
11949
|
+
deploy
|
|
11950
|
+
.command('list')
|
|
11951
|
+
.option('--app-id <appId>', 'Application ID')
|
|
11952
|
+
.option('--page-size <pageSize>', 'Page size', '10')
|
|
11953
|
+
.option('--page-token <pageToken>', 'Page token (page number)')
|
|
11954
|
+
.action(async (options, command) => {
|
|
11955
|
+
// 先在本地校验:`--page-size abc` 以前算出 NaN 发出去,表现成「参数没生效」。
|
|
11956
|
+
const pageSize = parsePageSize(options.pageSize, 10);
|
|
11957
|
+
const pageToken = parsePageToken(options.pageToken);
|
|
11958
|
+
const runtime = await getRuntime(command);
|
|
11959
|
+
const appId = await requireAppId(runtime.cwd, getDeployAppIdOption(options, command));
|
|
11960
|
+
const data = await runtime.client.listDeployHistory({
|
|
11961
|
+
app_id: appId,
|
|
11962
|
+
page_size: pageSize,
|
|
11963
|
+
page_token: pageToken,
|
|
11964
|
+
});
|
|
11965
|
+
runtime.output.print({
|
|
11966
|
+
items: (data.deploy_history_list || []).map(item => ({
|
|
11967
|
+
deploy_history_id: item.deploy_history_id,
|
|
11968
|
+
status: getDeployStatusText(item.status),
|
|
11969
|
+
commit_hash: item.commit_hash_short || item.commit_hash,
|
|
11970
|
+
commit_message: item.commit_message,
|
|
11971
|
+
created_at: item.created_at,
|
|
11972
|
+
can_rollback: item.can_rollback,
|
|
11973
|
+
deploy_detail: formatDeployDetails(item),
|
|
11974
|
+
connector_data_list: item.connector_data_list || [],
|
|
11975
|
+
mobile_artifact_list: item.mobile_artifact_list || [],
|
|
11976
|
+
})),
|
|
11977
|
+
next_page_token: data.next_page_token,
|
|
11978
|
+
has_more: data.has_more,
|
|
11979
|
+
});
|
|
11980
|
+
});
|
|
11981
|
+
|
|
11747
11982
|
deploy
|
|
11748
11983
|
.command('online')
|
|
11749
11984
|
.description('Show the current online deployment')
|
|
@@ -11758,9 +11993,11 @@ const registerDeployReadCommands = (deploy) => {
|
|
|
11758
11993
|
deploy_history_id: item.deploy_history_id,
|
|
11759
11994
|
status: getDeployStatusText(item.status),
|
|
11760
11995
|
commit_hash: item.commit_hash_short || item.commit_hash,
|
|
11996
|
+
commit_message: item.commit_message,
|
|
11761
11997
|
created_at: item.created_at,
|
|
11762
11998
|
deploy_detail: formatDeployDetails(item),
|
|
11763
11999
|
domains: item.domain_list || [],
|
|
12000
|
+
mobile_artifact_list: item.mobile_artifact_list || [],
|
|
11764
12001
|
})),
|
|
11765
12002
|
});
|
|
11766
12003
|
});
|
|
@@ -11822,12 +12059,107 @@ const registerEnv = (code) => {
|
|
|
11822
12059
|
});
|
|
11823
12060
|
};
|
|
11824
12061
|
|
|
11825
|
-
|
|
12062
|
+
/* eslint-disable security/detect-non-literal-fs-filename -- validated project-local build output paths */
|
|
12063
|
+
|
|
12064
|
+
const BUILD_OUTPUT_DIRS = new Set(['dist', 'dist-tt']);
|
|
12065
|
+
const EXCLUDED_PARTS = new Set([
|
|
12066
|
+
'.git',
|
|
12067
|
+
'.env',
|
|
12068
|
+
'node_modules',
|
|
12069
|
+
]);
|
|
12070
|
+
const REPRODUCIBLE_ARCHIVE_MTIME = new Date(0);
|
|
12071
|
+
|
|
12072
|
+
const validateBuildOutput = async (
|
|
12073
|
+
sourceRoot,
|
|
12074
|
+
buildOutputDir,
|
|
12075
|
+
) => {
|
|
12076
|
+
if (!BUILD_OUTPUT_DIRS.has(buildOutputDir)) {
|
|
12077
|
+
throw new CliError(
|
|
12078
|
+
`Unsupported Mini-program build output directory: ${buildOutputDir}.`,
|
|
12079
|
+
'SOURCE_PACKAGE_FAILED',
|
|
12080
|
+
);
|
|
12081
|
+
}
|
|
12082
|
+
const buildOutputRoot = node_path.resolve(sourceRoot, buildOutputDir);
|
|
12083
|
+
try {
|
|
12084
|
+
const info = await promises.lstat(buildOutputRoot);
|
|
12085
|
+
if (info.isSymbolicLink() || !info.isDirectory()) {
|
|
12086
|
+
throw new Error('build output must be a regular directory');
|
|
12087
|
+
}
|
|
12088
|
+
const realSourceRoot = await promises.realpath(sourceRoot);
|
|
12089
|
+
const realBuildOutputRoot = await promises.realpath(buildOutputRoot);
|
|
12090
|
+
const relativeOutput = node_path.relative(realSourceRoot, realBuildOutputRoot);
|
|
12091
|
+
if (!relativeOutput || relativeOutput.startsWith('..')) {
|
|
12092
|
+
throw new Error('build output must be inside the source root');
|
|
12093
|
+
}
|
|
12094
|
+
} catch (error) {
|
|
12095
|
+
throw new CliError(
|
|
12096
|
+
`Invalid Mini-program build output ${buildOutputRoot}: ${error instanceof Error ? error.message : String(error)}`,
|
|
12097
|
+
'SOURCE_PACKAGE_FAILED',
|
|
12098
|
+
);
|
|
12099
|
+
}
|
|
12100
|
+
};
|
|
12101
|
+
|
|
12102
|
+
const shouldInclude = (
|
|
12103
|
+
archivePath,
|
|
12104
|
+
entry,
|
|
12105
|
+
) => {
|
|
12106
|
+
if ('isSymbolicLink' in entry && entry.isSymbolicLink()) {
|
|
12107
|
+
return false;
|
|
12108
|
+
}
|
|
12109
|
+
return !archivePath.split(/[\\/]/u).some(part =>
|
|
12110
|
+
EXCLUDED_PARTS.has(part) || part.startsWith('.git'),
|
|
12111
|
+
);
|
|
12112
|
+
};
|
|
12113
|
+
|
|
12114
|
+
const createMiniProgramPackage = async (
|
|
12115
|
+
sourceRoot,
|
|
12116
|
+
buildOutputDir,
|
|
12117
|
+
) => {
|
|
12118
|
+
const resolvedSourceRoot = node_path.resolve(sourceRoot);
|
|
12119
|
+
await validateBuildOutput(resolvedSourceRoot, buildOutputDir);
|
|
12120
|
+
const tempDirectory = await promises.mkdtemp(node_path.join(node_os.tmpdir(), 'coze-mini-program-source-'));
|
|
12121
|
+
const outputPath = node_path.join(tempDirectory, 'source.tar.gz');
|
|
12122
|
+
try {
|
|
12123
|
+
await tar.create(
|
|
12124
|
+
{
|
|
12125
|
+
cwd: resolvedSourceRoot,
|
|
12126
|
+
file: outputPath,
|
|
12127
|
+
filter: shouldInclude,
|
|
12128
|
+
gzip: true,
|
|
12129
|
+
mtime: REPRODUCIBLE_ARCHIVE_MTIME,
|
|
12130
|
+
portable: true,
|
|
12131
|
+
},
|
|
12132
|
+
[buildOutputDir],
|
|
12133
|
+
);
|
|
12134
|
+
const info = await promises.stat(outputPath);
|
|
12135
|
+
if (info.size === 0) {
|
|
12136
|
+
throw new Error('source archive is empty');
|
|
12137
|
+
}
|
|
12138
|
+
return {
|
|
12139
|
+
path: outputPath,
|
|
12140
|
+
sizeBytes: info.size,
|
|
12141
|
+
cleanup: () => promises.rm(tempDirectory, { recursive: true, force: true }),
|
|
12142
|
+
};
|
|
12143
|
+
} catch (error) {
|
|
12144
|
+
await promises.rm(tempDirectory, { recursive: true, force: true });
|
|
12145
|
+
throw new CliError(
|
|
12146
|
+
`Unable to package Mini-program build output: ${error instanceof Error ? error.message : String(error)}`,
|
|
12147
|
+
'SOURCE_PACKAGE_FAILED',
|
|
12148
|
+
);
|
|
12149
|
+
}
|
|
12150
|
+
};
|
|
12151
|
+
|
|
12152
|
+
function _nullishCoalesce$1(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain$3(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
11826
12153
|
const CONNECTOR_IDS = {
|
|
11827
12154
|
wechat: '10000127',
|
|
11828
12155
|
douyin: '10000126',
|
|
11829
12156
|
} ;
|
|
11830
12157
|
|
|
12158
|
+
const MINI_PROGRAM_BUILD_OUTPUT_DIRS = {
|
|
12159
|
+
wechat: 'dist',
|
|
12160
|
+
douyin: 'dist-tt',
|
|
12161
|
+
} ;
|
|
12162
|
+
|
|
11831
12163
|
|
|
11832
12164
|
|
|
11833
12165
|
|
|
@@ -11852,11 +12184,23 @@ const resolveConnectorId = (platform) => {
|
|
|
11852
12184
|
return connectorId;
|
|
11853
12185
|
};
|
|
11854
12186
|
|
|
12187
|
+
const resolveBuildOutputDir = (platform) => {
|
|
12188
|
+
const outputDir =
|
|
12189
|
+
MINI_PROGRAM_BUILD_OUTPUT_DIRS[platform ];
|
|
12190
|
+
if (!outputDir) {
|
|
12191
|
+
throw new CliError(
|
|
12192
|
+
`Unsupported Mini-program platform ${String(platform)}; expected wechat or douyin.`,
|
|
12193
|
+
'INVALID_MINIPROGRAM_PLATFORM',
|
|
12194
|
+
);
|
|
12195
|
+
}
|
|
12196
|
+
return outputDir;
|
|
12197
|
+
};
|
|
12198
|
+
|
|
11855
12199
|
const resolveProjectId = async (
|
|
11856
12200
|
command,
|
|
11857
12201
|
options,
|
|
11858
12202
|
) => {
|
|
11859
|
-
if (_optionalChain$
|
|
12203
|
+
if (_optionalChain$3([options, 'access', _ => _.projectId, 'optionalAccess', _2 => _2.trim, 'call', _3 => _3()])) {
|
|
11860
12204
|
return options.projectId.trim();
|
|
11861
12205
|
}
|
|
11862
12206
|
const runtime = await getRuntime(command);
|
|
@@ -11871,6 +12215,137 @@ const resolveProjectId = async (
|
|
|
11871
12215
|
return metadata.projectId;
|
|
11872
12216
|
};
|
|
11873
12217
|
|
|
12218
|
+
const MINI_PROGRAM_AUTH_STATUS = {
|
|
12219
|
+
authorized: 1,
|
|
12220
|
+
needAuthorize: 2,
|
|
12221
|
+
boundToOtherUser: 3,
|
|
12222
|
+
} ;
|
|
12223
|
+
|
|
12224
|
+
const getBoundToOtherUserMessage = (platform) => {
|
|
12225
|
+
const platformName = platform === 'wechat' ? 'WeChat' : 'Douyin';
|
|
12226
|
+
const platformConsole =
|
|
12227
|
+
platform === 'wechat' ? 'WeChat Public Platform' : 'Douyin Open Platform';
|
|
12228
|
+
return [
|
|
12229
|
+
`This ${platformName} Mini-program AppID is authorized by another Coze user.`,
|
|
12230
|
+
`If this is an AppID you manage, revoke Coze's previous third-party platform authorization in the ${platformConsole}, then rerun this auth command. The CLI will recheck the AppID and authorize it for your current Coze account.`,
|
|
12231
|
+
'If this is not your AppID, change --mini-app-id to an AppID for which you have administrator permission, then rerun this auth command.',
|
|
12232
|
+
].join(' ');
|
|
12233
|
+
};
|
|
12234
|
+
|
|
12235
|
+
const getAuthRequiredMessage = () =>
|
|
12236
|
+
'This Mini-program AppID is not authorized for the current Coze user. Run `coze-dev deploy code mini-program auth` first.';
|
|
12237
|
+
|
|
12238
|
+
const getPreviewFailureMessage = (data
|
|
12239
|
+
|
|
12240
|
+
|
|
12241
|
+
) =>
|
|
12242
|
+
_optionalChain$3([data, 'access', _4 => _4.stderr, 'optionalAccess', _5 => _5.trim, 'call', _6 => _6()]) || _optionalChain$3([data, 'access', _7 => _7.stdout, 'optionalAccess', _8 => _8.trim, 'call', _9 => _9()]) || 'Mini-program preview failed.';
|
|
12243
|
+
|
|
12244
|
+
const registerAuthorizationCommand = (miniProgram) => {
|
|
12245
|
+
miniProgram
|
|
12246
|
+
.command('auth')
|
|
12247
|
+
.description('Authorize a Mini-program AppID for the current Coze user')
|
|
12248
|
+
.requiredOption('--platform <platform>', 'wechat or douyin')
|
|
12249
|
+
.requiredOption('--mini-app-id <miniAppId>', 'Mini-program AppID')
|
|
12250
|
+
.option('--project-id <projectId>', 'Deployment Project ID')
|
|
12251
|
+
.option('--source-root <sourceRoot>', 'Directory containing .coze', '.')
|
|
12252
|
+
.action(async (options, command) => {
|
|
12253
|
+
const runtime = await getRuntime(command);
|
|
12254
|
+
const projectId = await resolveProjectId(command, options);
|
|
12255
|
+
const authorization = await runtime.client.authorizeMiniProgram({
|
|
12256
|
+
project_id: projectId,
|
|
12257
|
+
app_id: options.miniAppId || '',
|
|
12258
|
+
connector_id: resolveConnectorId(options.platform),
|
|
12259
|
+
redirect_url: 'https://code.coze.cn/coding/auth/callback/miniprogram',
|
|
12260
|
+
});
|
|
12261
|
+
if (authorization.status === MINI_PROGRAM_AUTH_STATUS.needAuthorize) {
|
|
12262
|
+
runtime.output.print({
|
|
12263
|
+
project_id: projectId,
|
|
12264
|
+
mini_app_id: options.miniAppId,
|
|
12265
|
+
platform: options.platform,
|
|
12266
|
+
authorization_required: true,
|
|
12267
|
+
auth_url: authorization.auth_url,
|
|
12268
|
+
});
|
|
12269
|
+
return;
|
|
12270
|
+
}
|
|
12271
|
+
if (authorization.status === MINI_PROGRAM_AUTH_STATUS.boundToOtherUser) {
|
|
12272
|
+
throw new CliError(
|
|
12273
|
+
getBoundToOtherUserMessage(options.platform),
|
|
12274
|
+
'MINIPROGRAM_AUTHORIZED_BY_OTHER_USER',
|
|
12275
|
+
);
|
|
12276
|
+
}
|
|
12277
|
+
if (authorization.status !== MINI_PROGRAM_AUTH_STATUS.authorized) {
|
|
12278
|
+
throw new CliError(
|
|
12279
|
+
`Unexpected Mini-program authorization status: ${String(authorization.status)}.`,
|
|
12280
|
+
'INVALID_RESPONSE',
|
|
12281
|
+
);
|
|
12282
|
+
}
|
|
12283
|
+
runtime.output.print({
|
|
12284
|
+
project_id: projectId,
|
|
12285
|
+
mini_app_id: options.miniAppId,
|
|
12286
|
+
platform: options.platform,
|
|
12287
|
+
authorized: true,
|
|
12288
|
+
});
|
|
12289
|
+
});
|
|
12290
|
+
};
|
|
12291
|
+
|
|
12292
|
+
const registerPreviewCommand = (miniProgram) => {
|
|
12293
|
+
miniProgram
|
|
12294
|
+
.command('preview')
|
|
12295
|
+
.description('Create a Mini-program preview QR code from the local build artifact')
|
|
12296
|
+
.requiredOption('--platform <platform>', 'wechat or douyin')
|
|
12297
|
+
.requiredOption('--mini-app-id <miniAppId>', 'Mini-program AppID')
|
|
12298
|
+
.option('--project-id <projectId>', 'Deployment Project ID')
|
|
12299
|
+
.option('--source-root <sourceRoot>', 'Directory containing dist or dist-tt', '.')
|
|
12300
|
+
.action(async (options, command) => {
|
|
12301
|
+
const runtime = await getRuntime(command);
|
|
12302
|
+
const projectId = await resolveProjectId(command, options);
|
|
12303
|
+
const authorization = await runtime.client.getMiniProgramAuthStatus({
|
|
12304
|
+
project_id: projectId,
|
|
12305
|
+
connector_id: resolveConnectorId(options.platform),
|
|
12306
|
+
});
|
|
12307
|
+
if (
|
|
12308
|
+
!authorization.is_authorized ||
|
|
12309
|
+
authorization.bound_related_id !== options.miniAppId
|
|
12310
|
+
) {
|
|
12311
|
+
throw new CliError(
|
|
12312
|
+
getAuthRequiredMessage(),
|
|
12313
|
+
'MINIPROGRAM_AUTH_REQUIRED',
|
|
12314
|
+
);
|
|
12315
|
+
}
|
|
12316
|
+
const sourceRoot = node_path.resolve(runtime.cwd, options.sourceRoot || '.');
|
|
12317
|
+
const buildOutputDir = resolveBuildOutputDir(options.platform);
|
|
12318
|
+
const sourcePackage = await createMiniProgramPackage(
|
|
12319
|
+
sourceRoot,
|
|
12320
|
+
buildOutputDir,
|
|
12321
|
+
);
|
|
12322
|
+
try {
|
|
12323
|
+
const content = await promises.readFile(sourcePackage.path);
|
|
12324
|
+
const data = await runtime.client.createMiniProgramPreview({
|
|
12325
|
+
project_id: projectId,
|
|
12326
|
+
app_id: options.miniAppId || '',
|
|
12327
|
+
connector_id: resolveConnectorId(options.platform),
|
|
12328
|
+
source_package_base64: content.toString('base64'),
|
|
12329
|
+
});
|
|
12330
|
+
if (data.failed) {
|
|
12331
|
+
throw new CliError(
|
|
12332
|
+
getPreviewFailureMessage(data),
|
|
12333
|
+
'MINIPROGRAM_PREVIEW_FAILED',
|
|
12334
|
+
);
|
|
12335
|
+
}
|
|
12336
|
+
runtime.output.print({
|
|
12337
|
+
project_id: projectId,
|
|
12338
|
+
mini_app_id: options.miniAppId,
|
|
12339
|
+
platform: options.platform,
|
|
12340
|
+
source_package_size_bytes: sourcePackage.sizeBytes,
|
|
12341
|
+
...data,
|
|
12342
|
+
});
|
|
12343
|
+
} finally {
|
|
12344
|
+
await sourcePackage.cleanup();
|
|
12345
|
+
}
|
|
12346
|
+
});
|
|
12347
|
+
};
|
|
12348
|
+
|
|
11874
12349
|
const registerMiniProgram = (code) => {
|
|
11875
12350
|
const miniProgram = code
|
|
11876
12351
|
.command('mini-program')
|
|
@@ -11955,92 +12430,12 @@ const registerMiniProgram = (code) => {
|
|
|
11955
12430
|
});
|
|
11956
12431
|
runtime.output.print({ project_id: projectId, platform: options.platform, unbound: true });
|
|
11957
12432
|
});
|
|
11958
|
-
};
|
|
11959
12433
|
|
|
11960
|
-
|
|
11961
|
-
|
|
11962
|
-
const APP_LIST_MAX_PAGE_SIZE = 100;
|
|
11963
|
-
|
|
11964
|
-
// page_token 是**页码的十进制字符串**(服务端口径,与 deploy_history/list 一致),不是不透明游标。
|
|
11965
|
-
// 所以这里能、也应该在本地校验:`--page-token abc` 早报错,比发出去再被拒强。
|
|
11966
|
-
const parsePositiveInt = (
|
|
11967
|
-
raw,
|
|
11968
|
-
option,
|
|
11969
|
-
code,
|
|
11970
|
-
max,
|
|
11971
|
-
) => {
|
|
11972
|
-
const value = Number(raw);
|
|
11973
|
-
if (!Number.isSafeInteger(value) || value <= 0) {
|
|
11974
|
-
throw new CliError(`${option} must be a positive integer.`, code, { [option]: raw });
|
|
11975
|
-
}
|
|
11976
|
-
if (max !== undefined && value > max) {
|
|
11977
|
-
throw new CliError(`${option} must not exceed ${String(max)}.`, code, { [option]: raw });
|
|
11978
|
-
}
|
|
11979
|
-
return value;
|
|
11980
|
-
};
|
|
11981
|
-
|
|
11982
|
-
// ⛔ 别再用 `Number(options.pageSize || 20)`:`--page-size abc` 会算出 NaN,
|
|
11983
|
-
// JSON.stringify 把它写成 null 发给服务端,最后表现为「参数没生效」而不是「参数写错了」。
|
|
11984
|
-
const parsePageSize = (
|
|
11985
|
-
raw,
|
|
11986
|
-
fallback,
|
|
11987
|
-
max,
|
|
11988
|
-
) => {
|
|
11989
|
-
if (raw === undefined || raw === '') {
|
|
11990
|
-
return fallback;
|
|
11991
|
-
}
|
|
11992
|
-
return parsePositiveInt(raw, '--page-size', 'INVALID_PAGE_SIZE', max);
|
|
11993
|
-
};
|
|
11994
|
-
|
|
11995
|
-
const parsePageToken = (raw) => {
|
|
11996
|
-
if (raw === undefined || raw === '') {
|
|
11997
|
-
return undefined;
|
|
11998
|
-
}
|
|
11999
|
-
parsePositiveInt(raw, '--page-token', 'INVALID_PAGE_TOKEN');
|
|
12000
|
-
return raw;
|
|
12001
|
-
};
|
|
12002
|
-
|
|
12003
|
-
|
|
12004
|
-
|
|
12005
|
-
|
|
12006
|
-
|
|
12007
|
-
|
|
12008
|
-
|
|
12009
|
-
// collectAllPages 顺着 next_page_token 把所有页取回来。
|
|
12010
|
-
//
|
|
12011
|
-
// 服务端从「全量单页」改成真分页之后,`app list` 一次只回一页;想要「我的全部应用」就得翻页。
|
|
12012
|
-
// 与其让每个调用方各写一遍循环,不如给一个 --all。
|
|
12013
|
-
//
|
|
12014
|
-
// ⚠️ 不设页数上限截断:静默截断正是这次要修掉的毛病。只防死循环——服务端如果一直回同一个
|
|
12015
|
-
// token(或说 has_more 却不给 token),直接报错,而不是无限翻。
|
|
12016
|
-
const collectAllPages = async (
|
|
12017
|
-
fetchPage,
|
|
12018
|
-
) => {
|
|
12019
|
-
const items = [];
|
|
12020
|
-
const seen = new Set();
|
|
12021
|
-
let pageToken;
|
|
12022
|
-
let pages = 0;
|
|
12023
|
-
for (;;) {
|
|
12024
|
-
const page = await fetchPage(pageToken);
|
|
12025
|
-
items.push(...(page.items || []));
|
|
12026
|
-
pages += 1;
|
|
12027
|
-
if (!page.has_more) {
|
|
12028
|
-
return { items, pages };
|
|
12029
|
-
}
|
|
12030
|
-
const next = page.next_page_token;
|
|
12031
|
-
if (!next || seen.has(next)) {
|
|
12032
|
-
throw new CliError(
|
|
12033
|
-
'The server reported more pages but returned no usable next_page_token.',
|
|
12034
|
-
'INVALID_PAGE_TOKEN',
|
|
12035
|
-
{ next_page_token: next, pages },
|
|
12036
|
-
);
|
|
12037
|
-
}
|
|
12038
|
-
seen.add(next);
|
|
12039
|
-
pageToken = next;
|
|
12040
|
-
}
|
|
12434
|
+
registerAuthorizationCommand(miniProgram);
|
|
12435
|
+
registerPreviewCommand(miniProgram);
|
|
12041
12436
|
};
|
|
12042
12437
|
|
|
12043
|
-
function _optionalChain$
|
|
12438
|
+
function _optionalChain$2(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
12044
12439
|
|
|
12045
12440
|
const POLL_INTERVAL_MS = 3000;
|
|
12046
12441
|
const MAX_CONSECUTIVE_RETRIES = 5;
|
|
@@ -12052,7 +12447,7 @@ const wait = async () =>
|
|
|
12052
12447
|
const isRetryablePollError = (error) =>
|
|
12053
12448
|
error instanceof CliError &&
|
|
12054
12449
|
error.code === 'API_REJECTED' &&
|
|
12055
|
-
Number(_optionalChain$
|
|
12450
|
+
Number(_optionalChain$2([error, 'access', _ => _.details, 'optionalAccess', _2 => _2.business_code])) === TRANSIENT_RPC_ERROR_CODE;
|
|
12056
12451
|
|
|
12057
12452
|
const pollHistory = async (
|
|
12058
12453
|
command,
|
|
@@ -12431,52 +12826,6 @@ const registerDomain = (code) => {
|
|
|
12431
12826
|
});
|
|
12432
12827
|
};
|
|
12433
12828
|
|
|
12434
|
-
function _optionalChain$2(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
12435
|
-
|
|
12436
|
-
const firstPage = { page: 1, size: 1 };
|
|
12437
|
-
|
|
12438
|
-
const listSpaceRequest = (runtime) => ({
|
|
12439
|
-
...(runtime.config.organizationId
|
|
12440
|
-
? { organization_id: runtime.config.organizationId }
|
|
12441
|
-
: {}),
|
|
12442
|
-
...(runtime.config.enterpriseId
|
|
12443
|
-
? { enterprise_id: runtime.config.enterpriseId }
|
|
12444
|
-
: {}),
|
|
12445
|
-
});
|
|
12446
|
-
|
|
12447
|
-
const resolveDeploymentSpaceId = async (runtime) => {
|
|
12448
|
-
const configuredSpaceId = _optionalChain$2([runtime, 'access', _ => _.config, 'access', _2 => _2.spaceId, 'optionalAccess', _3 => _3.trim, 'call', _4 => _4()]);
|
|
12449
|
-
const request = listSpaceRequest(runtime);
|
|
12450
|
-
if (configuredSpaceId) {
|
|
12451
|
-
const data = await runtime.client.listSpaces(request);
|
|
12452
|
-
if (!data.bot_space_list.some(space => space.id === configuredSpaceId)) {
|
|
12453
|
-
throw new CliError(
|
|
12454
|
-
`Space ID ${configuredSpaceId} is invalid or is not available to the current account.`,
|
|
12455
|
-
'INVALID_SPACE_ID',
|
|
12456
|
-
);
|
|
12457
|
-
}
|
|
12458
|
-
return configuredSpaceId;
|
|
12459
|
-
}
|
|
12460
|
-
|
|
12461
|
-
const data = await runtime.client.listSpaces({ ...request, ...firstPage });
|
|
12462
|
-
const space = data.bot_space_list.find(item => item.id);
|
|
12463
|
-
if (!space) {
|
|
12464
|
-
throw new CliError(
|
|
12465
|
-
'No available Space was found for the current account. Create or join a Space before deploying.',
|
|
12466
|
-
'SPACE_NOT_FOUND',
|
|
12467
|
-
);
|
|
12468
|
-
}
|
|
12469
|
-
|
|
12470
|
-
runtime.config.spaceId = space.id;
|
|
12471
|
-
try {
|
|
12472
|
-
await saveSharedConfig({ spaceId: space.id }, runtime.globalOptions);
|
|
12473
|
-
} catch (error) {
|
|
12474
|
-
runtime.output.warn(`Unable to save the auto-selected Space: ${String(error)}`);
|
|
12475
|
-
}
|
|
12476
|
-
runtime.output.debug(`Auto-selected Space: ${space.name || space.id} (${space.id})`);
|
|
12477
|
-
return space.id;
|
|
12478
|
-
};
|
|
12479
|
-
|
|
12480
12829
|
const PACKAGE_SCRIPT_CANDIDATES = [
|
|
12481
12830
|
node_path.resolve(__dirname, 'deploy/package-project.js'),
|
|
12482
12831
|
node_path.resolve(__dirname, '../../../scripts/deploy/package-project.js'),
|
|
@@ -12753,7 +13102,7 @@ const createDeploymentWithSourcePackage = async (
|
|
|
12753
13102
|
return { uploadMode: 'direct' , result };
|
|
12754
13103
|
};
|
|
12755
13104
|
|
|
12756
|
-
function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
13105
|
+
function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
12757
13106
|
const SUPPORTED_MINIPROGRAM_CONNECTOR_IDS = new Set(['10000127', '10000126']);
|
|
12758
13107
|
const collectConnectorId = (value, previous) => [
|
|
12759
13108
|
...previous,
|
|
@@ -12848,10 +13197,11 @@ const registerDeploy = (code) => {
|
|
|
12848
13197
|
}
|
|
12849
13198
|
}
|
|
12850
13199
|
if (!projectId) {
|
|
12851
|
-
runtime.output.debug(
|
|
12852
|
-
|
|
13200
|
+
runtime.output.debug(
|
|
13201
|
+
'[deploy] Creating a dedicated deployment project in personal space...',
|
|
13202
|
+
);
|
|
12853
13203
|
const project = await runtime.client.createDeploymentProject({
|
|
12854
|
-
space_id:
|
|
13204
|
+
space_id: '0',
|
|
12855
13205
|
user_query: deploymentName || 'CLI deployment project',
|
|
12856
13206
|
project_type: resolveCreationProjectType(metadata.projectType),
|
|
12857
13207
|
create_source: 'cli',
|
|
@@ -12944,6 +13294,7 @@ const registerDeploy = (code) => {
|
|
|
12944
13294
|
...(appId ? { app_id: appId } : { project_id: projectId }),
|
|
12945
13295
|
application_type: applicationType,
|
|
12946
13296
|
commit_hash: commitHash,
|
|
13297
|
+
...(options.message ? { commit_message: options.message } : {}),
|
|
12947
13298
|
...(!appId
|
|
12948
13299
|
? { name: deploymentName, source_root: sourceRoot }
|
|
12949
13300
|
: {}),
|
|
@@ -12996,69 +13347,7 @@ const registerDeploy = (code) => {
|
|
|
12996
13347
|
source_package_size_bytes: sourcePackage.sizeBytes,
|
|
12997
13348
|
upload_mode: deployment.uploadMode,
|
|
12998
13349
|
local_link: appId && !projectCreated ? 'unchanged' : 'written',
|
|
12999
|
-
|
|
13000
|
-
});
|
|
13001
|
-
|
|
13002
|
-
deploy
|
|
13003
|
-
.command('status')
|
|
13004
|
-
.option('--app-id <appId>', 'Application ID')
|
|
13005
|
-
.option('--deploy-id <deployId>', 'Deployment history ID')
|
|
13006
|
-
.action(async (options, command) => {
|
|
13007
|
-
const runtime = await getRuntime(command);
|
|
13008
|
-
const appId = await requireAppId(runtime.cwd, getDeployAppIdOption(options, command));
|
|
13009
|
-
let deployHistoryId = options.deployId;
|
|
13010
|
-
if (!deployHistoryId) {
|
|
13011
|
-
deployHistoryId = await _asyncOptionalChain([(
|
|
13012
|
-
await runtime.client.listDeployHistory({ app_id: appId, page_size: 1 })
|
|
13013
|
-
), 'access', async _3 => _3.deploy_history_list, 'optionalAccess', async _4 => _4[0], 'optionalAccess', async _5 => _5.deploy_history_id]);
|
|
13014
|
-
}
|
|
13015
|
-
if (!deployHistoryId) {
|
|
13016
|
-
throw new CliError('No deployment history found.', 'DEPLOYMENT_NOT_FOUND');
|
|
13017
|
-
}
|
|
13018
|
-
const history = await runtime.client.getDeployHistory({
|
|
13019
|
-
app_id: appId,
|
|
13020
|
-
deploy_history_id: deployHistoryId,
|
|
13021
|
-
});
|
|
13022
|
-
runtime.output.print({
|
|
13023
|
-
app_id: appId,
|
|
13024
|
-
deploy_history_id: deployHistoryId,
|
|
13025
|
-
status: getDeployStatusText(history.status),
|
|
13026
|
-
commit_hash: history.commit_hash,
|
|
13027
|
-
domains: history.domain_list || [],
|
|
13028
|
-
error_analysis: history.error_analysis,
|
|
13029
|
-
deploy_detail: formatDeployDetails(history),
|
|
13030
|
-
connector_data_list: history.connector_data_list || [],
|
|
13031
|
-
});
|
|
13032
|
-
});
|
|
13033
|
-
|
|
13034
|
-
deploy
|
|
13035
|
-
.command('list')
|
|
13036
|
-
.option('--app-id <appId>', 'Application ID')
|
|
13037
|
-
.option('--page-size <pageSize>', 'Page size', '10')
|
|
13038
|
-
.option('--page-token <pageToken>', 'Page token (page number)')
|
|
13039
|
-
.action(async (options, command) => {
|
|
13040
|
-
// 先在本地校验:`--page-size abc` 以前算出 NaN 发出去,表现成「参数没生效」。
|
|
13041
|
-
const pageSize = parsePageSize(options.pageSize, 10);
|
|
13042
|
-
const pageToken = parsePageToken(options.pageToken);
|
|
13043
|
-
const runtime = await getRuntime(command);
|
|
13044
|
-
const appId = await requireAppId(runtime.cwd, getDeployAppIdOption(options, command));
|
|
13045
|
-
const data = await runtime.client.listDeployHistory({
|
|
13046
|
-
app_id: appId,
|
|
13047
|
-
page_size: pageSize,
|
|
13048
|
-
page_token: pageToken,
|
|
13049
|
-
});
|
|
13050
|
-
runtime.output.print({
|
|
13051
|
-
items: (data.deploy_history_list || []).map(item => ({
|
|
13052
|
-
deploy_history_id: item.deploy_history_id,
|
|
13053
|
-
status: getDeployStatusText(item.status),
|
|
13054
|
-
commit_hash: item.commit_hash_short || item.commit_hash,
|
|
13055
|
-
created_at: item.created_at,
|
|
13056
|
-
can_rollback: item.can_rollback,
|
|
13057
|
-
deploy_detail: formatDeployDetails(item),
|
|
13058
|
-
connector_data_list: item.connector_data_list || [],
|
|
13059
|
-
})),
|
|
13060
|
-
next_page_token: data.next_page_token,
|
|
13061
|
-
has_more: data.has_more,
|
|
13350
|
+
mobile_artifact_list: _optionalChain([history, 'optionalAccess', _3 => _3.mobile_artifact_list]) || [],
|
|
13062
13351
|
});
|
|
13063
13352
|
});
|
|
13064
13353
|
|
|
@@ -13161,7 +13450,7 @@ const registerDeploy = (code) => {
|
|
|
13161
13450
|
.action(async (options, command) => {
|
|
13162
13451
|
const runtime = await getRuntime(command);
|
|
13163
13452
|
const appId = await requireAppId(runtime.cwd, getDeployAppIdOption(options, command));
|
|
13164
|
-
let key = _optionalChain([options, 'access',
|
|
13453
|
+
let key = _optionalChain([options, 'access', _4 => _4.key, 'optionalAccess', _5 => _5.trim, 'call', _6 => _6()]);
|
|
13165
13454
|
if (!key) {
|
|
13166
13455
|
const history = await runtime.client.getDeployHistory({
|
|
13167
13456
|
app_id: appId,
|
|
@@ -13203,7 +13492,7 @@ const registerDeploy = (code) => {
|
|
|
13203
13492
|
const runtime = await getRuntime(command);
|
|
13204
13493
|
const appId = await requireAppId(runtime.cwd, getDeployAppIdOption(options, command));
|
|
13205
13494
|
const application = await runtime.client.getApplication(appId);
|
|
13206
|
-
const commitHash = options.commitId || _optionalChain([application, 'access',
|
|
13495
|
+
const commitHash = options.commitId || _optionalChain([application, 'access', _7 => _7.latest_deployment, 'optionalAccess', _8 => _8.commit_hash]);
|
|
13207
13496
|
if (!commitHash) {
|
|
13208
13497
|
throw new CliError('No deployment commit is available.', 'DEPLOYMENT_NOT_FOUND');
|
|
13209
13498
|
}
|