@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.
- package/README.md +46 -0
- package/lib/compiler/c/README.md +1 -0
- package/lib/compiler/c++/README.md +1 -0
- package/lib/compiler/enum/CompileMode.d.ts +22 -0
- package/lib/compiler/enum/CompileMode.js +30 -0
- package/lib/compiler/enum/CompileMode.js.map +1 -0
- package/lib/compiler/interface/ICompileParam.d.ts +24 -0
- package/lib/compiler/interface/ICompileParam.js +4 -0
- package/lib/compiler/interface/ICompileParam.js.map +1 -0
- package/lib/compiler/interface/ICompiler.d.ts +5 -0
- package/lib/compiler/interface/ICompiler.js +4 -0
- package/lib/compiler/interface/ICompiler.js.map +1 -0
- package/lib/compiler/interface/ISignConfig.d.ts +8 -0
- package/lib/compiler/interface/ISignConfig.js +4 -0
- package/lib/compiler/interface/ISignConfig.js.map +1 -0
- package/lib/compiler/javascript/JavascriptCompiler.d.ts +11 -0
- package/lib/compiler/javascript/JavascriptCompiler.js +108 -0
- package/lib/compiler/javascript/JavascriptCompiler.js.map +1 -0
- package/lib/compiler/javascript/JavascriptDefaultCompileOption.d.ts +3 -0
- package/lib/compiler/javascript/JavascriptDefaultCompileOption.js +21 -0
- package/lib/compiler/javascript/JavascriptDefaultCompileOption.js.map +1 -0
- package/lib/compiler/javascript/interface/IJavascriptCompileOption.d.ts +40 -0
- package/lib/compiler/javascript/interface/IJavascriptCompileOption.js +4 -0
- package/lib/compiler/javascript/interface/IJavascriptCompileOption.js.map +1 -0
- package/lib/compiler/javascript/interface/IWebpackConfigurator.d.ts +40 -0
- package/lib/compiler/javascript/interface/IWebpackConfigurator.js +4 -0
- package/lib/compiler/javascript/interface/IWebpackConfigurator.js.map +1 -0
- package/lib/compiler/javascript/vela/VelaWebpackConfigurator.d.ts +16 -0
- package/lib/compiler/javascript/vela/VelaWebpackConfigurator.js +74 -0
- package/lib/compiler/javascript/vela/VelaWebpackConfigurator.js.map +1 -0
- package/lib/compiler/javascript/vela/enum/BuildNameFormatType.d.ts +25 -0
- package/lib/compiler/javascript/vela/enum/BuildNameFormatType.js +47 -0
- package/lib/compiler/javascript/vela/enum/BuildNameFormatType.js.map +1 -0
- package/lib/compiler/javascript/vela/enum/EntryType.d.ts +30 -0
- package/lib/compiler/javascript/vela/enum/EntryType.js +35 -0
- package/lib/compiler/javascript/vela/enum/EntryType.js.map +1 -0
- package/lib/compiler/javascript/vela/interface/IChunk.d.ts +29 -0
- package/lib/compiler/javascript/vela/interface/IChunk.js +4 -0
- package/lib/compiler/javascript/vela/interface/IChunk.js.map +1 -0
- package/lib/compiler/javascript/vela/interface/IManifest.d.ts +27 -0
- package/lib/compiler/javascript/vela/interface/IManifest.js +4 -0
- package/lib/compiler/javascript/vela/interface/IManifest.js.map +1 -0
- package/lib/compiler/javascript/vela/interface/IQuickAppConfig.d.ts +11 -0
- package/lib/compiler/javascript/vela/interface/IQuickAppConfig.js +4 -0
- package/lib/compiler/javascript/vela/interface/IQuickAppConfig.js.map +1 -0
- package/lib/compiler/javascript/vela/model/Package.d.ts +75 -0
- package/lib/compiler/javascript/vela/model/Package.js +62 -0
- package/lib/compiler/javascript/vela/model/Package.js.map +1 -0
- package/lib/compiler/javascript/vela/plugin/WrapPlugin.d.ts +7 -0
- package/lib/compiler/javascript/vela/plugin/WrapPlugin.js +51 -0
- package/lib/compiler/javascript/vela/plugin/WrapPlugin.js.map +1 -0
- package/lib/compiler/javascript/vela/utils/Jsc.d.ts +10 -0
- package/lib/compiler/javascript/vela/utils/Jsc.js +34 -0
- package/lib/compiler/javascript/vela/utils/Jsc.js.map +1 -0
- package/lib/compiler/javascript/vela/utils/UxCompileUtil.d.ts +29 -0
- package/lib/compiler/javascript/vela/utils/UxCompileUtil.js +144 -0
- package/lib/compiler/javascript/vela/utils/UxCompileUtil.js.map +1 -0
- package/lib/compiler/javascript/vela/utils/ZipUtil.d.ts +75 -0
- package/lib/compiler/javascript/vela/utils/ZipUtil.js +278 -0
- package/lib/compiler/javascript/vela/utils/ZipUtil.js.map +1 -0
- package/lib/compiler/javascript/vela/utils/signature/Base64.d.ts +11 -0
- package/lib/compiler/javascript/vela/utils/signature/Base64.js +77 -0
- package/lib/compiler/javascript/vela/utils/signature/Base64.js.map +1 -0
- package/lib/compiler/javascript/vela/utils/signature/CRC32.d.ts +9 -0
- package/lib/compiler/javascript/vela/utils/signature/CRC32.js +45 -0
- package/lib/compiler/javascript/vela/utils/signature/CRC32.js.map +1 -0
- package/lib/compiler/javascript/vela/utils/signature/SignUtil.d.ts +94 -0
- package/lib/compiler/javascript/vela/utils/signature/SignUtil.js +713 -0
- package/lib/compiler/javascript/vela/utils/signature/SignUtil.js.map +1 -0
- package/lib/compiler/javascript/vela/utils/signature/Signer.d.ts +16 -0
- package/lib/compiler/javascript/vela/utils/signature/Signer.js +30 -0
- package/lib/compiler/javascript/vela/utils/signature/Signer.js.map +1 -0
- package/lib/compiler/javascript/vela/utils/signature/pem/certificate.pem +27 -0
- package/lib/compiler/javascript/vela/utils/signature/pem/private.pem +51 -0
- package/lib/config/UxConfig.d.ts +30 -0
- package/lib/config/UxConfig.js +52 -0
- package/lib/config/UxConfig.js.map +1 -0
- package/lib/config/XtsConfig.d.ts +18 -0
- package/lib/config/XtsConfig.js +28 -0
- package/lib/config/XtsConfig.js.map +1 -0
- package/lib/followWorks/xts/entryTemplate.d.ts +21 -0
- package/lib/followWorks/xts/entryTemplate.js +166 -0
- package/lib/followWorks/xts/entryTemplate.js.map +1 -0
- package/lib/followWorks/xts/ts2wasm.d.ts +6 -0
- package/lib/followWorks/xts/ts2wasm.js +31 -0
- package/lib/followWorks/xts/ts2wasm.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +10 -0
- package/lib/index.js.map +1 -0
- package/lib/interface/IDeviceList.d.ts +7 -0
- package/lib/interface/IDeviceList.js +4 -0
- package/lib/interface/IDeviceList.js.map +1 -0
- package/lib/loader/ux/AppUxLoader.d.ts +10 -0
- package/lib/loader/ux/AppUxLoader.js +31 -0
- package/lib/loader/ux/AppUxLoader.js.map +1 -0
- package/lib/loader/ux/PngLoader.d.ts +10 -0
- package/lib/loader/ux/PngLoader.js +70 -0
- package/lib/loader/ux/PngLoader.js.map +1 -0
- package/lib/loader/ux/UxLoader.d.ts +6 -0
- package/lib/loader/ux/UxLoader.js +31 -0
- package/lib/loader/ux/UxLoader.js.map +1 -0
- package/lib/loader/xts/XtsLoader.d.ts +9 -0
- package/lib/loader/xts/XtsLoader.js +55 -0
- package/lib/loader/xts/XtsLoader.js.map +1 -0
- package/lib/utils/PngUtils.d.ts +20 -0
- package/lib/utils/PngUtils.js +45 -0
- package/lib/utils/PngUtils.js.map +1 -0
- package/lib/utils/PreWorkUtils.d.ts +17 -0
- package/lib/utils/PreWorkUtils.js +76 -0
- package/lib/utils/PreWorkUtils.js.map +1 -0
- package/lib/utils/ux/UxFileUtils.d.ts +22 -0
- package/lib/utils/ux/UxFileUtils.js +34 -0
- package/lib/utils/ux/UxFileUtils.js.map +1 -0
- package/lib/utils/ux/UxFollowWorks.d.ts +35 -0
- package/lib/utils/ux/UxFollowWorks.js +200 -0
- package/lib/utils/ux/UxFollowWorks.js.map +1 -0
- package/lib/utils/ux/UxLoaderUtils.d.ts +60 -0
- package/lib/utils/ux/UxLoaderUtils.js +241 -0
- package/lib/utils/ux/UxLoaderUtils.js.map +1 -0
- package/lib/utils/xts/XtsFollowWorks.d.ts +29 -0
- package/lib/utils/xts/XtsFollowWorks.js +149 -0
- package/lib/utils/xts/XtsFollowWorks.js.map +1 -0
- 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,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"}
|