@highlight-run/rrweb 1.2.0 → 2.0.1

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 (185) hide show
  1. package/dist/plugins/console-record.js +655 -0
  2. package/dist/plugins/console-record.min.js +1 -1
  3. package/dist/plugins/console-record.min.js.map +1 -1
  4. package/dist/plugins/console-replay.js +293 -0
  5. package/dist/plugins/console-replay.min.js +16 -0
  6. package/dist/plugins/console-replay.min.js.map +1 -0
  7. package/dist/plugins/sequential-id-record.js +33 -0
  8. package/dist/plugins/sequential-id-record.min.js +2 -0
  9. package/dist/plugins/sequential-id-record.min.js.map +1 -0
  10. package/dist/plugins/sequential-id-replay.js +37 -0
  11. package/dist/plugins/sequential-id-replay.min.js +2 -0
  12. package/dist/plugins/sequential-id-replay.min.js.map +1 -0
  13. package/dist/record/rrweb-record-pack.js +747 -0
  14. package/dist/record/rrweb-record-pack.min.js +16 -0
  15. package/dist/record/rrweb-record-pack.min.js.map +1 -0
  16. package/dist/record/rrweb-record.js +3318 -0
  17. package/dist/record/rrweb-record.min.js +16 -0
  18. package/dist/record/rrweb-record.min.js.map +1 -0
  19. package/dist/replay/rrweb-replay-unpack.js +4626 -0
  20. package/dist/replay/rrweb-replay-unpack.min.css +2 -0
  21. package/dist/replay/rrweb-replay-unpack.min.css.map +1 -0
  22. package/dist/replay/rrweb-replay-unpack.min.js +30 -0
  23. package/dist/replay/rrweb-replay-unpack.min.js.map +1 -0
  24. package/dist/replay/rrweb-replay.js +4216 -0
  25. package/dist/replay/rrweb-replay.min.css +2 -0
  26. package/dist/replay/rrweb-replay.min.css.map +1 -0
  27. package/dist/replay/rrweb-replay.min.js +30 -0
  28. package/dist/replay/rrweb-replay.min.js.map +1 -0
  29. package/dist/rrweb-all.js +8708 -0
  30. package/dist/rrweb-all.min.css +2 -0
  31. package/dist/rrweb-all.min.css.map +1 -0
  32. package/dist/rrweb-all.min.js +30 -0
  33. package/dist/rrweb-all.min.js.map +1 -0
  34. package/dist/rrweb.js +7294 -0
  35. package/dist/rrweb.min.css +2 -0
  36. package/dist/rrweb.min.css.map +1 -0
  37. package/dist/rrweb.min.js +2 -2
  38. package/dist/rrweb.min.js.map +1 -1
  39. package/es/rrweb/ext/@xstate/fsm/es/index.js +17 -0
  40. package/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js +49 -0
  41. package/es/rrweb/ext/fflate/esm/browser.js +777 -0
  42. package/es/rrweb/ext/mitt/dist/mitt.es.js +63 -0
  43. package/es/rrweb/packages/rrweb/ext/tslib/tslib.es6.js +78 -0
  44. package/es/rrweb/packages/rrweb/src/entries/all.js +13 -0
  45. package/es/rrweb/packages/rrweb/src/index.js +12 -0
  46. package/es/rrweb/packages/rrweb/src/packer/base.js +3 -0
  47. package/es/rrweb/packages/rrweb/src/packer/pack.js +10 -0
  48. package/es/rrweb/packages/rrweb/src/packer/unpack.js +29 -0
  49. package/es/rrweb/packages/rrweb/src/plugins/console/record/error-stack-parser.js +179 -0
  50. package/es/rrweb/packages/rrweb/src/plugins/console/record/index.js +134 -0
  51. package/es/rrweb/packages/rrweb/src/plugins/console/record/stringify.js +141 -0
  52. package/es/rrweb/packages/rrweb/src/plugins/console/replay/index.js +111 -0
  53. package/es/rrweb/packages/rrweb/src/plugins/sequential-id/record/index.js +23 -0
  54. package/es/rrweb/packages/rrweb/src/plugins/sequential-id/replay/index.js +28 -0
  55. package/es/rrweb/packages/rrweb/src/record/iframe-manager.js +32 -0
  56. package/es/rrweb/packages/rrweb/src/record/index.js +381 -0
  57. package/es/rrweb/packages/rrweb/src/record/mutation.js +532 -0
  58. package/es/rrweb/packages/rrweb/src/record/observer.js +665 -0
  59. package/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js +78 -0
  60. package/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js +93 -0
  61. package/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js +30 -0
  62. package/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js +116 -0
  63. package/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js +78 -0
  64. package/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js +45 -0
  65. package/es/rrweb/packages/rrweb/src/replay/canvas/2d.js +25 -0
  66. package/es/rrweb/packages/rrweb/src/replay/canvas/index.js +35 -0
  67. package/es/rrweb/packages/rrweb/src/replay/canvas/webgl.js +124 -0
  68. package/es/rrweb/packages/rrweb/src/replay/index.js +1864 -0
  69. package/es/rrweb/packages/rrweb/src/replay/machine.js +321 -0
  70. package/es/rrweb/packages/rrweb/src/replay/smoothscroll.js +221 -0
  71. package/es/rrweb/packages/rrweb/src/replay/styles/inject-style.js +8 -0
  72. package/es/rrweb/packages/rrweb/src/replay/timer.js +96 -0
  73. package/es/rrweb/packages/rrweb/src/replay/virtual-styles.js +121 -0
  74. package/es/rrweb/packages/rrweb/src/types.js +75 -0
  75. package/es/rrweb/packages/rrweb/src/utils.js +509 -0
  76. package/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js +1697 -0
  77. package/lib/plugins/console-record.js +650 -0
  78. package/lib/plugins/console-replay.js +288 -0
  79. package/lib/plugins/sequential-id-record.js +28 -0
  80. package/lib/plugins/sequential-id-replay.js +32 -0
  81. package/lib/record/rrweb-record-pack.js +742 -0
  82. package/lib/record/rrweb-record.js +3315 -0
  83. package/lib/replay/rrweb-replay-unpack.js +4621 -0
  84. package/lib/replay/rrweb-replay.js +4211 -0
  85. package/lib/rrweb-all.js +8703 -0
  86. package/lib/rrweb.js +7289 -0
  87. package/package.json +41 -43
  88. package/typings/entries/all.d.ts +6 -0
  89. package/{dist → typings}/entries/record-pack.d.ts +0 -0
  90. package/{dist → typings}/entries/replay-unpack.d.ts +0 -0
  91. package/{dist → typings}/index.d.ts +1 -2
  92. package/{dist → typings}/packer/base.d.ts +0 -0
  93. package/{dist → typings}/packer/index.d.ts +0 -0
  94. package/{dist → typings}/packer/pack.d.ts +0 -0
  95. package/{dist → typings}/packer/unpack.d.ts +0 -0
  96. package/{dist → typings}/plugins/console/record/error-stack-parser.d.ts +0 -0
  97. package/{dist → typings}/plugins/console/record/index.d.ts +3 -2
  98. package/{dist → typings}/plugins/console/record/stringify.d.ts +0 -0
  99. package/{dist → typings}/plugins/console/replay/index.d.ts +2 -2
  100. package/{dist → typings}/plugins/sequential-id/record/index.d.ts +0 -0
  101. package/{dist → typings}/plugins/sequential-id/replay/index.d.ts +0 -0
  102. package/{dist → typings}/record/iframe-manager.d.ts +1 -1
  103. package/{dist → typings}/record/index.d.ts +0 -0
  104. package/{dist → typings}/record/mutation.d.ts +5 -8
  105. package/typings/record/observer.d.ts +7 -0
  106. package/{dist → typings}/record/observers/canvas/2d.d.ts +0 -0
  107. package/{dist → typings}/record/observers/canvas/canvas-manager.d.ts +0 -0
  108. package/{dist → typings}/record/observers/canvas/canvas.d.ts +0 -0
  109. package/{dist → typings}/record/observers/canvas/serialize-args.d.ts +1 -1
  110. package/{dist → typings}/record/observers/canvas/webgl.d.ts +0 -0
  111. package/typings/record/observers/canvas/webgl2.d.ts +2 -0
  112. package/typings/record/shadow-dom-manager.d.ts +21 -0
  113. package/{dist → typings}/replay/canvas/2d.d.ts +0 -0
  114. package/{dist → typings}/replay/canvas/index.d.ts +0 -0
  115. package/{dist → typings}/replay/canvas/webgl.d.ts +0 -0
  116. package/{dist → typings}/replay/index.d.ts +1 -0
  117. package/{dist → typings}/replay/machine.d.ts +0 -0
  118. package/{dist → typings}/replay/smoothscroll.d.ts +0 -0
  119. package/{dist → typings}/replay/styles/inject-style.d.ts +0 -0
  120. package/{dist → typings}/replay/timer.d.ts +0 -0
  121. package/{dist → typings}/replay/virtual-styles.d.ts +1 -1
  122. package/{dist → typings}/rrdom/index.d.ts +0 -0
  123. package/{dist → typings}/rrdom/tree-node.d.ts +0 -0
  124. package/{dist → typings}/types.d.ts +7 -8
  125. package/{dist → typings}/utils.d.ts +3 -4
  126. package/CHANGELOG.md +0 -26
  127. package/README.md +0 -124
  128. package/README.zh_CN.md +0 -122
  129. package/dist/entries/all.d.ts +0 -4
  130. package/dist/index.css +0 -82
  131. package/dist/index.css.map +0 -1
  132. package/dist/index.js +0 -3
  133. package/dist/index.js.LICENSE.txt +0 -14
  134. package/dist/index.js.map +0 -1
  135. package/dist/plugins/entries/all.d.ts +0 -4
  136. package/dist/plugins/entries/record-pack.d.ts +0 -2
  137. package/dist/plugins/entries/replay-unpack.d.ts +0 -2
  138. package/dist/plugins/index.d.ts +0 -9
  139. package/dist/plugins/packer/base.d.ts +0 -7
  140. package/dist/plugins/packer/index.d.ts +0 -2
  141. package/dist/plugins/packer/pack.d.ts +0 -2
  142. package/dist/plugins/packer/unpack.d.ts +0 -2
  143. package/dist/plugins/plugins/console/record/error-stack-parser.d.ts +0 -37
  144. package/dist/plugins/plugins/console/record/index.d.ts +0 -41
  145. package/dist/plugins/plugins/console/record/stringify.d.ts +0 -2
  146. package/dist/plugins/plugins/console/replay/index.d.ts +0 -9
  147. package/dist/plugins/plugins/sequential-id/record/index.d.ts +0 -6
  148. package/dist/plugins/plugins/sequential-id/replay/index.d.ts +0 -7
  149. package/dist/plugins/record/iframe-manager.d.ts +0 -13
  150. package/dist/plugins/record/index.d.ts +0 -9
  151. package/dist/plugins/record/mutation.d.ts +0 -45
  152. package/dist/plugins/record/observer.d.ts +0 -11
  153. package/dist/plugins/record/observers/canvas/2d.d.ts +0 -2
  154. package/dist/plugins/record/observers/canvas/canvas-manager.d.ts +0 -32
  155. package/dist/plugins/record/observers/canvas/canvas.d.ts +0 -2
  156. package/dist/plugins/record/observers/canvas/serialize-args.d.ts +0 -6
  157. package/dist/plugins/record/observers/canvas/webgl.d.ts +0 -2
  158. package/dist/plugins/record/shadow-dom-manager.d.ts +0 -34
  159. package/dist/plugins/replay/canvas/2d.d.ts +0 -9
  160. package/dist/plugins/replay/canvas/index.d.ts +0 -9
  161. package/dist/plugins/replay/canvas/webgl.d.ts +0 -11
  162. package/dist/plugins/replay/index.d.ts +0 -82
  163. package/dist/plugins/replay/machine.d.ts +0 -85
  164. package/dist/plugins/replay/smoothscroll.d.ts +0 -1
  165. package/dist/plugins/replay/styles/inject-style.d.ts +0 -2
  166. package/dist/plugins/replay/timer.d.ts +0 -19
  167. package/dist/plugins/replay/virtual-styles.d.ts +0 -43
  168. package/dist/plugins/rrdom/index.d.ts +0 -1
  169. package/dist/plugins/rrdom/tree-node.d.ts +0 -20
  170. package/dist/plugins/snapshot/css.d.ts +0 -92
  171. package/dist/plugins/snapshot/index.d.ts +0 -5
  172. package/dist/plugins/snapshot/rebuild.d.ts +0 -19
  173. package/dist/plugins/snapshot/snapshot.d.ts +0 -49
  174. package/dist/plugins/snapshot/types.d.ts +0 -99
  175. package/dist/plugins/snapshot/utils.d.ts +0 -11
  176. package/dist/plugins/types.d.ts +0 -509
  177. package/dist/plugins/utils.d.ts +0 -71
  178. package/dist/record/observer.d.ts +0 -11
  179. package/dist/record/shadow-dom-manager.d.ts +0 -34
  180. package/dist/snapshot/css.d.ts +0 -92
  181. package/dist/snapshot/index.d.ts +0 -5
  182. package/dist/snapshot/rebuild.d.ts +0 -19
  183. package/dist/snapshot/snapshot.d.ts +0 -49
  184. package/dist/snapshot/types.d.ts +0 -99
  185. package/dist/snapshot/utils.d.ts +0 -11
@@ -0,0 +1,742 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ /*! *****************************************************************************
6
+ Copyright (c) Microsoft Corporation.
7
+
8
+ Permission to use, copy, modify, and/or distribute this software for any
9
+ purpose with or without fee is hereby granted.
10
+
11
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
12
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
13
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
14
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
16
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17
+ PERFORMANCE OF THIS SOFTWARE.
18
+ ***************************************************************************** */
19
+
20
+ var __assign = function() {
21
+ __assign = Object.assign || function __assign(t) {
22
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
23
+ s = arguments[i];
24
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
25
+ }
26
+ return t;
27
+ };
28
+ return __assign.apply(this, arguments);
29
+ };
30
+
31
+ var NodeType;
32
+ (function (NodeType) {
33
+ NodeType[NodeType["Document"] = 0] = "Document";
34
+ NodeType[NodeType["DocumentType"] = 1] = "DocumentType";
35
+ NodeType[NodeType["Element"] = 2] = "Element";
36
+ NodeType[NodeType["Text"] = 3] = "Text";
37
+ NodeType[NodeType["CDATA"] = 4] = "CDATA";
38
+ NodeType[NodeType["Comment"] = 5] = "Comment";
39
+ })(NodeType || (NodeType = {}));
40
+
41
+ var EventType;
42
+ (function (EventType) {
43
+ EventType[EventType["DomContentLoaded"] = 0] = "DomContentLoaded";
44
+ EventType[EventType["Load"] = 1] = "Load";
45
+ EventType[EventType["FullSnapshot"] = 2] = "FullSnapshot";
46
+ EventType[EventType["IncrementalSnapshot"] = 3] = "IncrementalSnapshot";
47
+ EventType[EventType["Meta"] = 4] = "Meta";
48
+ EventType[EventType["Custom"] = 5] = "Custom";
49
+ EventType[EventType["Plugin"] = 6] = "Plugin";
50
+ })(EventType || (EventType = {}));
51
+ var IncrementalSource;
52
+ (function (IncrementalSource) {
53
+ IncrementalSource[IncrementalSource["Mutation"] = 0] = "Mutation";
54
+ IncrementalSource[IncrementalSource["MouseMove"] = 1] = "MouseMove";
55
+ IncrementalSource[IncrementalSource["MouseInteraction"] = 2] = "MouseInteraction";
56
+ IncrementalSource[IncrementalSource["Scroll"] = 3] = "Scroll";
57
+ IncrementalSource[IncrementalSource["ViewportResize"] = 4] = "ViewportResize";
58
+ IncrementalSource[IncrementalSource["Input"] = 5] = "Input";
59
+ IncrementalSource[IncrementalSource["TouchMove"] = 6] = "TouchMove";
60
+ IncrementalSource[IncrementalSource["MediaInteraction"] = 7] = "MediaInteraction";
61
+ IncrementalSource[IncrementalSource["StyleSheetRule"] = 8] = "StyleSheetRule";
62
+ IncrementalSource[IncrementalSource["CanvasMutation"] = 9] = "CanvasMutation";
63
+ IncrementalSource[IncrementalSource["Font"] = 10] = "Font";
64
+ IncrementalSource[IncrementalSource["Log"] = 11] = "Log";
65
+ IncrementalSource[IncrementalSource["Drag"] = 12] = "Drag";
66
+ IncrementalSource[IncrementalSource["StyleDeclaration"] = 13] = "StyleDeclaration";
67
+ })(IncrementalSource || (IncrementalSource = {}));
68
+ var MouseInteractions;
69
+ (function (MouseInteractions) {
70
+ MouseInteractions[MouseInteractions["MouseUp"] = 0] = "MouseUp";
71
+ MouseInteractions[MouseInteractions["MouseDown"] = 1] = "MouseDown";
72
+ MouseInteractions[MouseInteractions["Click"] = 2] = "Click";
73
+ MouseInteractions[MouseInteractions["ContextMenu"] = 3] = "ContextMenu";
74
+ MouseInteractions[MouseInteractions["DblClick"] = 4] = "DblClick";
75
+ MouseInteractions[MouseInteractions["Focus"] = 5] = "Focus";
76
+ MouseInteractions[MouseInteractions["Blur"] = 6] = "Blur";
77
+ MouseInteractions[MouseInteractions["TouchStart"] = 7] = "TouchStart";
78
+ MouseInteractions[MouseInteractions["TouchMove_Departed"] = 8] = "TouchMove_Departed";
79
+ MouseInteractions[MouseInteractions["TouchEnd"] = 9] = "TouchEnd";
80
+ MouseInteractions[MouseInteractions["TouchCancel"] = 10] = "TouchCancel";
81
+ })(MouseInteractions || (MouseInteractions = {}));
82
+ var CanvasContext;
83
+ (function (CanvasContext) {
84
+ CanvasContext[CanvasContext["2D"] = 0] = "2D";
85
+ CanvasContext[CanvasContext["WebGL"] = 1] = "WebGL";
86
+ CanvasContext[CanvasContext["WebGL2"] = 2] = "WebGL2";
87
+ })(CanvasContext || (CanvasContext = {}));
88
+ var MediaInteractions;
89
+ (function (MediaInteractions) {
90
+ MediaInteractions[MediaInteractions["Play"] = 0] = "Play";
91
+ MediaInteractions[MediaInteractions["Pause"] = 1] = "Pause";
92
+ MediaInteractions[MediaInteractions["Seeked"] = 2] = "Seeked";
93
+ MediaInteractions[MediaInteractions["VolumeChange"] = 3] = "VolumeChange";
94
+ })(MediaInteractions || (MediaInteractions = {}));
95
+ var ReplayerEvents;
96
+ (function (ReplayerEvents) {
97
+ ReplayerEvents["Start"] = "start";
98
+ ReplayerEvents["Pause"] = "pause";
99
+ ReplayerEvents["Resume"] = "resume";
100
+ ReplayerEvents["Resize"] = "resize";
101
+ ReplayerEvents["Finish"] = "finish";
102
+ ReplayerEvents["FullsnapshotRebuilded"] = "fullsnapshot-rebuilded";
103
+ ReplayerEvents["LoadStylesheetStart"] = "load-stylesheet-start";
104
+ ReplayerEvents["LoadStylesheetEnd"] = "load-stylesheet-end";
105
+ ReplayerEvents["SkipStart"] = "skip-start";
106
+ ReplayerEvents["SkipEnd"] = "skip-end";
107
+ ReplayerEvents["MouseInteraction"] = "mouse-interaction";
108
+ ReplayerEvents["EventCast"] = "event-cast";
109
+ ReplayerEvents["CustomEvent"] = "custom-event";
110
+ ReplayerEvents["Flush"] = "flush";
111
+ ReplayerEvents["StateChange"] = "state-change";
112
+ ReplayerEvents["PlayBack"] = "play-back";
113
+ })(ReplayerEvents || (ReplayerEvents = {}));
114
+
115
+ var DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +
116
+ '\r\n' +
117
+ 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +
118
+ '\r\n' +
119
+ 'or you can use record.mirror to access the mirror instance during recording.';
120
+ var _mirror = {
121
+ map: {},
122
+ getId: function () {
123
+ console.error(DEPARTED_MIRROR_ACCESS_WARNING);
124
+ return -1;
125
+ },
126
+ getNode: function () {
127
+ console.error(DEPARTED_MIRROR_ACCESS_WARNING);
128
+ return null;
129
+ },
130
+ removeNodeFromMap: function () {
131
+ console.error(DEPARTED_MIRROR_ACCESS_WARNING);
132
+ },
133
+ has: function () {
134
+ console.error(DEPARTED_MIRROR_ACCESS_WARNING);
135
+ return false;
136
+ },
137
+ reset: function () {
138
+ console.error(DEPARTED_MIRROR_ACCESS_WARNING);
139
+ },
140
+ };
141
+ if (typeof window !== 'undefined' && window.Proxy && window.Reflect) {
142
+ _mirror = new Proxy(_mirror, {
143
+ get: function (target, prop, receiver) {
144
+ if (prop === 'map') {
145
+ console.error(DEPARTED_MIRROR_ACCESS_WARNING);
146
+ }
147
+ return Reflect.get(target, prop, receiver);
148
+ },
149
+ });
150
+ }
151
+
152
+ /*
153
+ * base64-arraybuffer 1.0.1 <https://github.com/niklasvh/base64-arraybuffer>
154
+ * Copyright (c) 2021 Niklas von Hertzen <https://hertzen.com>
155
+ * Released under MIT License
156
+ */
157
+ var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
158
+ // Use a lookup table to find the index.
159
+ var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);
160
+ for (var i$1 = 0; i$1 < chars.length; i$1++) {
161
+ lookup[chars.charCodeAt(i$1)] = i$1;
162
+ }
163
+
164
+ // DEFLATE is a complex format; to read this code, you should probably check the RFC first:
165
+
166
+ // aliases for shorter compressed code (most minifers don't do this)
167
+ var u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array;
168
+ // fixed length extra bits
169
+ var fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);
170
+ // fixed distance extra bits
171
+ // see fleb note
172
+ var fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);
173
+ // code length index map
174
+ var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
175
+ // get base, reverse index map from extra bits
176
+ var freb = function (eb, start) {
177
+ var b = new u16(31);
178
+ for (var i = 0; i < 31; ++i) {
179
+ b[i] = start += 1 << eb[i - 1];
180
+ }
181
+ // numbers here are at max 18 bits
182
+ var r = new u32(b[30]);
183
+ for (var i = 1; i < 30; ++i) {
184
+ for (var j = b[i]; j < b[i + 1]; ++j) {
185
+ r[j] = ((j - b[i]) << 5) | i;
186
+ }
187
+ }
188
+ return [b, r];
189
+ };
190
+ var _a = freb(fleb, 2), fl = _a[0], revfl = _a[1];
191
+ // we can ignore the fact that the other numbers are wrong; they never happen anyway
192
+ fl[28] = 258, revfl[258] = 28;
193
+ var _b = freb(fdeb, 0), revfd = _b[1];
194
+ // map of value to reverse (assuming 16 bits)
195
+ var rev = new u16(32768);
196
+ for (var i = 0; i < 32768; ++i) {
197
+ // reverse table algorithm from SO
198
+ var x = ((i & 0xAAAA) >>> 1) | ((i & 0x5555) << 1);
199
+ x = ((x & 0xCCCC) >>> 2) | ((x & 0x3333) << 2);
200
+ x = ((x & 0xF0F0) >>> 4) | ((x & 0x0F0F) << 4);
201
+ rev[i] = (((x & 0xFF00) >>> 8) | ((x & 0x00FF) << 8)) >>> 1;
202
+ }
203
+ // create huffman tree from u8 "map": index -> code length for code index
204
+ // mb (max bits) must be at most 15
205
+ // TODO: optimize/split up?
206
+ var hMap = (function (cd, mb, r) {
207
+ var s = cd.length;
208
+ // index
209
+ var i = 0;
210
+ // u16 "map": index -> # of codes with bit length = index
211
+ var l = new u16(mb);
212
+ // length of cd must be 288 (total # of codes)
213
+ for (; i < s; ++i)
214
+ ++l[cd[i] - 1];
215
+ // u16 "map": index -> minimum code for bit length = index
216
+ var le = new u16(mb);
217
+ for (i = 0; i < mb; ++i) {
218
+ le[i] = (le[i - 1] + l[i - 1]) << 1;
219
+ }
220
+ var co;
221
+ if (r) {
222
+ // u16 "map": index -> number of actual bits, symbol for code
223
+ co = new u16(1 << mb);
224
+ // bits to remove for reverser
225
+ var rvb = 15 - mb;
226
+ for (i = 0; i < s; ++i) {
227
+ // ignore 0 lengths
228
+ if (cd[i]) {
229
+ // num encoding both symbol and bits read
230
+ var sv = (i << 4) | cd[i];
231
+ // free bits
232
+ var r_1 = mb - cd[i];
233
+ // start value
234
+ var v = le[cd[i] - 1]++ << r_1;
235
+ // m is end value
236
+ for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {
237
+ // every 16 bit value starting with the code yields the same result
238
+ co[rev[v] >>> rvb] = sv;
239
+ }
240
+ }
241
+ }
242
+ }
243
+ else {
244
+ co = new u16(s);
245
+ for (i = 0; i < s; ++i)
246
+ co[i] = rev[le[cd[i] - 1]++] >>> (15 - cd[i]);
247
+ }
248
+ return co;
249
+ });
250
+ // fixed length tree
251
+ var flt = new u8(288);
252
+ for (var i = 0; i < 144; ++i)
253
+ flt[i] = 8;
254
+ for (var i = 144; i < 256; ++i)
255
+ flt[i] = 9;
256
+ for (var i = 256; i < 280; ++i)
257
+ flt[i] = 7;
258
+ for (var i = 280; i < 288; ++i)
259
+ flt[i] = 8;
260
+ // fixed distance tree
261
+ var fdt = new u8(32);
262
+ for (var i = 0; i < 32; ++i)
263
+ fdt[i] = 5;
264
+ // fixed length map
265
+ var flm = /*#__PURE__*/ hMap(flt, 9, 0);
266
+ // fixed distance map
267
+ var fdm = /*#__PURE__*/ hMap(fdt, 5, 0);
268
+ // get end of byte
269
+ var shft = function (p) { return ((p / 8) >> 0) + (p & 7 && 1); };
270
+ // typed array slice - allows garbage collector to free original reference,
271
+ // while being more compatible than .slice
272
+ var slc = function (v, s, e) {
273
+ if (s == null || s < 0)
274
+ s = 0;
275
+ if (e == null || e > v.length)
276
+ e = v.length;
277
+ // can't use .constructor in case user-supplied
278
+ var n = new (v instanceof u16 ? u16 : v instanceof u32 ? u32 : u8)(e - s);
279
+ n.set(v.subarray(s, e));
280
+ return n;
281
+ };
282
+ // starting at p, write the minimum number of bits that can hold v to d
283
+ var wbits = function (d, p, v) {
284
+ v <<= p & 7;
285
+ var o = (p / 8) >> 0;
286
+ d[o] |= v;
287
+ d[o + 1] |= v >>> 8;
288
+ };
289
+ // starting at p, write the minimum number of bits (>8) that can hold v to d
290
+ var wbits16 = function (d, p, v) {
291
+ v <<= p & 7;
292
+ var o = (p / 8) >> 0;
293
+ d[o] |= v;
294
+ d[o + 1] |= v >>> 8;
295
+ d[o + 2] |= v >>> 16;
296
+ };
297
+ // creates code lengths from a frequency table
298
+ var hTree = function (d, mb) {
299
+ // Need extra info to make a tree
300
+ var t = [];
301
+ for (var i = 0; i < d.length; ++i) {
302
+ if (d[i])
303
+ t.push({ s: i, f: d[i] });
304
+ }
305
+ var s = t.length;
306
+ var t2 = t.slice();
307
+ if (!s)
308
+ return [new u8(0), 0];
309
+ if (s == 1) {
310
+ var v = new u8(t[0].s + 1);
311
+ v[t[0].s] = 1;
312
+ return [v, 1];
313
+ }
314
+ t.sort(function (a, b) { return a.f - b.f; });
315
+ // after i2 reaches last ind, will be stopped
316
+ // freq must be greater than largest possible number of symbols
317
+ t.push({ s: -1, f: 25001 });
318
+ var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;
319
+ t[0] = { s: -1, f: l.f + r.f, l: l, r: r };
320
+ // efficient algorithm from UZIP.js
321
+ // i0 is lookbehind, i2 is lookahead - after processing two low-freq
322
+ // symbols that combined have high freq, will start processing i2 (high-freq,
323
+ // non-composite) symbols instead
324
+ // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/
325
+ while (i1 != s - 1) {
326
+ l = t[t[i0].f < t[i2].f ? i0++ : i2++];
327
+ r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];
328
+ t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };
329
+ }
330
+ var maxSym = t2[0].s;
331
+ for (var i = 1; i < s; ++i) {
332
+ if (t2[i].s > maxSym)
333
+ maxSym = t2[i].s;
334
+ }
335
+ // code lengths
336
+ var tr = new u16(maxSym + 1);
337
+ // max bits in tree
338
+ var mbt = ln(t[i1 - 1], tr, 0);
339
+ if (mbt > mb) {
340
+ // more algorithms from UZIP.js
341
+ // TODO: find out how this code works (debt)
342
+ // ind debt
343
+ var i = 0, dt = 0;
344
+ // left cost
345
+ var lft = mbt - mb, cst = 1 << lft;
346
+ t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });
347
+ for (; i < s; ++i) {
348
+ var i2_1 = t2[i].s;
349
+ if (tr[i2_1] > mb) {
350
+ dt += cst - (1 << (mbt - tr[i2_1]));
351
+ tr[i2_1] = mb;
352
+ }
353
+ else
354
+ break;
355
+ }
356
+ dt >>>= lft;
357
+ while (dt > 0) {
358
+ var i2_2 = t2[i].s;
359
+ if (tr[i2_2] < mb)
360
+ dt -= 1 << (mb - tr[i2_2]++ - 1);
361
+ else
362
+ ++i;
363
+ }
364
+ for (; i >= 0 && dt; --i) {
365
+ var i2_3 = t2[i].s;
366
+ if (tr[i2_3] == mb) {
367
+ --tr[i2_3];
368
+ ++dt;
369
+ }
370
+ }
371
+ mbt = mb;
372
+ }
373
+ return [new u8(tr), mbt];
374
+ };
375
+ // get the max length and assign length codes
376
+ var ln = function (n, l, d) {
377
+ return n.s == -1
378
+ ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))
379
+ : (l[n.s] = d);
380
+ };
381
+ // length codes generation
382
+ var lc = function (c) {
383
+ var s = c.length;
384
+ // Note that the semicolon was intentional
385
+ while (s && !c[--s])
386
+ ;
387
+ var cl = new u16(++s);
388
+ // ind num streak
389
+ var cli = 0, cln = c[0], cls = 1;
390
+ var w = function (v) { cl[cli++] = v; };
391
+ for (var i = 1; i <= s; ++i) {
392
+ if (c[i] == cln && i != s)
393
+ ++cls;
394
+ else {
395
+ if (!cln && cls > 2) {
396
+ for (; cls > 138; cls -= 138)
397
+ w(32754);
398
+ if (cls > 2) {
399
+ w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);
400
+ cls = 0;
401
+ }
402
+ }
403
+ else if (cls > 3) {
404
+ w(cln), --cls;
405
+ for (; cls > 6; cls -= 6)
406
+ w(8304);
407
+ if (cls > 2)
408
+ w(((cls - 3) << 5) | 8208), cls = 0;
409
+ }
410
+ while (cls--)
411
+ w(cln);
412
+ cls = 1;
413
+ cln = c[i];
414
+ }
415
+ }
416
+ return [cl.subarray(0, cli), s];
417
+ };
418
+ // calculate the length of output from tree, code lengths
419
+ var clen = function (cf, cl) {
420
+ var l = 0;
421
+ for (var i = 0; i < cl.length; ++i)
422
+ l += cf[i] * cl[i];
423
+ return l;
424
+ };
425
+ // writes a fixed block
426
+ // returns the new bit pos
427
+ var wfblk = function (out, pos, dat) {
428
+ // no need to write 00 as type: TypedArray defaults to 0
429
+ var s = dat.length;
430
+ var o = shft(pos + 2);
431
+ out[o] = s & 255;
432
+ out[o + 1] = s >>> 8;
433
+ out[o + 2] = out[o] ^ 255;
434
+ out[o + 3] = out[o + 1] ^ 255;
435
+ for (var i = 0; i < s; ++i)
436
+ out[o + i + 4] = dat[i];
437
+ return (o + 4 + s) * 8;
438
+ };
439
+ // writes a block
440
+ var wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {
441
+ wbits(out, p++, final);
442
+ ++lf[256];
443
+ var _a = hTree(lf, 15), dlt = _a[0], mlb = _a[1];
444
+ var _b = hTree(df, 15), ddt = _b[0], mdb = _b[1];
445
+ var _c = lc(dlt), lclt = _c[0], nlc = _c[1];
446
+ var _d = lc(ddt), lcdt = _d[0], ndc = _d[1];
447
+ var lcfreq = new u16(19);
448
+ for (var i = 0; i < lclt.length; ++i)
449
+ lcfreq[lclt[i] & 31]++;
450
+ for (var i = 0; i < lcdt.length; ++i)
451
+ lcfreq[lcdt[i] & 31]++;
452
+ var _e = hTree(lcfreq, 7), lct = _e[0], mlcb = _e[1];
453
+ var nlcc = 19;
454
+ for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)
455
+ ;
456
+ var flen = (bl + 5) << 3;
457
+ var ftlen = clen(lf, flt) + clen(df, fdt) + eb;
458
+ var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]);
459
+ if (flen <= ftlen && flen <= dtlen)
460
+ return wfblk(out, p, dat.subarray(bs, bs + bl));
461
+ var lm, ll, dm, dl;
462
+ wbits(out, p, 1 + (dtlen < ftlen)), p += 2;
463
+ if (dtlen < ftlen) {
464
+ lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;
465
+ var llm = hMap(lct, mlcb, 0);
466
+ wbits(out, p, nlc - 257);
467
+ wbits(out, p + 5, ndc - 1);
468
+ wbits(out, p + 10, nlcc - 4);
469
+ p += 14;
470
+ for (var i = 0; i < nlcc; ++i)
471
+ wbits(out, p + 3 * i, lct[clim[i]]);
472
+ p += 3 * nlcc;
473
+ var lcts = [lclt, lcdt];
474
+ for (var it = 0; it < 2; ++it) {
475
+ var clct = lcts[it];
476
+ for (var i = 0; i < clct.length; ++i) {
477
+ var len = clct[i] & 31;
478
+ wbits(out, p, llm[len]), p += lct[len];
479
+ if (len > 15)
480
+ wbits(out, p, (clct[i] >>> 5) & 127), p += clct[i] >>> 12;
481
+ }
482
+ }
483
+ }
484
+ else {
485
+ lm = flm, ll = flt, dm = fdm, dl = fdt;
486
+ }
487
+ for (var i = 0; i < li; ++i) {
488
+ if (syms[i] > 255) {
489
+ var len = (syms[i] >>> 18) & 31;
490
+ wbits16(out, p, lm[len + 257]), p += ll[len + 257];
491
+ if (len > 7)
492
+ wbits(out, p, (syms[i] >>> 23) & 31), p += fleb[len];
493
+ var dst = syms[i] & 31;
494
+ wbits16(out, p, dm[dst]), p += dl[dst];
495
+ if (dst > 3)
496
+ wbits16(out, p, (syms[i] >>> 5) & 8191), p += fdeb[dst];
497
+ }
498
+ else {
499
+ wbits16(out, p, lm[syms[i]]), p += ll[syms[i]];
500
+ }
501
+ }
502
+ wbits16(out, p, lm[256]);
503
+ return p + ll[256];
504
+ };
505
+ // deflate options (nice << 13) | chain
506
+ var deo = /*#__PURE__*/ new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);
507
+ // empty
508
+ var et = /*#__PURE__*/ new u8(0);
509
+ // compresses data into a raw DEFLATE buffer
510
+ var dflt = function (dat, lvl, plvl, pre, post, lst) {
511
+ var s = dat.length;
512
+ var o = new u8(pre + s + 5 * (1 + Math.floor(s / 7000)) + post);
513
+ // writing to this writes to the output buffer
514
+ var w = o.subarray(pre, o.length - post);
515
+ var pos = 0;
516
+ if (!lvl || s < 8) {
517
+ for (var i = 0; i <= s; i += 65535) {
518
+ // end
519
+ var e = i + 65535;
520
+ if (e < s) {
521
+ // write full block
522
+ pos = wfblk(w, pos, dat.subarray(i, e));
523
+ }
524
+ else {
525
+ // write final block
526
+ w[i] = lst;
527
+ pos = wfblk(w, pos, dat.subarray(i, s));
528
+ }
529
+ }
530
+ }
531
+ else {
532
+ var opt = deo[lvl - 1];
533
+ var n = opt >>> 13, c = opt & 8191;
534
+ var msk_1 = (1 << plvl) - 1;
535
+ // prev 2-byte val map curr 2-byte val map
536
+ var prev = new u16(32768), head = new u16(msk_1 + 1);
537
+ var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;
538
+ var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };
539
+ // 24576 is an arbitrary number of maximum symbols per block
540
+ // 424 buffer for last block
541
+ var syms = new u32(25000);
542
+ // length/literal freq distance freq
543
+ var lf = new u16(288), df = new u16(32);
544
+ // l/lcnt exbits index l/lind waitdx bitpos
545
+ var lc_1 = 0, eb = 0, i = 0, li = 0, wi = 0, bs = 0;
546
+ for (; i < s; ++i) {
547
+ // hash value
548
+ var hv = hsh(i);
549
+ // index mod 32768
550
+ var imod = i & 32767;
551
+ // previous index with this value
552
+ var pimod = head[hv];
553
+ prev[imod] = pimod;
554
+ head[hv] = imod;
555
+ // We always should modify head and prev, but only add symbols if
556
+ // this data is not yet processed ("wait" for wait index)
557
+ if (wi <= i) {
558
+ // bytes remaining
559
+ var rem = s - i;
560
+ if ((lc_1 > 7000 || li > 24576) && rem > 423) {
561
+ pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);
562
+ li = lc_1 = eb = 0, bs = i;
563
+ for (var j = 0; j < 286; ++j)
564
+ lf[j] = 0;
565
+ for (var j = 0; j < 30; ++j)
566
+ df[j] = 0;
567
+ }
568
+ // len dist chain
569
+ var l = 2, d = 0, ch_1 = c, dif = (imod - pimod) & 32767;
570
+ if (rem > 2 && hv == hsh(i - dif)) {
571
+ var maxn = Math.min(n, rem) - 1;
572
+ var maxd = Math.min(32767, i);
573
+ // max possible length
574
+ // not capped at dif because decompressors implement "rolling" index population
575
+ var ml = Math.min(258, rem);
576
+ while (dif <= maxd && --ch_1 && imod != pimod) {
577
+ if (dat[i + l] == dat[i + l - dif]) {
578
+ var nl = 0;
579
+ for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)
580
+ ;
581
+ if (nl > l) {
582
+ l = nl, d = dif;
583
+ // break out early when we reach "nice" (we are satisfied enough)
584
+ if (nl > maxn)
585
+ break;
586
+ // now, find the rarest 2-byte sequence within this
587
+ // length of literals and search for that instead.
588
+ // Much faster than just using the start
589
+ var mmd = Math.min(dif, nl - 2);
590
+ var md = 0;
591
+ for (var j = 0; j < mmd; ++j) {
592
+ var ti = (i - dif + j + 32768) & 32767;
593
+ var pti = prev[ti];
594
+ var cd = (ti - pti + 32768) & 32767;
595
+ if (cd > md)
596
+ md = cd, pimod = ti;
597
+ }
598
+ }
599
+ }
600
+ // check the previous match
601
+ imod = pimod, pimod = prev[imod];
602
+ dif += (imod - pimod + 32768) & 32767;
603
+ }
604
+ }
605
+ // d will be nonzero only when a match was found
606
+ if (d) {
607
+ // store both dist and len data in one Uint32
608
+ // Make sure this is recognized as a len/dist with 28th bit (2^28)
609
+ syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];
610
+ var lin = revfl[l] & 31, din = revfd[d] & 31;
611
+ eb += fleb[lin] + fdeb[din];
612
+ ++lf[257 + lin];
613
+ ++df[din];
614
+ wi = i + l;
615
+ ++lc_1;
616
+ }
617
+ else {
618
+ syms[li++] = dat[i];
619
+ ++lf[dat[i]];
620
+ }
621
+ }
622
+ }
623
+ pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);
624
+ // this is the easiest way to avoid needing to maintain state
625
+ if (!lst)
626
+ pos = wfblk(w, pos, et);
627
+ }
628
+ return slc(o, 0, pre + shft(pos) + post);
629
+ };
630
+ // Alder32
631
+ var adler = function () {
632
+ var a = 1, b = 0;
633
+ return {
634
+ p: function (d) {
635
+ // closures have awful performance
636
+ var n = a, m = b;
637
+ var l = d.length;
638
+ for (var i = 0; i != l;) {
639
+ var e = Math.min(i + 5552, l);
640
+ for (; i < e; ++i)
641
+ n += d[i], m += n;
642
+ n %= 65521, m %= 65521;
643
+ }
644
+ a = n, b = m;
645
+ },
646
+ d: function () { return ((a >>> 8) << 16 | (b & 255) << 8 | (b >>> 8)) + ((a & 255) << 23) * 2; }
647
+ };
648
+ };
649
+ // deflate with opts
650
+ var dopt = function (dat, opt, pre, post, st) {
651
+ return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, !st);
652
+ };
653
+ // write bytes
654
+ var wbytes = function (d, b, v) {
655
+ for (; v; ++b)
656
+ d[b] = v, v >>>= 8;
657
+ };
658
+ // zlib header
659
+ var zlh = function (c, o) {
660
+ var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;
661
+ c[0] = 120, c[1] = (fl << 6) | (fl ? (32 - 2 * fl) : 1);
662
+ };
663
+ /**
664
+ * Compress data with Zlib
665
+ * @param data The data to compress
666
+ * @param opts The compression options
667
+ * @returns The zlib-compressed version of the data
668
+ */
669
+ function zlibSync(data, opts) {
670
+ if (opts === void 0) { opts = {}; }
671
+ var a = adler();
672
+ a.p(data);
673
+ var d = dopt(data, opts, 2, 4);
674
+ return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;
675
+ }
676
+ /**
677
+ * Converts a string into a Uint8Array for use with compression/decompression methods
678
+ * @param str The string to encode
679
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
680
+ * not need to be true unless decoding a binary string.
681
+ * @returns The string encoded in UTF-8/Latin-1 binary
682
+ */
683
+ function strToU8(str, latin1) {
684
+ var l = str.length;
685
+ if (!latin1 && typeof TextEncoder != 'undefined')
686
+ return new TextEncoder().encode(str);
687
+ var ar = new u8(str.length + (str.length >>> 1));
688
+ var ai = 0;
689
+ var w = function (v) { ar[ai++] = v; };
690
+ for (var i = 0; i < l; ++i) {
691
+ if (ai + 5 > ar.length) {
692
+ var n = new u8(ai + 8 + ((l - i) << 1));
693
+ n.set(ar);
694
+ ar = n;
695
+ }
696
+ var c = str.charCodeAt(i);
697
+ if (c < 128 || latin1)
698
+ w(c);
699
+ else if (c < 2048)
700
+ w(192 | (c >>> 6)), w(128 | (c & 63));
701
+ else if (c > 55295 && c < 57344)
702
+ c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),
703
+ w(240 | (c >>> 18)), w(128 | ((c >>> 12) & 63)), w(128 | ((c >>> 6) & 63)), w(128 | (c & 63));
704
+ else
705
+ w(224 | (c >>> 12)), w(128 | ((c >>> 6) & 63)), w(128 | (c & 63));
706
+ }
707
+ return slc(ar, 0, ai);
708
+ }
709
+ /**
710
+ * Converts a Uint8Array to a string
711
+ * @param dat The data to decode to string
712
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
713
+ * not need to be true unless encoding to binary string.
714
+ * @returns The original UTF-8/Latin-1 string
715
+ */
716
+ function strFromU8(dat, latin1) {
717
+ var r = '';
718
+ if (!latin1 && typeof TextDecoder != 'undefined')
719
+ return new TextDecoder().decode(dat);
720
+ for (var i = 0; i < dat.length;) {
721
+ var c = dat[i++];
722
+ if (c < 128 || latin1)
723
+ r += String.fromCharCode(c);
724
+ else if (c < 224)
725
+ r += String.fromCharCode((c & 31) << 6 | (dat[i++] & 63));
726
+ else if (c < 240)
727
+ r += String.fromCharCode((c & 15) << 12 | (dat[i++] & 63) << 6 | (dat[i++] & 63));
728
+ else
729
+ c = ((c & 15) << 18 | (dat[i++] & 63) << 12 | (dat[i++] & 63) << 6 | (dat[i++] & 63)) - 65536,
730
+ r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));
731
+ }
732
+ return r;
733
+ }
734
+
735
+ var MARK = 'v1';
736
+
737
+ var pack = function (event) {
738
+ var _e = __assign(__assign({}, event), { v: MARK });
739
+ return strFromU8(zlibSync(strToU8(JSON.stringify(_e))), true);
740
+ };
741
+
742
+ exports.pack = pack;