From db1b6deaca256b0d107fe607de6cd0fc90517a9c Mon Sep 17 00:00:00 2001 From: gengyang Date: Tue, 17 Mar 2020 17:23:42 +0800 Subject: [PATCH] feat: support multiple exported components --- package.json | 2 + .../src/generator/Generator.ts | 2 - .../material-parser/src/parser/ReactParser.ts | 25 +- .../src/parser/handlers/index.ts | 22 + .../src/parser/handlers/propTypeHandler.ts | 136 ++ .../src/parser/resolver/checkIsIIFE.ts | 4 +- .../src/parser/resolver/index.ts | 44 +- .../src/parser/resolver/resolveHOC.ts | 6 +- .../src/parser/resolver/resolveIIFE.ts | 2 +- .../material-parser/src/scanner/Scanner.ts | 16 +- .../__snapshots__/test/Materialize.ts.md | 179 ++- .../__snapshots__/test/Materialize.ts.snap | Bin 108 -> 1723 bytes .../test/accesser/LocalAccesser.ts.md | 179 ++- .../test/accesser/LocalAccesser.ts.snap | Bin 107 -> 1734 bytes .../test/generator/Generator.ts.md | 1126 ++++++++++++++++- .../test/generator/Generator.ts.snap | Bin 108 -> 6077 bytes .../test/parser/ReactParser.ts.md | 303 ++++- .../test/parser/ReactParser.ts.snap | Bin 1533 -> 3287 bytes .../__snapshots__/test/scanner/Scanner.ts.md | 12 - .../test/scanner/Scanner.ts.snap | Bin 3714 -> 3591 bytes .../es/basic/AIMakeBlank/manifest.json | 2 +- .../es/basic/AIMakeIcon/manifest.json | 2 +- .../es/basic/AIMakeImage/manifest.json | 2 +- .../es/basic/AIMakeLink/manifest.json | 2 +- .../es/basic/AIMakePlaceholder/manifest.json | 2 +- .../es/basic/AIMakeText/manifest.json | 2 +- .../es/basic/Root/manifest.json | 2 +- .../src/basic/AIMakeBlank/manifest.json | 2 +- .../src/basic/AIMakeIcon/manifest.json | 2 +- .../src/basic/AIMakeImage/manifest.json | 2 +- .../src/basic/AIMakeLink/manifest.json | 2 +- .../src/basic/AIMakePlaceholder/manifest.json | 2 +- .../src/basic/AIMakeText/manifest.json | 2 +- .../src/basic/Root/manifest.json | 2 +- .../es/manifest.json | 2 +- .../src/manifest.json | 2 +- .../test/generator/Generator.ts | 22 +- .../test/parser/ReactParser.ts | 27 +- 38 files changed, 2040 insertions(+), 99 deletions(-) create mode 100644 packages/material-parser/src/parser/handlers/index.ts create mode 100644 packages/material-parser/src/parser/handlers/propTypeHandler.ts diff --git a/package.json b/package.json index 15cd49458..a7edc4a3d 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,8 @@ "prettier": "^1.15.3", "rimraf": "^2.6.3", "ts-node": "^7.0.1", + "tslint": "^6.1.0", + "tslint-config-prettier": "^1.18.0", "typescript": "^3.2.2" }, "engines": { diff --git a/packages/material-parser/src/generator/Generator.ts b/packages/material-parser/src/generator/Generator.ts index 9d69ecf3b..bec97c827 100644 --- a/packages/material-parser/src/generator/Generator.ts +++ b/packages/material-parser/src/generator/Generator.ts @@ -93,7 +93,6 @@ class Generator implements IGenerator { matParsedModel: IMaterialParsedModel, ): Promise<{ manifestFilePath: string; // manifest 文件路径 - manifestJS: string; // manifest 文件内容 manifestObj: IComponentMaterial; // manifest 文件对象 }> { const manifestObj: Partial = { @@ -127,7 +126,6 @@ class Generator implements IGenerator { }, ); return { - manifestJS: manifest.manifestJS, manifestObj: manifest.manifestObj, manifestFilePath: manifest.manifestFilePath, }; diff --git a/packages/material-parser/src/parser/ReactParser.ts b/packages/material-parser/src/parser/ReactParser.ts index ca1418f16..5ececea15 100644 --- a/packages/material-parser/src/parser/ReactParser.ts +++ b/packages/material-parser/src/parser/ReactParser.ts @@ -15,6 +15,7 @@ import { } from '../types'; import BaseParser from './BaseParser'; import resolver from './resolver'; +import handlers from './handlers'; const log = debug.extend('mat'); const parser = buildParser(); @@ -75,7 +76,10 @@ function transformItem(name: string, item: any): any { result.description = description; } if (defaultValue) { - result.defaultValue = defaultValue.value; + try { + const value = eval(defaultValue.value); + result.defaultValue = value; + } catch (e) {} } return result; @@ -179,8 +183,12 @@ class ReactParser extends BaseParser { item => item.filePath === model.mainEntry, ); - const result = reactDocs.parse(mainEntryItem.fileContent, resolver); - const props = Object.keys(result.props).map(name => { + const result = reactDocs.parse( + mainEntryItem.fileContent, + resolver, + handlers, + ); + const props = Object.keys(result.props || {}).map(name => { return transformItem(name, result.props[name]); }); @@ -529,20 +537,17 @@ class ReactParser extends BaseParser { fileContent: string; }): Promise { const ast = parser.parse(params.fileContent); - const result = reactDocs.parse(params.fileContent, resolver); - // @ts-ignore - // ast.__src = params.fileContent; - const props = Object.keys(result.props).map(name => { + const result = reactDocs.parse(params.fileContent, resolver, handlers); + const props = Object.keys(result.props || {}).map(name => { return transformItem(name, result.props[name]); }); - // const defaultExportName = await this.parseDefaultExportNameES6(ast); + const defaultExportName = await this.parseDefaultExportNameES6(ast); // const subModules = await this.parseSubModulesES6(ast); return { filePath: params.filePath, - // defaultExportName, + defaultExportName, // subModules, - // propsTypes, props, } as any; } diff --git a/packages/material-parser/src/parser/handlers/index.ts b/packages/material-parser/src/parser/handlers/index.ts new file mode 100644 index 000000000..a4ff85a6c --- /dev/null +++ b/packages/material-parser/src/parser/handlers/index.ts @@ -0,0 +1,22 @@ +const { handlers } = require('react-docgen'); +import { + propTypeHandler, + contextTypeHandler, + childContextTypeHandler, +} from './propTypeHandler'; + +const defaultHandlers = [ + propTypeHandler, + contextTypeHandler, + childContextTypeHandler, + handlers.propTypeCompositionHandler, + handlers.propDocBlockHandler, + handlers.flowTypeHandler, + handlers.defaultPropsHandler, + handlers.componentDocblockHandler, + handlers.displayNameHandler, + handlers.componentMethodsHandler, + handlers.componentMethodsJsDocHandler, +]; + +export default defaultHandlers; diff --git a/packages/material-parser/src/parser/handlers/propTypeHandler.ts b/packages/material-parser/src/parser/handlers/propTypeHandler.ts new file mode 100644 index 000000000..619a88eb4 --- /dev/null +++ b/packages/material-parser/src/parser/handlers/propTypeHandler.ts @@ -0,0 +1,136 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + */ + +import { namedTypes as t, visit } from 'ast-types'; +import { throwStatement } from '@babel/types'; +const { + resolveToValue, + getPropType, + getPropertyName, + getMemberValuePath, + isReactModuleName, + printValue, + resolveToModule, +} = require('react-docgen').utils; + +const isRequiredPropType = require('react-docgen/dist/utils/isRequiredPropType') + .default; + +function getRoot(node: any) { + let root = node.parent; + while (root.parent) { + root = root.parent; + } + return root; +} +// import type Documentation from '../Documentation'; + +function isPropTypesExpression(path: any) { + const moduleName = resolveToModule(path); + if (moduleName) { + return isReactModuleName(moduleName) || moduleName === 'ReactPropTypes'; + } + return false; +} + +function amendPropTypes(getDescriptor: any, path: any) { + if (!t.ObjectExpression.check(path.node)) { + return; + } + + path.get('properties').each((propertyPath: any) => { + switch (propertyPath.node.type) { + // @ts-ignore + case t.Property.name: { + const propName = getPropertyName(propertyPath); + if (!propName) return; + + const propDescriptor = getDescriptor(propName); + const valuePath = propertyPath.get('value'); + const type = isPropTypesExpression(valuePath) + ? getPropType(valuePath) + : { name: 'custom', raw: printValue(valuePath) }; + + if (type) { + propDescriptor.type = type; + propDescriptor.required = + type.name !== 'custom' && isRequiredPropType(valuePath); + } + break; + } + // @ts-ignore + case t.SpreadElement.name: { + const resolvedValuePath = resolveToValue(propertyPath.get('argument')); + switch (resolvedValuePath.node.type) { + // @ts-ignore + case t.ObjectExpression.name: // normal object literal + amendPropTypes(getDescriptor, resolvedValuePath); + break; + } + break; + } + } + }); +} + +function getDefinePropertyValuePath(nodePath: any, propName: string) { + const program = getRoot(nodePath); + const componentName = nodePath.node.id.name; + let resultPath = nodePath; + + visit(program, { + visitCallExpression: function(path) { + const args = path.get('arguments'); + const argsNodeList = args.value; + if ( + argsNodeList.length === 3 && + t.Identifier.check(argsNodeList[0]) && + argsNodeList[0].name === componentName && + t.Literal.check(argsNodeList[1]) && + argsNodeList[1].value === propName + ) { + resultPath = args.get(2); + } + return false; + }, + }); + return resultPath; +} + +function getPropTypeHandler(propName: string) { + return function(documentation: any, path: any) { + let propTypesPath = getMemberValuePath(path, propName); + if (!propTypesPath) { + propTypesPath = getDefinePropertyValuePath(path, propName); + if (!propTypesPath) { + return; + } + } + propTypesPath = resolveToValue(propTypesPath); + if (!propTypesPath) { + return; + } + let getDescriptor; + switch (propName) { + case 'childContextTypes': + getDescriptor = documentation.getChildContextDescriptor; + break; + case 'contextTypes': + getDescriptor = documentation.getContextDescriptor; + break; + default: + getDescriptor = documentation.getPropDescriptor; + } + amendPropTypes(getDescriptor.bind(documentation), propTypesPath); + }; +} + +export const propTypeHandler = getPropTypeHandler('propTypes'); +export const contextTypeHandler = getPropTypeHandler('contextTypes'); +export const childContextTypeHandler = getPropTypeHandler('childContextTypes'); diff --git a/packages/material-parser/src/parser/resolver/checkIsIIFE.ts b/packages/material-parser/src/parser/resolver/checkIsIIFE.ts index 7862aeffd..a3182be8c 100644 --- a/packages/material-parser/src/parser/resolver/checkIsIIFE.ts +++ b/packages/material-parser/src/parser/resolver/checkIsIIFE.ts @@ -1,7 +1,7 @@ -module.exports = function checkIsIIFE(path: any) { +export default function checkIsIIFE(path: any) { return ( path.value.callee && path.value.callee.type === 'FunctionExpression' && path.node.type === 'CallExpression' ); -}; +} diff --git a/packages/material-parser/src/parser/resolver/index.ts b/packages/material-parser/src/parser/resolver/index.ts index 24c6aed9c..b16a99fd4 100644 --- a/packages/material-parser/src/parser/resolver/index.ts +++ b/packages/material-parser/src/parser/resolver/index.ts @@ -17,6 +17,7 @@ const { resolveExportDeclaration, resolveToValue, } = require('react-docgen').utils; +import checkIsIIFE from './checkIsIIFE'; import resolveHOC from './resolveHOC'; import resolveIIFE from './resolveIIFE'; import resolveTranspiledClass from './resolveTranspiledClass'; @@ -56,6 +57,29 @@ function resolveDefinition(definition: any) { return null; } +function getDefinition(definition: any) { + if (checkIsIIFE(definition)) { + definition = resolveToValue(resolveIIFE(definition)); + if (!isComponentDefinition(definition)) { + definition = resolveTranspiledClass(definition); + } + } else { + definition = resolveToValue(resolveHOC(definition)); + if (checkIsIIFE(definition)) { + definition = resolveToValue(resolveIIFE(definition)); + if (!isComponentDefinition(definition)) { + definition = resolveTranspiledClass(definition); + } + } + } + // definition = resolveToValue(resolveIIFE(definition)); + // if (!isComponentDefinition(definition)) { + // definition = resolveTranspiledClass(definition); + // } + // definition = resolveToValue(resolveHOC(definition)); + + return definition; +} /** * Given an AST, this function tries to find the exported component definition. * @@ -80,13 +104,9 @@ export default function findExportedComponentDefinition(ast: any) { if (isComponentDefinition(definition)) { acc.push(definition); } else { - // definition = resolveToValue(resolveIIFE(definition)); - // if (!isComponentDefinition(definition)) { - // definition = resolveTranspiledClass(definition); - // } - const resolved = resolveToValue(resolveHOC(definition)); - if (isComponentDefinition(resolved)) { - acc.push(resolved); + definition = getDefinition(definition); + if (isComponentDefinition(definition)) { + acc.push(definition); } } return acc; @@ -133,15 +153,7 @@ export default function findExportedComponentDefinition(ast: any) { // expression, something like React.createClass path = resolveToValue(path.get('right')); if (!isComponentDefinition(path)) { - // path = resolveToValue(resolveHOC(path)); - // if (!isComponentDefinition(path)) { - path = resolveToValue(resolveIIFE(path)); - if (!isComponentDefinition(path)) { - path = resolveTranspiledClass(path); - if (!isComponentDefinition(path)) { - path = resolveToValue(resolveHOC(path)); - } - } + path = getDefinition(path); } if (foundDefinition) { // If a file exports multiple components, ... complain! diff --git a/packages/material-parser/src/parser/resolver/resolveHOC.ts b/packages/material-parser/src/parser/resolver/resolveHOC.ts index 63df72e10..a5538a91f 100644 --- a/packages/material-parser/src/parser/resolver/resolveHOC.ts +++ b/packages/material-parser/src/parser/resolver/resolveHOC.ts @@ -38,11 +38,13 @@ export default function resolveHOC(path: any): any { t.SpreadElement.check(inner.node)) ) { return resolveHOC( - resolveToValue(path.get('arguments', node.arguments.length - 1)), + // resolveToValue(path.get('arguments', node.arguments.length - 1)), + path.get('arguments', node.arguments.length - 1), ); } - return resolveHOC(resolveToValue(inner)); + // return resolveHOC(resolveToValue(inner)); + return resolveHOC(inner); } } diff --git a/packages/material-parser/src/parser/resolver/resolveIIFE.ts b/packages/material-parser/src/parser/resolver/resolveIIFE.ts index ba3ad384b..011328600 100644 --- a/packages/material-parser/src/parser/resolver/resolveIIFE.ts +++ b/packages/material-parser/src/parser/resolver/resolveIIFE.ts @@ -14,7 +14,7 @@ const resolveFunctionDefinitionToReturnValue = require('react-docgen/dist/utils/ // resolveToValue, // resolveHOC -const checkIsIIFE = require('./checkIsIIFE'); +import checkIsIIFE from './checkIsIIFE'; /** * If the path is a call expression, it recursively resolves to the * rightmost argument, stopping if it finds a React.createClass call expression diff --git a/packages/material-parser/src/scanner/Scanner.ts b/packages/material-parser/src/scanner/Scanner.ts index 6c26b0bf2..880678e13 100644 --- a/packages/material-parser/src/scanner/Scanner.ts +++ b/packages/material-parser/src/scanner/Scanner.ts @@ -42,9 +42,9 @@ class Scanner implements IScanner { const isDepsMode = cwd !== entry; const pkgJsonPath = join(cwd, 'package.json'); // 判断是否存在 package.json - if (!(await pathExists(pkgJsonPath))) { - throw new Error(`Cannot find package.json. ${pkgJsonPath}`); - } + // if (!(await pathExists(pkgJsonPath))) { + // throw new Error(`Cannot find package.json. ${pkgJsonPath}`); + // } // 读取 package.json let pkgJson = await this.resolvePkgJson(pkgJsonPath); model.pkgName = pkgJson.name; @@ -69,10 +69,10 @@ class Scanner implements IScanner { log('entryFile', entryFile); model.mainEntry = entryFilePath; // 记录入口文件 - // model.modules.push({ - // filePath: entryFilePath, - // fileContent: entryFile, - // }); + model.modules.push({ + filePath: entryFilePath, + fileContent: entryFile, + }); log('model', model); // debugger; if (options.isExportedAsMultiple) { @@ -82,7 +82,7 @@ class Scanner implements IScanner { entryFilePath, sourceType: model.sourceType, }); - model.modules.push(...modules); + model.modules = [...modules]; } log('model', model); return model; diff --git a/packages/material-parser/test/fixtures/__snapshots__/test/Materialize.ts.md b/packages/material-parser/test/fixtures/__snapshots__/test/Materialize.ts.md index 68246f0eb..7a2d6f6db 100644 --- a/packages/material-parser/test/fixtures/__snapshots__/test/Materialize.ts.md +++ b/packages/material-parser/test/fixtures/__snapshots__/test/Materialize.ts.md @@ -8,4 +8,181 @@ Generated by [AVA](https://avajs.dev). > Snapshot 1 - [] + [ + { + manifestFilePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/single-exported-component/es/manifest.json', + manifestObj: { + docUrl: '', + npm: { + destructuring: false, + exportName: '', + main: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/single-exported-component/es/index.js', + package: 'single-exported-component', + subName: '', + version: '1.0.0', + }, + props: [ + { + name: 'optionalArray', + propType: 'array', + }, + { + name: 'optionalBool', + propType: 'bool', + }, + { + name: 'optionalFunc', + propType: 'func', + }, + { + defaultValue: 123, + name: 'optionalNumber', + propType: 'number', + }, + { + name: 'optionalObject', + propType: 'object', + }, + { + name: 'optionalString', + propType: 'string', + }, + { + name: 'optionalSymbol', + propType: 'symbol', + }, + { + name: 'optionalNode', + propType: 'node', + }, + { + name: 'optionalElement', + propType: 'element', + }, + { + name: 'optionalElementType', + propType: 'elementType', + }, + { + name: 'optionalMessage', + propType: { + type: 'instanceOf', + value: 'Demo', + }, + }, + { + name: 'optionalEnum', + propType: { + type: 'oneOf', + value: [ + 'News', + 'Photos', + ], + }, + }, + { + name: 'optionalUnion', + propType: { + type: 'oneOfType', + value: [ + 'string', + 'number', + { + type: 'instanceOf', + value: 'Demo', + }, + ], + }, + }, + { + name: 'optionalArrayOf', + propType: { + type: 'arrayOf', + value: 'number', + }, + }, + { + name: 'optionalObjectOf', + propType: { + type: 'objectOf', + value: 'number', + }, + }, + { + name: 'optionalObjectWithShape', + propType: { + type: 'shape', + value: [ + { + name: 'optionalProperty', + propType: 'string', + }, + { + name: 'requiredProperty', + propType: { + isRequired: true, + type: 'number', + }, + }, + ], + }, + }, + { + name: 'optionalObjectWithShape2', + propType: { + isRequired: true, + type: 'shape', + value: [ + { + name: 'optionalProperty', + propType: 'string', + }, + { + name: 'requiredProperty', + propType: { + isRequired: true, + type: 'number', + }, + }, + ], + }, + }, + { + name: 'optionalObjectWithStrictShape', + propType: { + type: 'exact', + value: [ + { + name: 'optionalProperty', + propType: 'string', + }, + { + name: 'requiredProperty', + propType: { + isRequired: true, + type: 'number', + }, + }, + ], + }, + }, + { + name: 'requiredFunc', + propType: { + isRequired: true, + type: 'func', + }, + }, + { + name: 'requiredAny', + propType: { + isRequired: true, + type: 'any', + }, + }, + ], + screenshot: '', + title: 'single-exported-component', + }, + }, + ] diff --git a/packages/material-parser/test/fixtures/__snapshots__/test/Materialize.ts.snap b/packages/material-parser/test/fixtures/__snapshots__/test/Materialize.ts.snap index f342695c9b661b7007dc5d3043990a7af5a44d25..c49d07908fa8d5917ba96be85f294b28514c43ec 100644 GIT binary patch literal 1723 zcmV;s21NNmRzV9y!@LH89~R9h_&_aBQ000000000Bk zm}_hlRTzfP?7iE|ZoA!HxI^*6rCsO`)CdX)geVpSD~SSTx;t$LcW2g_*iU|RNCL(_%CM23_A~698Y9zjMc4yoDPTSco24a&p{dUfC z-kEdz&Y79V7?aqQb368_^PUP_IVm?bRSDAB79SvdoxrmFR&QE4cv z8^60cNp+I+AX?`vxc5EiBs528j7Ns{kk>gRzmnK)k-VQ zuhvO>!){;jH178;^as@JW$ZX~6^i*t8-1m13`y~Ofjj_hgtkGuAQiHpeb7tL>(B`F zF?0<20y+a-fG$D5LDwO#pRqcB>GbrMOiy%bfHbr=g@H11NsKz$$gg^$w7c@{?vgXg zB;Do9$g1Yd&I7l3cB)!R8N$>g&loItmouoP70q1F6m1Uvcp;)4%%TI58n;)X4&CcJB;%1x*gW@uq}kJfrnjo7~{!p z7~wwXaEQ$G0G;XHb3o2RHz*nu(6%bZ7C~F92pXcOZxG0H&^yo>idPBFSAhHpEesPh zETE47c?{Z1(P{yG56EHYJBro_=-**JCTwvvL2CtcGmviRd5YEv=wTp7pdTq35zy)y z#_FL}H3W?c=yo7Gp#v0c5YQ1IA3)zwG%ldO0{I=9RZGxT0bK!PC8Sbxrhx7T@*?y( zMQ01>1t1rphB|__3FuNFolu&hiv;ulkXN9i6itXL0mymiABrw_JrVe{u{RAhU zM^5tuPsotH?>#=8Ez*8DPr13)IIe4TJ?&=d>)}w@o*Qyn($%wj5%&doVSoNX63_iAN4TlTX*s+cB@ z8vHcc92q-}7X7Eux9c%0xzXCnjEZTZTT=_C^-N_>k&=Y7xtDvrQJGh?bO{yAzO2lw zxzudCYV~jHm$Ui)zg(GT%Oswi+_W`Xk?HISOtFTO*4X22tjxK_P@c`HhLXysSQwd= z8C5$*YqVkR^Y+9(*vL+y{;!GKMvp&X)!bTGoB8+j zNSXd^jnnTtzcM7-M;27yR9^MzJ>J+U@8*2GvYn=|3UYYLJ|)>hx|Bh) za8Z(q6K+etZs{hk;-yuJCq!DwnWcE0zb~Hu5)pR3N2KD;_lkq@{P&7t(Wk|tpJ-9E z$tk+ODPM%f_99F}uQid>)FNcDqd<;BqZFMdppjY_EkVh0XlpB(ZVQB&nFF#1dXu7e3+M?TC!wDy+Tl8hr8 zW*4kD>+!|9_VRP?k8LC*9ULS(W=h^TnB&IBmgr{Y=oWT-(V`<>Zf+9Y^XJPmT-PwH Ib_N;&06m;0y#N3J diff --git a/packages/material-parser/test/fixtures/__snapshots__/test/accesser/LocalAccesser.ts.md b/packages/material-parser/test/fixtures/__snapshots__/test/accesser/LocalAccesser.ts.md index 1ea353a7d..27bbbe3db 100644 --- a/packages/material-parser/test/fixtures/__snapshots__/test/accesser/LocalAccesser.ts.md +++ b/packages/material-parser/test/fixtures/__snapshots__/test/accesser/LocalAccesser.ts.md @@ -8,4 +8,181 @@ Generated by [AVA](https://avajs.dev). > Snapshot 1 - [] + [ + { + manifestFilePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/single-exported-component/es/manifest.json', + manifestObj: { + docUrl: '', + npm: { + destructuring: false, + exportName: '', + main: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/single-exported-component/es/index.js', + package: '@ali/lowcode-engine-material-parser', + subName: '', + version: '0.1.0', + }, + props: [ + { + name: 'optionalArray', + propType: 'array', + }, + { + name: 'optionalBool', + propType: 'bool', + }, + { + name: 'optionalFunc', + propType: 'func', + }, + { + defaultValue: 123, + name: 'optionalNumber', + propType: 'number', + }, + { + name: 'optionalObject', + propType: 'object', + }, + { + name: 'optionalString', + propType: 'string', + }, + { + name: 'optionalSymbol', + propType: 'symbol', + }, + { + name: 'optionalNode', + propType: 'node', + }, + { + name: 'optionalElement', + propType: 'element', + }, + { + name: 'optionalElementType', + propType: 'elementType', + }, + { + name: 'optionalMessage', + propType: { + type: 'instanceOf', + value: 'Demo', + }, + }, + { + name: 'optionalEnum', + propType: { + type: 'oneOf', + value: [ + 'News', + 'Photos', + ], + }, + }, + { + name: 'optionalUnion', + propType: { + type: 'oneOfType', + value: [ + 'string', + 'number', + { + type: 'instanceOf', + value: 'Demo', + }, + ], + }, + }, + { + name: 'optionalArrayOf', + propType: { + type: 'arrayOf', + value: 'number', + }, + }, + { + name: 'optionalObjectOf', + propType: { + type: 'objectOf', + value: 'number', + }, + }, + { + name: 'optionalObjectWithShape', + propType: { + type: 'shape', + value: [ + { + name: 'optionalProperty', + propType: 'string', + }, + { + name: 'requiredProperty', + propType: { + isRequired: true, + type: 'number', + }, + }, + ], + }, + }, + { + name: 'optionalObjectWithShape2', + propType: { + isRequired: true, + type: 'shape', + value: [ + { + name: 'optionalProperty', + propType: 'string', + }, + { + name: 'requiredProperty', + propType: { + isRequired: true, + type: 'number', + }, + }, + ], + }, + }, + { + name: 'optionalObjectWithStrictShape', + propType: { + type: 'exact', + value: [ + { + name: 'optionalProperty', + propType: 'string', + }, + { + name: 'requiredProperty', + propType: { + isRequired: true, + type: 'number', + }, + }, + ], + }, + }, + { + name: 'requiredFunc', + propType: { + isRequired: true, + type: 'func', + }, + }, + { + name: 'requiredAny', + propType: { + isRequired: true, + type: 'any', + }, + }, + ], + screenshot: '', + title: '@ali/lowcode-engine-material-parser', + }, + }, + ] diff --git a/packages/material-parser/test/fixtures/__snapshots__/test/accesser/LocalAccesser.ts.snap b/packages/material-parser/test/fixtures/__snapshots__/test/accesser/LocalAccesser.ts.snap index d369f481a83e02e91d1e7ce73599ae08a64379e4..368768b7c6ce4235eff0ad965cdd48424a87082a 100644 GIT binary patch literal 1734 zcmV;%208gbRzVU6g8;~$F%00000000Bk zm|JWVRT#(5?7iFF?)I{60g*dcq1{qr;6ddQ;Q^(Tt0WR-x;xtr?9Oa=rZ<%YW1=Ea zFoa-8G$xQ36N8u3ON?Nm(F7j6gb*c$0Ko^47l{dp2F3rJ-Pv}(Q##wlKy30)zn$|t z|2en$&Y79X7?W7$wZ+R$?7!|me{fpt$(vho#rm5*l`%K-^H>TMrH%~Z5xJgpD5 z@+)#$ZN(2OZUw4pN<1qkcFH}95zok`l2he$YgW#|ENo< z&Qy}H%Vc#;(abonnr~Oz4nxOmzJUTB#uj);Z#|{G4M?%afoy=bK|N3o+6BD~ z9f00~-i1b>FQHS=8R!CZ6}k>#$XEz!f@XV57pk{pp<;M_q|4zXrYzT=!2DzG`Bhhx z4qSdcbjlg!76a$W$f{}4En9R^6)_`4DoQg6^41Z*9vQR_=%r)%L*@AVU&lV0K!@xF0sNo z9(G${Jx_SAB0K;c50EwQqif!M3CI07X4}fxHfV3|*jjmEi0T zG8TrG1_>Gz(5HbY(0+NG$Z4MH2^p~V!cD{3BJGv)l#^@7c3r9KX(v-pH;2mhT-~oF96eJU3iF&; zf`*bxO72gaTjX?q9`{JkPITWI`@Wt1nQkGk3wQQu1ZoGlk8_iAM< zTXx&mDu#hW2S1@MjEtU8i~f@s+f`VV+-OT>M#VI-SyKxq_~$Egij*Xrbt&%kUS(d< z(nqLZ_ETkMO{Hc}sAliRUOAf|e;jNp@oc_@X9qWJt;}@#IHq`p6Xs}hw^imG$|-&Q zYEDV!Q!I>Ls?4a`Hd>(#bDxjK_rXSX4keeMU@h6mYK1*-5s(gO6GiLAV+W8v=nzF4 z1@st@5$I=%P8HA_KwNcrJF6q;Jp%d|koAy3(R+pC=PN+=Lmxt?DLz+l{td|QP+dJi z?-$S(AaSURqU{3O2V@X>gQ6YI=LvI6t_!M~Vai%Uu^z_KH{^lhj%!tVRLSVhc3!-i z6&~x)>c_mKb1&!WRlItBt-<1A1r~nU&QlZgX2MN>tXn`YW~%?f&TAAO`I?4t`$msH zLDkq$csBEI?2$74myGW}ar2ZR**dbI`u6gwPp)~Rr@Y(qam!Yk!c(vZt=tD4Z7BT~ z(opg(1kdaj0KS6GLe~h~L}2#~0InEgp;#$6gMv)}rb7z|IFEuI0G2{43Am7cTy$A) z?C5rJ>^+^zpi#IeNyP=%)vKGj!K=7wmEsAJRk))<(A&Z>^@;!8eqB8|_P7`A-(3U2G&Jxfp zkOAljMdu6XDIh;Ue^YdUfHpN_vY|E21YIO1XCQ;nQHr+S@#H-2@v93Px{@;;UmweU z*NEEZhf!zbkQ2?fcS^iN&AjseXlBEdTOG-kp=1@5nnIS_Y++^Y0kRMJfTH&a=xHEl cp}#2F=D3I_m(3^IJ@2y9zxtj!h&>tr00+cGkN^Mx literal 107 zcmZ<^b5sbjeLCPLuEEU;qQ=-~=E@Iq}wb z%YE~Q(!c+%ytL@zf8_=xg#|oE&hWfRFjHo4Hc+0epu9RcFfd6~S-I!v`Sbh?UT%EC H&Oj3YZc`^w diff --git a/packages/material-parser/test/fixtures/__snapshots__/test/generator/Generator.ts.md b/packages/material-parser/test/fixtures/__snapshots__/test/generator/Generator.ts.md index 064c32d38..d01bf610e 100644 --- a/packages/material-parser/test/fixtures/__snapshots__/test/generator/Generator.ts.md +++ b/packages/material-parser/test/fixtures/__snapshots__/test/generator/Generator.ts.md @@ -4,8 +4,1132 @@ The actual snapshot is saved in `Generator.ts.snap`. Generated by [AVA](https://avajs.dev). +## generate multiple exported components + +> Snapshot 1 + + [ + { + manifestFilePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeBlank/manifest.json', + manifestObj: { + docUrl: '', + npm: { + destructuring: false, + exportName: '', + main: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js', + package: 'multiple-exported-component', + subName: '', + version: '1.0.0', + }, + props: [ + { + name: 'children', + propType: { + type: 'oneOfType', + value: [ + { + type: 'arrayOf', + value: 'node', + }, + 'node', + ], + }, + }, + { + name: 'styleBoxModel', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleLayout', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleBackground', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleFlexLayout', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'style', + propType: 'object', + }, + { + name: 'id', + propType: 'string', + }, + ], + screenshot: '', + title: 'multiple-exported-component', + }, + }, + { + manifestFilePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeIcon/manifest.json', + manifestObj: { + docUrl: '', + npm: { + destructuring: false, + exportName: '', + main: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js', + package: 'multiple-exported-component', + subName: '', + version: '1.0.0', + }, + props: [ + { + name: 'className', + propType: 'string', + }, + { + name: 'iconClassName', + propType: 'string', + }, + { + name: 'children', + propType: { + type: 'oneOfType', + value: [ + { + type: 'arrayOf', + value: 'node', + }, + 'node', + ], + }, + }, + { + name: 'styleBoxModel', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleText', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleBackground', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'style', + propType: 'object', + }, + ], + screenshot: '', + title: 'multiple-exported-component', + }, + }, + { + manifestFilePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeImage/manifest.json', + manifestObj: { + docUrl: '', + npm: { + destructuring: false, + exportName: '', + main: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js', + package: 'multiple-exported-component', + subName: '', + version: '1.0.0', + }, + props: [ + { + name: 'styleBoxModel', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'style', + propType: 'object', + }, + ], + screenshot: '', + title: 'multiple-exported-component', + }, + }, + { + manifestFilePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeLink/manifest.json', + manifestObj: { + docUrl: '', + npm: { + destructuring: false, + exportName: '', + main: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js', + package: 'multiple-exported-component', + subName: '', + version: '1.0.0', + }, + props: [ + { + name: 'children', + propType: { + type: 'oneOfType', + value: [ + { + type: 'arrayOf', + value: 'node', + }, + 'node', + ], + }, + }, + { + name: 'styleBoxModel', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleText', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleLayout', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleBackground', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'style', + propType: 'object', + }, + ], + screenshot: '', + title: 'multiple-exported-component', + }, + }, + { + manifestFilePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakePlaceholder/manifest.json', + manifestObj: { + docUrl: '', + npm: { + destructuring: false, + exportName: '', + main: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js', + package: 'multiple-exported-component', + subName: '', + version: '1.0.0', + }, + props: [ + { + name: 'children', + propType: { + type: 'oneOfType', + value: [ + { + type: 'arrayOf', + value: 'node', + }, + 'node', + ], + }, + }, + { + name: 'styleBoxModel', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleLayout', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'style', + propType: 'object', + }, + ], + screenshot: '', + title: 'multiple-exported-component', + }, + }, + { + manifestFilePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeText/manifest.json', + manifestObj: { + docUrl: '', + npm: { + destructuring: false, + exportName: '', + main: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js', + package: 'multiple-exported-component', + subName: '', + version: '1.0.0', + }, + props: [ + { + name: 'children', + propType: { + type: 'oneOfType', + value: [ + { + type: 'arrayOf', + value: 'node', + }, + 'node', + 'string', + ], + }, + }, + { + name: 'type', + propType: 'string', + }, + { + name: 'styleBoxModel', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleText', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleLayout', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleBackground', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'style', + propType: 'object', + }, + ], + screenshot: '', + title: 'multiple-exported-component', + }, + }, + { + manifestFilePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/Root/manifest.json', + manifestObj: { + docUrl: '', + npm: { + destructuring: false, + exportName: '', + main: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js', + package: 'multiple-exported-component', + subName: '', + version: '1.0.0', + }, + props: [ + { + name: 'style', + propType: 'object', + }, + { + name: 'children', + propType: { + type: 'oneOfType', + value: [ + 'element', + { + type: 'arrayOf', + value: 'element', + }, + ], + }, + }, + ], + screenshot: '', + title: 'multiple-exported-component', + }, + }, + ] + +## generate multiple exported components with extensions + +> Snapshot 1 + + [ + { + manifestFilePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeBlank/manifest.json', + manifestObj: { + docUrl: '', + npm: { + destructuring: false, + exportName: '', + main: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js', + package: 'multiple-exported-component', + subName: '', + version: '1.0.0', + }, + props: [ + { + name: 'children', + propType: { + type: 'oneOfType', + value: [ + { + type: 'arrayOf', + value: 'node', + }, + 'node', + ], + }, + }, + { + name: 'styleBoxModel', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleLayout', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleBackground', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleFlexLayout', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'style', + propType: 'object', + }, + { + name: 'id', + propType: 'string', + }, + ], + screenshot: '', + title: 'multiple-exported-component', + }, + }, + { + manifestFilePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeIcon/manifest.json', + manifestObj: { + docUrl: '', + npm: { + destructuring: false, + exportName: '', + main: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js', + package: 'multiple-exported-component', + subName: '', + version: '1.0.0', + }, + props: [ + { + name: 'className', + propType: 'string', + }, + { + name: 'iconClassName', + propType: 'string', + }, + { + name: 'children', + propType: { + type: 'oneOfType', + value: [ + { + type: 'arrayOf', + value: 'node', + }, + 'node', + ], + }, + }, + { + name: 'styleBoxModel', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleText', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleBackground', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'style', + propType: 'object', + }, + ], + screenshot: '', + title: 'multiple-exported-component', + }, + }, + { + manifestFilePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeImage/manifest.json', + manifestObj: { + docUrl: '', + npm: { + destructuring: false, + exportName: '', + main: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js', + package: 'multiple-exported-component', + subName: '', + version: '1.0.0', + }, + props: [ + { + name: 'styleBoxModel', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'style', + propType: 'object', + }, + ], + screenshot: '', + title: 'multiple-exported-component', + }, + }, + { + manifestFilePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeLink/manifest.json', + manifestObj: { + docUrl: '', + npm: { + destructuring: false, + exportName: '', + main: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js', + package: 'multiple-exported-component', + subName: '', + version: '1.0.0', + }, + props: [ + { + name: 'children', + propType: { + type: 'oneOfType', + value: [ + { + type: 'arrayOf', + value: 'node', + }, + 'node', + ], + }, + }, + { + name: 'styleBoxModel', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleText', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleLayout', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleBackground', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'style', + propType: 'object', + }, + ], + screenshot: '', + title: 'multiple-exported-component', + }, + }, + { + manifestFilePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakePlaceholder/manifest.json', + manifestObj: { + docUrl: '', + npm: { + destructuring: false, + exportName: '', + main: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js', + package: 'multiple-exported-component', + subName: '', + version: '1.0.0', + }, + props: [ + { + name: 'children', + propType: { + type: 'oneOfType', + value: [ + { + type: 'arrayOf', + value: 'node', + }, + 'node', + ], + }, + }, + { + name: 'styleBoxModel', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleLayout', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'style', + propType: 'object', + }, + ], + screenshot: '', + title: 'multiple-exported-component', + }, + }, + { + manifestFilePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeText/manifest.json', + manifestObj: { + docUrl: '', + npm: { + destructuring: false, + exportName: '', + main: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js', + package: 'multiple-exported-component', + subName: '', + version: '1.0.0', + }, + props: [ + { + name: 'children', + propType: { + type: 'oneOfType', + value: [ + { + type: 'arrayOf', + value: 'node', + }, + 'node', + 'string', + ], + }, + }, + { + name: 'type', + propType: 'string', + }, + { + name: 'styleBoxModel', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleText', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleLayout', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleBackground', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'style', + propType: 'object', + }, + ], + screenshot: '', + title: 'multiple-exported-component', + }, + }, + { + manifestFilePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/Root/manifest.json', + manifestObj: { + docUrl: '', + npm: { + destructuring: false, + exportName: '', + main: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js', + package: 'multiple-exported-component', + subName: '', + version: '1.0.0', + }, + props: [ + { + name: 'style', + propType: 'object', + }, + { + name: 'children', + propType: { + type: 'oneOfType', + value: [ + 'element', + { + type: 'arrayOf', + value: 'element', + }, + ], + }, + }, + ], + screenshot: '', + title: 'multiple-exported-component', + }, + }, + ] + ## generate single exported components > Snapshot 1 - [] + [ + { + manifestFilePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/single-exported-component/es/manifest.json', + manifestObj: { + docUrl: '', + npm: { + destructuring: false, + exportName: '', + main: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/single-exported-component/es/index.js', + package: 'single-exported-component', + subName: '', + version: '1.0.0', + }, + props: [ + { + name: 'optionalArray', + propType: 'array', + }, + { + name: 'optionalBool', + propType: 'bool', + }, + { + name: 'optionalFunc', + propType: 'func', + }, + { + defaultValue: 123, + name: 'optionalNumber', + propType: 'number', + }, + { + name: 'optionalObject', + propType: 'object', + }, + { + name: 'optionalString', + propType: 'string', + }, + { + name: 'optionalSymbol', + propType: 'symbol', + }, + { + name: 'optionalNode', + propType: 'node', + }, + { + name: 'optionalElement', + propType: 'element', + }, + { + name: 'optionalElementType', + propType: 'elementType', + }, + { + name: 'optionalMessage', + propType: { + type: 'instanceOf', + value: 'Demo', + }, + }, + { + name: 'optionalEnum', + propType: { + type: 'oneOf', + value: [ + 'News', + 'Photos', + ], + }, + }, + { + name: 'optionalUnion', + propType: { + type: 'oneOfType', + value: [ + 'string', + 'number', + { + type: 'instanceOf', + value: 'Demo', + }, + ], + }, + }, + { + name: 'optionalArrayOf', + propType: { + type: 'arrayOf', + value: 'number', + }, + }, + { + name: 'optionalObjectOf', + propType: { + type: 'objectOf', + value: 'number', + }, + }, + { + name: 'optionalObjectWithShape', + propType: { + type: 'shape', + value: [ + { + name: 'optionalProperty', + propType: 'string', + }, + { + name: 'requiredProperty', + propType: { + isRequired: true, + type: 'number', + }, + }, + ], + }, + }, + { + name: 'optionalObjectWithShape2', + propType: { + isRequired: true, + type: 'shape', + value: [ + { + name: 'optionalProperty', + propType: 'string', + }, + { + name: 'requiredProperty', + propType: { + isRequired: true, + type: 'number', + }, + }, + ], + }, + }, + { + name: 'optionalObjectWithStrictShape', + propType: { + type: 'exact', + value: [ + { + name: 'optionalProperty', + propType: 'string', + }, + { + name: 'requiredProperty', + propType: { + isRequired: true, + type: 'number', + }, + }, + ], + }, + }, + { + name: 'requiredFunc', + propType: { + isRequired: true, + type: 'func', + }, + }, + { + name: 'requiredAny', + propType: { + isRequired: true, + type: 'any', + }, + }, + ], + screenshot: '', + title: 'single-exported-component', + }, + }, + ] + +## generate single exported components with extensions + +> Snapshot 1 + + [ + { + manifestFilePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/single-exported-component/src/manifest.json', + manifestObj: { + docUrl: '', + npm: { + destructuring: false, + exportName: '', + main: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/single-exported-component/es/index.js', + package: 'single-exported-component', + subName: '', + version: '1.0.0', + }, + props: [ + { + name: 'optionalArray', + propType: 'array', + }, + { + name: 'optionalBool', + propType: 'bool', + }, + { + name: 'optionalFunc', + propType: 'func', + }, + { + defaultValue: 123, + name: 'optionalNumber', + propType: 'number', + }, + { + name: 'optionalObject', + propType: 'object', + }, + { + name: 'optionalString', + propType: 'string', + }, + { + name: 'optionalSymbol', + propType: 'symbol', + }, + { + name: 'optionalNode', + propType: 'node', + }, + { + name: 'optionalElement', + propType: 'element', + }, + { + name: 'optionalElementType', + propType: 'elementType', + }, + { + name: 'optionalMessage', + propType: { + type: 'instanceOf', + value: 'Demo', + }, + }, + { + name: 'optionalEnum', + propType: { + type: 'oneOf', + value: [ + 'News', + 'Photos', + ], + }, + }, + { + name: 'optionalUnion', + propType: { + type: 'oneOfType', + value: [ + 'string', + 'number', + { + type: 'instanceOf', + value: 'Demo', + }, + ], + }, + }, + { + name: 'optionalArrayOf', + propType: { + type: 'arrayOf', + value: 'number', + }, + }, + { + name: 'optionalObjectOf', + propType: { + type: 'objectOf', + value: 'number', + }, + }, + { + name: 'optionalObjectWithShape', + propType: { + type: 'shape', + value: [ + { + name: 'optionalProperty', + propType: 'string', + }, + { + name: 'requiredProperty', + propType: { + isRequired: true, + type: 'number', + }, + }, + ], + }, + }, + { + name: 'optionalObjectWithShape2', + propType: { + isRequired: true, + type: 'shape', + value: [ + { + name: 'optionalProperty', + propType: 'string', + }, + { + name: 'requiredProperty', + propType: { + isRequired: true, + type: 'number', + }, + }, + ], + }, + }, + { + name: 'optionalObjectWithStrictShape', + propType: { + type: 'exact', + value: [ + { + name: 'optionalProperty', + propType: 'string', + }, + { + name: 'requiredProperty', + propType: { + isRequired: true, + type: 'number', + }, + }, + ], + }, + }, + { + name: 'requiredFunc', + propType: { + isRequired: true, + type: 'func', + }, + }, + { + name: 'requiredAny', + propType: { + isRequired: true, + type: 'any', + }, + }, + ], + screenshot: '', + title: 'single-exported-component', + }, + }, + ] diff --git a/packages/material-parser/test/fixtures/__snapshots__/test/generator/Generator.ts.snap b/packages/material-parser/test/fixtures/__snapshots__/test/generator/Generator.ts.snap index c05b27d8700051a6309bdb20623cb12523dbbfce..6da53d5f152c86f2701007e5968f40882d74f2c6 100644 GIT binary patch literal 6077 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 IpEJ-10H;(b^#A|> diff --git a/packages/material-parser/test/fixtures/__snapshots__/test/parser/ReactParser.ts.md b/packages/material-parser/test/fixtures/__snapshots__/test/parser/ReactParser.ts.md index 5b7e05ec9..6a6806c56 100644 --- a/packages/material-parser/test/fixtures/__snapshots__/test/parser/ReactParser.ts.md +++ b/packages/material-parser/test/fixtures/__snapshots__/test/parser/ReactParser.ts.md @@ -4,12 +4,311 @@ The actual snapshot is saved in `ReactParser.ts.snap`. Generated by [AVA](https://avajs.dev). +## parse es6 multiple exported component by local + +> Snapshot 1 + + [ + { + defaultExportName: 'AIMakeBlank', + filePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeBlank/index.js', + props: [ + { + name: 'children', + propType: { + type: 'oneOfType', + value: [ + { + type: 'arrayOf', + value: 'node', + }, + 'node', + ], + }, + }, + { + name: 'styleBoxModel', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleLayout', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleBackground', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleFlexLayout', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'style', + propType: 'object', + }, + { + name: 'id', + propType: 'string', + }, + ], + }, + { + defaultExportName: 'AIMakeIcon', + filePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeIcon/index.js', + props: [ + { + name: 'className', + propType: 'string', + }, + { + name: 'iconClassName', + propType: 'string', + }, + { + name: 'children', + propType: { + type: 'oneOfType', + value: [ + { + type: 'arrayOf', + value: 'node', + }, + 'node', + ], + }, + }, + { + name: 'styleBoxModel', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleText', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleBackground', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'style', + propType: 'object', + }, + ], + }, + { + defaultExportName: 'AIMakeImage', + filePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeImage/index.js', + props: [ + { + name: 'styleBoxModel', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'style', + propType: 'object', + }, + ], + }, + { + defaultExportName: 'AIMakeLink', + filePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeLink/index.js', + props: [ + { + name: 'children', + propType: { + type: 'oneOfType', + value: [ + { + type: 'arrayOf', + value: 'node', + }, + 'node', + ], + }, + }, + { + name: 'styleBoxModel', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleText', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleLayout', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleBackground', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'style', + propType: 'object', + }, + ], + }, + { + defaultExportName: 'AIMakePlaceholder', + filePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakePlaceholder/index.js', + props: [ + { + name: 'children', + propType: { + type: 'oneOfType', + value: [ + { + type: 'arrayOf', + value: 'node', + }, + 'node', + ], + }, + }, + { + name: 'styleBoxModel', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleLayout', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'style', + propType: 'object', + }, + ], + }, + { + defaultExportName: 'AIMakeText', + filePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeText/index.js', + props: [ + { + name: 'children', + propType: { + type: 'oneOfType', + value: [ + { + type: 'arrayOf', + value: 'node', + }, + 'node', + 'string', + ], + }, + }, + { + name: 'type', + propType: 'string', + }, + { + name: 'styleBoxModel', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleText', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleLayout', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'styleBackground', + propType: { + isRequired: true, + type: 'object', + }, + }, + { + name: 'style', + propType: 'object', + }, + ], + }, + { + defaultExportName: 'Root', + filePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/Root/index.js', + props: [ + { + name: 'style', + propType: 'object', + }, + { + name: 'children', + propType: { + type: 'oneOfType', + value: [ + 'element', + { + type: 'arrayOf', + value: 'element', + }, + ], + }, + }, + ], + }, + ] + ## parse es6 single exported component by local > Snapshot 1 [ { + defaultExportName: 'Demo', filePath: '/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/single-exported-component/es/index.js', props: [ { @@ -25,7 +324,7 @@ Generated by [AVA](https://avajs.dev). propType: 'func', }, { - defaultValue: '123', + defaultValue: 123, name: 'optionalNumber', propType: 'number', }, @@ -73,7 +372,7 @@ Generated by [AVA](https://avajs.dev). { name: 'optionalUnion', propType: { - type: 'union', + type: 'oneOfType', value: [ 'string', 'number', diff --git a/packages/material-parser/test/fixtures/__snapshots__/test/parser/ReactParser.ts.snap b/packages/material-parser/test/fixtures/__snapshots__/test/parser/ReactParser.ts.snap index 5b72f473cf1946fe482f84bd7a3ef4d598a206e0..452d8b7a87c6c1603e145d177b393e9a6085bdff 100644 GIT binary patch literal 3287 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 V9|~sp_56{O{s$bzH~!Q^007=MT^|4d literal 1533 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 N?SHSwmi>KJ006FB%(nml literal 3714 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 diff --git a/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeBlank/manifest.json b/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeBlank/manifest.json index 94d358017..482a32c96 100644 --- a/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeBlank/manifest.json +++ b/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeBlank/manifest.json @@ -1 +1 @@ -{"componentName":"AIMakeBlank","title":"","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"AIMakeBlank","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"children","propType":{"type":"union","value":[{"type":"arrayOf","value":"node"},"node"]}},{"name":"styleBoxModel","propType":"object"},{"name":"styleLayout","propType":"object"},{"name":"styleBackground","propType":"object"},{"name":"styleFlexLayout","propType":"object"},{"name":"style","propType":"object"},{"name":"id","propType":"string"}]} \ No newline at end of file +{"title":"multiple-exported-component","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"children","propType":{"type":"oneOfType","value":[{"type":"arrayOf","value":"node"},"node"]}},{"name":"styleBoxModel","propType":{"type":"object","isRequired":true}},{"name":"styleLayout","propType":{"type":"object","isRequired":true}},{"name":"styleBackground","propType":{"type":"object","isRequired":true}},{"name":"styleFlexLayout","propType":{"type":"object","isRequired":true}},{"name":"style","propType":"object"},{"name":"id","propType":"string"}]} \ No newline at end of file diff --git a/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeIcon/manifest.json b/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeIcon/manifest.json index 1b9fd4b3d..410ac1a62 100644 --- a/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeIcon/manifest.json +++ b/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeIcon/manifest.json @@ -1 +1 @@ -{"componentName":"AIMakeIcon","title":"","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"AIMakeIcon","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"className","propType":"string"},{"name":"iconClassName","propType":"string"},{"name":"children","propType":{"type":"union","value":[{"type":"arrayOf","value":"node"},"node"]}},{"name":"styleBoxModel","propType":"object"},{"name":"styleText","propType":"object"},{"name":"styleBackground","propType":"object"},{"name":"style","propType":"object"}]} \ No newline at end of file +{"title":"multiple-exported-component","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"className","propType":"string"},{"name":"iconClassName","propType":"string"},{"name":"children","propType":{"type":"oneOfType","value":[{"type":"arrayOf","value":"node"},"node"]}},{"name":"styleBoxModel","propType":{"type":"object","isRequired":true}},{"name":"styleText","propType":{"type":"object","isRequired":true}},{"name":"styleBackground","propType":{"type":"object","isRequired":true}},{"name":"style","propType":"object"}]} \ No newline at end of file diff --git a/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeImage/manifest.json b/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeImage/manifest.json index 2092db4b6..382cec354 100644 --- a/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeImage/manifest.json +++ b/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeImage/manifest.json @@ -1 +1 @@ -{"componentName":"AIMakeImage","title":"","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"AIMakeImage","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"styleBoxModel","propType":"object"},{"name":"style","propType":"object"}]} \ No newline at end of file +{"title":"multiple-exported-component","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"styleBoxModel","propType":{"type":"object","isRequired":true}},{"name":"style","propType":"object"}]} \ No newline at end of file diff --git a/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeLink/manifest.json b/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeLink/manifest.json index 993baf75f..4a6347ce0 100644 --- a/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeLink/manifest.json +++ b/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeLink/manifest.json @@ -1 +1 @@ -{"componentName":"AIMakeLink","title":"","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"AIMakeLink","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"children","propType":{"type":"union","value":[{"type":"arrayOf","value":"node"},"node"]}},{"name":"styleBoxModel","propType":"object"},{"name":"styleText","propType":"object"},{"name":"styleLayout","propType":"object"},{"name":"styleBackground","propType":"object"},{"name":"style","propType":"object"}]} \ No newline at end of file +{"title":"multiple-exported-component","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"children","propType":{"type":"oneOfType","value":[{"type":"arrayOf","value":"node"},"node"]}},{"name":"styleBoxModel","propType":{"type":"object","isRequired":true}},{"name":"styleText","propType":{"type":"object","isRequired":true}},{"name":"styleLayout","propType":{"type":"object","isRequired":true}},{"name":"styleBackground","propType":{"type":"object","isRequired":true}},{"name":"style","propType":"object"}]} \ No newline at end of file diff --git a/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakePlaceholder/manifest.json b/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakePlaceholder/manifest.json index f4d1ef441..bbbe45981 100644 --- a/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakePlaceholder/manifest.json +++ b/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakePlaceholder/manifest.json @@ -1 +1 @@ -{"componentName":"AIMakePlaceholder","title":"","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"AIMakePlaceholder","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"children","propType":{"type":"union","value":[{"type":"arrayOf","value":"node"},"node"]}},{"name":"styleBoxModel","propType":"object"},{"name":"styleLayout","propType":"object"},{"name":"style","propType":"object"}]} \ No newline at end of file +{"title":"multiple-exported-component","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"children","propType":{"type":"oneOfType","value":[{"type":"arrayOf","value":"node"},"node"]}},{"name":"styleBoxModel","propType":{"type":"object","isRequired":true}},{"name":"styleLayout","propType":{"type":"object","isRequired":true}},{"name":"style","propType":"object"}]} \ No newline at end of file diff --git a/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeText/manifest.json b/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeText/manifest.json index b9bc6c295..4ae0e73c1 100644 --- a/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeText/manifest.json +++ b/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeText/manifest.json @@ -1 +1 @@ -{"componentName":"AIMakeText","title":"","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"AIMakeText","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"children","propType":{"type":"union","value":[{"type":"arrayOf","value":"node"},"node","string"]}},{"name":"type","propType":"string"},{"name":"styleBoxModel","propType":"object"},{"name":"styleText","propType":"object"},{"name":"styleLayout","propType":"object"},{"name":"styleBackground","propType":"object"},{"name":"style","propType":"object"}]} \ No newline at end of file +{"title":"multiple-exported-component","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"children","propType":{"type":"oneOfType","value":[{"type":"arrayOf","value":"node"},"node","string"]}},{"name":"type","propType":"string"},{"name":"styleBoxModel","propType":{"type":"object","isRequired":true}},{"name":"styleText","propType":{"type":"object","isRequired":true}},{"name":"styleLayout","propType":{"type":"object","isRequired":true}},{"name":"styleBackground","propType":{"type":"object","isRequired":true}},{"name":"style","propType":"object"}]} \ No newline at end of file diff --git a/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/Root/manifest.json b/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/Root/manifest.json index a791f69fa..3b2498e18 100644 --- a/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/Root/manifest.json +++ b/packages/material-parser/test/fixtures/multiple-exported-component/es/basic/Root/manifest.json @@ -1 +1 @@ -{"componentName":"Root","title":"","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"Root","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"style","propType":"object"},{"name":"children","propType":{"type":"union","value":["element",{"type":"arrayOf","value":"element"}]}}]} \ No newline at end of file +{"title":"multiple-exported-component","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"style","propType":"object"},{"name":"children","propType":{"type":"oneOfType","value":["element",{"type":"arrayOf","value":"element"}]}}]} \ No newline at end of file diff --git a/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeBlank/manifest.json b/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeBlank/manifest.json index 44a517687..482a32c96 100644 --- a/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeBlank/manifest.json +++ b/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeBlank/manifest.json @@ -1 +1 @@ -{"componentName":"AIMakeBlank","title":"","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"AIMakeBlank","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"children","propType":{"type":"oneOfType"}},{"name":"styleBoxModel","propType":"object"},{"name":"styleLayout","propType":"object"},{"name":"styleBackground","propType":"object"},{"name":"styleFlexLayout","propType":"object"},{"name":"style","propType":"object","defaultValue":"{}"},{"name":"id","propType":"string"}]} \ No newline at end of file +{"title":"multiple-exported-component","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"children","propType":{"type":"oneOfType","value":[{"type":"arrayOf","value":"node"},"node"]}},{"name":"styleBoxModel","propType":{"type":"object","isRequired":true}},{"name":"styleLayout","propType":{"type":"object","isRequired":true}},{"name":"styleBackground","propType":{"type":"object","isRequired":true}},{"name":"styleFlexLayout","propType":{"type":"object","isRequired":true}},{"name":"style","propType":"object"},{"name":"id","propType":"string"}]} \ No newline at end of file diff --git a/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeIcon/manifest.json b/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeIcon/manifest.json index e3c51f31e..410ac1a62 100644 --- a/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeIcon/manifest.json +++ b/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeIcon/manifest.json @@ -1 +1 @@ -{"componentName":"AIMakeIcon","title":"","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"AIMakeIcon","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"className","propType":"string"},{"name":"iconClassName","propType":"string"},{"name":"children","propType":{"type":"oneOfType"}},{"name":"styleBoxModel","propType":"object"},{"name":"styleText","propType":"object"},{"name":"styleBackground","propType":"object"},{"name":"style","propType":"object","defaultValue":"{}"}]} \ No newline at end of file +{"title":"multiple-exported-component","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"className","propType":"string"},{"name":"iconClassName","propType":"string"},{"name":"children","propType":{"type":"oneOfType","value":[{"type":"arrayOf","value":"node"},"node"]}},{"name":"styleBoxModel","propType":{"type":"object","isRequired":true}},{"name":"styleText","propType":{"type":"object","isRequired":true}},{"name":"styleBackground","propType":{"type":"object","isRequired":true}},{"name":"style","propType":"object"}]} \ No newline at end of file diff --git a/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeImage/manifest.json b/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeImage/manifest.json index 76a5bb10f..382cec354 100644 --- a/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeImage/manifest.json +++ b/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeImage/manifest.json @@ -1 +1 @@ -{"componentName":"AIMakeImage","title":"","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"AIMakeImage","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"styleBoxModel","propType":"object"},{"name":"style","propType":"object","defaultValue":"{}"}]} \ No newline at end of file +{"title":"multiple-exported-component","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"styleBoxModel","propType":{"type":"object","isRequired":true}},{"name":"style","propType":"object"}]} \ No newline at end of file diff --git a/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeLink/manifest.json b/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeLink/manifest.json index 6557dd4f6..4a6347ce0 100644 --- a/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeLink/manifest.json +++ b/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeLink/manifest.json @@ -1 +1 @@ -{"componentName":"AIMakeLink","title":"","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"AIMakeLink","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"children","propType":{"type":"oneOfType"}},{"name":"styleBoxModel","propType":"object"},{"name":"styleText","propType":"object"},{"name":"styleLayout","propType":"object"},{"name":"styleBackground","propType":"object"},{"name":"style","propType":"object","defaultValue":"{}"}]} \ No newline at end of file +{"title":"multiple-exported-component","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"children","propType":{"type":"oneOfType","value":[{"type":"arrayOf","value":"node"},"node"]}},{"name":"styleBoxModel","propType":{"type":"object","isRequired":true}},{"name":"styleText","propType":{"type":"object","isRequired":true}},{"name":"styleLayout","propType":{"type":"object","isRequired":true}},{"name":"styleBackground","propType":{"type":"object","isRequired":true}},{"name":"style","propType":"object"}]} \ No newline at end of file diff --git a/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakePlaceholder/manifest.json b/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakePlaceholder/manifest.json index 91203f99b..bbbe45981 100644 --- a/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakePlaceholder/manifest.json +++ b/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakePlaceholder/manifest.json @@ -1 +1 @@ -{"componentName":"AIMakePlaceholder","title":"","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"AIMakePlaceholder","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"children","propType":{"type":"oneOfType"}},{"name":"styleBoxModel","propType":"object"},{"name":"styleLayout","propType":"object"},{"name":"style","propType":"object","defaultValue":"{}"}]} \ No newline at end of file +{"title":"multiple-exported-component","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"children","propType":{"type":"oneOfType","value":[{"type":"arrayOf","value":"node"},"node"]}},{"name":"styleBoxModel","propType":{"type":"object","isRequired":true}},{"name":"styleLayout","propType":{"type":"object","isRequired":true}},{"name":"style","propType":"object"}]} \ No newline at end of file diff --git a/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeText/manifest.json b/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeText/manifest.json index 06231166e..4ae0e73c1 100644 --- a/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeText/manifest.json +++ b/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeText/manifest.json @@ -1 +1 @@ -{"componentName":"AIMakeText","title":"","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"AIMakeText","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"children","propType":{"type":"oneOfType"}},{"name":"type","propType":"string"},{"name":"styleBoxModel","propType":"object"},{"name":"styleText","propType":"object"},{"name":"styleLayout","propType":"object"},{"name":"styleBackground","propType":"object"},{"name":"style","propType":"object","defaultValue":"{}"}]} \ No newline at end of file +{"title":"multiple-exported-component","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"children","propType":{"type":"oneOfType","value":[{"type":"arrayOf","value":"node"},"node","string"]}},{"name":"type","propType":"string"},{"name":"styleBoxModel","propType":{"type":"object","isRequired":true}},{"name":"styleText","propType":{"type":"object","isRequired":true}},{"name":"styleLayout","propType":{"type":"object","isRequired":true}},{"name":"styleBackground","propType":{"type":"object","isRequired":true}},{"name":"style","propType":"object"}]} \ No newline at end of file diff --git a/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/Root/manifest.json b/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/Root/manifest.json index 666da89a5..3b2498e18 100644 --- a/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/Root/manifest.json +++ b/packages/material-parser/test/fixtures/multiple-exported-component/src/basic/Root/manifest.json @@ -1 +1 @@ -{"componentName":"Root","title":"","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"Root","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"style","propType":"object","defaultValue":"{\n padding: 0,\n backgroundColor: '#f0f2f5',\n minHeight: '100%'\n}"},{"name":"children","propType":{"type":"oneOfType"}}]} \ No newline at end of file +{"title":"multiple-exported-component","docUrl":"","screenshot":"","npm":{"package":"multiple-exported-component","version":"1.0.0","exportName":"","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/multiple-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"style","propType":"object"},{"name":"children","propType":{"type":"oneOfType","value":["element",{"type":"arrayOf","value":"element"}]}}]} \ No newline at end of file diff --git a/packages/material-parser/test/fixtures/single-exported-component/es/manifest.json b/packages/material-parser/test/fixtures/single-exported-component/es/manifest.json index 9ca46e161..18cfc93c4 100644 --- a/packages/material-parser/test/fixtures/single-exported-component/es/manifest.json +++ b/packages/material-parser/test/fixtures/single-exported-component/es/manifest.json @@ -1 +1 @@ -{"componentName":"Demo","title":"single-exported-component","docUrl":"","screenshot":"","npm":{"package":"single-exported-component","version":"1.0.0","exportName":"Demo","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/single-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"optionalArray","propType":"array"},{"name":"optionalBool","propType":"bool"},{"name":"optionalFunc","propType":"func"},{"name":"optionalNumber","propType":"number"},{"name":"optionalObject","propType":"object"},{"name":"optionalString","propType":"string"},{"name":"optionalSymbol","propType":"symbol"},{"name":"optionalNode","propType":"node"},{"name":"optionalElement","propType":"element"},{"name":"optionalElementType","propType":"elementType"},{"name":"optionalMessage","propType":{"type":"instanceOf","value":"Demo"}},{"name":"optionalEnum","propType":{"type":"oneOf","value":["News","Photos"]}},{"name":"optionalUnion","propType":{"type":"union","value":["string","number",{"type":"instanceOf","value":"Demo"}]}},{"name":"optionalArrayOf","propType":{"type":"arrayOf","value":"number"}},{"name":"optionalObjectOf","propType":{"type":"objectOf","value":"number"}},{"name":"optionalObjectWithShape","propType":{"type":"shape","value":[{"name":"optionalProperty","propType":"string"},{"name":"requiredProperty","propType":{"type":"number","isRequired":true}}]}},{"name":"optionalObjectWithShape2","propType":{"type":"shape","isRequired":true,"value":[{"name":"optionalProperty","propType":"string"},{"name":"requiredProperty","propType":{"type":"number","isRequired":true}}]}},{"name":"optionalObjectWithStrictShape","propType":{"type":"exact","value":[{"name":"optionalProperty","propType":"string"},{"name":"requiredProperty","propType":{"type":"number","isRequired":true}}]}},{"name":"requiredFunc","propType":{"type":"func","isRequired":true}},{"name":"requiredAny","propType":{"type":"any","isRequired":true}}]} \ No newline at end of file +{"title":"single-exported-component","docUrl":"","screenshot":"","npm":{"package":"single-exported-component","version":"1.0.0","exportName":"","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/single-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"optionalArray","propType":"array"},{"name":"optionalBool","propType":"bool"},{"name":"optionalFunc","propType":"func"},{"name":"optionalNumber","propType":"number","defaultValue":123},{"name":"optionalObject","propType":"object"},{"name":"optionalString","propType":"string"},{"name":"optionalSymbol","propType":"symbol"},{"name":"optionalNode","propType":"node"},{"name":"optionalElement","propType":"element"},{"name":"optionalElementType","propType":"elementType"},{"name":"optionalMessage","propType":{"type":"instanceOf","value":"Demo"}},{"name":"optionalEnum","propType":{"type":"oneOf","value":["News","Photos"]}},{"name":"optionalUnion","propType":{"type":"oneOfType","value":["string","number",{"type":"instanceOf","value":"Demo"}]}},{"name":"optionalArrayOf","propType":{"type":"arrayOf","value":"number"}},{"name":"optionalObjectOf","propType":{"type":"objectOf","value":"number"}},{"name":"optionalObjectWithShape","propType":{"type":"shape","value":[{"name":"optionalProperty","propType":"string"},{"name":"requiredProperty","propType":{"type":"number","isRequired":true}}]}},{"name":"optionalObjectWithShape2","propType":{"type":"shape","isRequired":true,"value":[{"name":"optionalProperty","propType":"string"},{"name":"requiredProperty","propType":{"type":"number","isRequired":true}}]}},{"name":"optionalObjectWithStrictShape","propType":{"type":"exact","value":[{"name":"optionalProperty","propType":"string"},{"name":"requiredProperty","propType":{"type":"number","isRequired":true}}]}},{"name":"requiredFunc","propType":{"type":"func","isRequired":true}},{"name":"requiredAny","propType":{"type":"any","isRequired":true}}]} \ No newline at end of file diff --git a/packages/material-parser/test/fixtures/single-exported-component/src/manifest.json b/packages/material-parser/test/fixtures/single-exported-component/src/manifest.json index 4c5c7745a..18cfc93c4 100644 --- a/packages/material-parser/test/fixtures/single-exported-component/src/manifest.json +++ b/packages/material-parser/test/fixtures/single-exported-component/src/manifest.json @@ -1 +1 @@ -{"componentName":"Demo","title":"","docUrl":"","screenshot":"","npm":{"package":"single-exported-component","version":"1.0.0","exportName":"Demo","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/single-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"optionalArray","propType":"array"},{"name":"optionalBool","propType":"bool"},{"name":"optionalFunc","propType":"func"},{"name":"optionalNumber","propType":"number"},{"name":"optionalObject","propType":"object"},{"name":"optionalString","propType":"string"},{"name":"optionalSymbol","propType":{"type":"symbol"}},{"name":"optionalNode","propType":"node"},{"name":"optionalElement","propType":"element"},{"name":"optionalElementType","propType":{"type":"elementType"}},{"name":"optionalMessage","propType":{"type":"instanceOf"}},{"name":"optionalEnum","propType":{"type":"oneOf"}},{"name":"optionalUnion","propType":{"type":"oneOfType"}},{"name":"optionalArrayOf","propType":{"type":"arrayOf"}},{"name":"optionalObjectOf","propType":{"type":"objectOf"}},{"name":"optionalObjectWithShape","propType":{"type":"shape"}},{"name":"optionalObjectWithShape2","propType":{"type":"shape"}},{"name":"optionalObjectWithStrictShape","propType":{"type":"exact"}},{"name":"requiredFunc","propType":"func"},{"name":"requiredAny","propType":"any"}]} \ No newline at end of file +{"title":"single-exported-component","docUrl":"","screenshot":"","npm":{"package":"single-exported-component","version":"1.0.0","exportName":"","main":"/Users/gengyang/code/frontend/low-code/ali-lowcode-engine/packages/material-parser/test/fixtures/single-exported-component/es/index.js","destructuring":false,"subName":""},"props":[{"name":"optionalArray","propType":"array"},{"name":"optionalBool","propType":"bool"},{"name":"optionalFunc","propType":"func"},{"name":"optionalNumber","propType":"number","defaultValue":123},{"name":"optionalObject","propType":"object"},{"name":"optionalString","propType":"string"},{"name":"optionalSymbol","propType":"symbol"},{"name":"optionalNode","propType":"node"},{"name":"optionalElement","propType":"element"},{"name":"optionalElementType","propType":"elementType"},{"name":"optionalMessage","propType":{"type":"instanceOf","value":"Demo"}},{"name":"optionalEnum","propType":{"type":"oneOf","value":["News","Photos"]}},{"name":"optionalUnion","propType":{"type":"oneOfType","value":["string","number",{"type":"instanceOf","value":"Demo"}]}},{"name":"optionalArrayOf","propType":{"type":"arrayOf","value":"number"}},{"name":"optionalObjectOf","propType":{"type":"objectOf","value":"number"}},{"name":"optionalObjectWithShape","propType":{"type":"shape","value":[{"name":"optionalProperty","propType":"string"},{"name":"requiredProperty","propType":{"type":"number","isRequired":true}}]}},{"name":"optionalObjectWithShape2","propType":{"type":"shape","isRequired":true,"value":[{"name":"optionalProperty","propType":"string"},{"name":"requiredProperty","propType":{"type":"number","isRequired":true}}]}},{"name":"optionalObjectWithStrictShape","propType":{"type":"exact","value":[{"name":"optionalProperty","propType":"string"},{"name":"requiredProperty","propType":{"type":"number","isRequired":true}}]}},{"name":"requiredFunc","propType":{"type":"func","isRequired":true}},{"name":"requiredAny","propType":{"type":"any","isRequired":true}}]} \ No newline at end of file diff --git a/packages/material-parser/test/generator/Generator.ts b/packages/material-parser/test/generator/Generator.ts index bb2bb561c..dead5622e 100644 --- a/packages/material-parser/test/generator/Generator.ts +++ b/packages/material-parser/test/generator/Generator.ts @@ -30,20 +30,20 @@ async function generate( return actual; } -// test.serial('generate multiple exported components', async t => { -// const options: IMaterializeOptions = { -// cwd: multiExportedComptPath, -// entry: multiExportedComptPath, -// accesser: 'local', -// isExportedAsMultiple: true, -// }; +test.serial('generate multiple exported components', async t => { + const options: IMaterializeOptions = { + cwd: multiExportedComptPath, + entry: multiExportedComptPath, + accesser: 'local', + isExportedAsMultiple: true, + }; -// const actual = await generate(options); + const actual = await generate(options); -// t.snapshot(actual); -// }); + t.snapshot(actual); +}); -test.only('generate single exported components', async t => { +test.serial('generate single exported components', async t => { const options: IMaterializeOptions = { cwd: singleExportedComptPath, entry: singleExportedComptPath, diff --git a/packages/material-parser/test/parser/ReactParser.ts b/packages/material-parser/test/parser/ReactParser.ts index 543557d3a..9b7dbafd0 100644 --- a/packages/material-parser/test/parser/ReactParser.ts +++ b/packages/material-parser/test/parser/ReactParser.ts @@ -18,24 +18,23 @@ test.serial('parse es6 multiple exported component by local', async t => { const scanner = new Scanner(options); const scanModel = await scanner.scan(); const parser = new ReactParser(options); -// debugger; const actual: IMaterialParsedModel[] = await parser.parse(scanModel); t.snapshot(actual); }); -// test.serial('parse es6 single exported component by local', async t => { -// const options: IMaterializeOptions = { -// cwd: singleExportedComptPath, -// entry: singleExportedComptPath, -// accesser: 'local', -// isExportedAsMultiple: false, -// }; +test.serial('parse es6 single exported component by local', async t => { + const options: IMaterializeOptions = { + cwd: singleExportedComptPath, + entry: singleExportedComptPath, + accesser: 'local', + isExportedAsMultiple: false, + }; -// const scanner = new Scanner(options); -// const scanModel = await scanner.scan(); -// const parser = new ReactParser(options); -// const actual: IMaterialParsedModel[] = await parser.parse(scanModel); + const scanner = new Scanner(options); + const scanModel = await scanner.scan(); + const parser = new ReactParser(options); + const actual: IMaterialParsedModel[] = await parser.parse(scanModel); -// t.snapshot(actual); -// }); + t.snapshot(actual); +});