@aiot-toolkit/aiotpack 2.0.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/README.md +46 -0
  2. package/lib/compiler/c/README.md +1 -0
  3. package/lib/compiler/c++/README.md +1 -0
  4. package/lib/compiler/enum/CompileMode.d.ts +22 -0
  5. package/lib/compiler/enum/CompileMode.js +30 -0
  6. package/lib/compiler/enum/CompileMode.js.map +1 -0
  7. package/lib/compiler/interface/ICompileParam.d.ts +24 -0
  8. package/lib/compiler/interface/ICompileParam.js +4 -0
  9. package/lib/compiler/interface/ICompileParam.js.map +1 -0
  10. package/lib/compiler/interface/ICompiler.d.ts +5 -0
  11. package/lib/compiler/interface/ICompiler.js +4 -0
  12. package/lib/compiler/interface/ICompiler.js.map +1 -0
  13. package/lib/compiler/interface/ISignConfig.d.ts +8 -0
  14. package/lib/compiler/interface/ISignConfig.js +4 -0
  15. package/lib/compiler/interface/ISignConfig.js.map +1 -0
  16. package/lib/compiler/javascript/JavascriptCompiler.d.ts +11 -0
  17. package/lib/compiler/javascript/JavascriptCompiler.js +108 -0
  18. package/lib/compiler/javascript/JavascriptCompiler.js.map +1 -0
  19. package/lib/compiler/javascript/JavascriptDefaultCompileOption.d.ts +3 -0
  20. package/lib/compiler/javascript/JavascriptDefaultCompileOption.js +21 -0
  21. package/lib/compiler/javascript/JavascriptDefaultCompileOption.js.map +1 -0
  22. package/lib/compiler/javascript/interface/IJavascriptCompileOption.d.ts +40 -0
  23. package/lib/compiler/javascript/interface/IJavascriptCompileOption.js +4 -0
  24. package/lib/compiler/javascript/interface/IJavascriptCompileOption.js.map +1 -0
  25. package/lib/compiler/javascript/interface/IWebpackConfigurator.d.ts +40 -0
  26. package/lib/compiler/javascript/interface/IWebpackConfigurator.js +4 -0
  27. package/lib/compiler/javascript/interface/IWebpackConfigurator.js.map +1 -0
  28. package/lib/compiler/javascript/vela/VelaWebpackConfigurator.d.ts +16 -0
  29. package/lib/compiler/javascript/vela/VelaWebpackConfigurator.js +74 -0
  30. package/lib/compiler/javascript/vela/VelaWebpackConfigurator.js.map +1 -0
  31. package/lib/compiler/javascript/vela/enum/BuildNameFormatType.d.ts +25 -0
  32. package/lib/compiler/javascript/vela/enum/BuildNameFormatType.js +47 -0
  33. package/lib/compiler/javascript/vela/enum/BuildNameFormatType.js.map +1 -0
  34. package/lib/compiler/javascript/vela/enum/EntryType.d.ts +30 -0
  35. package/lib/compiler/javascript/vela/enum/EntryType.js +35 -0
  36. package/lib/compiler/javascript/vela/enum/EntryType.js.map +1 -0
  37. package/lib/compiler/javascript/vela/interface/IChunk.d.ts +29 -0
  38. package/lib/compiler/javascript/vela/interface/IChunk.js +4 -0
  39. package/lib/compiler/javascript/vela/interface/IChunk.js.map +1 -0
  40. package/lib/compiler/javascript/vela/interface/IManifest.d.ts +27 -0
  41. package/lib/compiler/javascript/vela/interface/IManifest.js +4 -0
  42. package/lib/compiler/javascript/vela/interface/IManifest.js.map +1 -0
  43. package/lib/compiler/javascript/vela/interface/IQuickAppConfig.d.ts +11 -0
  44. package/lib/compiler/javascript/vela/interface/IQuickAppConfig.js +4 -0
  45. package/lib/compiler/javascript/vela/interface/IQuickAppConfig.js.map +1 -0
  46. package/lib/compiler/javascript/vela/model/Package.d.ts +75 -0
  47. package/lib/compiler/javascript/vela/model/Package.js +62 -0
  48. package/lib/compiler/javascript/vela/model/Package.js.map +1 -0
  49. package/lib/compiler/javascript/vela/plugin/WrapPlugin.d.ts +7 -0
  50. package/lib/compiler/javascript/vela/plugin/WrapPlugin.js +51 -0
  51. package/lib/compiler/javascript/vela/plugin/WrapPlugin.js.map +1 -0
  52. package/lib/compiler/javascript/vela/utils/Jsc.d.ts +10 -0
  53. package/lib/compiler/javascript/vela/utils/Jsc.js +34 -0
  54. package/lib/compiler/javascript/vela/utils/Jsc.js.map +1 -0
  55. package/lib/compiler/javascript/vela/utils/UxCompileUtil.d.ts +29 -0
  56. package/lib/compiler/javascript/vela/utils/UxCompileUtil.js +144 -0
  57. package/lib/compiler/javascript/vela/utils/UxCompileUtil.js.map +1 -0
  58. package/lib/compiler/javascript/vela/utils/ZipUtil.d.ts +75 -0
  59. package/lib/compiler/javascript/vela/utils/ZipUtil.js +278 -0
  60. package/lib/compiler/javascript/vela/utils/ZipUtil.js.map +1 -0
  61. package/lib/compiler/javascript/vela/utils/signature/Base64.d.ts +11 -0
  62. package/lib/compiler/javascript/vela/utils/signature/Base64.js +77 -0
  63. package/lib/compiler/javascript/vela/utils/signature/Base64.js.map +1 -0
  64. package/lib/compiler/javascript/vela/utils/signature/CRC32.d.ts +9 -0
  65. package/lib/compiler/javascript/vela/utils/signature/CRC32.js +45 -0
  66. package/lib/compiler/javascript/vela/utils/signature/CRC32.js.map +1 -0
  67. package/lib/compiler/javascript/vela/utils/signature/SignUtil.d.ts +94 -0
  68. package/lib/compiler/javascript/vela/utils/signature/SignUtil.js +713 -0
  69. package/lib/compiler/javascript/vela/utils/signature/SignUtil.js.map +1 -0
  70. package/lib/compiler/javascript/vela/utils/signature/Signer.d.ts +16 -0
  71. package/lib/compiler/javascript/vela/utils/signature/Signer.js +30 -0
  72. package/lib/compiler/javascript/vela/utils/signature/Signer.js.map +1 -0
  73. package/lib/compiler/javascript/vela/utils/signature/pem/certificate.pem +27 -0
  74. package/lib/compiler/javascript/vela/utils/signature/pem/private.pem +51 -0
  75. package/lib/config/UxConfig.d.ts +30 -0
  76. package/lib/config/UxConfig.js +52 -0
  77. package/lib/config/UxConfig.js.map +1 -0
  78. package/lib/config/XtsConfig.d.ts +18 -0
  79. package/lib/config/XtsConfig.js +28 -0
  80. package/lib/config/XtsConfig.js.map +1 -0
  81. package/lib/followWorks/xts/entryTemplate.d.ts +21 -0
  82. package/lib/followWorks/xts/entryTemplate.js +166 -0
  83. package/lib/followWorks/xts/entryTemplate.js.map +1 -0
  84. package/lib/followWorks/xts/ts2wasm.d.ts +6 -0
  85. package/lib/followWorks/xts/ts2wasm.js +31 -0
  86. package/lib/followWorks/xts/ts2wasm.js.map +1 -0
  87. package/lib/index.d.ts +2 -0
  88. package/lib/index.js +10 -0
  89. package/lib/index.js.map +1 -0
  90. package/lib/interface/IDeviceList.d.ts +7 -0
  91. package/lib/interface/IDeviceList.js +4 -0
  92. package/lib/interface/IDeviceList.js.map +1 -0
  93. package/lib/loader/ux/AppUxLoader.d.ts +10 -0
  94. package/lib/loader/ux/AppUxLoader.js +31 -0
  95. package/lib/loader/ux/AppUxLoader.js.map +1 -0
  96. package/lib/loader/ux/PngLoader.d.ts +10 -0
  97. package/lib/loader/ux/PngLoader.js +70 -0
  98. package/lib/loader/ux/PngLoader.js.map +1 -0
  99. package/lib/loader/ux/UxLoader.d.ts +6 -0
  100. package/lib/loader/ux/UxLoader.js +31 -0
  101. package/lib/loader/ux/UxLoader.js.map +1 -0
  102. package/lib/loader/xts/XtsLoader.d.ts +9 -0
  103. package/lib/loader/xts/XtsLoader.js +55 -0
  104. package/lib/loader/xts/XtsLoader.js.map +1 -0
  105. package/lib/utils/PngUtils.d.ts +20 -0
  106. package/lib/utils/PngUtils.js +45 -0
  107. package/lib/utils/PngUtils.js.map +1 -0
  108. package/lib/utils/PreWorkUtils.d.ts +17 -0
  109. package/lib/utils/PreWorkUtils.js +76 -0
  110. package/lib/utils/PreWorkUtils.js.map +1 -0
  111. package/lib/utils/ux/UxFileUtils.d.ts +22 -0
  112. package/lib/utils/ux/UxFileUtils.js +34 -0
  113. package/lib/utils/ux/UxFileUtils.js.map +1 -0
  114. package/lib/utils/ux/UxFollowWorks.d.ts +35 -0
  115. package/lib/utils/ux/UxFollowWorks.js +200 -0
  116. package/lib/utils/ux/UxFollowWorks.js.map +1 -0
  117. package/lib/utils/ux/UxLoaderUtils.d.ts +60 -0
  118. package/lib/utils/ux/UxLoaderUtils.js +241 -0
  119. package/lib/utils/ux/UxLoaderUtils.js.map +1 -0
  120. package/lib/utils/xts/XtsFollowWorks.d.ts +29 -0
  121. package/lib/utils/xts/XtsFollowWorks.js +149 -0
  122. package/lib/utils/xts/XtsFollowWorks.js.map +1 -0
  123. package/package.json +44 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["compiler/javascript/vela/utils/signature/SignUtil.ts"],"names":[],"mappings":"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","file":"SignUtil.js","sourcesContent":["import ColorConsole2 from '@aiot-toolkit/shared-utils/lib/ColorConsole2'\nimport CommonUtil from '@aiot-toolkit/shared-utils/lib/utils/CommonUtil'\nimport FileUtil from '@aiot-toolkit/shared-utils/lib/utils/FileUtil'\nimport crypto from 'crypto'\nimport Fs from 'fs-extra'\nimport rs from 'jsrsasign'\nimport JSZip from 'jszip'\nimport Path from 'path'\nimport CompileMode from '../../../../enum/CompileMode'\nimport ICompileParam from '../../../../interface/ICompileParam'\nimport IJavascriptCompileOption from '../../../interface/IJavascriptCompileOption'\nimport { IChunk, IChunkOptions, IFileHash, IPartChunk } from '../../interface/IChunk'\nimport ZipUtil from '../ZipUtil'\nimport Base64 from './Base64'\nimport CRC32 from './CRC32'\nimport Signer from './Signer'\n\n/**\n * SignUtil\n */\nclass SignUtil {\n /**\n * 获取签名相关的配置内容\n * 1. ICompileParam参数中获取编译模式是否为release\n * 2. IJavascriptCompileOption参数中获取签名目录等内容\n * @param param\n */\n static getProjectSignConfig(param: ICompileParam & IJavascriptCompileOption) {\n const { mode, projectPath, signRoot } = param\n let signConfig\n let privatekeyPath\n let certificatePath\n switch (mode) {\n case CompileMode.DEVELOPMENT:\n privatekeyPath = Path.join(__dirname, 'pem', 'private.pem')\n certificatePath = Path.join(__dirname, 'pem', 'certificate.pem')\n break\n case CompileMode.PRODUCTION:\n privatekeyPath = Path.join(projectPath, signRoot, 'private.pem')\n certificatePath = Path.join(projectPath, signRoot, 'certificate.pem')\n break\n default:\n // 打印信息, 模式未定义\n ColorConsole2.error(`【SignUtil】Error: mode ${mode} undefined`)\n break\n }\n // 检查路径是否真实存在\n if (\n privatekeyPath &&\n certificatePath &&\n FileUtil.checkFilePath([privatekeyPath, certificatePath])\n ) {\n signConfig = {\n privatekey: Fs.readFileSync(privatekeyPath),\n certificate: Fs.readFileSync(certificatePath)\n }\n } else {\n // 报错, 抛出错误\n ColorConsole2.throw()\n }\n return signConfig\n }\n static async signZipBufferForPackage(zipBuffer: Buffer, privatekey: Buffer, certificate: Buffer) {\n // 1. 解压得到文件列表\n const zipInstWrap: any = await SignUtil.createFileListFromZipBuffer(zipBuffer)\n\n // 摘要map\n const fileDigestHash = []\n const fileList = []\n\n // 2. 如果包含META-INF/CERT,则对其解压,增加签名\n const metaBuffer = zipInstWrap.getFileBuffer(ZipUtil.CERT_PATH)\n if (metaBuffer) {\n const metaHash = {\n name: ZipUtil.DIGEST_HASH_JSON,\n hash: CommonUtil.calcDataDigest(metaBuffer)\n }\n\n const signedMetaBuffer = SignUtil.doSign(metaBuffer, [metaHash], privatekey, certificate)\n if (signedMetaBuffer === false) {\n // 报错,META-INF/CERT签名失败\n console.error('【SignUtil】error: META-INF/CERT signature failed')\n } else {\n fileList.push({\n path: ZipUtil.CERT_PATH,\n content: signedMetaBuffer\n })\n fileDigestHash.push({\n name: ZipUtil.CERT_PATH,\n hash: CommonUtil.calcDataDigest(signedMetaBuffer)\n })\n }\n }\n // 3. 对整个zip做签名\n const files = zipInstWrap.fileList\n files.filter(SignUtil.fileFilter).map((item: any) => {\n fileList.push(item)\n fileDigestHash.push({\n name: item.path,\n hash: CommonUtil.calcDataDigest(item.content)\n })\n })\n // 因为META变化,重新创建ZIP流\n const newZipBuffer = await ZipUtil.createZipBufferFromFileList(fileList, zipInstWrap.comment)\n // 对新ZIP流重新签名\n const signedZipBuffer = SignUtil.doSign(newZipBuffer, fileDigestHash, privatekey, certificate)\n\n return signedZipBuffer\n }\n /**\n * 根据ZIP流获取文件实例\n * @param zipBuffer\n * @returns\n */\n private static async createFileListFromZipBuffer(zipBuffer: Buffer) {\n const zipInst = await JSZip.loadAsync(zipBuffer, ZipUtil.ZIP_OPTION as JSZip.JSZipLoadOptions)\n async function iterator(filePath: string) {\n const content = await zipInst.files[filePath].async('nodebuffer')\n return {\n path: filePath,\n content\n }\n }\n\n const fileList = await Promise.all(Object.keys(zipInst.files).map(iterator))\n return {\n fileList,\n comment: (zipInst as any).comment,\n getFileBuffer(path: string) {\n const buffer = fileList.find((item) => item.path === path)\n let content\n if (buffer) {\n content = buffer.content\n }\n return content\n }\n }\n }\n /**\n * 为 zip buffer 签名,返回签名后的buffer\n * @param fileBuffer\n * @param files\n * @param privatekey\n * @param certificate\n */\n private static doSign(\n fileBuffer: Buffer,\n files: IFileHash[],\n privatekey: Buffer,\n certificate: Buffer\n ) {\n const result = SignUtil.unZipFiles(fileBuffer, files)\n if (!result) {\n return false\n }\n\n const [chunks] = result\n\n // 生成整体签名\n SignUtil.signChunk(chunks as IChunk, privatekey, certificate)\n // 写入zip文件\n const signContent = SignUtil.saveChunk(fileBuffer, chunks)\n\n return signContent\n }\n /**\n * 解析buffer\n * @param fileBuffer\n * @param files\n */\n private static unZipFiles(fileBuffer: Buffer, files: IFileHash[]) {\n // 1. 读取zip文件\n if (!fileBuffer || fileBuffer.length <= 4) {\n // 报错\n console.error('【SignUtil】Zip file open failed')\n return false\n }\n // 2. 检查文件格式是否正确\n const fileMagic = fileBuffer.readInt32LE(0)\n if (fileMagic !== 0x4034b50) {\n // 报错\n console.error('【SignUtil】Zip file format is wrong')\n return false\n }\n // 3. 解析数据块\n const chunks = SignUtil.parserZip(fileBuffer)\n chunks.options = { files }\n // 解析成功,生成签名块\n if (chunks.tag) {\n // 分别处理三个签名块\n Object.keys(chunks.sections).forEach((item) => {\n const chunk = chunks.sections[item as keyof typeof chunks.sections]\n SignUtil.processChunk(fileBuffer, chunk)\n })\n return [chunks, fileBuffer]\n }\n\n return false\n }\n /**\n * 解析ZIP 分解为数据块\n * @param fileBuffer\n */\n private static parserZip(fileBuffer: Buffer) {\n let chunk: IChunk = {\n signchunk: Buffer.from(''),\n tag: false,\n length: fileBuffer.length,\n options: {\n files: []\n },\n sections: {\n header: {\n tag: false,\n startIndex: 0,\n len: 0,\n previous: 0,\n sign: undefined\n },\n central: {\n tag: false,\n startIndex: 0,\n len: 0,\n previous: 0,\n sign: undefined\n },\n footer: {\n tag: false,\n startIndex: 0,\n len: 0,\n previous: 0,\n sign: undefined\n }\n }\n }\n // fileBuffer至少22个字节\n chunk.sections.footer = SignUtil.readEOCD(fileBuffer)\n if (chunk.sections.footer.tag) {\n chunk.sections.central = SignUtil.readCD(\n fileBuffer,\n chunk.sections.footer.previous,\n chunk.sections.footer.startIndex - chunk.sections.footer.previous\n )\n if (chunk.sections.central.tag) {\n chunk.sections.header = SignUtil.readFH(\n fileBuffer,\n chunk.sections.central.previous,\n chunk.sections.central.startIndex - chunk.sections.central.previous\n )\n if (chunk.sections.header.tag) {\n chunk.tag = true\n }\n }\n }\n return chunk\n }\n /**\n * 从后往前读取buffer,读取尾部buffer\n * @param buffer\n * @returns\n */\n private static readEOCD(buffer: Buffer) {\n let chunk!: IPartChunk\n if (buffer && buffer.length >= 22) {\n let offset = buffer.length - 22\n let tag\n // 从开始位置往前单个字节读取,检查\n while (offset >= 0) {\n tag = buffer.readInt32LE(offset)\n if (tag === 0x6054b50) {\n // 如果找到起始位置\n chunk = {\n tag: true,\n startIndex: offset,\n len: buffer.length - offset,\n previous: buffer.readInt32LE(offset + 16)\n }\n break\n }\n offset -= 1\n }\n }\n return chunk\n }\n /**\n * 读取中部buffer\n * @param buffer\n * @param offset\n * @param size\n */\n private static readCD(buffer: Buffer, offset: number, size: number) {\n let chunk!: IPartChunk\n if (buffer && buffer.length >= offset) {\n const tag = buffer.readInt32LE(offset)\n // 找到起始位置\n if (tag === 0x2014b50) {\n chunk = {\n tag: true,\n startIndex: offset,\n len: size,\n previous: buffer.readInt32LE(offset + 42)\n }\n }\n }\n return chunk\n }\n /**\n * 读取前部buffer\n * @param buffer\n * @param offset\n * @param size\n * @returns\n */\n private static readFH(buffer: Buffer, offset: number, size: number) {\n let chunk!: IPartChunk\n if (buffer && buffer.length >= offset) {\n const tag = buffer.readInt32LE(offset)\n // 找到起始位置\n if (tag === 0x4034b50) {\n chunk = {\n tag: true,\n startIndex: offset,\n len: size,\n previous: -1\n }\n }\n }\n return chunk\n }\n /**\n * 数据块hash\n * @param buffer\n * @param chunk\n */\n private static processChunk(buffer: Buffer, chunk: IPartChunk) {\n const cur = chunk.startIndex\n const end = chunk.startIndex + chunk.len\n // 取数据块对应的buffer内容\n const chk = buffer.subarray(cur, end)\n // 创建指定长度Buffer对象,并确保分配内存区域被清零\n const header = Buffer.alloc(5 + chunk.len)\n // 给第一个字节赋值\n header[0] = 0xa5\n // 从第二个字节位置开始填充,长度为4字节,填充内容为chk.length\n header.writeInt32LE(chk.length, 1)\n // 从第六个开始填充chk的内容\n chk.copy(header, 5)\n\n // 将buffer进行hash计算并存储到chunk对象上\n const signer = crypto.createHash('SHA256')\n signer.update(header)\n chunk.sign = signer.digest()\n }\n private static signChunk(chunks: IChunk, privatekey: Buffer, certificate: Buffer) {\n const { sections } = chunks\n\n // 二进制拼接每个块摘要\n let length = 5\n if (sections.header.sign) {\n length += sections.header.sign.length\n }\n if (sections.central.sign) {\n length += sections.central.sign.length\n }\n if (sections.footer.sign) {\n length += sections.footer.sign.length\n }\n const wholeData = Buffer.alloc(length)\n let offset = 0\n wholeData.writeInt8(0x5a, 0)\n wholeData.writeInt32LE(3, 1)\n offset += 5\n\n function writeBuffer(buf: Buffer) {\n buf.copy(wholeData, offset)\n offset += buf.length\n }\n\n sections.header.sign && writeBuffer(sections.header.sign)\n sections.central.sign && writeBuffer(sections.central.sign)\n sections.footer.sign && writeBuffer(sections.footer.sign)\n\n // 计算整体摘要\n const signer = crypto.createHash('SHA256')\n signer.update(wholeData)\n const signature = signer.digest()\n\n // 生成sign block, 计算block总长度, 向buf中考入数据\n const signchunk = SignUtil.makeSignChunk(chunks.options, signature, privatekey, certificate)\n chunks.signchunk = SignUtil.saveSignChunk(signchunk)\n }\n private static makeSignChunk(\n options: IChunkOptions,\n sign: Buffer,\n privatekey: Buffer,\n certificate: Buffer\n ) {\n // 提取公钥\n const cert = Buffer.from(Base64.unarmor(certificate))\n const c = new rs.X509()\n c.readCertPEM(certificate.toString())\n const pubKey = rs.KEYUTIL.getPEM((c as any).subjectPublicKeyRSA)\n // 摘要块\n const digestBuf = Buffer.alloc(sign.length + 12)\n digestBuf.writeInt32LE(sign.length + 8, 0)\n digestBuf.writeInt32LE(0x0103, 4)\n digestBuf.writeInt32LE(sign.length, 8)\n sign.copy(digestBuf, 12)\n const digestBlock = {\n len: digestBuf.length,\n buffer: digestBuf\n }\n\n // 证书块\n const certBuf = Buffer.alloc(cert.length + 4)\n certBuf.writeInt32LE(cert.length, 0)\n cert.copy(certBuf, 4)\n const certBlock = {\n len: certBuf.length,\n buffer: certBuf\n }\n\n // 签名数据\n const signdataBlock: { [key: string]: any } = {\n len: 12,\n digests: {\n size: 0,\n data: []\n },\n certs: {\n size: 0,\n data: []\n },\n additional: 0\n }\n\n signdataBlock.digests.data.push(digestBlock)\n signdataBlock.digests.size += digestBlock.len\n signdataBlock.len += digestBlock.len\n\n signdataBlock.certs.data.push(certBlock)\n signdataBlock.certs.size += certBlock.len\n signdataBlock.len += certBlock.len\n\n // 将public.pem转化为der\n const pubbuf = Buffer.from(Base64.unarmor(pubKey))\n const signBlock: { [key: string]: any } = {\n len: 16 + pubbuf.length,\n size: 12 + pubbuf.length,\n signdata: {\n size: 0,\n buffer: null\n },\n signatures: {\n size: 0,\n data: []\n },\n pubkey: {\n size: pubbuf.length,\n buffer: pubbuf\n }\n }\n\n signBlock.signdata.buffer = SignUtil.makeSignDataBuffer(signdataBlock)\n signBlock.signdata.size = signdataBlock.len\n signBlock.size += signdataBlock.len\n signBlock.len += signdataBlock.len\n\n // 生成签名\n const signature = SignUtil.callCryptoSignFunction(\n signBlock.signdata.buffer,\n privatekey,\n certificate\n )\n const signatureBlock = {\n len: signature.length + 12,\n size: signature.length + 8,\n id: 0x0103,\n buffer: signature\n }\n signBlock.signatures.data.push(signatureBlock)\n signBlock.signatures.size += signatureBlock.len\n signBlock.size += signatureBlock.len\n signBlock.len += signatureBlock.len\n\n const signBlocks: any = {\n len: 4,\n size: 0,\n data: []\n }\n signBlocks.data.push(signBlock)\n signBlocks.size += signBlock.len\n signBlocks.len += signBlock.len\n\n // 生成key-value\n const kvBlock = {\n len: signBlocks.len + 12,\n size: signBlocks.len + 4,\n id: 0x01000101,\n value: signBlocks\n }\n\n const signchunk: any = {\n len: 32,\n size: 24,\n data: []\n }\n signchunk.data.push(kvBlock)\n signchunk.size += kvBlock.len\n signchunk.len += kvBlock.len\n\n // 添加文件列表hash kvblock\n if (options.files) {\n const filehashChunk = SignUtil.signFiles(options.files, privatekey, certificate)\n if (filehashChunk) {\n const filesignBlocks: any = {\n len: 4,\n size: 0,\n data: []\n }\n filesignBlocks.data.push(filehashChunk)\n filesignBlocks.size += filehashChunk.length\n filesignBlocks.len += filehashChunk.length\n\n const filekvBlock = {\n len: filesignBlocks.len + 12,\n size: filesignBlocks.len + 4,\n id: 0x01000201,\n value: filesignBlocks\n }\n\n signchunk.data.push(filekvBlock)\n signchunk.size += filekvBlock.len\n signchunk.len += filekvBlock.len\n }\n }\n\n return signchunk\n }\n private static makeSignDataBuffer(block: any) {\n const buffer = Buffer.alloc(block.len)\n let offset = 0\n\n buffer.writeInt32LE(block.digests.size, offset)\n offset += 4\n block.digests.data.forEach((item: any) => {\n item.buffer.copy(buffer, offset)\n offset += item.len\n })\n\n buffer.writeInt32LE(block.certs.size, offset)\n offset += 4\n block.certs.data.forEach((item: any) => {\n item.buffer.copy(buffer, offset)\n offset += item.len\n })\n\n buffer.writeInt32LE(block.additional, offset)\n return buffer\n }\n private static callCryptoSignFunction(buffer: any, prikey: Buffer, certpem: Buffer) {\n let signature = null\n if (!Signer.getRemoteCryptoSignFunction()) {\n // 使用默认\n signature = Signer.defaultCryptoSignFunction(buffer, prikey)\n } else {\n // 使用外部:传递原文件内容、证书内容\n const remoteCryptoSignFunction = Signer.getRemoteCryptoSignFunction()\n signature = remoteCryptoSignFunction(buffer, certpem)\n }\n return signature\n }\n /**\n * 加签名文件\n * @param filehashs\n * @param prikey\n * @param certpem\n */\n private static signFiles(filehashs: any, prikey: Buffer, certpem: Buffer) {\n const chunk: any = {\n len: 8,\n size: 4,\n digests: [],\n sign: null\n }\n // 生成hash块\n filehashs.forEach((item: any) => {\n // name hash\n const namehash = CRC32.digest(item.name)\n\n // 计算大小\n const sum = 6 + item.hash.length\n const chk = Buffer.alloc(sum)\n let offset = 0\n chk.writeInt32LE(namehash, offset)\n offset += 4\n\n chk.writeInt16LE(item.hash.length, offset)\n offset += 2\n item.hash.copy(chk, offset)\n offset += item.hash.length\n\n chunk.digests.push(chk)\n chunk.size += sum\n chunk.len += sum\n })\n\n // 生成整体签名\n SignUtil.signDigestChunk(chunk, prikey, certpem)\n\n // 写入文件\n return SignUtil.saveDigestChunk(chunk)\n }\n private static signDigestChunk(chunk: any, prikey: Buffer, certpem: Buffer) {\n const buf = Buffer.alloc(chunk.size)\n let offset = 0\n buf.writeInt32LE(0x0103, offset)\n offset += 4\n\n chunk.digests.forEach((chk: any) => {\n chk.copy(buf, offset)\n offset += chk.length\n })\n chunk.digests = buf.slice()\n\n // 生成签名\n const signature = SignUtil.callCryptoSignFunction(buf, prikey, certpem)\n\n chunk.sign = {\n len: 12 + signature.length,\n size: 8 + signature.length,\n id: 0x0103,\n data: signature\n }\n chunk.len += chunk.sign.len\n }\n private static saveDigestChunk(chunk: any) {\n // 创建新buffer\n const newBuffer = Buffer.alloc(chunk.len)\n\n let offset = 0\n newBuffer.writeInt32LE(chunk.size, offset)\n offset += 4\n\n // 文件hash列表\n chunk.digests.copy(newBuffer, offset)\n offset += chunk.digests.length\n\n // 写入签名\n newBuffer.writeInt32LE(chunk.sign.size, offset)\n offset += 4\n newBuffer.writeInt32LE(chunk.sign.id, offset)\n offset += 4\n newBuffer.writeInt32LE(chunk.sign.data.length, offset)\n offset += 4\n\n chunk.sign.data.copy(newBuffer, offset)\n offset += chunk.sign.data.length\n\n return newBuffer\n }\n private static readonly SigMagic = 'RPK Sig Block 42'\n private static saveSignChunk(signchunk: any) {\n const buffer = Buffer.alloc(signchunk.len)\n let offset = 0\n\n // 大小\n buffer.writeInt32LE(signchunk.size, offset)\n offset += 4\n buffer.writeInt32LE(0, offset)\n offset += 4\n\n // key-value\n signchunk.data.forEach((kv: any) => {\n buffer.writeInt32LE(kv.size, offset)\n offset += 4\n buffer.writeInt32LE(0, offset)\n offset += 4\n\n buffer.writeInt32LE(kv.id, offset)\n offset += 4\n\n // value\n buffer.writeInt32LE(kv.value.size, offset)\n offset += 4\n\n if (kv.id === 0x01000101) {\n // sign blocks\n kv.value.data.forEach((block: any) => {\n buffer.writeInt32LE(block.size, offset)\n offset += 4\n\n // signdata\n buffer.writeInt32LE(block.signdata.size, offset)\n offset += 4\n\n block.signdata.buffer.copy(buffer, offset)\n offset += block.signdata.buffer.length\n\n // signature\n buffer.writeInt32LE(block.signatures.size, offset)\n offset += 4\n\n block.signatures.data.forEach((signature: any) => {\n buffer.writeInt32LE(signature.size, offset)\n offset += 4\n\n buffer.writeInt32LE(signature.id, offset)\n offset += 4\n\n buffer.writeInt32LE(signature.buffer.length, offset)\n offset += 4\n\n signature.buffer.copy(buffer, offset)\n offset += signature.buffer.length\n })\n\n // pubkey\n buffer.writeInt32LE(block.pubkey.size, offset)\n offset += 4\n block.pubkey.buffer.copy(buffer, offset)\n offset += block.pubkey.buffer.length\n })\n } else if (kv.id === 0x01000201) {\n // files blocks\n kv.value.data.forEach((block: any) => {\n block.copy(buffer, offset)\n offset += block.length\n })\n }\n })\n\n // 大小\n buffer.writeInt32LE(signchunk.size, offset)\n offset += 4\n buffer.writeInt32LE(0, offset)\n offset += 4\n\n // 魔法值\n const magic = Buffer.from(SignUtil.SigMagic)\n magic.copy(buffer, offset)\n return buffer\n }\n private static saveChunk(buf: any, chunks: any) {\n // 创建新buffer\n const newBuffer = Buffer.alloc(buf.length + chunks.signchunk.length)\n let offset = 0\n const sections = chunks.sections\n\n // 拷贝header\n buf.copy(\n newBuffer,\n offset,\n sections.header.startIndex,\n sections.header.startIndex + sections.header.len\n )\n offset += sections.header.len\n\n // 拷贝signblock\n chunks.signchunk.copy(newBuffer, offset)\n offset += chunks.signchunk.length\n\n // 拷贝central\n buf.copy(\n newBuffer,\n offset,\n sections.central.startIndex,\n sections.central.startIndex + sections.central.len\n )\n\n offset += sections.central.len\n\n // 修改eocd\n buf.writeInt32LE(\n sections.central.startIndex + chunks.signchunk.length,\n sections.footer.startIndex + 16\n )\n // 拷贝eocd\n buf.copy(\n newBuffer,\n offset,\n sections.footer.startIndex,\n sections.footer.startIndex + sections.footer.len\n )\n offset += sections.footer.len\n\n return newBuffer\n }\n /**\n * 过滤掉文件夹和META文件\n * @param item\n * @returns\n */\n private static fileFilter(item: any) {\n const path = item.path\n return !path.endsWith('/') && path !== ZipUtil.CERT_PATH\n }\n}\nexport default SignUtil\n"],"sourceRoot":"../../../../../../src"}
@@ -0,0 +1,16 @@
1
+ /// <reference types="node" />
2
+ /**
3
+ * Signer
4
+ */
5
+ declare class Signer {
6
+ private static _cryptoSignFunction;
7
+ static setRemoteCryptoSignFunction(fn: any): void;
8
+ static getRemoteCryptoSignFunction(): any;
9
+ /**
10
+ * 使用RSA-SHA256
11
+ * @param buffer
12
+ * @param prikey
13
+ */
14
+ static defaultCryptoSignFunction(buffer: Buffer, prikey: Buffer): Buffer;
15
+ }
16
+ export default Signer;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const crypto_1 = __importDefault(require("crypto"));
7
+ /**
8
+ * Signer
9
+ */
10
+ class Signer {
11
+ static setRemoteCryptoSignFunction(fn) {
12
+ Signer._cryptoSignFunction = fn;
13
+ }
14
+ static getRemoteCryptoSignFunction() {
15
+ return Signer._cryptoSignFunction;
16
+ }
17
+ /**
18
+ * 使用RSA-SHA256
19
+ * @param buffer
20
+ * @param prikey
21
+ */
22
+ static defaultCryptoSignFunction(buffer, prikey) {
23
+ const signer = crypto_1.default.createSign('RSA-SHA256');
24
+ signer.update(buffer);
25
+ return signer.sign(prikey);
26
+ }
27
+ }
28
+ exports.default = Signer;
29
+
30
+ //# sourceMappingURL=Signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["compiler/javascript/vela/utils/signature/Signer.ts"],"names":[],"mappings":";;;;;AAAA,oDAA2B;AAC3B;;GAEG;AACH,MAAM,MAAM;IAEV,MAAM,CAAC,2BAA2B,CAAC,EAAO;QACxC,MAAM,CAAC,mBAAmB,GAAG,EAAE,CAAA;IACjC,CAAC;IACD,MAAM,CAAC,2BAA2B;QAChC,OAAO,MAAM,CAAC,mBAAmB,CAAA;IACnC,CAAC;IACD;;;;OAIG;IACH,MAAM,CAAC,yBAAyB,CAAC,MAAc,EAAE,MAAc;QAC7D,MAAM,MAAM,GAAG,gBAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;QAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACrB,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC5B,CAAC;CACF;AACD,kBAAe,MAAM,CAAA","file":"Signer.js","sourcesContent":["import crypto from 'crypto'\n/**\n * Signer\n */\nclass Signer {\n private static _cryptoSignFunction: any\n static setRemoteCryptoSignFunction(fn: any) {\n Signer._cryptoSignFunction = fn\n }\n static getRemoteCryptoSignFunction() {\n return Signer._cryptoSignFunction\n }\n /**\n * 使用RSA-SHA256\n * @param buffer\n * @param prikey\n */\n static defaultCryptoSignFunction(buffer: Buffer, prikey: Buffer) {\n const signer = crypto.createSign('RSA-SHA256')\n signer.update(buffer)\n return signer.sign(prikey)\n }\n}\nexport default Signer\n"],"sourceRoot":"../../../../../../src"}
@@ -0,0 +1,27 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEpDCCAowCCQC0eMZYkbPqvzANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAls
3
+ b2NhbGhvc3QwHhcNMjEwNDA3MDc0MTI2WhcNMzEwNDA1MDc0MTI2WjAUMRIwEAYD
4
+ VQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDR
5
+ fEK1e8OxPAmtBc/bkz+Vy1T0EcRgHjA+UzYNj1kzBFb7CW9V7DIesXJ5mAwR1HOm
6
+ D32Ijou2oSDaHKunnM576PgSCeoRUJkycUSXS0mK2+opuqXTywayTVmcNoqUuE+T
7
+ /XjUJZ+MXsl0zxC5pv0HyMG2sInpIuahj2QrRim7u8IEJugSQLCdw53EVrAQ51s9
8
+ AsSyL/IvdqtYK5kNAz+cIVdn4Vx88YOteqbeMSIg1ICqDc3IgD0sCjQesqIpsJBV
9
+ LJZfWQsRMFt0tUyZQCqjYOSdy0tbrIOL2QjtwSXOPB8bUptvScxevrHAML3qNDz+
10
+ oPdJRMCLK3DOaRorfGPqA0mjlxE6cVXKnkvQlM6Kf8QItYlLMspvv+TFx3VdakbI
11
+ SzP058PEyf2A7IWSzWvFlpigtGuBCtrq8liyFXAsTxMwIB/TwF/G0A1AANg8aK6Z
12
+ td/gHWqcOEbGDwEDCmTn4ockpKWbkrM3kqt75fl8yjeaDz1qN15cz/5YKz8aZnuC
13
+ 3Pe4VT+QbCeflcIjLJbmKBCJ7sbbDQJOWPiq2QLjqrvG3rUTXF2xlUa3piWpxyHF
14
+ VICuCaojUgl80eb/9kfVUXdDVB8oJIJE/hLEnt90lXUIo7roz4hwFKPuqVhw8368
15
+ FOQvrQW/ogILoSFuPrCSrRbaBOqlefoHiaDZsSpwvwIDAQABMA0GCSqGSIb3DQEB
16
+ CwUAA4ICAQAYb0jECnfZxdIbbCQyRaIMHitZctUlhM48edNX8Jhj+3fMX4rgaua7
17
+ +QMlEhWSaXRZzN5VPA1ifFWaDjndde72iihYgtoTXRaHWquUKw1DkRizdzg7zH9k
18
+ 6pi9QNBSDJ1+Pbpf+2ZDcIfTf+YsqmRDNgtmGEQmvad87eIW415ggvRnb0i2fm7v
19
+ 0nCqMHSjTkkp9XHBXQ1jnz4zWNr1s+pEEIjy4+oOr7vjuBe/JTUKiQxyqQXWb4MQ
20
+ KhKvPaHsyMpa733/3BVaPrIYM9Y+cR6hVD5DdYsmhFA7oTk7oBpysDREAoXlTuDf
21
+ X+lCVRwek7jDIi1JgOjCroTFRF003V7pul67coGKj2mBTESb+B5FwXuDDDgkti1f
22
+ 62FXQQFaBslY8N+tq3YQiZ4CZzREsZVDuRTJWC7nV6+wnOorgeGtmFBjCB11CvuR
23
+ av6rT4TA9Cp30EfWNYSJhmHNRHTSoFAUfbMpjUJ/ZoUfYN0QukFxBmDhy6sg5ZFg
24
+ RibPbqnSXmq9O2n+eHhJsIzrufkt9SSrs2VE2Xzzjfyshqajp92/UJYvyPVFCNKk
25
+ ja34I+m9g7BsgJ83CDcVIZG6QEBGvXHVNuN/5AmH4ZbVAjhcVLUB2FWKxnQJzI8g
26
+ lfWndbecBeyMfWktqudmF/RH/PpRSscmSFEYBt4Y38HI53xfIp74zQ==
27
+ -----END CERTIFICATE-----
@@ -0,0 +1,51 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ 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
51
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,30 @@
1
+ import { IFileLaneConfig } from 'file-lane';
2
+ import IJavascriptCompileOption from '../compiler/javascript/interface/IJavascriptCompileOption';
3
+ import AppUxLoader from '../loader/ux/AppUxLoader';
4
+ import PngLoader from '../loader/ux/PngLoader';
5
+ import UxLoader from '../loader/ux/UxLoader';
6
+ declare class UxConfig implements IFileLaneConfig<IJavascriptCompileOption> {
7
+ readonly projectPath: string;
8
+ constructor(projectPath: string);
9
+ exclude: RegExp[];
10
+ include: RegExp[];
11
+ get output(): string;
12
+ module: {
13
+ rules: ({
14
+ test: string[];
15
+ loader: (typeof AppUxLoader)[];
16
+ exclude?: undefined;
17
+ } | {
18
+ test: RegExp[];
19
+ exclude: RegExp[];
20
+ loader: (typeof UxLoader)[];
21
+ } | {
22
+ test: RegExp[];
23
+ loader: (typeof PngLoader)[];
24
+ exclude?: undefined;
25
+ })[];
26
+ };
27
+ preWorks: import("file-lane/lib/interface/IFileLaneConfig").PreWork<IJavascriptCompileOption>[];
28
+ followWorks: import("file-lane/lib/interface/IFileLaneConfig").FollowWork<IJavascriptCompileOption>[];
29
+ }
30
+ export default UxConfig;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const path_1 = __importDefault(require("path"));
7
+ const AppUxLoader_1 = __importDefault(require("../loader/ux/AppUxLoader"));
8
+ const PngLoader_1 = __importDefault(require("../loader/ux/PngLoader"));
9
+ const UxLoader_1 = __importDefault(require("../loader/ux/UxLoader"));
10
+ const PreWorkUtils_1 = __importDefault(require("../utils/PreWorkUtils"));
11
+ const UxFollowWorks_1 = __importDefault(require("../utils/ux/UxFollowWorks"));
12
+ class UxConfig {
13
+ constructor(projectPath) {
14
+ this.projectPath = projectPath;
15
+ this.exclude = [/node_modules/, /dist/, /build/];
16
+ this.include = [/src/];
17
+ this.module = {
18
+ rules: [
19
+ {
20
+ test: ['app.ux'],
21
+ loader: [AppUxLoader_1.default]
22
+ },
23
+ {
24
+ test: [/.+\.ux$/],
25
+ exclude: [/app\.ux/],
26
+ loader: [UxLoader_1.default]
27
+ },
28
+ {
29
+ test: [/.+\.png/],
30
+ loader: [PngLoader_1.default]
31
+ }
32
+ ]
33
+ };
34
+ this.preWorks = [PreWorkUtils_1.default.clean, PreWorkUtils_1.default.getEntries];
35
+ this.followWorks = [
36
+ UxFollowWorks_1.default.symlinkNodeModule,
37
+ UxFollowWorks_1.default.webpack,
38
+ UxFollowWorks_1.default.copyResource,
39
+ UxFollowWorks_1.default.jsc,
40
+ UxFollowWorks_1.default.toRpk,
41
+ UxFollowWorks_1.default.moveBackResult
42
+ ];
43
+ }
44
+ get output() {
45
+ const name = path_1.default.basename(this.projectPath);
46
+ const result = `../.temp_${name}`;
47
+ return result;
48
+ }
49
+ }
50
+ exports.default = UxConfig;
51
+
52
+ //# sourceMappingURL=UxConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["config/UxConfig.ts"],"names":[],"mappings":";;;;;AACA,gDAAuB;AAEvB,2EAAkD;AAClD,uEAA8C;AAC9C,qEAA4C;AAC5C,yEAAgD;AAChD,8EAAqD;AAErD,MAAM,QAAQ;IACZ,YAA4B,WAAmB;QAAnB,gBAAW,GAAX,WAAW,CAAQ;QAC/C,YAAO,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAC3C,YAAO,GAAG,CAAC,KAAK,CAAC,CAAA;QAOjB,WAAM,GAAG;YACP,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,CAAC,QAAQ,CAAC;oBAChB,MAAM,EAAE,CAAC,qBAAW,CAAC;iBACtB;gBACD;oBACE,IAAI,EAAE,CAAC,SAAS,CAAC;oBACjB,OAAO,EAAE,CAAC,SAAS,CAAC;oBACpB,MAAM,EAAE,CAAC,kBAAQ,CAAC;iBACnB;gBACD;oBACE,IAAI,EAAE,CAAC,SAAS,CAAC;oBACjB,MAAM,EAAE,CAAC,mBAAS,CAAC;iBACpB;aACF;SACF,CAAA;QACD,aAAQ,GAAG,CAAC,sBAAY,CAAC,KAAK,EAAE,sBAAY,CAAC,UAAU,CAAC,CAAA;QAExD,gBAAW,GAAG;YACZ,uBAAa,CAAC,iBAAiB;YAC/B,uBAAa,CAAC,OAAO;YACrB,uBAAa,CAAC,YAAY;YAC1B,uBAAa,CAAC,GAAG;YACjB,uBAAa,CAAC,KAAK;YACnB,uBAAa,CAAC,cAAc;SAC7B,CAAA;IAnCiD,CAAC;IAGnD,IAAI,MAAM;QACR,MAAM,IAAI,GAAG,cAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAC5C,MAAM,MAAM,GAAG,YAAY,IAAI,EAAE,CAAA;QACjC,OAAO,MAAM,CAAA;IACf,CAAC;CA6BF;AAED,kBAAe,QAAQ,CAAA","file":"UxConfig.js","sourcesContent":["import { IFileLaneConfig } from 'file-lane'\nimport Path from 'path'\nimport IJavascriptCompileOption from '../compiler/javascript/interface/IJavascriptCompileOption'\nimport AppUxLoader from '../loader/ux/AppUxLoader'\nimport PngLoader from '../loader/ux/PngLoader'\nimport UxLoader from '../loader/ux/UxLoader'\nimport PreWorkUtils from '../utils/PreWorkUtils'\nimport UxFollowWorks from '../utils/ux/UxFollowWorks'\n\nclass UxConfig implements IFileLaneConfig<IJavascriptCompileOption> {\n constructor(public readonly projectPath: string) {}\n exclude = [/node_modules/, /dist/, /build/]\n include = [/src/]\n get output() {\n const name = Path.basename(this.projectPath)\n const result = `../.temp_${name}`\n return result\n }\n\n module = {\n rules: [\n {\n test: ['app.ux'],\n loader: [AppUxLoader]\n },\n {\n test: [/.+\\.ux$/],\n exclude: [/app\\.ux/],\n loader: [UxLoader]\n },\n {\n test: [/.+\\.png/],\n loader: [PngLoader]\n }\n ]\n }\n preWorks = [PreWorkUtils.clean, PreWorkUtils.getEntries]\n\n followWorks = [\n UxFollowWorks.symlinkNodeModule,\n UxFollowWorks.webpack,\n UxFollowWorks.copyResource,\n UxFollowWorks.jsc,\n UxFollowWorks.toRpk,\n UxFollowWorks.moveBackResult\n ]\n}\n\nexport default UxConfig\n"],"sourceRoot":"../../src"}
@@ -0,0 +1,18 @@
1
+ import { IFileLaneConfig } from 'file-lane';
2
+ import { generateEntryFile } from '../followWorks/xts/entryTemplate';
3
+ import XtsLoader from '../loader/xts/XtsLoader';
4
+ /**
5
+ * XtsConfig
6
+ */
7
+ declare class XtsConfig implements IFileLaneConfig {
8
+ exclude: RegExp[];
9
+ output: string;
10
+ module: {
11
+ rules: {
12
+ test: RegExp[];
13
+ loader: (typeof XtsLoader)[];
14
+ }[];
15
+ };
16
+ followWorks: (typeof generateEntryFile)[];
17
+ }
18
+ export default XtsConfig;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const entryTemplate_1 = require("../followWorks/xts/entryTemplate");
7
+ const XtsLoader_1 = __importDefault(require("../loader/xts/XtsLoader"));
8
+ /**
9
+ * XtsConfig
10
+ */
11
+ class XtsConfig {
12
+ constructor() {
13
+ this.exclude = [/node_modules/, /dist/, /build/];
14
+ this.output = 'build';
15
+ this.module = {
16
+ rules: [
17
+ {
18
+ test: [/\.xts$/],
19
+ loader: [XtsLoader_1.default]
20
+ }
21
+ ]
22
+ };
23
+ this.followWorks = [entryTemplate_1.generateEntryFile];
24
+ }
25
+ }
26
+ exports.default = XtsConfig;
27
+
28
+ //# sourceMappingURL=XtsConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["config/XtsConfig.ts"],"names":[],"mappings":";;;;;AACA,oEAAoE;AACpE,wEAA+C;AAE/C;;GAEG;AACH,MAAM,SAAS;IAAf;QACE,YAAO,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAC3C,WAAM,GAAG,OAAO,CAAA;QAChB,WAAM,GAAG;YACP,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,CAAC,QAAQ,CAAC;oBAChB,MAAM,EAAE,CAAC,mBAAS,CAAC;iBACpB;aACF;SACF,CAAA;QACD,gBAAW,GAAG,CAAC,iCAAiB,CAAC,CAAA;IACnC,CAAC;CAAA;AAED,kBAAe,SAAS,CAAA","file":"XtsConfig.js","sourcesContent":["import { IFileLaneConfig } from 'file-lane'\nimport { generateEntryFile } from '../followWorks/xts/entryTemplate'\nimport XtsLoader from '../loader/xts/XtsLoader'\n\n/**\n * XtsConfig\n */\nclass XtsConfig implements IFileLaneConfig {\n exclude = [/node_modules/, /dist/, /build/]\n output = 'build'\n module = {\n rules: [\n {\n test: [/\\.xts$/],\n loader: [XtsLoader]\n }\n ]\n }\n followWorks = [generateEntryFile]\n}\n\nexport default XtsConfig\n"],"sourceRoot":"../../src"}
@@ -0,0 +1,21 @@
1
+ import { IFileLaneContext } from 'file-lane';
2
+ export interface Aspects {
3
+ path: string;
4
+ name: string;
5
+ routes?: {
6
+ importPath: string;
7
+ name: string;
8
+ route: string;
9
+ }[];
10
+ }
11
+ export interface GenerateEntryParams {
12
+ appPath: string;
13
+ aspects?: Aspects[];
14
+ }
15
+ export declare const entryTemplate: (options: GenerateEntryParams) => string;
16
+ export declare const XtsEntryFileName = "__entry__.ts";
17
+ /**
18
+ * 生成 __entry__.ts 文件
19
+ * @param context
20
+ */
21
+ export declare function generateEntryFile(context: IFileLaneContext): Promise<void>;
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.generateEntryFile = exports.XtsEntryFileName = exports.entryTemplate = void 0;
16
+ const Framework_1 = require("@aiot-toolkit/parser/lib/xts/enum/Framework");
17
+ const shared_utils_1 = require("@aiot-toolkit/shared-utils");
18
+ const ColorConsole_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/ColorConsole"));
19
+ const fast_glob_1 = __importDefault(require("fast-glob"));
20
+ const fs_extra_1 = __importDefault(require("fs-extra"));
21
+ const path_1 = __importDefault(require("path"));
22
+ const entryTemplate = (options) => {
23
+ const { aspects = [] } = options;
24
+ function generatImportAspects() {
25
+ if (!aspects)
26
+ return '';
27
+ let imports = '// import aspects\n';
28
+ for (let i = 0; i < aspects.length; i++) {
29
+ const aspect = aspects[i];
30
+ imports += `import AspectClass${i + 1} from './${aspect.path}'\n`;
31
+ const { routes = [] } = aspect;
32
+ for (let r = 0; r < (routes === null || routes === void 0 ? void 0 : routes.length); r++) {
33
+ const route = routes[r];
34
+ imports += `import Page${i + 1}_${r + 1}, { ${Framework_1.HomeState.interface} as ${Framework_1.HomeState.interface}${i + 1}_${r + 1}_ } from './${route.importPath}'\n`;
35
+ }
36
+ }
37
+ return imports;
38
+ }
39
+ function generateDefs() {
40
+ let res = '// aspects\n';
41
+ for (let i = 0; i < aspects.length; i++) {
42
+ const aspect = aspects[i];
43
+ const { routes = [] } = aspect;
44
+ for (let r = 0; r < routes.length; r++) {
45
+ const route = routes[r];
46
+ res += `
47
+ const pathPages${i + 1}_${r + 1} = new Map()
48
+ pathPages${i + 1}_${r + 1}.set('${route.route}', function (params: ${Framework_1.HomeState.interface}${i + 1}_${r + 1}_): Page {
49
+ return new Page${i + 1}_${r + 1}(params)
50
+ })
51
+ const aspectName_${i + 1} = '${aspect.name}'
52
+ const aspectDef_${i + 1}: AspectDefinition = {
53
+ newFn: (): ViewAspect => new AspectClass${i + 1}(),
54
+ pathPages: pathPages${i + 1}_${r + 1}
55
+ }
56
+ aspectDefs.set(aspectName_${i + 1}, aspectDef_${i + 1})`;
57
+ }
58
+ }
59
+ return res;
60
+ }
61
+ return `import {
62
+ // class
63
+ App,
64
+ AppDefinition,
65
+ AppContainer,
66
+ AspectDefinition,
67
+ ViewAspect,
68
+ Page,
69
+ Route,
70
+ RouteInfo,
71
+ // framework
72
+ context,
73
+ getInfoFromRoute,
74
+
75
+ // export function
76
+ on
77
+ } from '../node_modules/${Framework_1.tsFrameWork.name}/index'
78
+
79
+ // import app
80
+ import AppClass from './${options.appPath}'
81
+ ${generatImportAspects()}
82
+ console.log('startApp-start timeEnd:', Date.now())
83
+
84
+ function getAspectDefs() {
85
+ const aspectDefs = new Map()
86
+ ${generateDefs()}
87
+ return aspectDefs
88
+ }
89
+
90
+ function entry(path: string): void {
91
+ console.log('~~~~~~~~~entry path', path)
92
+ const route: Route = { uri: path }
93
+ const routeInfo: RouteInfo = getInfoFromRoute(route)
94
+ // app
95
+ let appName: string = ''
96
+ if (routeInfo?.appName) appName = routeInfo.appName
97
+ let app = context.getApp(appName)
98
+ if (app === null) {
99
+ const appDef: AppDefinition = {
100
+ newFn: (): App => new AppClass()
101
+ }
102
+ const aspectDefs = getAspectDefs()
103
+ app = new AppContainer(appDef, aspectDefs)
104
+ }
105
+ context.openApp(app, routeInfo)
106
+ }
107
+
108
+ // export api to native
109
+ export { entry, on }
110
+ `;
111
+ };
112
+ exports.entryTemplate = entryTemplate;
113
+ exports.XtsEntryFileName = '__entry__.ts';
114
+ /**
115
+ * 生成 __entry__.ts 文件
116
+ * @param context
117
+ */
118
+ function generateEntryFile(context) {
119
+ var _a, _b, _c;
120
+ return __awaiter(this, void 0, void 0, function* () {
121
+ const { projectPath, output } = context;
122
+ ColorConsole_1.default.log({
123
+ level: shared_utils_1.LOG_LEVEL.Info,
124
+ message: `generating entry file`
125
+ });
126
+ const dist = path_1.default.resolve(projectPath, output);
127
+ const manifests = yield (0, fast_glob_1.default)(`${dist}/**/manifest.json`);
128
+ function relativeDist(tar) {
129
+ return path_1.default.join('.', path_1.default.relative(dist, tar)).replace(path_1.default.sep, '/');
130
+ }
131
+ const appTs = yield (0, fast_glob_1.default)(`${dist}/**/app.ts`);
132
+ if (appTs.length !== 1) {
133
+ ColorConsole_1.default.log({ level: shared_utils_1.LOG_LEVEL.Error, message: 'app.ts can only have one!' });
134
+ }
135
+ let opt = {
136
+ appPath: relativeDist(appTs[0].replace('.ts', '')),
137
+ aspects: []
138
+ };
139
+ for (const manifest of manifests) {
140
+ const content = fs_extra_1.default.readFileSync(manifest, 'utf-8');
141
+ const data = JSON.parse(content);
142
+ if ((_a = data === null || data === void 0 ? void 0 : data.router) === null || _a === void 0 ? void 0 : _a.pages) {
143
+ (_b = opt.aspects) === null || _b === void 0 ? void 0 : _b.push({
144
+ name: data.name,
145
+ path: relativeDist(path_1.default.resolve(path_1.default.dirname(manifest), 'aspect')),
146
+ routes: Object.entries((_c = data === null || data === void 0 ? void 0 : data.router) === null || _c === void 0 ? void 0 : _c.pages).map(([k, v]) => {
147
+ return {
148
+ importPath: relativeDist(path_1.default.resolve(path_1.default.dirname(manifest), v.path)),
149
+ name: k,
150
+ route: v.path
151
+ };
152
+ })
153
+ });
154
+ }
155
+ }
156
+ const template = (0, exports.entryTemplate)(opt);
157
+ fs_extra_1.default.writeFileSync(path_1.default.join(projectPath, output, exports.XtsEntryFileName), template);
158
+ ColorConsole_1.default.log({
159
+ level: shared_utils_1.LOG_LEVEL.Info,
160
+ message: `entry file built`
161
+ });
162
+ });
163
+ }
164
+ exports.generateEntryFile = generateEntryFile;
165
+
166
+ //# sourceMappingURL=entryTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["followWorks/xts/entryTemplate.ts"],"names":[],"mappings":"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","file":"entryTemplate.js","sourcesContent":["import { HomeState, tsFrameWork } from '@aiot-toolkit/parser/lib/xts/enum/Framework'\nimport { LOG_LEVEL } from '@aiot-toolkit/shared-utils'\nimport ColorConsole from '@aiot-toolkit/shared-utils/lib/ColorConsole'\nimport FastGlob from 'fast-glob'\nimport { IFileLaneContext } from 'file-lane'\nimport Fs from 'fs-extra'\nimport Path from 'path'\nexport interface Aspects {\n path: string\n name: string\n routes?: {\n importPath: string\n name: string\n route: string\n }[]\n}\n\nexport interface GenerateEntryParams {\n appPath: string\n aspects?: Aspects[]\n}\n\nexport const entryTemplate = (options: GenerateEntryParams) => {\n const { aspects = [] } = options\n\n function generatImportAspects() {\n if (!aspects) return ''\n let imports = '// import aspects\\n'\n for (let i = 0; i < aspects.length; i++) {\n const aspect = aspects[i]\n imports += `import AspectClass${i + 1} from './${aspect.path}'\\n`\n const { routes = [] } = aspect\n for (let r = 0; r < routes?.length; r++) {\n const route = routes[r]\n imports += `import Page${i + 1}_${r + 1}, { ${HomeState.interface} as ${\n HomeState.interface\n }${i + 1}_${r + 1}_ } from './${route.importPath}'\\n`\n }\n }\n return imports\n }\n\n function generateDefs() {\n let res = '// aspects\\n'\n for (let i = 0; i < aspects.length; i++) {\n const aspect = aspects[i]\n const { routes = [] } = aspect\n for (let r = 0; r < routes.length; r++) {\n const route = routes[r]\n res += `\n const pathPages${i + 1}_${r + 1} = new Map()\n pathPages${i + 1}_${r + 1}.set('${route.route}', function (params: ${HomeState.interface}${\n i + 1\n }_${r + 1}_): Page {\n return new Page${i + 1}_${r + 1}(params)\n })\n const aspectName_${i + 1} = '${aspect.name}'\n const aspectDef_${i + 1}: AspectDefinition = {\n newFn: (): ViewAspect => new AspectClass${i + 1}(),\n pathPages: pathPages${i + 1}_${r + 1}\n } \n aspectDefs.set(aspectName_${i + 1}, aspectDef_${i + 1})`\n }\n }\n\n return res\n }\n\n return `import {\n // class\n App,\n AppDefinition,\n AppContainer,\n AspectDefinition,\n ViewAspect,\n Page,\n Route,\n RouteInfo,\n // framework\n context,\n getInfoFromRoute,\n\n // export function\n on\n} from '../node_modules/${tsFrameWork.name}/index'\n\n// import app\nimport AppClass from './${options.appPath}'\n${generatImportAspects()}\nconsole.log('startApp-start timeEnd:', Date.now())\n\nfunction getAspectDefs() {\n const aspectDefs = new Map()\n ${generateDefs()}\n return aspectDefs\n}\n\nfunction entry(path: string): void {\n console.log('~~~~~~~~~entry path', path)\n const route: Route = { uri: path }\n const routeInfo: RouteInfo = getInfoFromRoute(route)\n // app\n let appName: string = ''\n if (routeInfo?.appName) appName = routeInfo.appName\n let app = context.getApp(appName)\n if (app === null) {\n const appDef: AppDefinition = {\n newFn: (): App => new AppClass()\n }\n const aspectDefs = getAspectDefs()\n app = new AppContainer(appDef, aspectDefs)\n }\n context.openApp(app, routeInfo)\n}\n\n// export api to native\nexport { entry, on }\n`\n}\n\nexport const XtsEntryFileName = '__entry__.ts'\n/**\n * 生成 __entry__.ts 文件\n * @param context\n */\nexport async function generateEntryFile(context: IFileLaneContext) {\n const { projectPath, output } = context\n ColorConsole.log({\n level: LOG_LEVEL.Info,\n message: `generating entry file`\n })\n const dist = Path.resolve(projectPath, output)\n const manifests = await FastGlob(`${dist}/**/manifest.json`)\n\n function relativeDist(tar: string) {\n return Path.join('.', Path.relative(dist, tar)).replace(Path.sep, '/')\n }\n\n const appTs = await FastGlob(`${dist}/**/app.ts`)\n if (appTs.length !== 1) {\n ColorConsole.log({ level: LOG_LEVEL.Error, message: 'app.ts can only have one!' })\n }\n let opt: GenerateEntryParams = {\n appPath: relativeDist(appTs[0].replace('.ts', '')),\n aspects: []\n }\n\n for (const manifest of manifests) {\n const content = Fs.readFileSync(manifest, 'utf-8')\n const data = JSON.parse(content)\n if (data?.router?.pages) {\n opt.aspects?.push({\n name: data.name,\n path: relativeDist(Path.resolve(Path.dirname(manifest), 'aspect')),\n routes: Object.entries<{ path: string }>(data?.router?.pages).map(([k, v]) => {\n return {\n importPath: relativeDist(Path.resolve(Path.dirname(manifest), v.path)),\n name: k,\n route: v.path\n }\n })\n })\n }\n }\n\n const template = entryTemplate(opt)\n Fs.writeFileSync(Path.join(projectPath, output, XtsEntryFileName), template)\n ColorConsole.log({\n level: LOG_LEVEL.Info,\n message: `entry file built`\n })\n}\n"],"sourceRoot":"../../../src"}
@@ -0,0 +1,6 @@
1
+ import { IFileLaneContext } from 'file-lane';
2
+ /**
3
+ * 将 __entry__.ts 文件打包成 warm 文件
4
+ * @param context
5
+ */
6
+ export declare function ts2wasm(context: IFileLaneContext): Promise<void>;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ts2wasm = void 0;
16
+ const path_1 = __importDefault(require("path"));
17
+ const entryTemplate_1 = require("./entryTemplate");
18
+ /**
19
+ * 将 __entry__.ts 文件打包成 warm 文件
20
+ * @param context
21
+ */
22
+ function ts2wasm(context) {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ const { projectPath, output } = context;
25
+ const buildDir = path_1.default.resolve(projectPath, output);
26
+ const entryFile = path_1.default.resolve(buildDir, entryTemplate_1.XtsEntryFileName);
27
+ });
28
+ }
29
+ exports.ts2wasm = ts2wasm;
30
+
31
+ //# sourceMappingURL=ts2wasm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["followWorks/xts/ts2wasm.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,gDAAuB;AACvB,mDAAkD;AAClD;;;GAGG;AACH,SAAsB,OAAO,CAAC,OAAyB;;QACrD,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;QAEvC,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QAClD,MAAM,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,gCAAgB,CAAC,CAAA;IAC5D,CAAC;CAAA;AALD,0BAKC","file":"ts2wasm.js","sourcesContent":["import { IFileLaneContext } from 'file-lane'\nimport path from 'path'\nimport { XtsEntryFileName } from './entryTemplate'\n/**\n * 将 __entry__.ts 文件打包成 warm 文件\n * @param context\n */\nexport async function ts2wasm(context: IFileLaneContext) {\n const { projectPath, output } = context\n\n const buildDir = path.resolve(projectPath, output)\n const entryFile = path.resolve(buildDir, XtsEntryFileName)\n}\n"],"sourceRoot":"../../../src"}