@voobase/cli 0.1.0-nonprod.1820 → 0.1.0-nonprod.1900
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-bundle/index.mjs +5 -5
- package/package.json +6 -6
package/dist-bundle/index.mjs
CHANGED
|
@@ -2223,7 +2223,7 @@ function inferUpstreamPath(pathname: string, routeBasePath: string): string {
|
|
|
2223
2223
|
`);return}process.stdout.write([action==="add"?"\u7D20\u6750\u6807\u7B7E\u5DF2\u6DFB\u52A0\u3002":"\u7D20\u6750\u6807\u7B7E\u5DF2\u79FB\u9664\u3002",`asset: ${response.asset.asset_id}`,`tags: ${response.tags.length>0?response.tags.map(item=>item.label).join(", "):"-"}`,""].join(`
|
|
2224
2224
|
`));return}throw new Error("`platform asset tag` \u4EC5\u652F\u6301 `list`\u3001`add <asset-id> <label>`\u3001`remove <asset-id> <label>`\u3002")}function readStringOption(args,key){let value=args.options[key];return typeof value=="string"?value:void 0}function hasOption(args,key){return Object.prototype.hasOwnProperty.call(args.options,key)}function readCsvOption(args,key){return(readStringOption(args,key)??"").split(",").map(item=>item.trim()).filter(Boolean)}function readBooleanOption(args,key){let value=readStringOption(args,key);if(value!==void 0){if(value==="true")return!0;if(value==="false")return!1;throw new Error(`\`--${key}\` \u4EC5\u652F\u6301 true \u6216 false\u3002`)}}function readNumberOption(args,key){let value=readStringOption(args,key);if(value===void 0)return;let parsed=Number(value);if(!Number.isFinite(parsed))throw new Error(`\`--${key}\` \u9700\u8981\u6570\u5B57\u3002`);return Math.trunc(parsed)}function readMediaTypeOption(args){let value=readStringOption(args,"media-type");if(value){if(value==="image"||value==="video")return value;throw new Error("`--media-type` \u4EC5\u652F\u6301 image \u6216 video\u3002")}}function readOrientationOption(args){let value=readStringOption(args,"orientation");if(value){if(value==="landscape"||value==="portrait"||value==="square")return value;throw new Error("`--orientation` \u4EC5\u652F\u6301 landscape\u3001portrait\u3001square\u3002")}}function readVariantKindOption(args){let value=readStringOption(args,"variant");if(value){if(value==="thumbnail"||value==="sm"||value==="md"||value==="lg"||value==="cover")return value;throw new Error("`--variant` \u4EC5\u652F\u6301 thumbnail\u3001sm\u3001md\u3001lg\u3001cover\u3002")}}function pickRecommendedAnalysisSource(detail){let mdUrl=detail.variant_urls.md;if(mdUrl)return{kind:"md",url:mdUrl};let smUrl=detail.variant_urls.sm;if(smUrl)return{kind:"sm",url:smUrl};let thumbnailUrl=detail.variant_urls.thumbnail;return thumbnailUrl?{kind:"thumbnail",url:thumbnailUrl}:{kind:"original",url:detail.original_url}}function hasHelpFlag(args){return args.options.help===!0||args.options.h===!0}function inferMimeType(fileName){switch(extname(fileName).toLowerCase()){case".png":return"image/png";case".jpg":case".jpeg":return"image/jpeg";case".webp":return"image/webp";case".gif":return"image/gif";case".svg":return"image/svg+xml";case".mp4":return"video/mp4";case".mov":return"video/quicktime";case".webm":return"video/webm";default:throw new Error(`\u5F53\u524D\u4EC5\u652F\u6301\u5E38\u89C1\u56FE\u7247\u4E0E\u89C6\u9891\u6269\u5C55\u540D\uFF0C\u65E0\u6CD5\u8BC6\u522B\u6587\u4EF6\u7C7B\u578B: ${fileName}`)}}function formatVariantLines(variantUrls){let lines=Object.entries(variantUrls).filter(entry=>typeof entry[1]=="string"&&entry[1].length>0).map(([kind,url])=>`variant.${kind}: ${url}`);return lines.length>0?lines:["variant: -"]}function normalizeNullableCliText(value){let normalized=value?.trim()??"";return normalized||null}function buildAnalyzeUpdateTemplate(assetId){return[`platform asset update ${assetId} \\`,' --summary "..." \\',' --caption "..." \\',' --scene "..." \\',' --objects "..." \\',' --tags "..."'].join(`
|
|
2225
2225
|
`)}function flattenShellContinuation(template){return template.replace(/\s*\\\s*\n\s*/g," ").replace(/\s{2,}/g," ").trim()}function buildVariantFileName(originalFileName,variants,variantKind){let variant=variants.find(item=>item.variant_kind===variantKind),extension=variant?inferExtensionFromMimeType(variant.mime_type):extname(originalFileName)||".bin";return`${basename(originalFileName,extname(originalFileName))}.${variantKind}${extension}`}function inferExtensionFromMimeType(mimeType){switch(mimeType){case"image/jpeg":return".jpg";case"image/png":return".png";case"image/webp":return".webp";case"image/gif":return".gif";case"image/svg+xml":return".svg";case"video/mp4":return".mp4";case"video/webm":return".webm";default:return".bin"}}function resolveOutputPath(explicitOutputPath,fileName){if(explicitOutputPath)return resolve2(explicitOutputPath);let directory=mkdtempSync(join(tmpdir(),"platform-asset-"));return join(directory,fileName)}function tryOpenLocalFile(path){try{return process.platform==="darwin"?(spawn("open",[path],{stdio:"ignore",detached:!0}).unref(),!0):process.platform==="win32"?(spawn("cmd",["/c","start","",path],{stdio:"ignore",detached:!0}).unref(),!0):(spawn("xdg-open",[path],{stdio:"ignore",detached:!0}).unref(),!0)}catch{return!1}}function formatAssetError(error,action){return error instanceof PlatformApiError?new Error([`\u7D20\u6750 ${action} \u5931\u8D25\u3002`,`\u72B6\u6001\u7801: ${error.status}`,`\u9519\u8BEF\u7801: ${error.code??"-"}`,error.message].join(`
|
|
2226
|
-
`)):error instanceof Error?error:new Error(`\u7D20\u6750 ${action} \u5931\u8D25\u3002`)}import{existsSync as existsSync9,mkdirSync as mkdirSync4,readdirSync as readdirSync3,readFileSync as readFileSync9,writeFileSync as writeFileSync5}from"node:fs";import{dirname as dirname6,join as join5,resolve as resolve6}from"node:path";import{spawn as spawn2}from"node:child_process";import YAML2 from"yaml";import{createServer}from"node:http";import{createHash as createHash3,randomBytes}from"node:crypto";import{chmodSync,existsSync as existsSync7,mkdirSync as mkdirSync2,readFileSync as readFileSync7,writeFileSync as writeFileSync3}from"node:fs";import{existsSync as existsSync6,mkdirSync,writeFileSync as writeFileSync2}from"node:fs";import{homedir}from"node:os";import{dirname as dirname4,join as join3,resolve as resolve4}from"node:path";import{fileURLToPath as fileURLToPath4}from"node:url";import{existsSync as existsSync4,readFileSync as readFileSync5}from"node:fs";import{dirname as dirname2,join as join2}from"node:path";import{fileURLToPath as fileURLToPath2}from"node:url";var AUTH_CLI_CLIENT_ID_KEYS=["AUTH_CLI_CLIENT_ID","LOGTO_CLI_APP_ID"],AUTH_CLI_REDIRECT_URI_KEYS=["AUTH_CLI_REDIRECT_URI","LOGTO_CLI_REDIRECT_URI"],AUTH_TENANT_CLIENT_ID_KEYS=["AUTH_TENANT_CLIENT_ID","LOGTO_TENANT_APP_ID","LOGTO_APP_ID"],AUTH_TENANT_REDIRECT_URI_KEYS=["AUTH_TENANT_REDIRECT_URI","LOGTO_TENANT_REDIRECT_URI"];function readTrimmedConfigValue(source,key){let value=source?.[key]?.trim();if(!(!value||/^<.+>$/.test(value)))return value}function readAuthConfigValue(keys,env=process.env){for(let key of keys){let fromEnv=readTrimmedConfigValue(env,key);if(fromEnv)return fromEnv}let defaults=getDistributionProfile().defaults??{};for(let key of keys){let fromDefaults=readTrimmedConfigValue(defaults,key);if(fromDefaults)return fromDefaults}}var defaultDeveloperProfile={name:"developer",defaults:{CONTROL_API_BASE_URL:"http://localhost:7001",PUBLIC_API_BASE_URL:"http://localhost:7007",RUNTIME_API_BASE_URL:"http://127.0.0.1.nip.io",OIDC_ISSUER:"http://localhost:3001/oidc",OIDC_AUDIENCE:"platform",LOGTO_CLI_REDIRECT_URI:"http://localhost:7300/callback",LOGTO_TENANT_REDIRECT_URI:"http://localhost:7102/callback"}},cachedProfile=null;function getDistributionProfile(){if(cachedProfile)return cachedProfile;let packageJsonPath=resolvePackageJsonPath();if(!packageJsonPath)return cachedProfile=defaultDeveloperProfile,cachedProfile;try{let packageJson=JSON.parse(readFileSync5(packageJsonPath,"utf8"));return cachedProfile=normalizeDistributionProfile(packageJson.platformDistributionProfile),cachedProfile}catch{return cachedProfile=defaultDeveloperProfile,cachedProfile}}function applyDistributionProfileDefaults(env=process.env){let profile=getDistributionProfile();for(let[key,value]of Object.entries(profile.defaults??{}))typeof value!="string"||value.trim().length===0||typeof env[key]=="string"&&env[key].trim().length>0||(env[key]=value);return profile}function getCliPackageVersion(){let packageJsonPath=resolvePackageJsonPath();if(!packageJsonPath)return"0.0.0";try{let packageJson=JSON.parse(readFileSync5(packageJsonPath,"utf8"));return typeof packageJson.version=="string"&&packageJson.version.trim().length>0?packageJson.version.trim():"0.0.0"}catch{return"0.0.0"}}function normalizeDistributionProfile(input){if(!input||input.name!=="developer"&&input.name!=="test-only"&&input.name!=="sandbox"&&input.name!=="nonprod")return defaultDeveloperProfile;let defaults=input.name==="developer"?{...defaultDeveloperProfile.defaults}:{};for(let[key,value]of Object.entries(input.defaults??{}))typeof value=="string"&&value.trim().length>0&&(defaults[key]=value.trim());return{name:input.name,defaults}}function resolvePackageJsonPath(){let distDir=dirname2(fileURLToPath2(import.meta.url)),candidates=[join2(distDir,"..","package.json"),join2(distDir,"..","..","package.json")];for(let candidate of candidates)if(existsSync4(candidate))return candidate;return null}import{existsSync as existsSync5,readFileSync as readFileSync6,statSync as statSync2}from"node:fs";import{dirname as dirname3,resolve as resolve3}from"node:path";import{fileURLToPath as fileURLToPath3}from"node:url";function stripQuotes(value){return value.startsWith('"')&&value.endsWith('"')||value.startsWith("'")&&value.endsWith("'")?value.slice(1,-1):value}function hasWorkspaceMarker(directory){return existsSync5(resolve3(directory,"pnpm-workspace.yaml"))}function getInvocationCwd(){let candidates=[process.env.PLATFORM_INVOCATION_CWD,process.env.INIT_CWD,process.env.PWD,process.cwd()];for(let candidate of candidates){if(!candidate||candidate.trim().length===0)continue;let resolved=resolve3(candidate);if(existsSync5(resolved))try{if(statSync2(resolved).isDirectory())return resolved}catch{continue}}return resolve3(process.cwd())}function tryFindWorkspaceRoot(startDir=getInvocationCwd()){let current=resolve3(startDir);for(;;){if(hasWorkspaceMarker(current))return current;let parent=dirname3(current);if(parent===current)return null;current=parent}}function findWorkspaceRoot(startDir=getInvocationCwd()){return tryFindWorkspaceRoot(startDir)??resolve3(startDir)}function loadDotenvFiles(startDir=getInvocationCwd()){let workspaceRoot=findWorkspaceRoot(startDir),appRoot=resolve3(startDir),cliModuleRoot=resolve3(dirname3(fileURLToPath3(import.meta.url)),".."),cliWorkspaceRoot=findWorkspaceRoot(cliModuleRoot),developerLocalEnvFile=getDistributionProfile().name==="developer"?resolve3(process.env.PLATFORM_LOCAL_CLI_ENV_FILE?.trim()||resolve3(workspaceRoot,"TMP","local-cli.env")):null,candidates=[resolve3(workspaceRoot,".env"),resolve3(workspaceRoot,".env.local"),...developerLocalEnvFile?[developerLocalEnvFile]:[],resolve3(appRoot,".env"),resolve3(appRoot,".env.local"),resolve3(cliWorkspaceRoot,".env"),resolve3(cliWorkspaceRoot,".env.local"),resolve3(cliModuleRoot,".env"),resolve3(cliModuleRoot,".env.local")],visited=new Set;for(let filePath of candidates){if(visited.has(filePath)||(visited.add(filePath),!existsSync5(filePath)))continue;let lines=readFileSync6(filePath,"utf8").split(/\r?\n/u);for(let line of lines){let trimmed=line.trim();if(trimmed.length===0||trimmed.startsWith("#"))continue;let separatorIndex=trimmed.indexOf("=");if(separatorIndex<=0)continue;let key=trimmed.slice(0,separatorIndex).trim(),value=stripQuotes(trimmed.slice(separatorIndex+1).trim());process.env[key]||(process.env[key]=value)}}}var DEFAULT_STATE_DIR_NAME=".platform",LOCAL_DEVELOPER_STATE_DIR=join3("TMP","local-cli-state"),WORKSPACE_FALLBACK_STATE_DIR=join3("TMP","local-cli-state-fallback"),WORKSPACE_FALLBACK_MARKER=".state-fallback-active",activeFallbackStateDir=null,emittedFallbackWarnings=new Set,CliStateAccessError=class extends Error{operation;path;cause;constructor(operation,path,cause){super([`\u65E0\u6CD5${operation} CLI \u672C\u5730\u72B6\u6001\u6587\u4EF6\uFF1A${path}`,"\u8FD9\u901A\u5E38\u662F\u56E0\u4E3A\u5F53\u524D HOME / PLATFORM_STATE_DIR \u5BF9\u5E94\u76EE\u5F55\u4E0D\u53EF\u5199\uFF0C\u6216\u8FD0\u884C\u5728\u53D7\u9650\u6C99\u7BB1\u73AF\u5883\u4E2D\u3002","\u53EF\u5C1D\u8BD5\uFF1A","1. \u91CD\u65B0\u6267\u884C\u5E76\u786E\u8BA4\u5F53\u524D\u8D26\u53F7\u5BF9\u8BE5\u76EE\u5F55\u6709\u5199\u6743\u9650","2. \u663E\u5F0F\u8BBE\u7F6E `PLATFORM_STATE_DIR` \u6307\u5411\u4E00\u4E2A\u53EF\u5199\u76EE\u5F55","3. \u82E5\u5728\u9694\u79BB\u73AF\u5883\u4E2D\u8FD0\u884C\uFF0C\u53EF\u4E3A\u8BE5\u73AF\u5883\u5355\u72EC\u914D\u7F6E `HOME` \u6216 `PLATFORM_STATE_DIR`"].join(`
|
|
2226
|
+
`)):error instanceof Error?error:new Error(`\u7D20\u6750 ${action} \u5931\u8D25\u3002`)}import{existsSync as existsSync9,mkdirSync as mkdirSync4,readdirSync as readdirSync3,readFileSync as readFileSync9,writeFileSync as writeFileSync5}from"node:fs";import{dirname as dirname6,join as join5,resolve as resolve6}from"node:path";import{spawn as spawn2}from"node:child_process";import YAML2 from"yaml";import{createServer}from"node:http";import{createHash as createHash3,randomBytes}from"node:crypto";import{chmodSync,existsSync as existsSync7,mkdirSync as mkdirSync2,readFileSync as readFileSync7,writeFileSync as writeFileSync3}from"node:fs";import{existsSync as existsSync6,mkdirSync,writeFileSync as writeFileSync2}from"node:fs";import{homedir}from"node:os";import{dirname as dirname4,join as join3,resolve as resolve4}from"node:path";import{fileURLToPath as fileURLToPath4}from"node:url";import{existsSync as existsSync4,readFileSync as readFileSync5}from"node:fs";import{dirname as dirname2,join as join2}from"node:path";import{fileURLToPath as fileURLToPath2}from"node:url";var AUTH_CLI_CLIENT_ID_KEYS=["AUTH_CLI_CLIENT_ID","LOGTO_CLI_APP_ID"],AUTH_CLI_REDIRECT_URI_KEYS=["AUTH_CLI_REDIRECT_URI","LOGTO_CLI_REDIRECT_URI"],AUTH_TENANT_CLIENT_ID_KEYS=["AUTH_TENANT_CLIENT_ID","LOGTO_TENANT_APP_ID","LOGTO_APP_ID"],AUTH_TENANT_REDIRECT_URI_KEYS=["AUTH_TENANT_REDIRECT_URI","LOGTO_TENANT_REDIRECT_URI"];function readTrimmedConfigValue(source,key){let value=source?.[key]?.trim();if(!(!value||/^<.+>$/.test(value)))return value}function readAuthConfigValue(keys,env=process.env){for(let key of keys){let fromEnv=readTrimmedConfigValue(env,key);if(fromEnv)return fromEnv}let defaults=getDistributionProfile().defaults??{};for(let key of keys){let fromDefaults=readTrimmedConfigValue(defaults,key);if(fromDefaults)return fromDefaults}}var defaultDeveloperProfile={name:"developer",defaults:{CONTROL_API_BASE_URL:"http://localhost:7001",PUBLIC_API_BASE_URL:"http://localhost:7007",RUNTIME_API_BASE_URL:"http://127.0.0.1.nip.io",OIDC_ISSUER:"http://localhost:3001/oidc",OIDC_AUDIENCE:"platform",LOGTO_CLI_REDIRECT_URI:"http://localhost:7300/callback",LOGTO_TENANT_REDIRECT_URI:"http://localhost:7102/callback"}},cachedProfile=null;function getDistributionProfile(){if(cachedProfile)return cachedProfile;let packageJsonPath=resolvePackageJsonPath();if(!packageJsonPath)return cachedProfile=defaultDeveloperProfile,cachedProfile;try{let packageJson=JSON.parse(readFileSync5(packageJsonPath,"utf8"));return cachedProfile=normalizeDistributionProfile(packageJson.platformDistributionProfile),cachedProfile}catch{return cachedProfile=defaultDeveloperProfile,cachedProfile}}function applyDistributionProfileDefaults(env=process.env){let profile=getDistributionProfile();for(let[key,value]of Object.entries(profile.defaults??{}))typeof value!="string"||value.trim().length===0||typeof env[key]=="string"&&env[key].trim().length>0||(env[key]=value);return profile}function getCliPackageVersion(){let packageJsonPath=resolvePackageJsonPath();if(!packageJsonPath)return"0.0.0";try{let packageJson=JSON.parse(readFileSync5(packageJsonPath,"utf8"));return typeof packageJson.version=="string"&&packageJson.version.trim().length>0?packageJson.version.trim():"0.0.0"}catch{return"0.0.0"}}function normalizeDistributionProfile(input){if(!input||input.name!=="developer"&&input.name!=="test-only"&&input.name!=="sandbox"&&input.name!=="nonprod"&&input.name!=="prod")return defaultDeveloperProfile;let defaults=input.name==="developer"?{...defaultDeveloperProfile.defaults}:{};for(let[key,value]of Object.entries(input.defaults??{}))typeof value=="string"&&value.trim().length>0&&(defaults[key]=value.trim());return{name:input.name,defaults}}function resolvePackageJsonPath(){let distDir=dirname2(fileURLToPath2(import.meta.url)),candidates=[join2(distDir,"..","package.json"),join2(distDir,"..","..","package.json")];for(let candidate of candidates)if(existsSync4(candidate))return candidate;return null}import{existsSync as existsSync5,readFileSync as readFileSync6,statSync as statSync2}from"node:fs";import{dirname as dirname3,resolve as resolve3}from"node:path";import{fileURLToPath as fileURLToPath3}from"node:url";function stripQuotes(value){return value.startsWith('"')&&value.endsWith('"')||value.startsWith("'")&&value.endsWith("'")?value.slice(1,-1):value}function hasWorkspaceMarker(directory){return existsSync5(resolve3(directory,"pnpm-workspace.yaml"))}function getInvocationCwd(){let candidates=[process.env.PLATFORM_INVOCATION_CWD,process.env.INIT_CWD,process.env.PWD,process.cwd()];for(let candidate of candidates){if(!candidate||candidate.trim().length===0)continue;let resolved=resolve3(candidate);if(existsSync5(resolved))try{if(statSync2(resolved).isDirectory())return resolved}catch{continue}}return resolve3(process.cwd())}function tryFindWorkspaceRoot(startDir=getInvocationCwd()){let current=resolve3(startDir);for(;;){if(hasWorkspaceMarker(current))return current;let parent=dirname3(current);if(parent===current)return null;current=parent}}function findWorkspaceRoot(startDir=getInvocationCwd()){return tryFindWorkspaceRoot(startDir)??resolve3(startDir)}function loadDotenvFiles(startDir=getInvocationCwd()){let workspaceRoot=findWorkspaceRoot(startDir),appRoot=resolve3(startDir),cliModuleRoot=resolve3(dirname3(fileURLToPath3(import.meta.url)),".."),cliWorkspaceRoot=findWorkspaceRoot(cliModuleRoot),developerLocalEnvFile=getDistributionProfile().name==="developer"?resolve3(process.env.PLATFORM_LOCAL_CLI_ENV_FILE?.trim()||resolve3(workspaceRoot,"TMP","local-cli.env")):null,candidates=[resolve3(workspaceRoot,".env"),resolve3(workspaceRoot,".env.local"),...developerLocalEnvFile?[developerLocalEnvFile]:[],resolve3(appRoot,".env"),resolve3(appRoot,".env.local"),resolve3(cliWorkspaceRoot,".env"),resolve3(cliWorkspaceRoot,".env.local"),resolve3(cliModuleRoot,".env"),resolve3(cliModuleRoot,".env.local")],visited=new Set;for(let filePath of candidates){if(visited.has(filePath)||(visited.add(filePath),!existsSync5(filePath)))continue;let lines=readFileSync6(filePath,"utf8").split(/\r?\n/u);for(let line of lines){let trimmed=line.trim();if(trimmed.length===0||trimmed.startsWith("#"))continue;let separatorIndex=trimmed.indexOf("=");if(separatorIndex<=0)continue;let key=trimmed.slice(0,separatorIndex).trim(),value=stripQuotes(trimmed.slice(separatorIndex+1).trim());process.env[key]||(process.env[key]=value)}}}var DEFAULT_STATE_DIR_NAME=".platform",LOCAL_DEVELOPER_STATE_DIR=join3("TMP","local-cli-state"),WORKSPACE_FALLBACK_STATE_DIR=join3("TMP","local-cli-state-fallback"),WORKSPACE_FALLBACK_MARKER=".state-fallback-active",activeFallbackStateDir=null,emittedFallbackWarnings=new Set,CliStateAccessError=class extends Error{operation;path;cause;constructor(operation,path,cause){super([`\u65E0\u6CD5${operation} CLI \u672C\u5730\u72B6\u6001\u6587\u4EF6\uFF1A${path}`,"\u8FD9\u901A\u5E38\u662F\u56E0\u4E3A\u5F53\u524D HOME / PLATFORM_STATE_DIR \u5BF9\u5E94\u76EE\u5F55\u4E0D\u53EF\u5199\uFF0C\u6216\u8FD0\u884C\u5728\u53D7\u9650\u6C99\u7BB1\u73AF\u5883\u4E2D\u3002","\u53EF\u5C1D\u8BD5\uFF1A","1. \u91CD\u65B0\u6267\u884C\u5E76\u786E\u8BA4\u5F53\u524D\u8D26\u53F7\u5BF9\u8BE5\u76EE\u5F55\u6709\u5199\u6743\u9650","2. \u663E\u5F0F\u8BBE\u7F6E `PLATFORM_STATE_DIR` \u6307\u5411\u4E00\u4E2A\u53EF\u5199\u76EE\u5F55","3. \u82E5\u5728\u9694\u79BB\u73AF\u5883\u4E2D\u8FD0\u884C\uFF0C\u53EF\u4E3A\u8BE5\u73AF\u5883\u5355\u72EC\u914D\u7F6E `HOME` \u6216 `PLATFORM_STATE_DIR`"].join(`
|
|
2227
2227
|
`)),this.operation=operation,this.path=path,this.cause=cause,this.name="CliStateAccessError"}};function resolveDeveloperStateDir(){let cliModuleRoot=resolve4(dirname4(fileURLToPath4(import.meta.url)),".."),workspaceRoot=findWorkspaceRoot(cliModuleRoot);return resolve4(workspaceRoot,LOCAL_DEVELOPER_STATE_DIR)}function resolveWorkspaceFallbackStateDir(startDir=getInvocationCwd()){let workspaceRoot=tryFindWorkspaceRoot(startDir);return workspaceRoot?resolve4(workspaceRoot,WORKSPACE_FALLBACK_STATE_DIR):null}function resolveCliStateLocation(options={}){let configured=options.configuredStateDir??process.env.PLATFORM_STATE_DIR?.trim()??"";if(configured)return{dir:resolve4(configured),source:"configured"};if(activeFallbackStateDir)return{dir:activeFallbackStateDir,source:"workspace-fallback"};if((options.distributionProfileName??getDistributionProfile().name)==="developer")return{dir:resolveDeveloperStateDir(),source:"developer"};let fallbackDir=resolveWorkspaceFallbackStateDir(options.startDir);return fallbackDir&&existsSync6(resolve4(fallbackDir,WORKSPACE_FALLBACK_MARKER))?{dir:fallbackDir,source:"workspace-fallback"}:{dir:join3(options.homeDir??homedir(),DEFAULT_STATE_DIR_NAME),source:"home"}}function isCliStateAccessFailure(error){return error instanceof Error&&"code"in error&&typeof error.code=="string"&&["EACCES","EPERM","EROFS"].includes(error.code??"")}function activateWorkspaceFallback(startDir=getInvocationCwd()){let fallbackDir=resolveWorkspaceFallbackStateDir(startDir);return fallbackDir?(mkdirSync(fallbackDir,{recursive:!0}),writeFileSync2(resolve4(fallbackDir,WORKSPACE_FALLBACK_MARKER),`active
|
|
2228
2228
|
`,"utf8"),activeFallbackStateDir=fallbackDir,fallbackDir):null}function emitFallbackWarning(originalPath,fallbackDir){emittedFallbackWarnings.has(fallbackDir)||(emittedFallbackWarnings.add(fallbackDir),console.warn([`\u68C0\u6D4B\u5230 CLI state \u9ED8\u8BA4\u76EE\u5F55\u4E0D\u53EF\u5199\uFF1A${originalPath}`,`\u5DF2\u81EA\u52A8\u5207\u6362\u5230\u4ED3\u5E93\u5185\u672C\u5730\u72B6\u6001\u76EE\u5F55\uFF1A${fallbackDir}`,"\u5982\u9700\u56FA\u5B9A\u8BE5\u884C\u4E3A\uFF0C\u53EF\u663E\u5F0F\u8BBE\u7F6E `PLATFORM_STATE_DIR`\u3002"].join(`
|
|
2229
2229
|
`)))}function withCliStateFileWriteFallback(args){let primary=resolveCliStateLocation(args.resolution),primaryPath=join3(primary.dir,args.fileName);try{return args.write({filePath:primaryPath,stateDir:primary.dir})}catch(error){if(!isCliStateAccessFailure(error))throw error;let configuredStateDir=args.resolution?.configuredStateDir??process.env.PLATFORM_STATE_DIR?.trim();if(primary.source!=="home"||configuredStateDir?.trim())throw new CliStateAccessError(args.operation,primaryPath,error);try{let fallbackDir=activateWorkspaceFallback(args.resolution?.startDir);if(!fallbackDir)throw new CliStateAccessError(args.operation,primaryPath,error);emitFallbackWarning(primaryPath,fallbackDir);let fallbackPath=join3(fallbackDir,args.fileName);try{return args.write({filePath:fallbackPath,stateDir:fallbackDir})}catch(fallbackError){throw isCliStateAccessFailure(fallbackError)?new CliStateAccessError(args.operation,fallbackPath,fallbackError):fallbackError}}catch(fallbackError){throw fallbackError instanceof CliStateAccessError?fallbackError:isCliStateAccessFailure(fallbackError)?new CliStateAccessError(args.operation,primaryPath,fallbackError):fallbackError}}}function resolveCliStateDir(options={}){return resolveCliStateLocation(options).dir}function resolveCliStateFilePath(fileName){return join3(resolveCliStateDir(),fileName)}var DEFAULT_CONTROL_API_BASE_URL="http://localhost:7001",DEFAULT_RUNTIME_ENDPOINT_CAPABILITIES="end_user_auth,cms",runtimeEndpointCapabilities=["end_user_auth","workflow","end_user_notification"],publicEndpointCapabilities=["cms","asset_library"];function getControlApiBaseUrl(env=process.env){let configured=env.CONTROL_API_BASE_URL?.trim();if(configured&&configured.length>0)return configured;let profileDefault=getDistributionProfile().defaults?.CONTROL_API_BASE_URL?.trim();return profileDefault&&profileDefault.length>0?profileDefault:DEFAULT_CONTROL_API_BASE_URL}function resolveControlApiEndpoint(args={}){let env=args.env??process.env,controlApiBaseUrl=getControlApiBaseUrl(env),allowlist=readRuntimeEndpointCapabilityAllowlist(env);return(args.requestClass==="runtime"&&isRuntimeEndpointCapabilityEnabled(args.capability,allowlist)?readOptionalBaseUrl(env.RUNTIME_API_BASE_URL)??readOptionalBaseUrl(env.PUBLIC_API_BASE_URL)??controlApiBaseUrl:args.requestClass==="public"&&isRuntimeEndpointCapabilityEnabled(args.capability,allowlist)?readOptionalBaseUrl(env.PUBLIC_API_BASE_URL)??readOptionalBaseUrl(env.RUNTIME_API_BASE_URL)??controlApiBaseUrl:void 0)??controlApiBaseUrl}function listResolvedControlApiEndpoints(env=process.env){let controlApiBaseUrl=getControlApiBaseUrl(env),runtimeBaseUrl=readOptionalBaseUrl(env.RUNTIME_API_BASE_URL)??readOptionalBaseUrl(env.PUBLIC_API_BASE_URL)??controlApiBaseUrl,publicBaseUrl=readOptionalBaseUrl(env.PUBLIC_API_BASE_URL)??readOptionalBaseUrl(env.RUNTIME_API_BASE_URL)??controlApiBaseUrl,allowlist=parseRuntimeEndpointCapabilityAllowlist(readRuntimeEndpointCapabilityAllowlist(env)),runtimeCapabilities=filterAllowedEndpointCapabilities(runtimeEndpointCapabilities,allowlist),publicCapabilities=filterAllowedEndpointCapabilities(publicEndpointCapabilities,allowlist);return[{role:"control",baseUrl:controlApiBaseUrl,enabled:!0,capabilities:[],requestClass:"control"},{role:"runtime",baseUrl:runtimeBaseUrl,enabled:runtimeBaseUrl!=null&&runtimeCapabilities.length>0,capabilities:runtimeCapabilities,requestClass:"runtime",...runtimeBaseUrl==null?{reason:"not_configured"}:runtimeCapabilities.length===0?{reason:"disabled_by_allowlist"}:{}},{role:"public",baseUrl:publicBaseUrl,enabled:publicBaseUrl!=null&&publicCapabilities.length>0,capabilities:publicCapabilities,requestClass:"public",...publicBaseUrl==null?{reason:"not_configured"}:publicCapabilities.length===0?{reason:"disabled_by_allowlist"}:{}}]}function createControlApiSdk(args){return createPlatformSdk({baseUrl:args.baseUrl??resolveControlApiEndpoint({capability:args.capability,requestClass:args.requestClass}),getHeaders:()=>({Authorization:`Bearer ${args.accessToken}`,...args.tenantId?{"X-Tenant-Id":args.tenantId}:{},...Object.fromEntries(Object.entries(args.extraHeaders??{}).filter(([,value])=>value!=null))})})}function readOptionalBaseUrl(value){let trimmed=value?.trim();return trimmed&&trimmed.length>0?trimmed:void 0}function isRuntimeEndpointCapabilityEnabled(capability,rawAllowlist){if(!capability)return!1;let allowlist=parseRuntimeEndpointCapabilityAllowlist(rawAllowlist);return allowlist.has("*")||allowlist.has(capability)}function readRuntimeEndpointCapabilityAllowlist(env){return Object.prototype.hasOwnProperty.call(env,"CONTROL_API_RUNTIME_ENDPOINT_CAPABILITIES")?env.CONTROL_API_RUNTIME_ENDPOINT_CAPABILITIES:DEFAULT_RUNTIME_ENDPOINT_CAPABILITIES}function parseRuntimeEndpointCapabilityAllowlist(value){return new Set((value??"").split(/[,\s]+/u).map(item=>item.trim()).filter(item=>item.length>0))}function filterAllowedEndpointCapabilities(capabilities,allowlist){return allowlist.has("*")?[...capabilities]:capabilities.filter(capability=>allowlist.has(capability))}var TOKEN_REFRESH_SKEW_MS=6e4,PAT_LOGIN_VALIDITY_MS=10080*60*1e3,CliSessionExpiredError=class extends Error{detail;constructor(detail){super(detail&&detail.trim().length>0?`CLI \u4F1A\u8BDD\u5DF2\u5931\u6548\uFF08${detail.trim()}\uFF09\uFF0C\u8BF7\u91CD\u65B0\u6267\u884C \`platform login\`\u3002`:"CLI \u4F1A\u8BDD\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u6267\u884C `platform login`\u3002"),this.detail=detail,this.name="CliSessionExpiredError"}};function sleep(ms){return new Promise(resolve16=>{setTimeout(resolve16,ms)})}function normalizeOidcGrantFailure(detail){let normalized=detail?.trim();return normalized&&(/(^|[\s:_-])(invalid_grant)([\s:_-]|$)/iu.test(normalized)||/grant request is invalid/iu.test(normalized))?normalized:null}function mapTokenFailureToAuthError(args){let detail=normalizeOidcGrantFailure(args.errorDescription)??normalizeOidcGrantFailure(args.error);return detail?new CliSessionExpiredError(detail):new Error(args.errorDescription??args.error??args.fallback)}function maybeWrapCredentialRefreshError(error){if(error instanceof CliSessionExpiredError)throw error;if(error instanceof Error){let detail=normalizeOidcGrantFailure(error.message);if(detail)throw new CliSessionExpiredError(detail)}throw error}function applyResource(params,audience){if(audience){if(/^[a-z][a-z0-9+.-]*:/iu.test(audience)){params.set("resource",audience);return}params.set("audience",audience)}}function normalizeAuthorizationPrompt(scopes,prompt){let normalized=(prompt??"").split(/\s+/u).map(item=>item.trim()).filter(Boolean);return scopes.includes("offline_access")&&!normalized.includes("consent")&&normalized.push("consent"),normalized.length>0?normalized.join(" "):void 0}function getLoginSuccessHtml(){return`<!DOCTYPE html>
|
|
@@ -2564,12 +2564,12 @@ ${normalized}`}function countExecutableSqlStatements(sql){return stripSqlComment
|
|
|
2564
2564
|
`);return}if(action==="publish"){let title=readStringOption9(args,"title");if(!title)throw new Error("`platform notification end-user publish` \u9700\u8981 `--title <text>`\u3002");let result=await endUserNotificationUser.publish({title,body:readStringOption9(args,"body")??null,notification_type:readStringOption9(args,"kind")??"notification",idempotency_key:readStringOption9(args,"idempotency-key")??defaultIdempotencyKey("publish",appId,endUserId),object_ref:buildOptionalObjectRef(args)});process5.stdout.write(`${JSON.stringify(result,null,2)}
|
|
2565
2565
|
`);return}if(action==="reminder"){let title=readStringOption9(args,"title"),remindAt=readStringOption9(args,"remind-at");if(!title||!remindAt)throw new Error("`platform notification end-user reminder` \u9700\u8981 `--title <text>` \u548C `--remind-at <ISO datetime>`\u3002");let result=await endUserNotificationUser.remind({title,remind_at:remindAt,body:readStringOption9(args,"body")??null,idempotency_key:readStringOption9(args,"idempotency-key")??defaultIdempotencyKey("reminder",appId,endUserId),object_ref:buildOptionalObjectRef(args)});process5.stdout.write(`${JSON.stringify(result,null,2)}
|
|
2566
2566
|
`);return}throw new Error("`platform notification end-user` \u76EE\u524D\u4EC5\u652F\u6301 `users`\u3001`inbox`\u3001`unread`\u3001`publish` \u6216 `reminder`\u3002")}function resolveNotificationContext(args){let storedContext=loadStoredCliContext(),binding;try{binding=readBinding(findAppRoot(process5.cwd()))?.binding}catch{binding=void 0}return{tenantId:readStringOption9(args,"tenant")??binding?.tenant_id??storedContext?.selected_app_tenant_id,appId:readStringOption9(args,"app")??binding?.app_id??storedContext?.selected_app_id}}function readStringOption9(args,key){let value=args.options[key];return typeof value=="string"?value:void 0}function readNumberOption4(args,key){let value=readStringOption9(args,key);if(!value)return;let parsed=Number.parseInt(value,10);return Number.isFinite(parsed)?parsed:void 0}function isWritableInboxStatus(value){return value==="unread"||value==="read"||value==="dismissed"||value==="archived"}function buildOptionalObjectRef(args){let resourceType=readStringOption9(args,"resource-type"),resourceId=readStringOption9(args,"resource-id");if(!(!resourceType||!resourceId))return{resource_type:resourceType,resource_id:resourceId}}function defaultIdempotencyKey(prefix,appId,endUserId){return`${prefix}:${appId}:${endUserId}:${Date.now()}`}async function runPublishCommand(args){let subcommand=resolvePublishSubcommand(args);if(hasHelpFlag5(args)){printPublishHelp();return}switch(subcommand){case"status":await runPublishStatus(args);return;case"set":await runPublishSet(args);return;case"rollback":await runPublishRollback(args);return}}async function runPublishStatus(args){let context=await loadPublishContext(args),settings=await context.sdk.getTenantAppPublishSettings(context.appId);if(await syncLocalControlPlaneSummary({sdk:context.sdk,startDir:process.cwd(),tenantId:context.tenantId,appId:context.appId}),args.options.json===!0){process.stdout.write(`${JSON.stringify(settings,null,2)}
|
|
2567
|
-
`);return}printPublishSettings(settings,{title:`\u5E94\u7528\u6B63\u5F0F\u53D1\u5E03\u72B6\u6001: ${context.appId}`})}async function runPublishSet(args){let context=await loadPublishContext(args),publishStatus=readPublishStatusOption(args),sourceVersionId=readStringOption10(args,"source-version")
|
|
2568
|
-
`));let settings=await context.sdk.updateTenantAppPublishSettings(context.appId,{...publishStatus?{publish_status:publishStatus}:{},...sourceVersionId?{source_version_id:sourceVersionId}:{}
|
|
2567
|
+
`);return}printPublishSettings(settings,{title:`\u5E94\u7528\u6B63\u5F0F\u53D1\u5E03\u72B6\u6001: ${context.appId}`})}async function runPublishSet(args){let context=await loadPublishContext(args),publishStatus=readPublishStatusOption(args),sourceVersionId=readStringOption10(args,"source-version");if(!publishStatus&&!sourceVersionId)throw new Error(["`platform publish set` \u81F3\u5C11\u9700\u8981\u4E00\u4E2A\u53D8\u66F4\u9879\u3002","\u53EF\u9009\uFF1A","1. `--status published|unpublished`","2. `--source-version <srcver>`"].join(`
|
|
2568
|
+
`));let settings=await context.sdk.updateTenantAppPublishSettings(context.appId,{...publishStatus?{publish_status:publishStatus}:{},...sourceVersionId?{source_version_id:sourceVersionId}:{}});if(await syncLocalControlPlaneSummary({sdk:context.sdk,startDir:process.cwd(),tenantId:context.tenantId,appId:context.appId}),args.options.json===!0){process.stdout.write(`${JSON.stringify(settings,null,2)}
|
|
2569
2569
|
`);return}printPublishSettings(settings,{title:`\u5E94\u7528\u6B63\u5F0F\u53D1\u5E03\u8BBE\u7F6E\u5DF2\u66F4\u65B0: ${context.appId}`})}async function runPublishRollback(args){let context=await loadPublishContext(args),targetSourceVersionId=args.rest[1]??readStringOption10(args,"source-version");if(!targetSourceVersionId)throw new Error(["`platform publish rollback <source-version-id>` \u7F3A\u5C11\u76EE\u6807\u7248\u672C\u3002","\u793A\u4F8B\uFF1A","1. `platform publish rollback srcver-123`","2. `platform publish rollback --source-version srcver-123`"].join(`
|
|
2570
2570
|
`));let settings=await context.sdk.updateTenantAppPublishSettings(context.appId,{source_version_id:targetSourceVersionId});if(await syncLocalControlPlaneSummary({sdk:context.sdk,startDir:process.cwd(),tenantId:context.tenantId,appId:context.appId}),args.options.json===!0){process.stdout.write(`${JSON.stringify(settings,null,2)}
|
|
2571
|
-
`);return}printPublishSettings(settings,{title:`\u5E94\u7528\u6B63\u5F0F\u7248\u672C\u5DF2\u5207\u56DE: ${context.appId}`})}async function loadPublishContext(args){let credentials=await loadStoredCredentialsEnsuringFresh();if(!credentials)throw new Error("\u672A\u627E\u5230\u672C\u5730\u51ED\u636E\uFF0C\u8BF7\u5148\u6267\u884C `platform login`\u3002");let binding=tryReadCurrentBinding()?.binding,tenantId=readStringOption10(args,"tenant")??binding?.tenant_id,appId=readStringOption10(args,"app")??binding?.app_id;if(!tenantId||!appId)throw new Error("`platform publish` \u9700\u8981\u5DF2\u7ED1\u5B9A\u9879\u76EE\uFF0C\u6216\u663E\u5F0F\u4F20\u5165 `--tenant` \u4E0E `--app`\u3002");let apiToken=selectApiToken(credentials);return{tenantId,appId,sdk:createControlApiSdk({accessToken:apiToken,tenantId,capability:"dashboard",requestClass:"control"})}}function tryReadCurrentBinding(){try{return readBinding(findAppRoot(process.cwd()))}catch{return null}}function resolvePublishSubcommand(args){let subcommand=args.rest[0];return subcommand?subcommand==="status"||subcommand==="set"||subcommand==="rollback"?subcommand:null:"status"}function hasHelpFlag5(args){return args.options.help===!0||args.options.h===!0}function readStringOption10(args,key){let value=args.options[key];return typeof value=="string"?value:void 0}function readPublishStatusOption(args){let value=readStringOption10(args,"status");return value==="published"||value==="unpublished"?value:void 0}function
|
|
2572
|
-
`))}function printPublishSettings(settings,context){let candidateLines=settings.candidates.length>0?settings.candidates.map((candidate,index)=>{let label=candidate.message?.trim()||candidate.source_version_id;return`${index+1}. ${label} ${candidate.source_version_id}`}):["- \u65E0\u53EF\u9009\u7248\u672C"];process.stdout.write([context.title,`\u53D1\u5E03\u72B6\u6001: ${settings.publish_status==="published"?"\u5DF2\u53D1\u5E03":"\u672A\u53D1\u5E03"}`,`\u786E\u8BA4\u90E8\u7F72\u5F62\u6001: ${settings.deployment_class_confirmed??"-"}`,`\u5F53\u524D\u90E8\u7F72\u7248\u672C: ${settings.current_source_version_id??"-"}`,`\u5F53\u524D release: ${settings.current_release_id??"-"}`,`\u5F53\u524D deployment: ${settings.current_deployment_id??"-"}`,`\u5F53\u524D\u90E8\u7F72\u5F62\u6001: ${settings.current_deployment_class_used??"-"}`,`\u5F53\u524D\u4EA7\u7269\u7C7B\u578B: ${settings.current_artifact_kind??"-"}`,`\u5F53\u524D\u6267\u884C\u6A21\u5F0F: ${settings.current_execution_mode??"-"}`,`\u8FD0\u884C\u9A71\u52A8: ${settings.current_runtime_driver??"-"}`,`\u8FD0\u884C\u5B9E\u4F8B: ${settings.current_runtime_instance_id??"-"}`,`\u5F53\u524D\u5BF9\u8C61\u524D\u7F00: ${settings.current_object_prefix??"-"}`,`\
|
|
2571
|
+
`);return}printPublishSettings(settings,{title:`\u5E94\u7528\u6B63\u5F0F\u7248\u672C\u5DF2\u5207\u56DE: ${context.appId}`})}async function loadPublishContext(args){let credentials=await loadStoredCredentialsEnsuringFresh();if(!credentials)throw new Error("\u672A\u627E\u5230\u672C\u5730\u51ED\u636E\uFF0C\u8BF7\u5148\u6267\u884C `platform login`\u3002");let binding=tryReadCurrentBinding()?.binding,tenantId=readStringOption10(args,"tenant")??binding?.tenant_id,appId=readStringOption10(args,"app")??binding?.app_id;if(!tenantId||!appId)throw new Error("`platform publish` \u9700\u8981\u5DF2\u7ED1\u5B9A\u9879\u76EE\uFF0C\u6216\u663E\u5F0F\u4F20\u5165 `--tenant` \u4E0E `--app`\u3002");let apiToken=selectApiToken(credentials);return{tenantId,appId,sdk:createControlApiSdk({accessToken:apiToken,tenantId,capability:"dashboard",requestClass:"control"})}}function tryReadCurrentBinding(){try{return readBinding(findAppRoot(process.cwd()))}catch{return null}}function resolvePublishSubcommand(args){let subcommand=args.rest[0];return subcommand?subcommand==="status"||subcommand==="set"||subcommand==="rollback"?subcommand:null:"status"}function hasHelpFlag5(args){return args.options.help===!0||args.options.h===!0}function readStringOption10(args,key){let value=args.options[key];return typeof value=="string"?value:void 0}function readPublishStatusOption(args){let value=readStringOption10(args,"status");return value==="published"||value==="unpublished"?value:void 0}function printPublishHelp(){process.stdout.write(["platform publish","","\u7528\u6CD5\uFF1A"," platform publish"," platform publish status"," platform publish set [--source-version <srcver>] [--status published|unpublished]"," platform publish rollback <srcver>","","\u8BF4\u660E\uFF1A"," - `platform publish` \u9ED8\u8BA4\u7B49\u4EF7\u4E8E `platform publish status`"," - `publish status` \u67E5\u770B\u5E94\u7528\u6B63\u5F0F\u53D1\u5E03\u72B6\u6001\u4E0E\u5F53\u524D\u90E8\u7F72\u7248\u672C"," - `publish set` \u4FEE\u6539\u53D1\u5E03\u72B6\u6001\uFF0C\u6216\u5207\u6362\u5F53\u524D\u90E8\u7F72\u7248\u672C"," - `publish rollback` \u5C06\u5F53\u524D\u6B63\u5F0F\u7248\u672C\u5207\u56DE\u6307\u5B9A\u6E90\u7801\u7248\u672C",""].join(`
|
|
2572
|
+
`))}function printPublishSettings(settings,context){let candidateLines=settings.candidates.length>0?settings.candidates.map((candidate,index)=>{let label=candidate.message?.trim()||candidate.source_version_id;return`${index+1}. ${label} ${candidate.source_version_id}`}):["- \u65E0\u53EF\u9009\u7248\u672C"];process.stdout.write([context.title,`\u53D1\u5E03\u72B6\u6001: ${settings.publish_status==="published"?"\u5DF2\u53D1\u5E03":"\u672A\u53D1\u5E03"}`,`\u786E\u8BA4\u90E8\u7F72\u5F62\u6001: ${settings.deployment_class_confirmed??"-"}`,`\u5F53\u524D\u90E8\u7F72\u7248\u672C: ${settings.current_source_version_id??"-"}`,`\u5F53\u524D release: ${settings.current_release_id??"-"}`,`\u5F53\u524D deployment: ${settings.current_deployment_id??"-"}`,`\u5F53\u524D\u90E8\u7F72\u5F62\u6001: ${settings.current_deployment_class_used??"-"}`,`\u5F53\u524D\u4EA7\u7269\u7C7B\u578B: ${settings.current_artifact_kind??"-"}`,`\u5F53\u524D\u6267\u884C\u6A21\u5F0F: ${settings.current_execution_mode??"-"}`,`\u8FD0\u884C\u9A71\u52A8: ${settings.current_runtime_driver??"-"}`,`\u8FD0\u884C\u5B9E\u4F8B: ${settings.current_runtime_instance_id??"-"}`,`\u5F53\u524D\u5BF9\u8C61\u524D\u7F00: ${settings.current_object_prefix??"-"}`,`\u516C\u5F00\u6B63\u5F0F\u5165\u53E3: ${settings.public_prod_url??"-"}`,`\u8FD0\u884C\u5065\u5EB7\u68C0\u67E5: ${settings.current_runtime_health_check_url??"-"}`,"\u53EF\u9009\u6B63\u5F0F\u7248\u672C:",...candidateLines,""].join(`
|
|
2573
2573
|
`))}import{createHash as createHash10}from"node:crypto";import{readFile,stat}from"node:fs/promises";import{join as join19,resolve as resolve15}from"node:path";import{spawn as spawn6}from"node:child_process";function resolvePreviewProjectContext(appRoot,args){let sourceContext=readSourceContext(appRoot)?.sourceContext,binding=readBinding(appRoot)?.binding;return{tenantId:readStringOption11(args,"tenant")??sourceContext?.tenant_id??binding?.tenant_id,appId:readStringOption11(args,"app")??sourceContext?.app_id??binding?.app_id}}var SOURCE_VERSION_REUSE_SCAN_LIMIT=5,BUILD_REUSE_SCAN_LIMIT=20,PREVIEW_BUILD_POLL_TIMEOUT_MS=180*1e3,PREVIEW_BUILD_POLL_INTERVAL_MS=1500;async function runPreviewCommand(args){if(hasHelpFlag6(args)){printPreviewHelp(resolveExplicitPreviewMode(args));return}if(resolvePreviewMode(args)==="open"){await runPreviewOpenCommand(args);return}await runPreviewGenerateCommand(args)}async function runPreviewGenerateCommand(args){let context=await loadPreviewContext(args),requestedBy=await resolveRequestedBy3(context.sdk),fromBuildId=readStringOption11(args,"from-build"),explicitSourceVersionId=readStringOption11(args,"source-version"),noWait=args.options["no-wait"]===!0,forceBuild=args.options["force-build"]===!0,localBuild=args.options["local-build"]===!0||readStringOption11(args,"build-mode")==="local";if(args.options["wait-build-only"]===!0)throw new Error("`platform preview generate --wait-build-only` \u5DF2\u79FB\u9664\uFF1B\u8BF7\u6539\u7528 `platform build run --source-version <srcver> --wait`\u3002");let autoResources=await maybeAutoApplyPreviewResources({args,context,requestedBy,sourceVersionId:explicitSourceVersionId,fromBuildId});if(fromBuildId){let preview=await context.sdk.createTenantAppPreview(context.appId,{build_id:fromBuildId}).catch(async error=>{throw await formatPreviewCommandError(context.sdk,error,{appId:context.appId,buildId:fromBuildId,stage:"preview"})});if(isPreviewBuildPendingResponse(preview))throw new Error(`preview unexpectedly returned build pending for explicit build: ${fromBuildId}`);if(updateSourceContext(context.appRoot,{tenant_id:context.tenantId,app_id:context.appId,env:"preview",last_preview_source_version_id:preview.source_version_id,last_preview_build_id:fromBuildId,last_preview_generated_at:new Date().toISOString()}),await syncLocalControlPlaneSummary({sdk:context.sdk,startDir:context.appRoot,tenantId:context.tenantId,appId:context.appId}),args.options.json===!0){let postCheck3=await buildPreviewSuccessPostCheckPayload(context.sdk,context.appId,preview);process.stdout.write(`${JSON.stringify({auto_resources:autoResources,preview,post_check:postCheck3},null,2)}
|
|
2574
2574
|
`);return}let postCheck2=await buildPreviewSuccessPostCheckPayload(context.sdk,context.appId,preview);printPreviewDeployResult(preview,{buildId:fromBuildId,fromBuildId,postCheck:postCheck2});return}let buildConfig=readBuildConfig2(args.options),sourceVersionId=explicitSourceVersionId,createdSourceVersionId,reusedSourceVersionId,localWorkspaceFiles=[];if((!sourceVersionId||localBuild)&&(assertSourceWorkspaceCloudUploadPolicy(context.appRoot,localBuild?"--local-build":"platform preview generate"),localWorkspaceFiles=collectSourceWorkspaceFiles(context.appRoot).files),!sourceVersionId){let sourceVersionResolution=await resolvePreviewSourceVersion({sdk:context.sdk,appId:context.appId,appRoot:context.appRoot,localFiles:localWorkspaceFiles,message:readStringOption11(args,"message")??"preview from local workspace"});sourceVersionId=sourceVersionResolution.sourceVersionId,createdSourceVersionId=sourceVersionResolution.createdSourceVersionId,reusedSourceVersionId=sourceVersionResolution.reusedSourceVersionId}if(localBuild){await runLocalBuildPreviewFlow({args,context,requestedBy,sourceVersionId,localWorkspace:localWorkspaceFiles,autoResources,createdSourceVersionId,reusedSourceVersionId,requestedSourceVersionId:explicitSourceVersionId,buildConfig});return}let previewOutcome=await requestPreviewFromSourceVersion({sdk:context.sdk,appId:context.appId,appRoot:context.appRoot,sourceVersionId,buildConfig,forceBuild});if(previewOutcome.kind==="build_started"){if(!noWait){let continued=await continuePreviewAfterBuild({sdk:context.sdk,appId:context.appId,build:previewOutcome.build});if(updateSourceContext(context.appRoot,{tenant_id:context.tenantId,app_id:context.appId,env:"preview",last_preview_source_version_id:continued.preview.source_version_id,last_preview_build_id:continued.build.id,last_preview_generated_at:new Date().toISOString()}),await syncLocalControlPlaneSummary({sdk:context.sdk,startDir:context.appRoot,tenantId:context.tenantId,appId:context.appId}),args.options.json===!0){let postCheck3=await buildPreviewSuccessPostCheckPayload(context.sdk,context.appId,continued.preview);process.stdout.write(`${JSON.stringify({stage:"preview_completed",auto_resources:autoResources,build:continued.build,preview:continued.preview,post_check:postCheck3,...reusedSourceVersionId?{reused_source_version_id:reusedSourceVersionId}:{},...createdSourceVersionId?{created_source_version_id:createdSourceVersionId}:{}},null,2)}
|
|
2575
2575
|
`);return}let postCheck2=await buildPreviewSuccessPostCheckPayload(context.sdk,context.appId,continued.preview);printPreviewDeployResult(continued.preview,{buildId:continued.build.id,createdSourceVersionId,reusedSourceVersionId,requestedSourceVersionId:explicitSourceVersionId,postCheck:postCheck2});return}if(args.options.json===!0){process.stdout.write(`${JSON.stringify({stage:"build_started",auto_resources:autoResources,build:previewOutcome.build,...reusedSourceVersionId?{reused_source_version_id:reusedSourceVersionId}:{},...createdSourceVersionId?{created_source_version_id:createdSourceVersionId}:{}},null,2)}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voobase/cli",
|
|
3
|
-
"version": "0.1.0-nonprod.
|
|
3
|
+
"version": "0.1.0-nonprod.1900",
|
|
4
4
|
"private": false,
|
|
5
5
|
"platformDistributionProfile": {
|
|
6
6
|
"name": "nonprod",
|
|
@@ -50,10 +50,10 @@
|
|
|
50
50
|
"bundleDependencies": [],
|
|
51
51
|
"platformDistributionBuild": {
|
|
52
52
|
"channel": "nonprod",
|
|
53
|
-
"version": "0.1.0-nonprod.
|
|
54
|
-
"sequence":
|
|
55
|
-
"gitSha": "
|
|
56
|
-
"fullGitSha": "
|
|
57
|
-
"buildId": "0.1.0-nonprod.
|
|
53
|
+
"version": "0.1.0-nonprod.1900",
|
|
54
|
+
"sequence": 1900,
|
|
55
|
+
"gitSha": "07e9edc",
|
|
56
|
+
"fullGitSha": "07e9edc3f59452c5a8361a71f1a660df8a000f55",
|
|
57
|
+
"buildId": "0.1.0-nonprod.1900+07e9edc"
|
|
58
58
|
}
|
|
59
59
|
}
|