ygopro-msg-encode 1.1.19 → 1.1.20

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/dist/index.cjs CHANGED
@@ -57,6 +57,7 @@ __export(index_exports, {
57
57
  OcgcoreScriptConstants: () => OcgcoreScriptConstants,
58
58
  PayloadBase: () => PayloadBase,
59
59
  PlayerChangeState: () => PlayerChangeState,
60
+ ProtoRegistryBase: () => ProtoRegistryBase,
60
61
  RegistryBase: () => RegistryBase,
61
62
  RoomStatus: () => RoomStatus,
62
63
  SEND_TO_ALL: () => SEND_TO_ALL,
@@ -1568,10 +1569,77 @@ var _RegistryBase = class _RegistryBase {
1568
1569
  data.slice(this.options.dataOffset ?? 0)
1569
1570
  );
1570
1571
  }
1572
+ getInstancesFromPayload(data) {
1573
+ const instances = [];
1574
+ const identifierOffset = this.options.identifierOffset ?? 0;
1575
+ const dataOffset = this.options.dataOffset ?? 0;
1576
+ const minLength = Math.max(identifierOffset + 1, dataOffset);
1577
+ let remaining = data;
1578
+ while (remaining.length > 0) {
1579
+ if (remaining.length < minLength) {
1580
+ break;
1581
+ }
1582
+ try {
1583
+ const instance = this.getInstanceFromPayload(remaining);
1584
+ if (!instance) {
1585
+ break;
1586
+ }
1587
+ const consumed = dataOffset + instance.toPayload().length;
1588
+ if (consumed <= 0 || consumed > remaining.length) {
1589
+ break;
1590
+ }
1591
+ instances.push(instance);
1592
+ remaining = remaining.slice(consumed);
1593
+ } catch {
1594
+ break;
1595
+ }
1596
+ }
1597
+ return instances;
1598
+ }
1571
1599
  };
1572
1600
  __name(_RegistryBase, "RegistryBase");
1573
1601
  var RegistryBase = _RegistryBase;
1574
1602
 
1603
+ // src/proto-base/proto-registry-base.ts
1604
+ var _ProtoRegistryBase = class _ProtoRegistryBase extends RegistryBase {
1605
+ constructor(payloadClass) {
1606
+ super(payloadClass, {
1607
+ identifierOffset: 2,
1608
+ dataOffset: 3
1609
+ });
1610
+ }
1611
+ getInstancesFromPayload(data) {
1612
+ const instances = [];
1613
+ let offset = 0;
1614
+ while (offset + 2 <= data.length) {
1615
+ const declaredLength = data[offset] | data[offset + 1] << 8;
1616
+ if (declaredLength <= 0) {
1617
+ break;
1618
+ }
1619
+ const packetLength = 2 + declaredLength;
1620
+ if (offset + packetLength > data.length) {
1621
+ break;
1622
+ }
1623
+ const chunk = data.slice(offset, offset + packetLength);
1624
+ const identifier = chunk[2];
1625
+ const proto = this.get(identifier);
1626
+ if (!proto) {
1627
+ break;
1628
+ }
1629
+ try {
1630
+ const instance = new proto().fromFullPayload(chunk);
1631
+ instances.push(instance);
1632
+ } catch {
1633
+ break;
1634
+ }
1635
+ offset += packetLength;
1636
+ }
1637
+ return instances;
1638
+ }
1639
+ };
1640
+ __name(_ProtoRegistryBase, "ProtoRegistryBase");
1641
+ var ProtoRegistryBase = _ProtoRegistryBase;
1642
+
1575
1643
  // src/protos/ctos/proto/response.ts
1576
1644
  var _YGOProCtosResponse = class _YGOProCtosResponse extends YGOProCtosBase {
1577
1645
  fromPayload(data) {
@@ -1864,10 +1932,7 @@ _YGOProCtosRequestField.identifier = 48;
1864
1932
  var YGOProCtosRequestField = _YGOProCtosRequestField;
1865
1933
 
1866
1934
  // src/protos/ctos/registry.ts
1867
- var YGOProCtos = new RegistryBase(YGOProCtosBase, {
1868
- identifierOffset: 2,
1869
- dataOffset: 3
1870
- });
1935
+ var YGOProCtos = new ProtoRegistryBase(YGOProCtosBase);
1871
1936
  YGOProCtos.register(YGOProCtosResponse);
1872
1937
  YGOProCtos.register(YGOProCtosUpdateDeck);
1873
1938
  YGOProCtos.register(YGOProCtosHandResult);
@@ -6431,10 +6496,7 @@ __decorateClass([
6431
6496
  var YGOProStocSrvproRoomlist = _YGOProStocSrvproRoomlist;
6432
6497
 
6433
6498
  // src/protos/stoc/registry.ts
6434
- var YGOProStoc = new RegistryBase(YGOProStocBase, {
6435
- identifierOffset: 2,
6436
- dataOffset: 3
6437
- });
6499
+ var YGOProStoc = new ProtoRegistryBase(YGOProStocBase);
6438
6500
  YGOProStoc.register(YGOProStocGameMsg);
6439
6501
  YGOProStoc.register(YGOProStocErrorMsg);
6440
6502
  YGOProStoc.register(YGOProStocSelectHand);
@@ -6480,6 +6542,7 @@ YGOProStoc.register(YGOProStocSrvproRoomlist);
6480
6542
  OcgcoreScriptConstants,
6481
6543
  PayloadBase,
6482
6544
  PlayerChangeState,
6545
+ ProtoRegistryBase,
6483
6546
  RegistryBase,
6484
6547
  RoomStatus,
6485
6548
  SEND_TO_ALL,