@midwayjs/ws 3.0.1 → 3.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
+ {"version":3,"file":"configuration.js","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":";;;;;;;;;AAAA,mDAAoD;AAYpD,IAAa,sBAAsB,GAAnC,MAAa,sBAAsB;CAAG,CAAA;AAAzB,sBAAsB;IAVlC,IAAA,yBAAa,EAAC;QACb,SAAS,EAAE,WAAW;QACtB,aAAa,EAAE;YACb;gBACE,OAAO,EAAE;oBACP,SAAS,EAAE,EAAE;iBACd;aACF;SACF;KACF,CAAC;GACW,sBAAsB,CAAG;AAAzB,wDAAsB","sourcesContent":["import { Configuration } from '@midwayjs/decorator';\n\n@Configuration({\n namespace: 'webSocket',\n importConfigs: [\n {\n default: {\n webSocket: {},\n },\n },\n ],\n})\nexport class WebSocketConfiguration {}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framework.js","sourceRoot":"","sources":["../src/framework.ts"],"names":[],"mappings":";;;;;;;;;AAAA,yCAKwB;AACxB,6BAA6B;AAC7B,+BAAgC;AAChC,MAAM,KAAK,GAAG,IAAA,eAAQ,EAAC,cAAc,CAAC,CAAC;AAOvC,gCAAgC;AAChC,mDAS6B;AAG7B,IAAa,iBAAiB,GAA9B,MAAa,iBAAkB,SAAQ,oBAItC;IAGC,SAAS;QACP,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED,qBAAqB,CAAC,OAAgC;QACpD,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAyB,CAAC;IAChE,CAAC;IAGS,KAAK,CAAC,mBAAmB,CACjC,OAAyC;QAEzC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;IACpC,CAAC;IAEM,KAAK,CAAC,GAAG;;QACd,IAAI,MAAmB,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE;YACnC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,sBAAe,CAAC,CAAC;SACvD;aAAM;YACL,MAAM,GAAG,MAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,mCAAI,IAAI,CAAC,YAAY,EAAE,CAAC;SAClE;QAED,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAW,EAAE,IAAI,EAAE,EAAE;YAClD,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE;gBACjD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE;YAClC,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;gBAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,EAAE;oBACjD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,2BAA2B,IAAI,CAAC,oBAAoB,CAAC,IAAI,gBAAgB,CAC1E,CAAC;oBACF,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAES,KAAK,CAAC,UAAU;QACxB,OAAO,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;YACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;gBAClB,UAAU,CAAC,GAAG,EAAE;oBACd,OAAO,EAAE,CAAC;gBACZ,CAAC,EAAE,IAAI,CAAC,CAAC;YACX,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,gBAAgB;QACrB,OAAO,0BAAmB,CAAC,EAAE,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,oBAAoB;QAChC,cAAc;QACd,MAAM,iBAAiB,GAAG,IAAA,sBAAU,EAAC,6BAAiB,CAAC,CAAC;QACxD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,wBAAwB;YACxB,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/C;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,MAAW;QACpC,IAAI,CAAC,GAAG,CAAC,EAAE,CACT,YAAY,EACZ,KAAK,EAAE,MAAwB,EAAE,OAA6B,EAAE,EAAE;YAChE,yBAAyB;YACzB,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACvD,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YAEtB,MAAM,YAAY,GAAkB,IAAA,4BAAgB,EAClD,wBAAY,EACZ,MAAM,CACP,CAAC;YAEF,cAAc;YACd,MAAM,SAAS,GAAG,EAAE,CAAC;YAErB,IAAI,YAAY,CAAC,MAAM,EAAE;gBACvB,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;oBACtC,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,SAAS,CAC7C,WAAW,CAAC,YAAY,CACzB,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;oBAC5B,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAChE,gBAAgB;oBAChB,IAAI,WAAW,CAAC,SAAS,KAAK,2BAAe,CAAC,aAAa,EAAE;wBAC3D,IAAI;4BACF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,KAAK,CAC7D,UAAU,EACV,CAAC,MAAM,EAAE,OAAO,CAAC,CAClB,CAAC;4BACF,MAAM,IAAI,CAAC,kBAAkB,CAC3B,MAAM,EACN,MAAM,EACN,WAAW,CAAC,YAAY,EACxB,SAAS,CACV,CAAC;yBACH;wBAAC,OAAO,GAAG,EAAE;4BACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;yBACxB;qBACF;yBAAM,IAAI,WAAW,CAAC,SAAS,KAAK,2BAAe,CAAC,UAAU,EAAE;wBAC/D,uBAAuB;wBACvB,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,gBAAgB,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;4BACxD,KAAK,CAAC,mBAAmB,EAAE,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;4BAE/D,IAAI;gCACF,MAAM,MAAM,GAAG,MAAM,CACnB,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;oCAC7C,yCAAyC;oCACzC,OAAO,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,KAAK,CAC/C,UAAU,EACV,IAAI,CACL,CAAC;gCACJ,CAAC,CAAC,CACH,CAAC,MAAM,CAAC,CAAC;gCACV,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,UAAU,EAAE;oCAC/C,MAAM;oCACN,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;iCAC/B;qCAAM;oCACL,OAAO;oCACP,MAAM,IAAI,CAAC,kBAAkB,CAC3B,MAAM,EACN,MAAM,EACN,WAAW,CAAC,YAAY,EACxB,SAAS,CACV,CAAC;iCACH;6BACF;4BAAC,OAAO,KAAK,EAAE;gCACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;6BAC1B;wBACH,CAAC,CAAC,CAAC;qBACJ;yBAAM,IACL,WAAW,CAAC,SAAS,KAAK,2BAAe,CAAC,gBAAgB,EAC1D;wBACA,uBAAuB;wBACvB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,EAAE;4BAC1C,IAAI;gCACF,MAAM,MAAM,GAAG,MAAM,UAAU,CAC7B,WAAW,CAAC,YAAY,CACzB,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;gCAC9B,MAAM,IAAI,CAAC,kBAAkB,CAC3B,MAAM,EACN,MAAM,EACN,WAAW,CAAC,YAAY,EACxB,SAAS,CACV,CAAC;6BACH;4BAAC,OAAO,GAAG,EAAE;gCACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;6BACxB;wBACH,CAAC,CAAC,CAAC;qBACJ;yBAAM;wBACL,0BAA0B;wBAC1B,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,IAAI,CACrD,WAAW,CACZ,CAAC;qBACH;iBACF;aACF;QACH,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC9B,MAAW,EACX,MAAwB,EACxB,YAAoB,EACpB,SAEC;QAED,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,IAAI,SAAS,CAAC,YAAY,CAAC,EAAE;YAC3B,KAAK,MAAM,WAAW,IAAI,SAAS,CAAC,YAAY,CAAC,CAAC,cAAc,EAAE;gBAChE,IAAI,WAAW,CAAC,SAAS,KAAK,2BAAe,CAAC,IAAI,EAAE;oBAClD,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;iBACnC;qBAAM,IAAI,WAAW,CAAC,SAAS,KAAK,2BAAe,CAAC,SAAS,EAAE;oBAC9D,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;wBAChC,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE;4BACxC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;yBACnC;oBACH,CAAC,CAAC,CAAC;iBACJ;aACF;YACD,IAAI,SAAS,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvD,oBAAoB;gBACpB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;aACnC;SACF;aAAM;YACL,YAAY;YACZ,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;SACnC;IACH,CAAC;IAEM,gBAAgB;QACrB,OAAO,WAAW,CAAC;IACrB,CAAC;CACF,CAAA;AA3NY,iBAAiB;IAD7B,IAAA,qBAAS,GAAE;GACC,iBAAiB,CA2N7B;AA3NY,8CAAiB;AA6N9B,SAAS,YAAY,CAAC,MAAM;IAC1B,OAAO,iBAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAClE,CAAC","sourcesContent":["import {\n BaseFramework,\n HTTP_SERVER_KEY,\n IMidwayBootstrapOptions,\n MidwayFrameworkType,\n} from '@midwayjs/core';\nimport * as http from 'http';\nimport { debuglog } from 'util';\nconst debug = debuglog('midway:debug');\n\nimport {\n IMidwayWSApplication,\n IMidwayWSConfigurationOptions,\n IMidwayWSContext,\n} from './interface';\nimport * as WebSocket from 'ws';\nimport {\n Types,\n WS_CONTROLLER_KEY,\n WS_EVENT_KEY,\n WSEventInfo,\n WSEventTypeEnum,\n getClassMetadata,\n listModule,\n Framework,\n} from '@midwayjs/decorator';\n\n@Framework()\nexport class MidwayWSFramework extends BaseFramework<\n IMidwayWSApplication,\n IMidwayWSContext,\n IMidwayWSConfigurationOptions\n> {\n server: http.Server;\n\n configure(): IMidwayWSConfigurationOptions {\n return this.configService.getConfiguration('webSocket');\n }\n\n applicationInitialize(options: IMidwayBootstrapOptions) {\n this.configurationOptions.noServer = true;\n const opts = Object.assign({}, this.configurationOptions, { port: null });\n this.app = new WebSocket.Server(opts) as IMidwayWSApplication;\n }\n public app: IMidwayWSApplication;\n\n protected async afterContainerReady(\n options: Partial<IMidwayBootstrapOptions>\n ): Promise<void> {\n await this.loadMidwayController();\n }\n\n public async run(): Promise<void> {\n let server: http.Server;\n if (!this.configurationOptions.port) {\n server = this.applicationContext.get(HTTP_SERVER_KEY);\n } else {\n server = this.configurationOptions.server ?? http.createServer();\n }\n\n server.on('upgrade', (request, socket: any, head) => {\n this.app.handleUpgrade(request, socket, head, ws => {\n this.app.emit('connection', ws, request);\n });\n });\n\n this.server = server;\n\n if (this.configurationOptions.port) {\n await new Promise<void>(resolve => {\n server.listen(this.configurationOptions.port, () => {\n this.logger.info(\n `WebSocket server port = ${this.configurationOptions.port} start success`\n );\n resolve();\n });\n });\n }\n }\n\n protected async beforeStop(): Promise<void> {\n return new Promise<void>(resolve => {\n this.app.close(() => {\n setTimeout(() => {\n resolve();\n }, 1000);\n });\n this.server.close();\n });\n }\n\n public getFrameworkType(): MidwayFrameworkType {\n return MidwayFrameworkType.WS;\n }\n\n private async loadMidwayController() {\n // create room\n const controllerModules = listModule(WS_CONTROLLER_KEY);\n if (controllerModules.length > 0) {\n // ws just one namespace\n await this.addNamespace(controllerModules[0]);\n }\n }\n\n private async addNamespace(target: any) {\n this.app.on(\n 'connection',\n async (socket: IMidwayWSContext, request: http.IncomingMessage) => {\n // create request context\n this.app.createAnonymousContext(socket);\n socket.requestContext.registerObject('socket', socket);\n socket.app = this.app;\n\n const wsEventInfos: WSEventInfo[] = getClassMetadata(\n WS_EVENT_KEY,\n target\n );\n\n // 存储方法对应的响应处理\n const methodMap = {};\n\n if (wsEventInfos.length) {\n for (const wsEventInfo of wsEventInfos) {\n methodMap[wsEventInfo.propertyName] = methodMap[\n wsEventInfo.propertyName\n ] || { responseEvents: [] };\n const controller = await socket.requestContext.getAsync(target);\n // on connection\n if (wsEventInfo.eventType === WSEventTypeEnum.ON_CONNECTION) {\n try {\n const result = await controller[wsEventInfo.propertyName].apply(\n controller,\n [socket, request]\n );\n await this.bindSocketResponse(\n result,\n socket,\n wsEventInfo.propertyName,\n methodMap\n );\n } catch (err) {\n this.logger.error(err);\n }\n } else if (wsEventInfo.eventType === WSEventTypeEnum.ON_MESSAGE) {\n // on user custom event\n socket.on(wsEventInfo.messageEventName, async (...args) => {\n debug('[ws]: got message', wsEventInfo.messageEventName, args);\n\n try {\n const result = await (\n await this.applyMiddleware(async (ctx, next) => {\n // eslint-disable-next-line prefer-spread\n return controller[wsEventInfo.propertyName].apply(\n controller,\n args\n );\n })\n )(socket);\n if (typeof args[args.length - 1] === 'function') {\n // ack\n args[args.length - 1](result);\n } else {\n // emit\n await this.bindSocketResponse(\n result,\n socket,\n wsEventInfo.propertyName,\n methodMap\n );\n }\n } catch (error) {\n this.logger.error(error);\n }\n });\n } else if (\n wsEventInfo.eventType === WSEventTypeEnum.ON_DISCONNECTION\n ) {\n // on socket disconnect\n socket.on('close', async (reason: string) => {\n try {\n const result = await controller[\n wsEventInfo.propertyName\n ].apply(controller, [reason]);\n await this.bindSocketResponse(\n result,\n socket,\n wsEventInfo.propertyName,\n methodMap\n );\n } catch (err) {\n this.logger.error(err);\n }\n });\n } else {\n // 存储每个方法对应的后置响应处理,供后续快速匹配\n methodMap[wsEventInfo.propertyName].responseEvents.push(\n wsEventInfo\n );\n }\n }\n }\n }\n );\n\n this.app.on('error', err => {\n this.logger.error('socket server close');\n });\n\n this.app.on('close', () => {\n this.logger.info('socket server close');\n });\n }\n\n private async bindSocketResponse(\n result: any,\n socket: IMidwayWSContext,\n propertyName: string,\n methodMap: {\n responseEvents?: WSEventInfo[];\n }\n ) {\n if (!result) return;\n if (methodMap[propertyName]) {\n for (const wsEventInfo of methodMap[propertyName].responseEvents) {\n if (wsEventInfo.eventType === WSEventTypeEnum.EMIT) {\n socket.send(formatResult(result));\n } else if (wsEventInfo.eventType === WSEventTypeEnum.BROADCAST) {\n this.app.clients.forEach(client => {\n if (client.readyState === WebSocket.OPEN) {\n client.send(formatResult(result));\n }\n });\n }\n }\n if (methodMap[propertyName].responseEvents.length === 0) {\n // no emit decorator\n socket.send(formatResult(result));\n }\n } else {\n // just send\n socket.send(formatResult(result));\n }\n }\n\n public getFrameworkName() {\n return 'midway:ws';\n }\n}\n\nfunction formatResult(result) {\n return Types.isObject(result) ? JSON.stringify(result) : result;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,yCAA6D;AAApD,sGAAA,iBAAiB,OAAa;AACvC,8CAA4B;AAC5B,iDAA0E;AAAjE,8GAAA,sBAAsB,OAAiB","sourcesContent":["export { MidwayWSFramework as Framework } from './framework';\nexport * from './interface';\nexport { WebSocketConfiguration as Configuration } from './configuration';\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../src/interface.ts"],"names":[],"mappings":"","sourcesContent":["import * as WebSocket from 'ws';\nimport {\n IConfigurationOptions,\n IMidwayApplication,\n IMidwayContext,\n NextFunction as BaseNextFunction\n} from '@midwayjs/core';\n\nexport type IMidwayWSApplication = IMidwayApplication<IMidwayWSContext> & WebSocket.Server;\n\nexport type IMidwayWSConfigurationOptions = {\n pubClient?: any;\n subClient?: any;\n} & Partial<WebSocket.ServerOptions> & IConfigurationOptions;\n\nexport type IMidwayWSContext = IMidwayContext<WebSocket & {\n app: IMidwayWSApplication;\n}>;\n\nexport type Application = IMidwayWSApplication;\nexport type NextFunction = BaseNextFunction;\nexport interface Context extends IMidwayWSContext {}\n\ndeclare module '@midwayjs/core/dist/interface' {\n interface MidwayConfig {\n webSocket?: IMidwayWSConfigurationOptions;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@midwayjs/ws",
3
- "version": "3.0.1",
3
+ "version": "3.0.2",
4
4
  "description": "Midway Web Framework for ws",
5
5
  "main": "dist/index",
6
6
  "typings": "dist/index.d.ts",
@@ -18,17 +18,18 @@
18
18
  ],
19
19
  "files": [
20
20
  "dist/**/*.js",
21
- "dist/**/*.d.ts"
21
+ "dist/**/*.d.ts",
22
+ "dist/**/*.js.map"
22
23
  ],
23
24
  "license": "MIT",
24
25
  "devDependencies": {
25
- "@midwayjs/decorator": "^3.0.0",
26
- "@midwayjs/mock": "^3.0.1",
26
+ "@midwayjs/decorator": "^3.0.2",
27
+ "@midwayjs/mock": "^3.0.2",
27
28
  "@types/ws": "8.2.2",
28
29
  "fs-extra": "10.0.0"
29
30
  },
30
31
  "dependencies": {
31
- "@midwayjs/core": "^3.0.1",
32
+ "@midwayjs/core": "^3.0.2",
32
33
  "@midwayjs/logger": "^2.14.0",
33
34
  "ws": "8.4.2"
34
35
  },
@@ -40,5 +41,5 @@
40
41
  "engines": {
41
42
  "node": ">=12"
42
43
  },
43
- "gitHead": "f345b4ed0392e5c3b9e815438ef0a377ad6da076"
44
+ "gitHead": "ca77247d229978a736e79bb208579c014ed226fc"
44
45
  }