|
|
|
|
@ -31,7 +31,7 @@ const lodash_1 = require("lodash");
|
|
|
|
|
const ts = __importStar(require("typescript"));
|
|
|
|
|
const { factory } = ts;
|
|
|
|
|
const env_1 = require("./env");
|
|
|
|
|
const utils_1 = require("./utils");
|
|
|
|
|
const string_1 = require("../utils/string");
|
|
|
|
|
const Schema = {};
|
|
|
|
|
const OneToMany = {};
|
|
|
|
|
const ManyToOne = {};
|
|
|
|
|
@ -97,7 +97,7 @@ function pushStatementIntoActionAst(moduleName, node, sourceFile) {
|
|
|
|
|
declarations.forEach((declaration) => {
|
|
|
|
|
if (ts.isIdentifier(declaration.name) && declaration.name.text.endsWith('ActionDef')) {
|
|
|
|
|
const { text } = declaration.name;
|
|
|
|
|
actionDefName = (0, utils_1.firstLetterLowerCase)(text.slice(0, text.length - 9));
|
|
|
|
|
actionDefName = (0, string_1.firstLetterLowerCase)(text.slice(0, text.length - 9));
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
@ -452,7 +452,7 @@ function analyzeEntity(filename, path, program) {
|
|
|
|
|
(0, assert_1.default)(ele.literal.text.length < env_1.STRING_LITERAL_MAX_LENGTH, `Relation定义的字符串长度不长于${env_1.STRING_LITERAL_MAX_LENGTH}(${filename},${ele.literal.text})`);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
const entityLc = (0, utils_1.firstLetterLowerCase)(moduleName);
|
|
|
|
|
const entityLc = (0, string_1.firstLetterLowerCase)(moduleName);
|
|
|
|
|
const relationEntityName = `User${moduleName}`;
|
|
|
|
|
const relationSchemaAttrs = [
|
|
|
|
|
factory.createPropertySignature(undefined, factory.createIdentifier("user"), undefined, factory.createTypeReferenceNode(factory.createIdentifier("User"), undefined)),
|
|
|
|
|
@ -473,7 +473,7 @@ function analyzeEntity(filename, path, program) {
|
|
|
|
|
(0, assert_1.default)(!localeDef, `【${filename}】locale定义须在Action/State之后`);
|
|
|
|
|
pushStatementIntoActionAst(moduleName, factory.updateTypeAliasDeclaration(node, node.decorators, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], node.name, node.typeParameters, node.type), sourceFile);
|
|
|
|
|
if (node.name.text.endsWith('State')) {
|
|
|
|
|
states.push((0, utils_1.firstLetterLowerCase)(node.name.text));
|
|
|
|
|
states.push((0, string_1.firstLetterLowerCase)(node.name.text));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (beforeSchema) {
|
|
|
|
|
@ -521,7 +521,7 @@ function analyzeEntity(filename, path, program) {
|
|
|
|
|
pushStatementIntoActionAst(moduleName, node, sourceFile);
|
|
|
|
|
const adName = declaration.name.text.slice(0, declaration.name.text.length - 9);
|
|
|
|
|
const attr = adName.concat('State');
|
|
|
|
|
schemaAttrs.push(factory.createPropertySignature(undefined, factory.createIdentifier((0, utils_1.firstLetterLowerCase)(attr)), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createTypeReferenceNode(factory.createIdentifier(attr))));
|
|
|
|
|
schemaAttrs.push(factory.createPropertySignature(undefined, factory.createIdentifier((0, string_1.firstLetterLowerCase)(attr)), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createTypeReferenceNode(factory.createIdentifier(attr))));
|
|
|
|
|
}
|
|
|
|
|
else if (declaration.type && (ts.isArrayTypeNode(declaration.type)
|
|
|
|
|
&& ts.isTypeReferenceNode(declaration.type.elementType)
|
|
|
|
|
@ -598,7 +598,7 @@ function analyzeEntity(filename, path, program) {
|
|
|
|
|
throw new Error(`「${filename}」中索引「${indexName}」的属性「${indexAttrName}」定义非法`);
|
|
|
|
|
}
|
|
|
|
|
const { type, name } = schemaNode;
|
|
|
|
|
const entity = (0, utils_1.firstLetterLowerCase)(moduleName);
|
|
|
|
|
const entity = (0, string_1.firstLetterLowerCase)(moduleName);
|
|
|
|
|
const { [entity]: manyToOneSet } = ManyToOne;
|
|
|
|
|
if (ts.isTypeReferenceNode(type)) {
|
|
|
|
|
const { typeName } = type;
|
|
|
|
|
@ -759,18 +759,18 @@ function constructSchema(statements, entity) {
|
|
|
|
|
const foreignKey = `${attrName}Id`;
|
|
|
|
|
members.push(factory.createPropertySignature(undefined, factory.createIdentifier(foreignKey), questionToken, questionToken ? factory.createUnionTypeNode([
|
|
|
|
|
factory.createTypeReferenceNode(factory.createIdentifier('ForeignKey'), [
|
|
|
|
|
factory.createLiteralTypeNode(factory.createStringLiteral((0, utils_1.firstLetterLowerCase)(text2)))
|
|
|
|
|
factory.createLiteralTypeNode(factory.createStringLiteral((0, string_1.firstLetterLowerCase)(text2)))
|
|
|
|
|
]),
|
|
|
|
|
factory.createLiteralTypeNode(factory.createNull())
|
|
|
|
|
]) : factory.createTypeReferenceNode(factory.createIdentifier('ForeignKey'), [
|
|
|
|
|
factory.createLiteralTypeNode(factory.createStringLiteral((0, utils_1.firstLetterLowerCase)(text2)))
|
|
|
|
|
factory.createLiteralTypeNode(factory.createStringLiteral((0, string_1.firstLetterLowerCase)(text2)))
|
|
|
|
|
])));
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// assert(types.includes(text), `${entity}中的属性${name.toString()}有非法的属性类型定义`);
|
|
|
|
|
// 处理entity这种特殊情况
|
|
|
|
|
if (ReversePointerRelations[entity] && attrName === 'entity') {
|
|
|
|
|
const entityUnionTypeNode = ReversePointerRelations[entity].map(ele => factory.createLiteralTypeNode(factory.createStringLiteral((0, utils_1.firstLetterLowerCase)(ele))));
|
|
|
|
|
const entityUnionTypeNode = ReversePointerRelations[entity].map(ele => factory.createLiteralTypeNode(factory.createStringLiteral((0, string_1.firstLetterLowerCase)(ele))));
|
|
|
|
|
if (process.env.COMPLING_AS_LIB) {
|
|
|
|
|
// 如果是建立 base-domain,还要容纳可能的其它对象引用
|
|
|
|
|
entityUnionTypeNode.push(factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword));
|
|
|
|
|
@ -806,7 +806,7 @@ function constructSchema(statements, entity) {
|
|
|
|
|
if (reverseOnes) {
|
|
|
|
|
reverseOnes.forEach((one) => {
|
|
|
|
|
referenceEntities.push(one);
|
|
|
|
|
members2.push(factory.createPropertySignature(undefined, (0, utils_1.firstLetterLowerCase)(one), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createTypeReferenceNode(createForeignRef(entity, one, 'Schema'))));
|
|
|
|
|
members2.push(factory.createPropertySignature(undefined, (0, string_1.firstLetterLowerCase)(one), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createTypeReferenceNode(createForeignRef(entity, one, 'Schema'))));
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
const foreignKeySet = {};
|
|
|
|
|
@ -824,7 +824,7 @@ function constructSchema(statements, entity) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for (const entityName in foreignKeySet) {
|
|
|
|
|
const entityNameLc = (0, utils_1.firstLetterLowerCase)(entityName);
|
|
|
|
|
const entityNameLc = (0, string_1.firstLetterLowerCase)(entityName);
|
|
|
|
|
foreignKeySet[entityName].forEach((foreignKey) => {
|
|
|
|
|
const identifier = `${entityNameLc}$${foreignKey}`;
|
|
|
|
|
members2.push(factory.createPropertySignature(undefined, identifier, factory.createToken(ts.SyntaxKind.QuestionToken), factory.createTypeReferenceNode(factory.createIdentifier("Array"), [factory.createTypeReferenceNode(createForeignRef(entity, entityName, 'Schema'), undefined)])));
|
|
|
|
|
@ -992,7 +992,7 @@ function constructFilter(statements, entity) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// type AttrFilter = {};
|
|
|
|
|
const eumUnionTypeNode = ReversePointerRelations[entity] && ReversePointerRelations[entity].map(ele => factory.createLiteralTypeNode(factory.createStringLiteral((0, utils_1.firstLetterLowerCase)(ele))));
|
|
|
|
|
const eumUnionTypeNode = ReversePointerRelations[entity] && ReversePointerRelations[entity].map(ele => factory.createLiteralTypeNode(factory.createStringLiteral((0, string_1.firstLetterLowerCase)(ele))));
|
|
|
|
|
if (process.env.COMPLING_AS_LIB) {
|
|
|
|
|
eumUnionTypeNode && eumUnionTypeNode.push(factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword));
|
|
|
|
|
}
|
|
|
|
|
@ -1104,7 +1104,7 @@ function constructProjection(statements, entity) {
|
|
|
|
|
if (ReversePointerRelations[entity]) {
|
|
|
|
|
ReversePointerRelations[entity].forEach((one) => {
|
|
|
|
|
const text2 = one === 'Schema' ? entity : one;
|
|
|
|
|
properties.push([(0, utils_1.firstLetterLowerCase)(one), false, factory.createTypeReferenceNode(createForeignRef(entity, one, 'Projection')), factory.createTypeReferenceNode(createForeignRef(entity, one, 'ExportProjection'))]);
|
|
|
|
|
properties.push([(0, string_1.firstLetterLowerCase)(one), false, factory.createTypeReferenceNode(createForeignRef(entity, one, 'Projection')), factory.createTypeReferenceNode(createForeignRef(entity, one, 'ExportProjection'))]);
|
|
|
|
|
if (foreignKeyProperties.hasOwnProperty(one)) {
|
|
|
|
|
foreignKeyProperties[text2].push('entity');
|
|
|
|
|
}
|
|
|
|
|
@ -1129,20 +1129,20 @@ function constructProjection(statements, entity) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for (const entityName in foreignKeySet) {
|
|
|
|
|
const entityNameLc = (0, utils_1.firstLetterLowerCase)(entityName);
|
|
|
|
|
const entityNameLc = (0, string_1.firstLetterLowerCase)(entityName);
|
|
|
|
|
foreignKeySet[entityName].forEach((foreignKey) => {
|
|
|
|
|
const identifier = `${entityNameLc}$${foreignKey}`;
|
|
|
|
|
properties.push([identifier, false,
|
|
|
|
|
factory.createIntersectionTypeNode([
|
|
|
|
|
factory.createTypeReferenceNode(createForeignRef(entity, entityName, 'Selection'), undefined),
|
|
|
|
|
factory.createTypeLiteralNode([
|
|
|
|
|
factory.createPropertySignature(undefined, factory.createIdentifier("$entity"), undefined, factory.createLiteralTypeNode(factory.createStringLiteral((0, utils_1.firstLetterLowerCase)(entityName))))
|
|
|
|
|
factory.createPropertySignature(undefined, factory.createIdentifier("$entity"), undefined, factory.createLiteralTypeNode(factory.createStringLiteral((0, string_1.firstLetterLowerCase)(entityName))))
|
|
|
|
|
])
|
|
|
|
|
]),
|
|
|
|
|
factory.createIntersectionTypeNode([
|
|
|
|
|
factory.createTypeReferenceNode(createForeignRef(entity, entityName, 'Exportation'), undefined),
|
|
|
|
|
factory.createTypeLiteralNode([
|
|
|
|
|
factory.createPropertySignature(undefined, factory.createIdentifier("$entity"), undefined, factory.createLiteralTypeNode(factory.createStringLiteral((0, utils_1.firstLetterLowerCase)(entityName))))
|
|
|
|
|
factory.createPropertySignature(undefined, factory.createIdentifier("$entity"), undefined, factory.createLiteralTypeNode(factory.createStringLiteral((0, string_1.firstLetterLowerCase)(entityName))))
|
|
|
|
|
])
|
|
|
|
|
])
|
|
|
|
|
]);
|
|
|
|
|
@ -1188,7 +1188,7 @@ function constructProjection(statements, entity) {
|
|
|
|
|
* @param entity
|
|
|
|
|
*/
|
|
|
|
|
function constructQuery(statements, entity) {
|
|
|
|
|
const entityLc = (0, utils_1.firstLetterLowerCase)(entity);
|
|
|
|
|
const entityLc = (0, string_1.firstLetterLowerCase)(entity);
|
|
|
|
|
/* statements.push(
|
|
|
|
|
factory.createTypeAliasDeclaration(
|
|
|
|
|
undefined,
|
|
|
|
|
@ -1368,7 +1368,7 @@ function constructSorter(statements, entity) {
|
|
|
|
|
}
|
|
|
|
|
if (ReversePointerRelations[entity]) {
|
|
|
|
|
ReversePointerRelations[entity].forEach((one) => {
|
|
|
|
|
members.push(factory.createPropertySignature(undefined, (0, utils_1.firstLetterLowerCase)(one), undefined, factory.createTypeReferenceNode(createForeignRef(entity, one, 'SortAttr'))));
|
|
|
|
|
members.push(factory.createPropertySignature(undefined, (0, string_1.firstLetterLowerCase)(one), undefined, factory.createTypeReferenceNode(createForeignRef(entity, one, 'SortAttr'))));
|
|
|
|
|
});
|
|
|
|
|
if (process.env.COMPLING_AS_LIB) {
|
|
|
|
|
members.push(factory.createIndexSignature(undefined, undefined, [factory.createParameterDeclaration(undefined, undefined, undefined, factory.createIdentifier("k"), undefined, factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword), undefined)], factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword)));
|
|
|
|
|
@ -1447,7 +1447,7 @@ function constructFullAttrs(statements, entity) {
|
|
|
|
|
}
|
|
|
|
|
const otmAttrs = [];
|
|
|
|
|
for (const entityName in foreignKeySet) {
|
|
|
|
|
const entityNameLc = (0, utils_1.firstLetterLowerCase)(entityName);
|
|
|
|
|
const entityNameLc = (0, string_1.firstLetterLowerCase)(entityName);
|
|
|
|
|
if (foreignKeySet[entityName].length > 1) {
|
|
|
|
|
foreignKeySet[entityName].forEach((foreignKey) => {
|
|
|
|
|
const head = `${entityNameLc}s$${foreignKey}`;
|
|
|
|
|
@ -1568,14 +1568,14 @@ function constructActions(statements, entity) {
|
|
|
|
|
reverseOneNodes.push(factory.createTypeLiteralNode([
|
|
|
|
|
factory.createPropertySignature(undefined, factory.createIdentifier('entity'), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createKeywordTypeNode(ts.SyntaxKind.NeverKeyword)),
|
|
|
|
|
factory.createPropertySignature(undefined, factory.createIdentifier('entityId'), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createKeywordTypeNode(ts.SyntaxKind.NeverKeyword)),
|
|
|
|
|
factory.createPropertySignature(undefined, factory.createIdentifier((0, utils_1.firstLetterLowerCase)(one)), undefined, // 反向指针好像不能为空,以后或许会有特例 by Xc
|
|
|
|
|
factory.createPropertySignature(undefined, factory.createIdentifier((0, string_1.firstLetterLowerCase)(one)), undefined, // 反向指针好像不能为空,以后或许会有特例 by Xc
|
|
|
|
|
factory.createTypeReferenceNode(createForeignRef(entity, one, 'CreateSingleOperation')))
|
|
|
|
|
]), factory.createTypeLiteralNode([
|
|
|
|
|
factory.createPropertySignature(undefined, factory.createIdentifier('entity'), undefined, // 反向指针好像不能为空,以后或许会有特例 by Xc
|
|
|
|
|
factory.createLiteralTypeNode(factory.createStringLiteral(`${(0, utils_1.firstLetterLowerCase)(one)}`))),
|
|
|
|
|
factory.createLiteralTypeNode(factory.createStringLiteral(`${(0, string_1.firstLetterLowerCase)(one)}`))),
|
|
|
|
|
factory.createPropertySignature(undefined, factory.createIdentifier('entityId'), undefined, // 反向指针好像不能为空,以后或许会有特例 by Xc
|
|
|
|
|
factory.createTypeReferenceNode(factory.createIdentifier("String"), [factory.createLiteralTypeNode(factory.createNumericLiteral("64"))])),
|
|
|
|
|
factory.createPropertySignature(undefined, factory.createIdentifier((0, utils_1.firstLetterLowerCase)(one)), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createTypeReferenceNode(createForeignRef(entity, one, 'UpdateOperation')))
|
|
|
|
|
factory.createPropertySignature(undefined, factory.createIdentifier((0, string_1.firstLetterLowerCase)(one)), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createTypeReferenceNode(createForeignRef(entity, one, 'UpdateOperation')))
|
|
|
|
|
]));
|
|
|
|
|
}
|
|
|
|
|
if (process.env.COMPLING_AS_LIB) {
|
|
|
|
|
@ -1599,7 +1599,7 @@ function constructActions(statements, entity) {
|
|
|
|
|
}
|
|
|
|
|
if (oneToManySet) {
|
|
|
|
|
for (const entityName in foreignKeySet) {
|
|
|
|
|
const entityNameLc = (0, utils_1.firstLetterLowerCase)(entityName);
|
|
|
|
|
const entityNameLc = (0, string_1.firstLetterLowerCase)(entityName);
|
|
|
|
|
foreignKeySet[entityName].forEach((foreignKey) => {
|
|
|
|
|
const identifier = `${entityNameLc}$${foreignKey}`;
|
|
|
|
|
const otmCreateOperationDataNode = factory.createTypeReferenceNode(factory.createIdentifier("Omit"), [
|
|
|
|
|
@ -1714,9 +1714,9 @@ function constructActions(statements, entity) {
|
|
|
|
|
if (ReversePointerRelations[entity]) {
|
|
|
|
|
const refEntityLitrals = [];
|
|
|
|
|
for (const one of ReversePointerRelations[entity]) {
|
|
|
|
|
refEntityLitrals.push(factory.createLiteralTypeNode(factory.createStringLiteral(`${(0, utils_1.firstLetterLowerCase)(one)}`)));
|
|
|
|
|
refEntityLitrals.push(factory.createLiteralTypeNode(factory.createStringLiteral(`${(0, string_1.firstLetterLowerCase)(one)}`)));
|
|
|
|
|
reverseOneNodes.push(factory.createTypeLiteralNode([
|
|
|
|
|
factory.createPropertySignature(undefined, factory.createIdentifier((0, utils_1.firstLetterLowerCase)(one)), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createUnionTypeNode([
|
|
|
|
|
factory.createPropertySignature(undefined, factory.createIdentifier((0, string_1.firstLetterLowerCase)(one)), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createUnionTypeNode([
|
|
|
|
|
factory.createTypeReferenceNode(createForeignRef(entity, one, 'CreateSingleOperation')),
|
|
|
|
|
factory.createTypeReferenceNode(createForeignRef(entity, one, 'UpdateOperation')),
|
|
|
|
|
factory.createTypeReferenceNode(createForeignRef(entity, one, 'RemoveOperation'))
|
|
|
|
|
@ -1750,7 +1750,7 @@ function constructActions(statements, entity) {
|
|
|
|
|
}
|
|
|
|
|
if (oneToManySet) {
|
|
|
|
|
for (const entityName in foreignKeySet) {
|
|
|
|
|
const entityNameLc = (0, utils_1.firstLetterLowerCase)(entityName);
|
|
|
|
|
const entityNameLc = (0, string_1.firstLetterLowerCase)(entityName);
|
|
|
|
|
foreignKeySet[entityName].forEach((foreignKey) => {
|
|
|
|
|
const identifier = `${entityNameLc}s$${foreignKey}`;
|
|
|
|
|
const otmCreateOperationDataNode = factory.createTypeReferenceNode(factory.createIdentifier("Omit"), [
|
|
|
|
|
@ -1825,11 +1825,11 @@ function constructActions(statements, entity) {
|
|
|
|
|
if (ReversePointerRelations[entity]) {
|
|
|
|
|
const refEntityLitrals = [];
|
|
|
|
|
for (const one of ReversePointerRelations[entity]) {
|
|
|
|
|
refEntityLitrals.push(factory.createLiteralTypeNode(factory.createStringLiteral(`${(0, utils_1.firstLetterLowerCase)(one)}`)));
|
|
|
|
|
refEntityLitrals.push(factory.createLiteralTypeNode(factory.createStringLiteral(`${(0, string_1.firstLetterLowerCase)(one)}`)));
|
|
|
|
|
reverseOneNodes.push(factory.createTypeLiteralNode([
|
|
|
|
|
factory.createPropertySignature(undefined, factory.createIdentifier((0, utils_1.firstLetterLowerCase)(one)), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createTypeReferenceNode(createForeignRef(entity, one, 'UpdateOperation')))
|
|
|
|
|
factory.createPropertySignature(undefined, factory.createIdentifier((0, string_1.firstLetterLowerCase)(one)), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createTypeReferenceNode(createForeignRef(entity, one, 'UpdateOperation')))
|
|
|
|
|
]), factory.createTypeLiteralNode([
|
|
|
|
|
factory.createPropertySignature(undefined, factory.createIdentifier((0, utils_1.firstLetterLowerCase)(one)), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createTypeReferenceNode(createForeignRef(entity, one, 'RemoveOperation')))
|
|
|
|
|
factory.createPropertySignature(undefined, factory.createIdentifier((0, string_1.firstLetterLowerCase)(one)), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createTypeReferenceNode(createForeignRef(entity, one, 'RemoveOperation')))
|
|
|
|
|
]));
|
|
|
|
|
}
|
|
|
|
|
if (process.env.COMPLING_AS_LIB) {
|
|
|
|
|
@ -1996,7 +1996,7 @@ function outputSubQuery(outputDir, printer) {
|
|
|
|
|
fromEntites.push(one);
|
|
|
|
|
const inUnionTypeNode = fromEntites.map(ele => factory.createIntersectionTypeNode([
|
|
|
|
|
factory.createTypeReferenceNode(factory.createQualifiedName(factory.createIdentifier(ele), factory.createIdentifier(identifier)), undefined),
|
|
|
|
|
factory.createTypeLiteralNode([factory.createPropertySignature(undefined, factory.createIdentifier("entity"), undefined, factory.createLiteralTypeNode(factory.createStringLiteral((0, utils_1.firstLetterLowerCase)(ele))))])
|
|
|
|
|
factory.createTypeLiteralNode([factory.createPropertySignature(undefined, factory.createIdentifier("entity"), undefined, factory.createLiteralTypeNode(factory.createStringLiteral((0, string_1.firstLetterLowerCase)(ele))))])
|
|
|
|
|
]));
|
|
|
|
|
if (process.env.COMPLING_AS_LIB) {
|
|
|
|
|
// 如果是建立 base,这里要加上额外可能的对象信息
|
|
|
|
|
@ -2018,7 +2018,7 @@ function outputEntityDict(outputDir, printer) {
|
|
|
|
|
for (const entity in Schema) {
|
|
|
|
|
// import * as User from '../User/Schema';
|
|
|
|
|
statements.push(factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([factory.createImportSpecifier(false, factory.createIdentifier("EntityDef"), factory.createIdentifier(entity))])), factory.createStringLiteral(`./${entity}/Schema`)));
|
|
|
|
|
const entityLc = (0, utils_1.firstLetterLowerCase)(entity);
|
|
|
|
|
const entityLc = (0, string_1.firstLetterLowerCase)(entity);
|
|
|
|
|
propertySignatures.push(factory.createPropertySignature(undefined, factory.createIdentifier(entityLc), undefined, factory.createTypeReferenceNode(entity)));
|
|
|
|
|
}
|
|
|
|
|
if ( /* process.env.COMPLING_AS_LIB */false) {
|
|
|
|
|
@ -2046,10 +2046,10 @@ function outputSchema(outputDir, printer) {
|
|
|
|
|
for (const a in importedFrom) {
|
|
|
|
|
(0, assert_1.default)(a.endsWith('Action'));
|
|
|
|
|
const s = a.slice(0, a.length - 6).concat('State');
|
|
|
|
|
if (importedFrom[a] === 'local' && actionDefNames.includes((0, utils_1.firstLetterLowerCase)(a.slice(0, a.length - 6)))) {
|
|
|
|
|
if (importedFrom[a] === 'local' && actionDefNames.includes((0, string_1.firstLetterLowerCase)(a.slice(0, a.length - 6)))) {
|
|
|
|
|
localActions.push(s);
|
|
|
|
|
}
|
|
|
|
|
else if (actionDefNames.includes((0, utils_1.firstLetterLowerCase)(a.slice(0, a.length - 6)))) {
|
|
|
|
|
else if (actionDefNames.includes((0, string_1.firstLetterLowerCase)(a.slice(0, a.length - 6)))) {
|
|
|
|
|
const { moduleSpecifier } = importedFrom[a];
|
|
|
|
|
statements.push(factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([
|
|
|
|
|
factory.createImportSpecifier(false, undefined, factory.createIdentifier(s))
|
|
|
|
|
@ -2114,7 +2114,7 @@ function outputAction(outputDir, printer) {
|
|
|
|
|
if (actionDiff.length > 0) {
|
|
|
|
|
throw new Error(`action not conform to actionDef: ${actionDiff.join(',')}, entity: ${entity}`);
|
|
|
|
|
} */
|
|
|
|
|
statements.push(factory.createVariableStatement([factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createVariableDeclarationList([factory.createVariableDeclaration(factory.createIdentifier("ActionDefDict"), undefined, undefined, factory.createObjectLiteralExpression(actionDefNames.map(ele => factory.createPropertyAssignment(factory.createIdentifier(`${ele}State`), factory.createIdentifier(`${(0, utils_1.firstLetterUpperCase)(ele)}ActionDef`))), true))], ts.NodeFlags.Const)));
|
|
|
|
|
statements.push(factory.createVariableStatement([factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createVariableDeclarationList([factory.createVariableDeclaration(factory.createIdentifier("ActionDefDict"), undefined, undefined, factory.createObjectLiteralExpression(actionDefNames.map(ele => factory.createPropertyAssignment(factory.createIdentifier(`${ele}State`), factory.createIdentifier(`${(0, string_1.firstLetterUpperCase)(ele)}ActionDef`))), true))], ts.NodeFlags.Const)));
|
|
|
|
|
/* const result = printer.printNode(
|
|
|
|
|
ts.EmitHint.Unspecified,
|
|
|
|
|
factory.createSourceFile(statements,
|
|
|
|
|
@ -2127,7 +2127,7 @@ function outputAction(outputDir, printer) {
|
|
|
|
|
const filename = path_1.default.join(outputDir, entity, 'Action.ts');
|
|
|
|
|
(0, fs_1.writeFileSync)(filename, result, { flag: 'w' });
|
|
|
|
|
actionDictStatements.push(factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([factory.createImportSpecifier(false, factory.createIdentifier("ActionDefDict"), factory.createIdentifier(entity))])), factory.createStringLiteral(`./${entity}/Action`)));
|
|
|
|
|
propertyAssignments.push(factory.createPropertyAssignment(factory.createIdentifier((0, utils_1.firstLetterLowerCase)(entity)), factory.createIdentifier(entity)));
|
|
|
|
|
propertyAssignments.push(factory.createPropertyAssignment(factory.createIdentifier((0, string_1.firstLetterLowerCase)(entity)), factory.createIdentifier(entity)));
|
|
|
|
|
}
|
|
|
|
|
actionDictStatements.push(factory.createVariableStatement([factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createVariableDeclarationList([factory.createVariableDeclaration(factory.createIdentifier("ActionDefDict"), undefined, undefined, factory.createObjectLiteralExpression(propertyAssignments, true))], ts.NodeFlags.Const)));
|
|
|
|
|
const resultFile = ts.createSourceFile("someFileName.ts", "", ts.ScriptTarget.Latest, /*setParentNodes*/ false, ts.ScriptKind.TS);
|
|
|
|
|
@ -2207,7 +2207,7 @@ function constructAttributes(entity) {
|
|
|
|
|
if (manyToOneItem) {
|
|
|
|
|
// 外键
|
|
|
|
|
name2 = factory.createIdentifier(`${name.text}Id`);
|
|
|
|
|
attrAssignments.push(factory.createPropertyAssignment(factory.createIdentifier("type"), factory.createStringLiteral("ref")), factory.createPropertyAssignment(factory.createIdentifier("ref"), factory.createStringLiteral((0, utils_1.firstLetterLowerCase)(text2))));
|
|
|
|
|
attrAssignments.push(factory.createPropertyAssignment(factory.createIdentifier("type"), factory.createStringLiteral("ref")), factory.createPropertyAssignment(factory.createIdentifier("ref"), factory.createStringLiteral((0, string_1.firstLetterLowerCase)(text2))));
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
if (text.endsWith('State')) {
|
|
|
|
|
@ -2296,8 +2296,8 @@ function outputLocale(outputDir, printer) {
|
|
|
|
|
const lack = (0, lodash_1.difference)(entities, locales[lng]);
|
|
|
|
|
throw new Error(`${lng}语言定义中缺少了对象${lack.join(',')}的定义,请检查相应的定义文件`);
|
|
|
|
|
}
|
|
|
|
|
const statements = locales[lng].map((entity) => factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, factory.createIdentifier((0, utils_1.firstLetterLowerCase)(entity)), undefined), factory.createStringLiteral(`../${entity}/locales/${lng}`), undefined));
|
|
|
|
|
statements.push(factory.createExportAssignment(undefined, undefined, undefined, factory.createObjectLiteralExpression(locales[lng].map(ele => factory.createShorthandPropertyAssignment(factory.createIdentifier((0, utils_1.firstLetterLowerCase)(ele)), undefined)), true)));
|
|
|
|
|
const statements = locales[lng].map((entity) => factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, factory.createIdentifier((0, string_1.firstLetterLowerCase)(entity)), undefined), factory.createStringLiteral(`../${entity}/locales/${lng}`), undefined));
|
|
|
|
|
statements.push(factory.createExportAssignment(undefined, undefined, undefined, factory.createObjectLiteralExpression(locales[lng].map(ele => factory.createShorthandPropertyAssignment(factory.createIdentifier((0, string_1.firstLetterLowerCase)(ele)), undefined)), true)));
|
|
|
|
|
const result = printer.printList(ts.ListFormat.SourceFileStatements, factory.createNodeArray(statements), ts.createSourceFile("someFileName.ts", "", ts.ScriptTarget.Latest, /*setParentNodes*/ false, ts.ScriptKind.TS));
|
|
|
|
|
const filename = path_1.default.join(outputDir, '_locales', `${lng}.ts`);
|
|
|
|
|
(0, fs_1.writeFileSync)(filename, result, { flag: 'w' });
|
|
|
|
|
@ -2332,9 +2332,9 @@ function outputStorage(outputDir, printer) {
|
|
|
|
|
const filename = path_1.default.join(outputDir, entity, 'Storage.ts');
|
|
|
|
|
(0, fs_1.writeFileSync)(filename, result, { flag: 'w' });
|
|
|
|
|
importStatements.push(factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([
|
|
|
|
|
factory.createImportSpecifier(false, factory.createIdentifier("desc"), factory.createIdentifier(`${(0, utils_1.firstLetterLowerCase)(entity)}Desc`))
|
|
|
|
|
factory.createImportSpecifier(false, factory.createIdentifier("desc"), factory.createIdentifier(`${(0, string_1.firstLetterLowerCase)(entity)}Desc`))
|
|
|
|
|
])), factory.createStringLiteral(`./${entity}/Storage`), undefined));
|
|
|
|
|
entityAssignments.push(factory.createPropertyAssignment((0, utils_1.firstLetterLowerCase)(entity), factory.createIdentifier(`${(0, utils_1.firstLetterLowerCase)(entity)}Desc`)));
|
|
|
|
|
entityAssignments.push(factory.createPropertyAssignment((0, string_1.firstLetterLowerCase)(entity), factory.createIdentifier(`${(0, string_1.firstLetterLowerCase)(entity)}Desc`)));
|
|
|
|
|
}
|
|
|
|
|
importStatements.push(factory.createVariableStatement([factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createVariableDeclarationList([factory.createVariableDeclaration(factory.createIdentifier("storageSchema"), undefined, factory.createTypeReferenceNode(factory.createIdentifier("StorageSchema"), [
|
|
|
|
|
factory.createTypeReferenceNode('EntityDict')
|
|
|
|
|
|