fix: cos的状态码判断错误
This commit is contained in:
parent
9025b7d8b4
commit
9c5fb29259
|
|
@ -266,12 +266,15 @@ export class BackendRuntimeContext extends BRC {
|
|||
try {
|
||||
const { a: appId, t: tokenValue, rm, userId, v } = data;
|
||||
this.appVersion = v;
|
||||
const promises = [];
|
||||
const promises = []; // 这里需要并行,下面的await检查略过
|
||||
if (appId) {
|
||||
// @oak-ignore
|
||||
promises.push(this.setApplication(appId));
|
||||
}
|
||||
if (tokenValue || userId) {
|
||||
// @oak-ignore
|
||||
promises.push(this.setTokenValue(tokenValue, userId));
|
||||
// @oak-ignore
|
||||
promises.push(this.setPlatformManager(tokenValue, userId));
|
||||
}
|
||||
if (promises.length > 0) {
|
||||
|
|
@ -379,6 +382,7 @@ export class BackendRuntimeContext extends BRC {
|
|||
return !!this.amIReallyRoot;
|
||||
}
|
||||
async sendMessage(data) {
|
||||
// @oak-ignore 这里直接return,依赖上层await,先跳过检查
|
||||
return this.operate('message', {
|
||||
id: await generateNewIdAsync(),
|
||||
action: 'create',
|
||||
|
|
|
|||
|
|
@ -68,11 +68,11 @@ export default class ALiYun {
|
|||
// 待测试
|
||||
if (response.errMsg === 'uploadFile:ok') {
|
||||
const data = JSON.parse(response.data);
|
||||
isSuccess = !!(data.status === 204);
|
||||
isSuccess = data.status === 200 || data.status === 204;
|
||||
}
|
||||
}
|
||||
else {
|
||||
isSuccess = !!(response.status === 204);
|
||||
isSuccess = response.status === 200 || response.status === 204;
|
||||
}
|
||||
// 解析回调
|
||||
if (isSuccess) {
|
||||
|
|
|
|||
|
|
@ -55,11 +55,11 @@ export default class CTYun {
|
|||
// 待测试
|
||||
if (response.errMsg === 'uploadFile:ok') {
|
||||
const data = JSON.parse(response.data);
|
||||
isSuccess = !!(data.status === 204);
|
||||
isSuccess = data.status === 200 || data.status === 204;
|
||||
}
|
||||
}
|
||||
else {
|
||||
isSuccess = !!(response.status === 204);
|
||||
isSuccess = response.status === 200 || response.status === 204;
|
||||
}
|
||||
// 解析回调
|
||||
if (isSuccess) {
|
||||
|
|
|
|||
|
|
@ -59,11 +59,11 @@ export default class TencentYun {
|
|||
// 待测试
|
||||
if (response.errMsg === 'uploadFile:ok') {
|
||||
const data = JSON.parse(response.data);
|
||||
isSuccess = !!(data.status === 204);
|
||||
isSuccess = data.status === 200 || data.status === 204;
|
||||
}
|
||||
}
|
||||
else {
|
||||
isSuccess = !!(response.status === 204);
|
||||
isSuccess = response.status === 200 || response.status === 204;
|
||||
}
|
||||
// 解析回调
|
||||
if (isSuccess) {
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
declare const checkers: (import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "applicationPassport", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "article", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "articleMenu", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "token", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "mobile", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "message", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "parasite", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "system", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "platform", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>>)[];
|
||||
declare const checkers: (import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "applicationPassport", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "article", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "articleMenu", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "mobile", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "message", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "parasite", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "system", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "platform", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "token", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>>)[];
|
||||
export default checkers;
|
||||
|
|
|
|||
|
|
@ -269,12 +269,15 @@ class BackendRuntimeContext extends BackendRuntimeContext_1.BackendRuntimeContex
|
|||
try {
|
||||
const { a: appId, t: tokenValue, rm, userId, v } = data;
|
||||
this.appVersion = v;
|
||||
const promises = [];
|
||||
const promises = []; // 这里需要并行,下面的await检查略过
|
||||
if (appId) {
|
||||
// @oak-ignore
|
||||
promises.push(this.setApplication(appId));
|
||||
}
|
||||
if (tokenValue || userId) {
|
||||
// @oak-ignore
|
||||
promises.push(this.setTokenValue(tokenValue, userId));
|
||||
// @oak-ignore
|
||||
promises.push(this.setPlatformManager(tokenValue, userId));
|
||||
}
|
||||
if (promises.length > 0) {
|
||||
|
|
@ -382,6 +385,7 @@ class BackendRuntimeContext extends BackendRuntimeContext_1.BackendRuntimeContex
|
|||
return !!this.amIReallyRoot;
|
||||
}
|
||||
async sendMessage(data) {
|
||||
// @oak-ignore 这里直接return,依赖上层await,先跳过检查
|
||||
return this.operate('message', {
|
||||
id: await (0, uuid_1.generateNewIdAsync)(),
|
||||
action: 'create',
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
declare const _default: (import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "applicationPassport", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "system", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "passport", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthApplication", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthProvider", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthUser", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthUserAuthorization", import("../context/BackendRuntimeContext").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "mobile", import("..").BRC<import("../oak-app-domain").EntityDict>>)[];
|
||||
declare const _default: (import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "system", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "passport", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthApplication", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthProvider", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthUser", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthUserAuthorization", import("../context/BackendRuntimeContext").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "applicationPassport", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "mobile", import("..").BRC<import("../oak-app-domain").EntityDict>>)[];
|
||||
export default _default;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ export declare function createToDo<ED extends EntityDict & BaseEntityDict, T ext
|
|||
redirectTo: EntityDict['toDo']['OpSchema']['redirectTo'];
|
||||
entity: any;
|
||||
entityId: string;
|
||||
}, userIds?: string[]): Promise<0 | 1>;
|
||||
}, userIds?: string[]): Promise<1 | 0>;
|
||||
/**
|
||||
* 完成todo例程,当在entity对象上进行action操作时(操作条件是filter),将对应的todo完成
|
||||
* 必须在entity的action的后trigger中调用
|
||||
|
|
|
|||
|
|
@ -70,11 +70,11 @@ class ALiYun {
|
|||
// 待测试
|
||||
if (response.errMsg === 'uploadFile:ok') {
|
||||
const data = JSON.parse(response.data);
|
||||
isSuccess = !!(data.status === 204);
|
||||
isSuccess = data.status === 200 || data.status === 204;
|
||||
}
|
||||
}
|
||||
else {
|
||||
isSuccess = !!(response.status === 204);
|
||||
isSuccess = response.status === 200 || response.status === 204;
|
||||
}
|
||||
// 解析回调
|
||||
if (isSuccess) {
|
||||
|
|
|
|||
|
|
@ -57,11 +57,11 @@ class CTYun {
|
|||
// 待测试
|
||||
if (response.errMsg === 'uploadFile:ok') {
|
||||
const data = JSON.parse(response.data);
|
||||
isSuccess = !!(data.status === 204);
|
||||
isSuccess = data.status === 200 || data.status === 204;
|
||||
}
|
||||
}
|
||||
else {
|
||||
isSuccess = !!(response.status === 204);
|
||||
isSuccess = response.status === 200 || response.status === 204;
|
||||
}
|
||||
// 解析回调
|
||||
if (isSuccess) {
|
||||
|
|
|
|||
|
|
@ -61,11 +61,11 @@ class TencentYun {
|
|||
// 待测试
|
||||
if (response.errMsg === 'uploadFile:ok') {
|
||||
const data = JSON.parse(response.data);
|
||||
isSuccess = !!(data.status === 204);
|
||||
isSuccess = data.status === 200 || data.status === 204;
|
||||
}
|
||||
}
|
||||
else {
|
||||
isSuccess = !!(response.status === 204);
|
||||
isSuccess = response.status === 200 || response.status === 204;
|
||||
}
|
||||
// 解析回调
|
||||
if (isSuccess) {
|
||||
|
|
|
|||
191
scripts/build.js
191
scripts/build.js
|
|
@ -1,190 +1 @@
|
|||
const ts = require('typescript');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const { cwd } = require('process');
|
||||
|
||||
// 解析命令行参数
|
||||
function parseArgs() {
|
||||
const args = process.argv.slice(2);
|
||||
let configPath = 'tsconfig.json';
|
||||
|
||||
for (let i = 0; i < args.length; i++) {
|
||||
if (args[i] === '-p' || args[i] === '--project') {
|
||||
if (i + 1 < args.length) {
|
||||
configPath = args[i + 1];
|
||||
break;
|
||||
} else {
|
||||
console.error('error: option \'-p, --project\' argument missing');
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return configPath;
|
||||
}
|
||||
|
||||
// ANSI 颜色代码
|
||||
const colors = {
|
||||
reset: '\x1b[0m',
|
||||
cyan: '\x1b[36m',
|
||||
red: '\x1b[91m',
|
||||
yellow: '\x1b[93m',
|
||||
gray: '\x1b[90m'
|
||||
};
|
||||
|
||||
function compile(configPath) {
|
||||
// 读取 tsconfig.json
|
||||
const configFile = ts.readConfigFile(configPath, ts.sys.readFile);
|
||||
|
||||
if (configFile.error) {
|
||||
console.error(ts.formatDiagnostic(configFile.error, {
|
||||
getCanonicalFileName: f => f,
|
||||
getCurrentDirectory: process.cwd,
|
||||
getNewLine: () => '\n'
|
||||
}));
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// 解析配置
|
||||
const parsedConfig = ts.parseJsonConfigFileContent(
|
||||
configFile.config,
|
||||
ts.sys,
|
||||
path.dirname(configPath)
|
||||
);
|
||||
|
||||
if (parsedConfig.errors.length > 0) {
|
||||
parsedConfig.errors.forEach(diagnostic => {
|
||||
console.error(ts.formatDiagnostic(diagnostic, {
|
||||
getCanonicalFileName: f => f,
|
||||
getCurrentDirectory: process.cwd,
|
||||
getNewLine: () => '\n'
|
||||
}));
|
||||
});
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// 创建编译程序
|
||||
// 根据配置决定是否使用增量编译
|
||||
let program;
|
||||
if (parsedConfig.options.incremental || parsedConfig.options.composite) {
|
||||
// 对于增量编译,使用 createIncrementalProgram
|
||||
const host = ts.createIncrementalCompilerHost(parsedConfig.options);
|
||||
program = ts.createIncrementalProgram({
|
||||
rootNames: parsedConfig.fileNames,
|
||||
options: parsedConfig.options,
|
||||
host: host,
|
||||
configFileParsingDiagnostics: ts.getConfigFileParsingDiagnostics(parsedConfig),
|
||||
});
|
||||
} else {
|
||||
// 普通编译
|
||||
program = ts.createProgram({
|
||||
rootNames: parsedConfig.fileNames,
|
||||
options: parsedConfig.options,
|
||||
});
|
||||
}
|
||||
|
||||
// 执行编译
|
||||
const emitResult = program.emit();
|
||||
|
||||
// 获取诊断信息
|
||||
const allDiagnostics = ts
|
||||
.getPreEmitDiagnostics(program)
|
||||
.concat(emitResult.diagnostics);
|
||||
|
||||
// 输出诊断信息
|
||||
allDiagnostics.forEach(diagnostic => {
|
||||
if (diagnostic.file) {
|
||||
const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(
|
||||
diagnostic.start
|
||||
);
|
||||
const message = ts.flattenDiagnosticMessageText(
|
||||
diagnostic.messageText,
|
||||
'\n'
|
||||
);
|
||||
const isError = diagnostic.category === ts.DiagnosticCategory.Error;
|
||||
const category = isError ? 'error' : 'warning';
|
||||
const categoryColor = isError ? colors.red : colors.yellow;
|
||||
|
||||
console.log(
|
||||
`${colors.cyan}${diagnostic.file.fileName}${colors.reset}:${colors.yellow}${line + 1}${colors.reset}:${colors.yellow}${character + 1}${colors.reset} - ${categoryColor}${category}${colors.reset} ${colors.gray}TS${diagnostic.code}${colors.reset}: ${message}`
|
||||
);
|
||||
} else {
|
||||
const isError = diagnostic.category === ts.DiagnosticCategory.Error;
|
||||
const category = isError ? 'error' : 'warning';
|
||||
const categoryColor = isError ? colors.red : colors.yellow;
|
||||
|
||||
console.log(
|
||||
`${categoryColor}${category}${colors.reset} ${colors.gray}TS${diagnostic.code}${colors.reset}: ${ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n')}`
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
// 输出编译统计
|
||||
const errorCount = allDiagnostics.filter(d => d.category === ts.DiagnosticCategory.Error).length;
|
||||
const warningCount = allDiagnostics.filter(d => d.category === ts.DiagnosticCategory.Warning).length;
|
||||
|
||||
if (errorCount > 0 || warningCount > 0) {
|
||||
if (allDiagnostics.length > 0) {
|
||||
console.log('');
|
||||
}
|
||||
|
||||
const parts = [];
|
||||
if (errorCount > 0) {
|
||||
parts.push(`${errorCount} error${errorCount !== 1 ? 's' : ''}`);
|
||||
}
|
||||
if (warningCount > 0) {
|
||||
parts.push(`${warningCount} warning${warningCount !== 1 ? 's' : ''}`);
|
||||
}
|
||||
console.log(`Found ${parts.join(' and ')}.`);
|
||||
}
|
||||
|
||||
// tsc 的行为:
|
||||
// 1. 默认情况下(noEmitOnError: false):
|
||||
// - 即使有类型错误也会生成 .js 文件
|
||||
// - 但如果有错误,退出码是 1
|
||||
// 2. noEmitOnError: true 时:
|
||||
// - 有错误时不生成文件(emitSkipped 为 true)
|
||||
// - 退出码是 1
|
||||
// 3. 没有错误时:
|
||||
// - 生成文件,退出码 0
|
||||
|
||||
// 无论 emitSkipped 与否,只要有错误就应该退出 1
|
||||
if (errorCount > 0) {
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
console.log('Compilation completed successfully.');
|
||||
}
|
||||
|
||||
// 执行编译
|
||||
const configPathArg = parseArgs();
|
||||
let configPath;
|
||||
|
||||
// 判断参数是目录还是文件
|
||||
if (fs.existsSync(configPathArg)) {
|
||||
const stat = fs.statSync(configPathArg);
|
||||
if (stat.isDirectory()) {
|
||||
// 如果是目录,拼接 tsconfig.json
|
||||
configPath = path.resolve(configPathArg, 'tsconfig.json');
|
||||
} else {
|
||||
// 如果是文件,直接使用
|
||||
configPath = path.resolve(configPathArg);
|
||||
}
|
||||
} else {
|
||||
// 尝试作为相对路径解析
|
||||
configPath = path.resolve(cwd(), configPathArg);
|
||||
if (!fs.existsSync(configPath)) {
|
||||
// 如果还是不存在,尝试添加 tsconfig.json
|
||||
const dirPath = path.resolve(cwd(), configPathArg);
|
||||
if (fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory()) {
|
||||
configPath = path.join(dirPath, 'tsconfig.json');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!fs.existsSync(configPath)) {
|
||||
console.error(`error TS5058: The specified path does not exist: '${configPath}'.`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
compile(configPath);
|
||||
require('oak-domain/lib/compiler/tscBuilder.js')
|
||||
|
|
@ -318,12 +318,15 @@ export abstract class BackendRuntimeContext<ED extends EntityDict & BaseEntityDi
|
|||
try {
|
||||
const { a: appId, t: tokenValue, rm, userId, v } = data;
|
||||
this.appVersion = v;
|
||||
const promises: Promise<void>[] = [];
|
||||
const promises: Promise<void>[] = []; // 这里需要并行,下面的await检查略过
|
||||
if (appId) {
|
||||
// @oak-ignore
|
||||
promises.push(this.setApplication(appId));
|
||||
}
|
||||
if (tokenValue || userId) {
|
||||
// @oak-ignore
|
||||
promises.push(this.setTokenValue(tokenValue, userId));
|
||||
// @oak-ignore
|
||||
promises.push(this.setPlatformManager(tokenValue, userId));
|
||||
}
|
||||
if (promises.length > 0) {
|
||||
|
|
@ -443,6 +446,7 @@ export abstract class BackendRuntimeContext<ED extends EntityDict & BaseEntityDi
|
|||
}
|
||||
|
||||
async sendMessage(data: ED['message']['CreateOperationData']) {
|
||||
// @oak-ignore 这里直接return,依赖上层await,先跳过检查
|
||||
return this.operate(
|
||||
'message',
|
||||
{
|
||||
|
|
|
|||
|
|
@ -95,10 +95,10 @@ export default class ALiYun implements Cos<EntityDict> {
|
|||
// 待测试
|
||||
if (response.errMsg === 'uploadFile:ok') {
|
||||
const data = JSON.parse(response.data);
|
||||
isSuccess = !!(data.status === 204);
|
||||
isSuccess = data.status === 200 || data.status === 204;
|
||||
}
|
||||
} else {
|
||||
isSuccess = !!(response.status === 204);
|
||||
isSuccess = response.status === 200 || response.status === 204;
|
||||
}
|
||||
// 解析回调
|
||||
if (isSuccess) {
|
||||
|
|
|
|||
|
|
@ -78,10 +78,10 @@ export default class CTYun implements Cos<EntityDict> {
|
|||
// 待测试
|
||||
if (response.errMsg === 'uploadFile:ok') {
|
||||
const data = JSON.parse(response.data);
|
||||
isSuccess = !!(data.status === 204);
|
||||
isSuccess = data.status === 200 || data.status === 204;
|
||||
}
|
||||
} else {
|
||||
isSuccess = !!(response.status === 204);
|
||||
isSuccess = response.status === 200 || response.status === 204;
|
||||
}
|
||||
// 解析回调
|
||||
if (isSuccess) {
|
||||
|
|
|
|||
|
|
@ -83,10 +83,10 @@ export default class TencentYun implements Cos<EntityDict> {
|
|||
// 待测试
|
||||
if (response.errMsg === 'uploadFile:ok') {
|
||||
const data = JSON.parse(response.data);
|
||||
isSuccess = !!(data.status === 204);
|
||||
isSuccess = data.status === 200 || data.status === 204;
|
||||
}
|
||||
} else {
|
||||
isSuccess = !!(response.status === 204);
|
||||
isSuccess = response.status === 200 || response.status === 204;
|
||||
}
|
||||
// 解析回调
|
||||
if (isSuccess) {
|
||||
|
|
|
|||
|
|
@ -90,5 +90,11 @@
|
|||
"package-lock.json",
|
||||
"test",
|
||||
"scripts"
|
||||
]
|
||||
],
|
||||
"oakBuildChecks": {
|
||||
"context": {
|
||||
"checkAsyncContext": true,
|
||||
"targetModules": ["context/BackendRuntimeContext"]
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue