@risleylima/escpos 0.2.0 → 1.0.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 (106) hide show
  1. package/README.md +94 -766
  2. package/dist/adapter/index.d.ts +29 -0
  3. package/dist/adapter/index.d.ts.map +1 -0
  4. package/dist/adapter/index.js +25 -0
  5. package/dist/adapter/index.js.map +1 -0
  6. package/dist/index.d.ts +14 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +25 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/network-adapter/index.d.ts +24 -0
  11. package/dist/network-adapter/index.d.ts.map +1 -0
  12. package/dist/network-adapter/index.js +263 -0
  13. package/dist/network-adapter/index.js.map +1 -0
  14. package/dist/printer/commands-types.d.ts +37 -0
  15. package/dist/printer/commands-types.d.ts.map +1 -0
  16. package/dist/printer/commands-types.js +63 -0
  17. package/dist/printer/commands-types.js.map +1 -0
  18. package/dist/printer/commands.d.ts +169 -0
  19. package/dist/printer/commands.d.ts.map +1 -0
  20. package/dist/printer/commands.js +192 -0
  21. package/dist/printer/commands.js.map +1 -0
  22. package/dist/printer/image-loader.d.ts +17 -0
  23. package/dist/printer/image-loader.d.ts.map +1 -0
  24. package/dist/printer/image-loader.js +462 -0
  25. package/dist/printer/image-loader.js.map +1 -0
  26. package/dist/printer/image.d.ts +43 -0
  27. package/dist/printer/image.d.ts.map +1 -0
  28. package/dist/printer/image.js +132 -0
  29. package/dist/printer/image.js.map +1 -0
  30. package/dist/printer/index.d.ts +158 -0
  31. package/dist/printer/index.d.ts.map +1 -0
  32. package/dist/printer/index.js +703 -0
  33. package/dist/printer/index.js.map +1 -0
  34. package/dist/printer/profiles/bematech/mp4200th.d.ts +13 -0
  35. package/dist/printer/profiles/bematech/mp4200th.d.ts.map +1 -0
  36. package/dist/printer/profiles/bematech/mp4200th.js +29 -0
  37. package/dist/printer/profiles/bematech/mp4200th.js.map +1 -0
  38. package/dist/printer/profiles/custom/bematech-mp4200th.d.ts +13 -0
  39. package/dist/printer/profiles/custom/bematech-mp4200th.d.ts.map +1 -0
  40. package/dist/printer/profiles/custom/bematech-mp4200th.js +21 -0
  41. package/dist/printer/profiles/custom/bematech-mp4200th.js.map +1 -0
  42. package/dist/printer/profiles/custom/vkp80iii.d.ts +19 -0
  43. package/dist/printer/profiles/custom/vkp80iii.d.ts.map +1 -0
  44. package/dist/printer/profiles/custom/vkp80iii.js +87 -0
  45. package/dist/printer/profiles/custom/vkp80iii.js.map +1 -0
  46. package/dist/printer/profiles/default.d.ts +7 -0
  47. package/dist/printer/profiles/default.d.ts.map +1 -0
  48. package/dist/printer/profiles/default.js +15 -0
  49. package/dist/printer/profiles/default.js.map +1 -0
  50. package/dist/printer/profiles/index.d.ts +41 -0
  51. package/dist/printer/profiles/index.d.ts.map +1 -0
  52. package/dist/printer/profiles/index.js +98 -0
  53. package/dist/printer/profiles/index.js.map +1 -0
  54. package/dist/printer/profiles/merge.d.ts +7 -0
  55. package/dist/printer/profiles/merge.d.ts.map +1 -0
  56. package/dist/printer/profiles/merge.js +58 -0
  57. package/dist/printer/profiles/merge.js.map +1 -0
  58. package/dist/printer/profiles/types.d.ts +99 -0
  59. package/dist/printer/profiles/types.d.ts.map +1 -0
  60. package/dist/printer/profiles/types.js +8 -0
  61. package/dist/printer/profiles/types.js.map +1 -0
  62. package/dist/printer/utils.d.ts +9 -0
  63. package/dist/printer/utils.d.ts.map +1 -0
  64. package/dist/printer/utils.js +54 -0
  65. package/dist/printer/utils.js.map +1 -0
  66. package/dist/serial-adapter/index.d.ts +17 -0
  67. package/dist/serial-adapter/index.d.ts.map +1 -0
  68. package/dist/serial-adapter/index.js +172 -0
  69. package/dist/serial-adapter/index.js.map +1 -0
  70. package/dist/usb-adapter/index.d.ts +20 -0
  71. package/dist/usb-adapter/index.d.ts.map +1 -0
  72. package/dist/usb-adapter/index.js +264 -0
  73. package/dist/usb-adapter/index.js.map +1 -0
  74. package/package.json +42 -15
  75. package/CHANGELOG.md +0 -68
  76. package/docs/COVERAGE_ANALYSIS.md +0 -98
  77. package/docs/DEPENDENCIES_REVIEW.md +0 -127
  78. package/docs/JSDOC_REVIEW.md +0 -122
  79. package/docs/LIBRARY_OVERVIEW.md +0 -383
  80. package/docs/PRE_PUBLISH_CHECKLIST.md +0 -331
  81. package/docs/PUBLIC_API_ANALYSIS.md +0 -223
  82. package/docs/README.md +0 -34
  83. package/docs/SERIALPORT_V13_MIGRATION_COMPLETE.md +0 -127
  84. package/docs/TESTS_IMPLEMENTED.md +0 -129
  85. package/docs/USB_V2_REVIEW.md +0 -148
  86. package/docs/VERIFICATION_RESULTS.md +0 -172
  87. package/examples/printTest.js +0 -59
  88. package/index.js +0 -7
  89. package/jest.config.js +0 -16
  90. package/src/adapter/index.js +0 -75
  91. package/src/printer/commands.js +0 -199
  92. package/src/printer/image.js +0 -159
  93. package/src/printer/index.js +0 -621
  94. package/src/printer/utils.js +0 -58
  95. package/src/serial-adapter/index.js +0 -198
  96. package/src/usb-adapter/index.js +0 -283
  97. package/tests/README.md +0 -67
  98. package/tests/integration/printer-flow.test.js +0 -128
  99. package/tests/unit/adapters/adapter.test.js +0 -49
  100. package/tests/unit/adapters/serial-adapter.test.js +0 -238
  101. package/tests/unit/adapters/usb-adapter.test.js +0 -319
  102. package/tests/unit/image/image.test.js +0 -157
  103. package/tests/unit/printer/buffer.test.js +0 -60
  104. package/tests/unit/printer/commands.test.js +0 -109
  105. package/tests/unit/printer/printer.test.js +0 -405
  106. package/tests/unit/utils/utils.test.js +0 -96
@@ -0,0 +1,29 @@
1
+ import { EventEmitter } from 'events';
2
+ export type AdapterState = 'DISCONNECTED' | 'CONNECTING' | 'CONNECTED' | 'OPENING' | 'READY' | 'BUSY' | 'CLOSING';
3
+ export declare abstract class Adapter extends EventEmitter {
4
+ protected state: AdapterState;
5
+ private lockPromise;
6
+ /**
7
+ * Serializes all IO operations at the adapter level to prevent data interleaving
8
+ * and race conditions across multiple printer instances sharing the same adapter.
9
+ */
10
+ protected synchronized<T>(task: () => Promise<T>): Promise<T>;
11
+ getState(): AdapterState;
12
+ abstract connect(...args: unknown[]): Promise<boolean>;
13
+ abstract open(): Promise<boolean>;
14
+ abstract write(data: Buffer): Promise<boolean>;
15
+ abstract read(): Promise<Buffer>;
16
+ abstract close(options?: {
17
+ timeout?: number;
18
+ }): Promise<boolean>;
19
+ abstract disconnect(): Promise<boolean>;
20
+ }
21
+ export type AdapterLike = {
22
+ write(data: Buffer): Promise<boolean>;
23
+ read(): Promise<Buffer>;
24
+ close(options?: {
25
+ timeout?: number;
26
+ }): Promise<boolean>;
27
+ getState?(): string;
28
+ };
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAElH,8BAAsB,OAAQ,SAAQ,YAAY;IAChD,SAAS,CAAC,KAAK,EAAE,YAAY,CAAkB;IAC/C,OAAO,CAAC,WAAW,CAAoC;IAEvD;;;OAGG;cACa,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAMnE,QAAQ,IAAI,YAAY;IAIxB,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IACtD,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAC9C,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAChC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAChE,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;CACxC;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,QAAQ,CAAC,IAAI,MAAM,CAAC;CACrB,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Adapter = void 0;
4
+ const events_1 = require("events");
5
+ class Adapter extends events_1.EventEmitter {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.state = 'DISCONNECTED';
9
+ this.lockPromise = Promise.resolve();
10
+ }
11
+ /**
12
+ * Serializes all IO operations at the adapter level to prevent data interleaving
13
+ * and race conditions across multiple printer instances sharing the same adapter.
14
+ */
15
+ async synchronized(task) {
16
+ const run = this.lockPromise.then(task, task);
17
+ this.lockPromise = run.then(() => undefined, () => undefined);
18
+ return run;
19
+ }
20
+ getState() {
21
+ return this.state;
22
+ }
23
+ }
24
+ exports.Adapter = Adapter;
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AAItC,MAAsB,OAAQ,SAAQ,qBAAY;IAAlD;;QACY,UAAK,GAAiB,cAAc,CAAC;QACvC,gBAAW,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAsBzD,CAAC;IApBC;;;OAGG;IACO,KAAK,CAAC,YAAY,CAAI,IAAsB;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC9D,OAAO,GAAG,CAAC;IACb,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CAQF;AAxBD,0BAwBC"}
@@ -0,0 +1,14 @@
1
+ import { Adapter } from './adapter';
2
+ import { Serial } from './serial-adapter';
3
+ import { USB } from './usb-adapter';
4
+ import { Network } from './network-adapter';
5
+ import { Printer } from './printer';
6
+ import { Image } from './printer/image';
7
+ export { Adapter, Serial, USB, Network, Printer, Image };
8
+ export type { AdapterLike } from './adapter';
9
+ export type { NetworkConnectOptions } from './network-adapter';
10
+ export type { PrinterOptions, RowColumn, LineItemOptions, TotalOptions, PresentTicketOptions } from './printer';
11
+ export type { PixelsObject, ImageProcessingOptions } from './printer/image';
12
+ export { getProfile, registerProfile, createProfileRegistry, getCommandsForProfile, listProfiles, defaultProfile, customVkp80iiiProfile, bematechMp4200thProfile, } from './printer/profiles';
13
+ export type { PrinterProfile, CommandSet, CommandSetOverride, PaperWidthCommandFn, TicketPresentationOptions, BarcodeOptions, QrCodeOptions, BarcodeBuildContext, QrCodeBuildContext, Vkp80iiiTicketPresentationOptions, ProfileRegistry, } from './printer/profiles';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACzD,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAChH,YAAY,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EACL,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,iCAAiC,EACjC,eAAe,GAChB,MAAM,oBAAoB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bematechMp4200thProfile = exports.customVkp80iiiProfile = exports.defaultProfile = exports.listProfiles = exports.getCommandsForProfile = exports.createProfileRegistry = exports.registerProfile = exports.getProfile = exports.Image = exports.Printer = exports.Network = exports.USB = exports.Serial = exports.Adapter = void 0;
4
+ const adapter_1 = require("./adapter");
5
+ Object.defineProperty(exports, "Adapter", { enumerable: true, get: function () { return adapter_1.Adapter; } });
6
+ const serial_adapter_1 = require("./serial-adapter");
7
+ Object.defineProperty(exports, "Serial", { enumerable: true, get: function () { return serial_adapter_1.Serial; } });
8
+ const usb_adapter_1 = require("./usb-adapter");
9
+ Object.defineProperty(exports, "USB", { enumerable: true, get: function () { return usb_adapter_1.USB; } });
10
+ const network_adapter_1 = require("./network-adapter");
11
+ Object.defineProperty(exports, "Network", { enumerable: true, get: function () { return network_adapter_1.Network; } });
12
+ const printer_1 = require("./printer");
13
+ Object.defineProperty(exports, "Printer", { enumerable: true, get: function () { return printer_1.Printer; } });
14
+ const image_1 = require("./printer/image");
15
+ Object.defineProperty(exports, "Image", { enumerable: true, get: function () { return image_1.Image; } });
16
+ var profiles_1 = require("./printer/profiles");
17
+ Object.defineProperty(exports, "getProfile", { enumerable: true, get: function () { return profiles_1.getProfile; } });
18
+ Object.defineProperty(exports, "registerProfile", { enumerable: true, get: function () { return profiles_1.registerProfile; } });
19
+ Object.defineProperty(exports, "createProfileRegistry", { enumerable: true, get: function () { return profiles_1.createProfileRegistry; } });
20
+ Object.defineProperty(exports, "getCommandsForProfile", { enumerable: true, get: function () { return profiles_1.getCommandsForProfile; } });
21
+ Object.defineProperty(exports, "listProfiles", { enumerable: true, get: function () { return profiles_1.listProfiles; } });
22
+ Object.defineProperty(exports, "defaultProfile", { enumerable: true, get: function () { return profiles_1.defaultProfile; } });
23
+ Object.defineProperty(exports, "customVkp80iiiProfile", { enumerable: true, get: function () { return profiles_1.customVkp80iiiProfile; } });
24
+ Object.defineProperty(exports, "bematechMp4200thProfile", { enumerable: true, get: function () { return profiles_1.bematechMp4200thProfile; } });
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AAO3B,wFAPA,iBAAO,OAOA;AANhB,qDAA0C;AAMxB,uFANT,uBAAM,OAMS;AALxB,+CAAoC;AAKV,oFALjB,iBAAG,OAKiB;AAJ7B,uDAA4C;AAIb,wFAJtB,yBAAO,OAIsB;AAHtC,uCAAoC;AAGI,wFAH/B,iBAAO,OAG+B;AAF/C,2CAAwC;AAES,sFAFxC,aAAK,OAEwC;AAKtD,+CAS4B;AAR1B,sGAAA,UAAU,OAAA;AACV,2GAAA,eAAe,OAAA;AACf,iHAAA,qBAAqB,OAAA;AACrB,iHAAA,qBAAqB,OAAA;AACrB,wGAAA,YAAY,OAAA;AACZ,0GAAA,cAAc,OAAA;AACd,iHAAA,qBAAqB,OAAA;AACrB,mHAAA,uBAAuB,OAAA"}
@@ -0,0 +1,24 @@
1
+ import { Adapter } from '../adapter';
2
+ export interface NetworkConnectOptions {
3
+ host: string;
4
+ port: number;
5
+ timeout?: number;
6
+ }
7
+ export declare class Network extends Adapter {
8
+ private socket;
9
+ private options;
10
+ connect(hostOrOptions: string | NetworkConnectOptions, portOrNothing?: number, options?: {
11
+ timeout?: number;
12
+ }): Promise<boolean>;
13
+ open(): Promise<boolean>;
14
+ write(data: Buffer): Promise<boolean>;
15
+ private writeChunk;
16
+ read(): Promise<Buffer>;
17
+ close(options?: {
18
+ timeout?: number;
19
+ }): Promise<boolean>;
20
+ disconnect(options?: {
21
+ timeout?: number;
22
+ }): Promise<boolean>;
23
+ }
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/network-adapter/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAIrC,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAQD,qBAAa,OAAQ,SAAQ,OAAO;IAClC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,OAAO,CAAsC;IAE/C,OAAO,CACX,aAAa,EAAE,MAAM,GAAG,qBAAqB,EAC7C,aAAa,CAAC,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7B,OAAO,CAAC,OAAO,CAAC;IA2Bb,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAsDxB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB3C,OAAO,CAAC,UAAU;IAmDZ,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IA4BvB,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvD,UAAU,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAGnE"}
@@ -0,0 +1,263 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.Network = void 0;
37
+ const net = __importStar(require("net"));
38
+ const adapter_1 = require("../adapter");
39
+ const debug = require('debug')('escpos:network-adapter');
40
+ const NOT_CONNECTED_MSG = 'Not connected. Call connect(host, port) first.';
41
+ const DEFAULT_CONNECT_TIMEOUT_MS = 10000;
42
+ const DEFAULT_CLOSE_TIMEOUT_MS = 2000;
43
+ const DEFAULT_IO_TIMEOUT_MS = 30000;
44
+ const CHUNK_SIZE = 8192; // 8KB chunks for industrial flow control
45
+ class Network extends adapter_1.Adapter {
46
+ constructor() {
47
+ super(...arguments);
48
+ this.socket = null;
49
+ this.options = null;
50
+ }
51
+ async connect(hostOrOptions, portOrNothing, options) {
52
+ return this.synchronized(async () => {
53
+ const previous = this.options;
54
+ if (typeof hostOrOptions === 'object' && hostOrOptions !== null && 'host' in hostOrOptions) {
55
+ this.options = {
56
+ host: hostOrOptions.host,
57
+ port: hostOrOptions.port,
58
+ timeout: hostOrOptions.timeout ?? DEFAULT_CONNECT_TIMEOUT_MS,
59
+ };
60
+ }
61
+ else {
62
+ this.options = {
63
+ host: hostOrOptions,
64
+ port: portOrNothing ?? 9100,
65
+ timeout: options?.timeout ?? DEFAULT_CONNECT_TIMEOUT_MS,
66
+ };
67
+ }
68
+ if (this.socket && !this.socket.destroyed && previous && (previous.host !== this.options.host || previous.port !== this.options.port)) {
69
+ await this.close();
70
+ }
71
+ this.state = 'CONNECTED';
72
+ debug('Network adapter configured for %s:%d', this.options.host, this.options.port);
73
+ return true;
74
+ });
75
+ }
76
+ async open() {
77
+ return this.synchronized(async () => {
78
+ if (!this.options)
79
+ throw new Error(NOT_CONNECTED_MSG);
80
+ if (this.socket && !this.socket.destroyed)
81
+ return true;
82
+ this.state = 'OPENING';
83
+ return new Promise((resolve, reject) => {
84
+ let settled = false;
85
+ const { host, port, timeout } = this.options;
86
+ const socket = net.createConnection({ host, port }, () => {
87
+ if (settled)
88
+ return;
89
+ settled = true;
90
+ socket.setTimeout(0);
91
+ socket.removeAllListeners('error');
92
+ socket.removeAllListeners('timeout');
93
+ this.socket = socket;
94
+ this.state = 'READY';
95
+ debug('Connected to %s:%d', host, port);
96
+ this.emit('connect', socket);
97
+ resolve(true);
98
+ });
99
+ socket.setTimeout(timeout ?? DEFAULT_CONNECT_TIMEOUT_MS);
100
+ socket.on('timeout', () => {
101
+ if (settled)
102
+ return;
103
+ settled = true;
104
+ this.state = 'DISCONNECTED';
105
+ socket.destroy();
106
+ reject(new Error('Connection timeout'));
107
+ });
108
+ socket.on('error', (err) => {
109
+ if (settled)
110
+ return;
111
+ settled = true;
112
+ this.state = 'DISCONNECTED';
113
+ socket.destroy();
114
+ debug('Socket error: %s', err.message);
115
+ reject(err);
116
+ });
117
+ socket.on('close', () => {
118
+ if (this.socket === socket) {
119
+ this.socket = null;
120
+ this.state = 'DISCONNECTED';
121
+ this.emit('close');
122
+ this.emit('disconnect');
123
+ }
124
+ });
125
+ });
126
+ });
127
+ }
128
+ async write(data) {
129
+ return this.synchronized(async () => {
130
+ if (!this.socket || this.socket.destroyed)
131
+ throw new Error(NOT_CONNECTED_MSG);
132
+ const prevState = this.state;
133
+ this.state = 'BUSY';
134
+ try {
135
+ // Industrial Chunking Implementation
136
+ for (let i = 0; i < data.length; i += CHUNK_SIZE) {
137
+ const chunk = data.subarray(i, i + CHUNK_SIZE);
138
+ await this.writeChunk(chunk);
139
+ }
140
+ return true;
141
+ }
142
+ finally {
143
+ this.state = prevState === 'BUSY' ? 'READY' : prevState;
144
+ }
145
+ });
146
+ }
147
+ writeChunk(chunk) {
148
+ return new Promise((resolve, reject) => {
149
+ const socket = this.socket;
150
+ let settled = false;
151
+ const fail = (err) => {
152
+ if (settled)
153
+ return;
154
+ settled = true;
155
+ socket.removeListener('error', onError);
156
+ socket.removeListener('drain', onDrain);
157
+ reject(err);
158
+ };
159
+ const onError = (err) => fail(err);
160
+ const onDrain = () => {
161
+ if (settled)
162
+ return;
163
+ settled = true;
164
+ socket.removeListener('error', onError);
165
+ resolve();
166
+ };
167
+ const drainTimeout = setTimeout(() => {
168
+ fail(new Error('Write timeout: socket drain event never fired.'));
169
+ }, DEFAULT_IO_TIMEOUT_MS);
170
+ if (drainTimeout.unref)
171
+ drainTimeout.unref();
172
+ let success = true;
173
+ const needsDrain = !socket.write(chunk, (err) => {
174
+ if (err) {
175
+ clearTimeout(drainTimeout);
176
+ return fail(err);
177
+ }
178
+ if (success) {
179
+ if (settled)
180
+ return;
181
+ settled = true;
182
+ clearTimeout(drainTimeout);
183
+ socket.removeListener('error', onError);
184
+ resolve();
185
+ }
186
+ });
187
+ success = !needsDrain;
188
+ if (needsDrain) {
189
+ socket.once('drain', onDrain);
190
+ socket.once('error', onError);
191
+ }
192
+ else {
193
+ socket.once('error', onError);
194
+ }
195
+ });
196
+ }
197
+ async read() {
198
+ return this.synchronized(async () => {
199
+ if (!this.socket || this.socket.destroyed)
200
+ throw new Error(NOT_CONNECTED_MSG);
201
+ return new Promise((resolve, reject) => {
202
+ const socket = this.socket;
203
+ let settled = false;
204
+ const done = (err, data) => {
205
+ if (settled)
206
+ return;
207
+ settled = true;
208
+ clearTimeout(timer);
209
+ socket.removeListener('data', onData);
210
+ socket.removeListener('error', onError);
211
+ socket.removeListener('close', onClose);
212
+ if (err)
213
+ reject(err);
214
+ else
215
+ resolve(data);
216
+ };
217
+ const onData = (data) => done(undefined, data);
218
+ const onError = (err) => done(err);
219
+ const onClose = () => done(new Error('Socket closed while waiting for data.'));
220
+ const timer = setTimeout(() => done(new Error('Read timeout')), DEFAULT_IO_TIMEOUT_MS);
221
+ if (timer.unref)
222
+ timer.unref();
223
+ socket.once('data', onData);
224
+ socket.once('error', onError);
225
+ socket.once('close', onClose);
226
+ });
227
+ });
228
+ }
229
+ async close(options) {
230
+ return this.synchronized(async () => {
231
+ if (!this.socket)
232
+ return true;
233
+ this.state = 'CLOSING';
234
+ const socket = this.socket;
235
+ this.socket = null;
236
+ const timeoutMs = Math.max(0, options?.timeout ?? DEFAULT_CLOSE_TIMEOUT_MS);
237
+ return new Promise((resolve) => {
238
+ let completed = false;
239
+ const done = () => {
240
+ if (completed)
241
+ return;
242
+ completed = true;
243
+ socket.removeAllListeners();
244
+ this.state = 'DISCONNECTED';
245
+ this.emit('close');
246
+ resolve(true);
247
+ };
248
+ socket.once('close', done);
249
+ socket.once('error', () => done());
250
+ socket.end();
251
+ const t = setTimeout(() => { if (!socket.destroyed)
252
+ socket.destroy(); done(); }, timeoutMs);
253
+ if (t.unref)
254
+ t.unref();
255
+ });
256
+ });
257
+ }
258
+ async disconnect(options) {
259
+ return this.close(options);
260
+ }
261
+ }
262
+ exports.Network = Network;
263
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/network-adapter/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Strong types for the ESC/POS command set.
3
+ * Used by Printer to avoid weak casts (as unknown as Record<string, Buffer>).
4
+ */
5
+ import type { commands } from './commands';
6
+ /** Command set shape (inferred from commands). */
7
+ export type CommandSet = typeof commands;
8
+ export declare const FEED_CONTROL_KEYS: readonly ["CTL_LF", "CTL_GLF", "CTL_FF", "CTL_CR", "CTL_HT", "CTL_VT"];
9
+ export type FeedControlKey = (typeof FEED_CONTROL_KEYS)[number];
10
+ export declare const ALIGN_KEYS: readonly ["TXT_ALIGN_LT", "TXT_ALIGN_CT", "TXT_ALIGN_RT"];
11
+ export type AlignKey = (typeof ALIGN_KEYS)[number];
12
+ export declare const FONT_KEYS: readonly ["TXT_FONT_A", "TXT_FONT_B", "TXT_FONT_C"];
13
+ export type FontKey = (typeof FONT_KEYS)[number];
14
+ export declare const HARDWARE_KEYS: readonly ["HW_INIT", "HW_SELECT", "HW_RESET"];
15
+ export type HardwareKey = (typeof HARDWARE_KEYS)[number];
16
+ export declare const BITMAP_DENSITY_KEYS: readonly ["BITMAP_S8", "BITMAP_D8", "BITMAP_S24", "BITMAP_D24"];
17
+ export type BitmapDensityKey = (typeof BITMAP_DENSITY_KEYS)[number];
18
+ export declare const GSV0_MODE_KEYS: readonly ["GSV0_NORMAL", "GSV0_DW", "GSV0_DH", "GSV0_DWDH"];
19
+ export type Gsv0ModeKey = (typeof GSV0_MODE_KEYS)[number];
20
+ export declare const CASH_DRAWER_KEYS: readonly ["CD_KICK_2", "CD_KICK_5"];
21
+ export type CashDrawerKey = (typeof CASH_DRAWER_KEYS)[number];
22
+ export type BarcodeWidthIndex = 1 | 2 | 3 | 4 | 5;
23
+ /** Narrow FEED_CONTROL_SEQUENCES key from string. Returns undefined if invalid. */
24
+ export declare function getFeedControlKey(ctrl: string): FeedControlKey | undefined;
25
+ /** Narrow TEXT_FORMAT alignment key from string. */
26
+ export declare function getAlignKey(align: string): AlignKey | undefined;
27
+ /** Narrow TEXT_FORMAT font key from string. */
28
+ export declare function getFontKey(family: string): FontKey | undefined;
29
+ /** Narrow HARDWARE key from string. */
30
+ export declare function getHardwareKey(hw: string): HardwareKey | undefined;
31
+ /** Narrow BITMAP_FORMAT key from density string. */
32
+ export declare function getBitmapDensityKey(density: string): BitmapDensityKey | undefined;
33
+ /** Narrow GSV0_FORMAT key from mode string. */
34
+ export declare function getGsv0ModeKey(mode: string): Gsv0ModeKey | undefined;
35
+ /** Cash drawer key from pin. */
36
+ export declare function getCashDrawerKey(pin: 2 | 5): CashDrawerKey;
37
+ //# sourceMappingURL=commands-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands-types.d.ts","sourceRoot":"","sources":["../../src/printer/commands-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,kDAAkD;AAClD,MAAM,MAAM,UAAU,GAAG,OAAO,QAAQ,CAAC;AAGzC,eAAO,MAAM,iBAAiB,wEAAyE,CAAC;AACxG,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAGhE,eAAO,MAAM,UAAU,2DAA4D,CAAC;AACpF,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAGnD,eAAO,MAAM,SAAS,qDAAsD,CAAC;AAC7E,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAGjD,eAAO,MAAM,aAAa,+CAAgD,CAAC;AAC3E,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAGzD,eAAO,MAAM,mBAAmB,iEAAkE,CAAC;AACnG,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAGpE,eAAO,MAAM,cAAc,6DAA8D,CAAC;AAC1F,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAG1D,eAAO,MAAM,gBAAgB,qCAAsC,CAAC;AACpE,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAG9D,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAElD,mFAAmF;AACnF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAG1E;AAED,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAG/D;AAED,+CAA+C;AAC/C,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAG9D;AAED,uCAAuC;AACvC,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAGlE;AAED,oDAAoD;AACpD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAGjF;AAED,+CAA+C;AAC/C,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAGpE;AAED,gCAAgC;AAChC,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,aAAa,CAE1D"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ /**
3
+ * Strong types for the ESC/POS command set.
4
+ * Used by Printer to avoid weak casts (as unknown as Record<string, Buffer>).
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.CASH_DRAWER_KEYS = exports.GSV0_MODE_KEYS = exports.BITMAP_DENSITY_KEYS = exports.HARDWARE_KEYS = exports.FONT_KEYS = exports.ALIGN_KEYS = exports.FEED_CONTROL_KEYS = void 0;
8
+ exports.getFeedControlKey = getFeedControlKey;
9
+ exports.getAlignKey = getAlignKey;
10
+ exports.getFontKey = getFontKey;
11
+ exports.getHardwareKey = getHardwareKey;
12
+ exports.getBitmapDensityKey = getBitmapDensityKey;
13
+ exports.getGsv0ModeKey = getGsv0ModeKey;
14
+ exports.getCashDrawerKey = getCashDrawerKey;
15
+ // ─── Feed control sequences (control()) ─────────────────────────────────────
16
+ exports.FEED_CONTROL_KEYS = ['CTL_LF', 'CTL_GLF', 'CTL_FF', 'CTL_CR', 'CTL_HT', 'CTL_VT'];
17
+ // ─── Text format – alignment (align()) ──────────────────────────────────────
18
+ exports.ALIGN_KEYS = ['TXT_ALIGN_LT', 'TXT_ALIGN_CT', 'TXT_ALIGN_RT'];
19
+ // ─── Text format – font (font()) ───────────────────────────────────────────
20
+ exports.FONT_KEYS = ['TXT_FONT_A', 'TXT_FONT_B', 'TXT_FONT_C'];
21
+ // ─── Hardware (hardware()) ─────────────────────────────────────────────────
22
+ exports.HARDWARE_KEYS = ['HW_INIT', 'HW_SELECT', 'HW_RESET'];
23
+ // ─── Bitmap density (image()) ───────────────────────────────────────────────
24
+ exports.BITMAP_DENSITY_KEYS = ['BITMAP_S8', 'BITMAP_D8', 'BITMAP_S24', 'BITMAP_D24'];
25
+ // ─── Raster mode (raster()) ─────────────────────────────────────────────────
26
+ exports.GSV0_MODE_KEYS = ['GSV0_NORMAL', 'GSV0_DW', 'GSV0_DH', 'GSV0_DWDH'];
27
+ // ─── Cash drawer (cashdraw()) ──────────────────────────────────────────────
28
+ exports.CASH_DRAWER_KEYS = ['CD_KICK_2', 'CD_KICK_5'];
29
+ /** Narrow FEED_CONTROL_SEQUENCES key from string. Returns undefined if invalid. */
30
+ function getFeedControlKey(ctrl) {
31
+ const key = 'CTL_' + ctrl.toUpperCase();
32
+ return exports.FEED_CONTROL_KEYS.includes(key) ? key : undefined;
33
+ }
34
+ /** Narrow TEXT_FORMAT alignment key from string. */
35
+ function getAlignKey(align) {
36
+ const key = 'TXT_ALIGN_' + align.toUpperCase();
37
+ return exports.ALIGN_KEYS.includes(key) ? key : undefined;
38
+ }
39
+ /** Narrow TEXT_FORMAT font key from string. */
40
+ function getFontKey(family) {
41
+ const key = 'TXT_FONT_' + family.toUpperCase();
42
+ return exports.FONT_KEYS.includes(key) ? key : undefined;
43
+ }
44
+ /** Narrow HARDWARE key from string. */
45
+ function getHardwareKey(hw) {
46
+ const key = 'HW_' + hw.toUpperCase();
47
+ return exports.HARDWARE_KEYS.includes(key) ? key : undefined;
48
+ }
49
+ /** Narrow BITMAP_FORMAT key from density string. */
50
+ function getBitmapDensityKey(density) {
51
+ const key = 'BITMAP_' + density.toUpperCase();
52
+ return exports.BITMAP_DENSITY_KEYS.includes(key) ? key : undefined;
53
+ }
54
+ /** Narrow GSV0_FORMAT key from mode string. */
55
+ function getGsv0ModeKey(mode) {
56
+ const key = 'GSV0_' + mode.toUpperCase();
57
+ return exports.GSV0_MODE_KEYS.includes(key) ? key : undefined;
58
+ }
59
+ /** Cash drawer key from pin. */
60
+ function getCashDrawerKey(pin) {
61
+ return pin === 2 ? 'CD_KICK_2' : 'CD_KICK_5';
62
+ }
63
+ //# sourceMappingURL=commands-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands-types.js","sourceRoot":"","sources":["../../src/printer/commands-types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAuCH,8CAGC;AAGD,kCAGC;AAGD,gCAGC;AAGD,wCAGC;AAGD,kDAGC;AAGD,wCAGC;AAGD,4CAEC;AAtED,+EAA+E;AAClE,QAAA,iBAAiB,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAGxG,+EAA+E;AAClE,QAAA,UAAU,GAAG,CAAC,cAAc,EAAE,cAAc,EAAE,cAAc,CAAU,CAAC;AAGpF,8EAA8E;AACjE,QAAA,SAAS,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAU,CAAC;AAG7E,8EAA8E;AACjE,QAAA,aAAa,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAU,CAAC;AAG3E,+EAA+E;AAClE,QAAA,mBAAmB,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAU,CAAC;AAGnG,+EAA+E;AAClE,QAAA,cAAc,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAU,CAAC;AAG1F,8EAA8E;AACjE,QAAA,gBAAgB,GAAG,CAAC,WAAW,EAAE,WAAW,CAAU,CAAC;AAMpE,mFAAmF;AACnF,SAAgB,iBAAiB,CAAC,IAAY;IAC5C,MAAM,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACxC,OAAO,yBAAiB,CAAC,QAAQ,CAAC,GAAqB,CAAC,CAAC,CAAC,CAAE,GAAsB,CAAC,CAAC,CAAC,SAAS,CAAC;AACjG,CAAC;AAED,oDAAoD;AACpD,SAAgB,WAAW,CAAC,KAAa;IACvC,MAAM,GAAG,GAAG,YAAY,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAC/C,OAAO,kBAAU,CAAC,QAAQ,CAAC,GAAe,CAAC,CAAC,CAAC,CAAE,GAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC;AAED,+CAA+C;AAC/C,SAAgB,UAAU,CAAC,MAAc;IACvC,MAAM,GAAG,GAAG,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAC/C,OAAO,iBAAS,CAAC,QAAQ,CAAC,GAAc,CAAC,CAAC,CAAC,CAAE,GAAe,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC;AAED,uCAAuC;AACvC,SAAgB,cAAc,CAAC,EAAU;IACvC,MAAM,GAAG,GAAG,KAAK,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO,qBAAa,CAAC,QAAQ,CAAC,GAAkB,CAAC,CAAC,CAAC,CAAE,GAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;AACvF,CAAC;AAED,oDAAoD;AACpD,SAAgB,mBAAmB,CAAC,OAAe;IACjD,MAAM,GAAG,GAAG,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAO,2BAAmB,CAAC,QAAQ,CAAC,GAAuB,CAAC,CAAC,CAAC,CAAE,GAAwB,CAAC,CAAC,CAAC,SAAS,CAAC;AACvG,CAAC;AAED,+CAA+C;AAC/C,SAAgB,cAAc,CAAC,IAAY;IACzC,MAAM,GAAG,GAAG,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACzC,OAAO,sBAAc,CAAC,QAAQ,CAAC,GAAkB,CAAC,CAAC,CAAC,CAAE,GAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;AACxF,CAAC;AAED,gCAAgC;AAChC,SAAgB,gBAAgB,CAAC,GAAU;IACzC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;AAC/C,CAAC"}