@nekosu/maa-tools 1.0.1 → 1.0.2

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.
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,2 @@
1
+ import*as e from"node:fs/promises";import*as t from"node:path";import*as n from"workerpool";import*as r from"node:url";function i(e){return e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}const a=i(Buffer.from(`iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=`,`base64`));async function o(){let e=new maa.CustomController({connect(){return!0},request_uuid(){return`0`},screencap(){return a}});return await e.post_connection().wait(),e}const s=t.join(process.env.MAAFW_MODULE_PATH,`@maaxyz/maa-node/dist/index-client.js`);await import(r.pathToFileURL(s).toString()),process.env.MAAFW_SILENCE_STDOUT===`1`&&(maa.Global.stdout_level=`Off`);let c;const l=[];let u=()=>{};async function d(){let e=await o(),n=new maa.Resource;for(let e of process.env.MAAFW_RESOURCE_PATHS.split(t.delimiter))await n.post_bundle(e).wait();c=new maa.Tasker,c.resource=n,c.controller=e,n.register_custom_action(`@mse/action`,async e=>{for(;;){for(;l.length>0;)await l.shift()(e.context);if(await new Promise(e=>{u=e}),l.length===0)break}return!0}),c.post_task(`@mse/action`,{"@mse/action":{action:`Custom`,custom_action:`@mse/action`}})}async function f(t){c||await d();let n=i(await e.readFile(t.imagePath)),r=[],{promise:a,resolve:o}=Promise.withResolvers();return l.push(async e=>{for(let i of t.nodes){let a=await e.run_recognition(i,n);r.push({imagePath:t.imagePath,imagePathRaw:t.imagePathRaw,node:i,hit:!!a?.hit,detail:a})}o()}),u(),await a,r}n.worker({performReco:f},{onTerminate:()=>{u()}});export{};
2
+ //# sourceMappingURL=worker.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.mjs","names":[],"sources":["../../src/utils.ts","../../src/test/worker.ts"],"sourcesContent":["import * as zlib from 'node:zlib'\n\nexport function toArrayBuffer(buffer: Buffer): ArrayBuffer {\n if (buffer.byteOffset === 0 && buffer.byteLength === buffer.buffer.byteLength) {\n return buffer.buffer as ArrayBuffer\n } else {\n return buffer.buffer.slice(\n buffer.byteOffset,\n buffer.byteOffset + buffer.byteLength\n ) as ArrayBuffer\n }\n}\n\nconst emptyPng = Buffer.from(\n 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=',\n 'base64'\n)\nconst image = toArrayBuffer(emptyPng)\n\nexport async function makeFakeController() {\n const ctrl = new maa.CustomController({\n connect() {\n return true\n },\n request_uuid() {\n return '0'\n },\n screencap() {\n return image\n }\n })\n await ctrl.post_connection().wait()\n return ctrl\n}\n\nexport function gzCompress(data: string) {\n const buf = Buffer.from(data)\n const compressed = zlib.gzipSync(buf)\n return compressed.toString('base64')\n}\n\nexport function gzDecompress(data: string): string {\n return zlib.gunzipSync(Buffer.from(data, 'base64')).toString()\n}\n","import * as fs from 'node:fs/promises'\nimport * as path from 'node:path'\nimport * as url from 'node:url'\nimport * as workerpool from 'workerpool'\n\nimport { makeFakeController, toArrayBuffer } from '../utils'\nimport type { RecoJob, RecoResult } from './types'\n\nconst importTarget = path.join(\n process.env.MAAFW_MODULE_PATH!,\n '@maaxyz/maa-node/dist/index-client.js'\n)\nawait import(url.pathToFileURL(importTarget).toString())\n\nif (process.env.MAAFW_SILENCE_STDOUT === '1') {\n maa.Global.stdout_level = 'Off'\n}\n\nlet inst: maa.Tasker | undefined = undefined\nconst taskQueue: ((ctx: maa.Context) => Promise<void>)[] = []\nlet taskAddResolve: () => void = () => {}\n\nasync function setup() {\n const ctrl = await makeFakeController()\n const res = new maa.Resource()\n for (const full of process.env.MAAFW_RESOURCE_PATHS!.split(path.delimiter)) {\n await res.post_bundle(full).wait()\n }\n inst = new maa.Tasker()\n inst.resource = res\n inst.controller = ctrl\n\n res.register_custom_action('@mse/action', async self => {\n while (true) {\n while (taskQueue.length > 0) {\n const task = taskQueue.shift()!\n await task(self.context)\n }\n await new Promise<void>(resolve => {\n taskAddResolve = resolve\n })\n if (taskQueue.length === 0) {\n break\n }\n }\n return true\n })\n\n inst!.post_task('@mse/action', {\n '@mse/action': {\n action: 'Custom',\n custom_action: '@mse/action'\n }\n })\n}\n\nasync function performReco(job: RecoJob) {\n if (!inst) {\n await setup()\n }\n\n const image = toArrayBuffer(await fs.readFile(job.imagePath))\n const result: RecoResult[] = []\n\n const { promise, resolve } = Promise.withResolvers<void>()\n\n taskQueue.push(async context => {\n for (const node of job.nodes) {\n const detail = await context.run_recognition(node, image)\n result.push({\n imagePath: job.imagePath,\n imagePathRaw: job.imagePathRaw,\n node: node,\n hit: !!detail?.hit,\n detail\n })\n }\n resolve()\n })\n taskAddResolve()\n await promise\n\n return result\n}\n\nworkerpool.worker(\n {\n performReco\n },\n {\n onTerminate: () => {\n taskAddResolve()\n }\n }\n)\n"],"mappings":"uHAEA,SAAgB,EAAc,EAA6B,CAIvD,OAHE,EAAO,aAAe,GAAK,EAAO,aAAe,EAAO,OAAO,WAC1D,EAAO,OAEP,EAAO,OAAO,MACnB,EAAO,WACP,EAAO,WAAa,EAAO,WAC5B,CAQL,MAAM,EAAQ,EAJG,OAAO,KACtB,mIACA,SACD,CACoC,CAErC,eAAsB,GAAqB,CACzC,IAAM,EAAO,IAAI,IAAI,iBAAiB,CACpC,SAAU,CACR,MAAO,IAET,cAAe,CACb,MAAO,KAET,WAAY,CACV,OAAO,GAEV,CAAC,CAEF,OADA,MAAM,EAAK,iBAAiB,CAAC,MAAM,CAC5B,ECxBT,MAAM,EAAe,EAAK,KACxB,QAAQ,IAAI,kBACZ,wCACD,CACD,MAAM,OAAO,EAAI,cAAc,EAAa,CAAC,UAAU,EAEnD,QAAQ,IAAI,uBAAyB,MACvC,IAAI,OAAO,aAAe,OAG5B,IAAI,EACJ,MAAM,EAAqD,EAAE,CAC7D,IAAI,MAAmC,GAEvC,eAAe,GAAQ,CACrB,IAAM,EAAO,MAAM,GAAoB,CACjC,EAAM,IAAI,IAAI,SACpB,IAAK,IAAM,KAAQ,QAAQ,IAAI,qBAAsB,MAAM,EAAK,UAAU,CACxE,MAAM,EAAI,YAAY,EAAK,CAAC,MAAM,CAEpC,EAAO,IAAI,IAAI,OACf,EAAK,SAAW,EAChB,EAAK,WAAa,EAElB,EAAI,uBAAuB,cAAe,KAAM,IAAQ,CACtD,OAAa,CACX,KAAO,EAAU,OAAS,GAExB,MADa,EAAU,OAAO,CACnB,EAAK,QAAQ,CAK1B,GAHA,MAAM,IAAI,QAAc,GAAW,CACjC,EAAiB,GACjB,CACE,EAAU,SAAW,EACvB,MAGJ,MAAO,IACP,CAEF,EAAM,UAAU,cAAe,CAC7B,cAAe,CACb,OAAQ,SACR,cAAe,cAChB,CACF,CAAC,CAGJ,eAAe,EAAY,EAAc,CAClC,GACH,MAAM,GAAO,CAGf,IAAM,EAAQ,EAAc,MAAM,EAAG,SAAS,EAAI,UAAU,CAAC,CACvD,EAAuB,EAAE,CAEzB,CAAE,UAAS,WAAY,QAAQ,eAAqB,CAkB1D,OAhBA,EAAU,KAAK,KAAM,IAAW,CAC9B,IAAK,IAAM,KAAQ,EAAI,MAAO,CAC5B,IAAM,EAAS,MAAM,EAAQ,gBAAgB,EAAM,EAAM,CACzD,EAAO,KAAK,CACV,UAAW,EAAI,UACf,aAAc,EAAI,aACZ,OACN,IAAK,CAAC,CAAC,GAAQ,IACf,SACD,CAAC,CAEJ,GAAS,EACT,CACF,GAAgB,CAChB,MAAM,EAEC,EAGT,EAAW,OACT,CACE,cACD,CACD,CACE,gBAAmB,CACjB,GAAgB,EAEnB,CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nekosu/maa-tools",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "maa-tools": "bin/maa-tools"
@@ -22,9 +22,9 @@
22
22
  "@actions/core": "^3.0.0",
23
23
  "jiti": "^2.6.1",
24
24
  "workerpool": "^10.0.1",
25
+ "@nekosu/maa-pipeline-manager": "1.0.0",
25
26
  "@nekosu/maa-locale": "1.0.0",
26
- "@nekosu/maa-version-manager": "1.0.1",
27
- "@nekosu/maa-pipeline-manager": "1.0.0"
27
+ "@nekosu/maa-version-manager": "1.0.1"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@maaxyz/maa-node": "5.7.2",