first commit

This commit is contained in:
2026-09-08 20:28:54 +08:00
commit 2ada8d3d5a
37380 changed files with 4886169 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
"use strict";const fs=require("fs"),parser=require("@babel/parser"),generate=require("@babel/generator").default,traverse=require("@babel/traverse").default,types=require("@babel/types"),loaderUtils=require("loader-utils"),{colorconsole:colorconsole}=require("@hap-toolkit/shared-utils"),{parseFragmentsWithCache:parseFragmentsWithCache}=require("@hap-toolkit/compiler");function generateFn(e=!1){let t="function () {\n this.$options = this._options || this.$options\n if (this.$options._descriptor) {\n this.$options._descriptor['back'] = { access: 'public' }\n }\n\n // 测试执行:开始时间,结束事件\n global.CASE_TEST_START = global.CASE_TEST_START || 1000\n global.CASE_TEST_TIMEOUT = global.CASE_TEST_TIMEOUT || 2000\n\n global.mocha = new Mocha({ reporter: 'json', timeout: global.CASE_TEST_TIMEOUT })\n mocha.ui('bdd')\n mocha.suite.emit('pre-require', global, null, mocha)\n setTimeout(() => {\n // 记录测试用例\n typeof fnTestCase === 'function' && fnTestCase(this)\n const mochaRunner = mocha.run(() => {\n if (mochaRunner) {\n // 标题\n mochaRunner.testResults.stats.title = mocha.suite.suites && mocha.suite.suites[0] && mocha.suite.suites[0].title\n console.info('testResults: ', JSON.stringify(mochaRunner.testResults))\n pushData('pageTestList', mochaRunner.testResults)\n\n // 显示结果\n const stats = mochaRunner.testResults.stats\n this.$page.setTitleBar({ text: '通过/全部: ' + stats.passes + '/' + stats.tests })\n }\n\n // 是否返回\n if (this.back !== 'false') {\n console.info('拥有关联测试用例,测试完毕,返回到之前的页面')\n history.back()\n }\n })\n }, global.CASE_TEST_START)\n }";return e||(t="function () {\n this.$options = this._options || this.$options\n // 允许back被外部覆盖\n if (this.$options._descriptor) {\n this.$options._descriptor['back'] = { access: 'public' }\n }\n\n // 测试执行:开始时间,结束事件\n global.CASE_TEST_START = global.CASE_TEST_START || 1000\n global.CASE_TEST_TIMEOUT = global.CASE_TEST_TIMEOUT || 2000\n\n setTimeout(() => {\n // 是否返回\n if (this.back !== 'false') {\n console.info('没有关联测试用例,直接返回到之前的页面')\n history.back()\n }\n }, global.CASE_TEST_START)\n }"),parser.parseExpression(t).body}module.exports=function(e){this.cacheable&&this.cacheable();const t=loaderUtils.parseQuery(this.resourceQuery||"?"),s=loaderUtils.getOptions(this),n=s&&s.hookName||"onCreate",o=parseFragmentsWithCache(e).script[0]||{content:""},r=this.resourcePath.replace(/([\\/])(src)([\\/])/,(...e)=>e[1]+"test"+e[3]).replace(/\.\w{2,5}$/,".js"),i=parser.parse(o.content,{sourceType:"module",plugins:["jsx"]});if("app"===t.uxType){const e=types.importDeclaration([],types.stringLiteral("@hap-toolkit/packager/lib/common/app.js"));i.program.body.unshift(e)}else{if("page"!==t.uxType)return e;{const e=fs.existsSync(r),s=r.match(/[\\/]test[\\/](.*)/)[1];if(e){const e=types.importDeclaration([types.importDefaultSpecifier(types.identifier("fnTestCase"))],types.stringLiteral(r));i.program.body.unshift(e),"script"===t.type&&colorconsole.info(`[INFO] 脚本注入测试用例:${s}`)}traverse(i,{ExportDefaultDeclaration(s){if("page"!==t.uxType)return;const o=generateFn(e);let r;const i=s.node.declaration;if("ObjectExpression"!==i.type){const e=s.scope.generateUidIdentifier("replace");s.node.declaration=e;const t=types.variableDeclaration("const",[types.variableDeclarator(e,i)]),r=types.assignmentExpression("=",types.memberExpression(e,types.identifier(n)),types.functionExpression(types.identifier(n),[],o));return s.insertBefore(t),void s.insertBefore(r)}r=i.properties;let a,c=!1;if(r.forEach((e,t)=>{e.key.name===n&&!0===e.method&&(a=t,c=!0)}),c)return void(r[a].body.body=r[a].body.body.concat(o.body));const p=types.identifier(n),l=o,u=types.objectMethod("method",p,[],l);s.node.declaration.properties.push(u)}})}}return e=e.replace(/<script.*?>([\s\S]+)<\/script>/,(function(){return`<script>\n${generate(i).code}\n<\/script>`}))};
//# sourceMappingURL=inject-suite-loader.js.map
+2
View File
@@ -0,0 +1,2 @@
"use strict";var _path=_interopRequireDefault(require("path")),_fs=_interopRequireDefault(require("fs")),_loaderUtils=_interopRequireDefault(require("loader-utils")),_utils=require("../common/utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const REGEXP_INT=/^[-+]?[0-9]+$/,REGEXP_URL=/^['"]?([^()]+?)['"]?$/gi,REGEXP_NAME=/^[a-zA-Z_][a-zA-Z0-9]*$/,validator={integer:function(e){return(e=(e||"").toString()).match(REGEXP_INT)?{value:!0}:{value:!1,reason:function(e,t){return"ERROR: manifest.json的配置项 `"+e+"` 的值 `"+t+"` 无效(仅支持整数)"}}},object:function(e){const t=(0,_utils.isPlainObject)(e);return{value:(0,_utils.isPlainObject)(e),reason:t?null:function(e,t){return"ERROR: manifest.json的配置项 `"+e+"` 的值 `"+t+"` 无效(仅支持对象)"}}},url:function(e){return(e=(e||"").toString().trim()).match(REGEXP_URL)?{value:!0}:{value:!1,reason:function(e,t){return"ERROR: manifest.json的配置项 `"+e+"` 的值 `"+t+"` 必须是url"}}},name:function(e){return(e=(e||"").toString()).match(REGEXP_NAME)?{value:!0}:{value:!1,reason:function(e,t){return"ERROR: manifest.json的配置项 `"+e+"` 的值 `"+t+"` 格式不正确"}}}},validatorMap={package:{type:validator.string,require:!0},name:{type:validator.string,require:!0},versionCode:{type:validator.integer,require:!0},icon:{type:validator.url,require:!0},config:{type:validator.object,require:!0},router:{type:validator.object,require:!0}};function validate(e,t){let r,a;const n=validatorMap[e];return n&&"function"==typeof n.type?(r=n.type(t),r.reason&&(a={reason:r.reason(e,t)})):r={value:!0},{value:r.value,log:a}}const requireAttrMap=[];Object.keys(validatorMap).forEach((function(e){validatorMap[e].require&&requireAttrMap.push(e)})),module.exports=function(e,t){this.cacheable&&this.cacheable();const r=_loaderUtils.default.getOptions(this).path,a=JSON.parse(_fs.default.readFileSync(_path.default.join(r,"manifest.json")).toString()),n=[];if(a){let e,t;requireAttrMap.forEach((function(e){a[e]||n.push({line:1,column:1,reason:"ERROR: manifest.json缺少配置项 `"+e+"`"})})),Object.keys(a).forEach(r=>{e=a[r],t=validate(r,e),t.log&&n.push({line:1,column:1,reason:t.log.reason})}),(0,_utils.logWarn)(this,n),global.framework.manifest=a}this.callback(null,e,t)};
//# sourceMappingURL=manifest-loader.js.map
+2
View File
@@ -0,0 +1,2 @@
"use strict";var _shared=require("../common/shared"),_utils=require("../common/utils"),_script=_interopRequireDefault(require("@hap-toolkit/compiler/lib/script"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}module.exports=function(e,r){const t=(0,_shared.searchModuleImport)(e);e=t.fileCont,(0,_utils.logWarn)(this,t.logFeatureList),e=_script.default.replaceModuleImport(e),this.callback(null,e,r)};
//# sourceMappingURL=module-loader.js.map