@swf2es/format 0.0.0-stage → 0.1.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 (98) hide show
  1. package/LICENSE +202 -0
  2. package/LICENSE.third-party +35 -0
  3. package/README.md +22 -2
  4. package/dist/abc-names.d.ts +3 -0
  5. package/dist/abc-names.d.ts.map +1 -0
  6. package/dist/abc-names.js +127 -0
  7. package/dist/abc-names.js.map +1 -0
  8. package/dist/actions.d.ts +106 -0
  9. package/dist/actions.d.ts.map +1 -0
  10. package/dist/actions.js +223 -0
  11. package/dist/actions.js.map +1 -0
  12. package/dist/air-descriptor.d.ts +11 -0
  13. package/dist/air-descriptor.d.ts.map +1 -0
  14. package/dist/air-descriptor.js +64 -0
  15. package/dist/air-descriptor.js.map +1 -0
  16. package/dist/api-versions.d.ts +12 -0
  17. package/dist/api-versions.d.ts.map +1 -0
  18. package/dist/api-versions.js +23 -0
  19. package/dist/api-versions.js.map +1 -0
  20. package/dist/bitmap.d.ts +34 -0
  21. package/dist/bitmap.d.ts.map +1 -0
  22. package/dist/bitmap.js +200 -0
  23. package/dist/bitmap.js.map +1 -0
  24. package/dist/button.d.ts +39 -0
  25. package/dist/button.d.ts.map +1 -0
  26. package/dist/button.js +61 -0
  27. package/dist/button.js.map +1 -0
  28. package/dist/compression.d.ts +47 -0
  29. package/dist/compression.d.ts.map +1 -0
  30. package/dist/compression.js +201 -0
  31. package/dist/compression.js.map +1 -0
  32. package/dist/display.d.ts +106 -0
  33. package/dist/display.d.ts.map +1 -0
  34. package/dist/display.js +306 -0
  35. package/dist/display.js.map +1 -0
  36. package/dist/filters.d.ts +66 -0
  37. package/dist/filters.d.ts.map +1 -0
  38. package/dist/filters.js +137 -0
  39. package/dist/filters.js.map +1 -0
  40. package/dist/font.d.ts +60 -0
  41. package/dist/font.d.ts.map +1 -0
  42. package/dist/font.js +169 -0
  43. package/dist/font.js.map +1 -0
  44. package/dist/index.d.ts +27 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.js +27 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/lzma.d.ts +33 -0
  49. package/dist/lzma.d.ts.map +1 -0
  50. package/dist/lzma.js +279 -0
  51. package/dist/lzma.js.map +1 -0
  52. package/dist/pbj.d.ts +178 -0
  53. package/dist/pbj.d.ts.map +1 -0
  54. package/dist/pbj.js +485 -0
  55. package/dist/pbj.js.map +1 -0
  56. package/dist/shape.d.ts +152 -0
  57. package/dist/shape.d.ts.map +1 -0
  58. package/dist/shape.js +412 -0
  59. package/dist/shape.js.map +1 -0
  60. package/dist/sound.d.ts +71 -0
  61. package/dist/sound.d.ts.map +1 -0
  62. package/dist/sound.js +92 -0
  63. package/dist/sound.js.map +1 -0
  64. package/dist/swf.d.ts +77 -0
  65. package/dist/swf.d.ts.map +1 -0
  66. package/dist/swf.js +164 -0
  67. package/dist/swf.js.map +1 -0
  68. package/dist/tags.d.ts +57 -0
  69. package/dist/tags.d.ts.map +1 -0
  70. package/dist/tags.js +59 -0
  71. package/dist/tags.js.map +1 -0
  72. package/dist/text.d.ts +75 -0
  73. package/dist/text.d.ts.map +1 -0
  74. package/dist/text.js +136 -0
  75. package/dist/text.js.map +1 -0
  76. package/dist/zip.d.ts +17 -0
  77. package/dist/zip.d.ts.map +1 -0
  78. package/dist/zip.js +92 -0
  79. package/dist/zip.js.map +1 -0
  80. package/package.json +33 -3
  81. package/src/abc-names.ts +138 -0
  82. package/src/actions.ts +319 -0
  83. package/src/air-descriptor.ts +84 -0
  84. package/src/api-versions.ts +27 -0
  85. package/src/bitmap.ts +259 -0
  86. package/src/button.ts +99 -0
  87. package/src/compression.ts +243 -0
  88. package/src/display.ts +419 -0
  89. package/src/filters.ts +206 -0
  90. package/src/font.ts +238 -0
  91. package/src/index.ts +151 -0
  92. package/src/pbj.ts +651 -0
  93. package/src/shape.ts +618 -0
  94. package/src/sound.ts +173 -0
  95. package/src/swf.ts +234 -0
  96. package/src/tags.ts +58 -0
  97. package/src/text.ts +213 -0
  98. package/src/zip.ts +135 -0
package/dist/font.js ADDED
@@ -0,0 +1,169 @@
1
+ // DefineFont through DefineFont3: a font's glyphs, the outlines a field that
2
+ // embeds it draws, and its layout, the advances, kerning, ascent and
3
+ // descent a field's text is laid out by.
4
+ import { readString, utf8 } from "./display.js";
5
+ import { readRecords } from "./shape.js";
6
+ import { SwfReader } from "./swf.js";
7
+ import { DefineFont, DefineFont3, DefineFontInfo2 } from "./tags.js";
8
+ import { readFontName } from "./text.js";
9
+ /** DefineFont4 (91): a name, style, and optional OpenType CFF bytes. */
10
+ export function readFont4(bytes, tag) {
11
+ const r = new SwfReader(bytes, tag.offset, tag.offset + tag.length);
12
+ const id = r.u16();
13
+ const flags = r.u8();
14
+ const name = readString(r);
15
+ return {
16
+ id,
17
+ name,
18
+ bold: (flags & 1) !== 0,
19
+ italic: (flags & 2) !== 0,
20
+ data: flags & 4 ? bytes.subarray(r.pos, r.end) : null,
21
+ };
22
+ }
23
+ /** DefineFont (10), whose first offset gives the glyph count; its name and codes come separately. */
24
+ function readFont1(bytes, tag) {
25
+ const r = new SwfReader(bytes, tag.offset, tag.offset + tag.length);
26
+ const font = {
27
+ id: r.u16(),
28
+ name: "",
29
+ bold: false,
30
+ italic: false,
31
+ em: 1024,
32
+ glyphs: [],
33
+ layout: false,
34
+ ascent: 0,
35
+ descent: 0,
36
+ leading: 0,
37
+ kerning: new Map(),
38
+ };
39
+ const table = r.pos;
40
+ const first = r.u16();
41
+ if (r.overrun || first < 2 || first % 2 !== 0 || table + first > r.end) {
42
+ return font;
43
+ }
44
+ const offsets = [first];
45
+ for (let i = 1; i < first / 2; i++) {
46
+ const offset = r.u16();
47
+ if (offset < offsets[i - 1] || table + offset > r.end) {
48
+ return font;
49
+ }
50
+ offsets.push(offset);
51
+ }
52
+ offsets.push(r.end - table);
53
+ for (let i = 0; i < offsets.length - 1; i++) {
54
+ const start = offsets[i];
55
+ const end = offsets[i + 1];
56
+ const records = readRecords(new SwfReader(bytes, table + start, table + end), 1).records;
57
+ font.glyphs.push({ code: -1, records, advance: 0, bounds: null });
58
+ }
59
+ return font;
60
+ }
61
+ /** DefineFontInfo (13) or DefineFontInfo2 (62); the latter has a language byte before its codes. */
62
+ export function readFontInfo(bytes, tag) {
63
+ const r = new SwfReader(bytes, tag.offset, tag.offset + tag.length);
64
+ const id = r.u16();
65
+ const length = r.u8();
66
+ const name = utf8(bytes.subarray(r.pos, Math.min(r.pos + length, r.end))).replace(/\0+$/, "");
67
+ r.pos += length;
68
+ const flags = r.u8();
69
+ if (tag.code === DefineFontInfo2) {
70
+ r.u8();
71
+ }
72
+ const codes = [];
73
+ const size = flags & 1 ? 2 : 1;
74
+ while (r.pos + size <= r.end) {
75
+ codes.push(size === 2 ? r.u16() : r.u8());
76
+ }
77
+ return { id, name, bold: (flags & 2) !== 0, italic: (flags & 4) !== 0, codes };
78
+ }
79
+ /** DefineFont (10), DefineFont2 (48) or DefineFont3 (75), as far as the tag goes. */
80
+ export function readFont(bytes, tag) {
81
+ if (tag.code === DefineFont) {
82
+ return readFont1(bytes, tag);
83
+ }
84
+ const named = readFontName(bytes, tag);
85
+ const r = new SwfReader(bytes, tag.offset, tag.offset + tag.length);
86
+ r.u16();
87
+ const flags = r.u8();
88
+ r.u8();
89
+ r.pos += 1 + r.u8();
90
+ const hasLayout = (flags & 0x80) !== 0;
91
+ const wideOffsets = (flags & 0x08) !== 0;
92
+ const wideCodes = (flags & 0x04) !== 0;
93
+ const count = r.u16();
94
+ const table = r.pos;
95
+ const offset = () => (wideOffsets ? r.u32() : r.u16());
96
+ const offsets = [];
97
+ for (let i = 0; i < count; i++) {
98
+ offsets.push(offset());
99
+ }
100
+ const codeTable = count > 0 ? offset() : 0;
101
+ const glyphs = [];
102
+ for (let i = 0; i < count; i++) {
103
+ const shape = new SwfReader(bytes, table + offsets[i], tag.offset + tag.length);
104
+ glyphs.push({ code: 0, records: readRecords(shape, 1).records, advance: 0, bounds: null });
105
+ }
106
+ const font = {
107
+ ...named,
108
+ em: tag.code === DefineFont3 ? 20480 : 1024,
109
+ glyphs,
110
+ layout: false,
111
+ ascent: 0,
112
+ descent: 0,
113
+ leading: 0,
114
+ kerning: new Map(),
115
+ };
116
+ if (count > 0) {
117
+ r.pos = table + codeTable;
118
+ }
119
+ const code = () => (wideCodes ? r.u16() : r.u8());
120
+ for (const glyph of glyphs) {
121
+ glyph.code = code();
122
+ }
123
+ if (!hasLayout || r.overrun) {
124
+ return font;
125
+ }
126
+ font.ascent = r.u16();
127
+ font.descent = r.u16();
128
+ font.leading = r.s16();
129
+ for (const glyph of glyphs) {
130
+ glyph.advance = r.s16();
131
+ }
132
+ for (const glyph of glyphs) {
133
+ glyph.bounds = r.rect();
134
+ }
135
+ const pairs = r.u16();
136
+ for (let i = 0; i < pairs && !r.overrun; i++) {
137
+ const first = code();
138
+ const second = code();
139
+ font.kerning.set((first << 16) | second, r.s16());
140
+ }
141
+ font.layout = !r.overrun;
142
+ return font;
143
+ }
144
+ /** The glyph for a character, by a binary search of the code table, as Flash finds it: null for one the font lacks. */
145
+ export function glyphOf(font, code) {
146
+ let lo = 0;
147
+ let hi = font.glyphs.length - 1;
148
+ while (lo <= hi) {
149
+ const mid = (lo + hi) >> 1;
150
+ const c = font.glyphs[mid].code;
151
+ if (c === code) {
152
+ return font.glyphs[mid];
153
+ }
154
+ if (c < code) {
155
+ lo = mid + 1;
156
+ }
157
+ else {
158
+ hi = mid - 1;
159
+ }
160
+ }
161
+ return null;
162
+ }
163
+ /** DefineFontAlignZones (73): the font it is for and its CSM hint; the zones themselves are not read. */
164
+ export function readFontAlignZones(bytes, tag) {
165
+ const r = new SwfReader(bytes, tag.offset, tag.offset + tag.length);
166
+ const id = r.u16();
167
+ return { id, csmHint: r.u8() >> 6 };
168
+ }
169
+ //# sourceMappingURL=font.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"font.js","sourceRoot":"","sources":["../src/font.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Parsers for the SWF container and its tags: shapes, fonts, text, bitmaps,
3
+ * sounds, buttons and filters, a DoABC's bytes, which codegen parses, and
4
+ * the AVM1 action blocks, which it compiles; and Pixel Bender's bytecode,
5
+ * which a script hands flash.display.Shader. Also an AIR application's
6
+ * descriptor, and the ZIP archives AIR packages are.
7
+ * The compiler and the player both use this package, so it must stay free of
8
+ * DOM and node APIs.
9
+ */
10
+ export { abcReferences } from "./abc-names.js";
11
+ export { type ActionBlock, type ActionList, type ActionOwner, ButtonCondition, ClipEvent, readActions, } from "./actions.js";
12
+ export { type AirDescriptor, readAirDescriptor } from "./air-descriptor.js";
13
+ export { AIR_API_VERSION, API_VERSION, checkApiVersion } from "./api-versions.js";
14
+ export { type Bitmap, isBitmapTag, readBitmap } from "./bitmap.js";
15
+ export { BUTTON_DOWN, BUTTON_HIT_TEST, BUTTON_OVER, BUTTON_UP, type Button, type ButtonRecord, readButton, } from "./button.js";
16
+ export { CompressedDataError, CompressedDataTooLargeError, decompressSwf, decompressSwfPrefix, deflateCompress, LZMA_HEADER, lzmaByteArrayCompress, lzmaByteArrayUncompress, type ZlibLevel, zlibCompress, zlibUncompress, } from "./compression.js";
17
+ export { type Place, readBinaryData, readDoAbc, readExports, readFrameLabel, readPlace, readRemove, readScalingGrid, readSceneData, readSprite, readString, readSymbolClass, type SceneData, } from "./display.js";
18
+ export { type FilterColor, readFilters, type SwfFilter } from "./filters.js";
19
+ export { type Font, type Font4, type FontInfo, type Glyph, glyphOf, readFont, readFont4, readFontAlignZones, readFontInfo, } from "./font.js";
20
+ export { PBJ_RULES, PBJ_STRING, PBJ_TYPE_SIZES, PBJ_TYPES, type PbjCompute, PbjError, type PbjIf, type PbjInput, type PbjKernel, type PbjLoad, type PbjMetadata, PbjOp, type PbjOperation, type PbjParameter, type PbjRegister, type PbjRule, type PbjSample, type PbjSelect, pbjFloatType, readPbj, } from "./pbj.js";
21
+ export { type ColorTransform, type Fill, type Gradient, type GradientStop, IDENTITY, type Line, type Matrix, type MorphShape, readColorTransform, readMatrix, readMorphShape, readShape, type Shape, type ShapeRecord, } from "./shape.js";
22
+ export { type ButtonSounds, readButtonSound, readSound, readSoundInfo, readSoundStreamBlock, readSoundStreamHead, readStartSound, type Sound, type SoundEnvelopePoint, type SoundInfo, type SoundStreamBlock, type SoundStreamHead, type StartSound, } from "./sound.js";
23
+ export { backgroundColor, fileAttributes, isAs3, type Rect, readSwf, readSwfHeader, readTags, type Swf, type SwfCompression, type SwfHeader, SwfReader, type Tag, } from "./swf.js";
24
+ export * as tags from "./tags.js";
25
+ export { type CsmTextSettings, type EditText, type FontName, readCsmTextSettings, readEditText, readFontName, readStaticText, type StaticText, type TextRecord, } from "./text.js";
26
+ export { readZip, type ZipEntry, ZipError } from "./zip.js";
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Parsers for the SWF container and its tags: shapes, fonts, text, bitmaps,
3
+ * sounds, buttons and filters, a DoABC's bytes, which codegen parses, and
4
+ * the AVM1 action blocks, which it compiles; and Pixel Bender's bytecode,
5
+ * which a script hands flash.display.Shader. Also an AIR application's
6
+ * descriptor, and the ZIP archives AIR packages are.
7
+ * The compiler and the player both use this package, so it must stay free of
8
+ * DOM and node APIs.
9
+ */
10
+ export { abcReferences } from "./abc-names.js";
11
+ export { ButtonCondition, ClipEvent, readActions, } from "./actions.js";
12
+ export { readAirDescriptor } from "./air-descriptor.js";
13
+ export { AIR_API_VERSION, API_VERSION, checkApiVersion } from "./api-versions.js";
14
+ export { isBitmapTag, readBitmap } from "./bitmap.js";
15
+ export { BUTTON_DOWN, BUTTON_HIT_TEST, BUTTON_OVER, BUTTON_UP, readButton, } from "./button.js";
16
+ export { CompressedDataError, CompressedDataTooLargeError, decompressSwf, decompressSwfPrefix, deflateCompress, LZMA_HEADER, lzmaByteArrayCompress, lzmaByteArrayUncompress, zlibCompress, zlibUncompress, } from "./compression.js";
17
+ export { readBinaryData, readDoAbc, readExports, readFrameLabel, readPlace, readRemove, readScalingGrid, readSceneData, readSprite, readString, readSymbolClass, } from "./display.js";
18
+ export { readFilters } from "./filters.js";
19
+ export { glyphOf, readFont, readFont4, readFontAlignZones, readFontInfo, } from "./font.js";
20
+ export { PBJ_RULES, PBJ_STRING, PBJ_TYPE_SIZES, PBJ_TYPES, PbjError, PbjOp, pbjFloatType, readPbj, } from "./pbj.js";
21
+ export { IDENTITY, readColorTransform, readMatrix, readMorphShape, readShape, } from "./shape.js";
22
+ export { readButtonSound, readSound, readSoundInfo, readSoundStreamBlock, readSoundStreamHead, readStartSound, } from "./sound.js";
23
+ export { backgroundColor, fileAttributes, isAs3, readSwf, readSwfHeader, readTags, SwfReader, } from "./swf.js";
24
+ export * as tags from "./tags.js";
25
+ export { readCsmTextSettings, readEditText, readFontName, readStaticText, } from "./text.js";
26
+ export { readZip, ZipError } from "./zip.js";
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAIL,eAAe,EACf,SAAS,EACT,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAsB,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAe,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EACL,WAAW,EACX,eAAe,EACf,WAAW,EACX,SAAS,EAGT,UAAU,GACX,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,uBAAuB,EAEvB,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,cAAc,EACd,SAAS,EACT,WAAW,EACX,cAAc,EACd,SAAS,EACT,UAAU,EACV,eAAe,EACf,aAAa,EACb,UAAU,EACV,UAAU,EACV,eAAe,GAEhB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAoB,WAAW,EAAkB,MAAM,cAAc,CAAC;AAC7E,OAAO,EAKL,OAAO,EACP,QAAQ,EACR,SAAS,EACT,kBAAkB,EAClB,YAAY,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,SAAS,EACT,UAAU,EACV,cAAc,EACd,SAAS,EAET,QAAQ,EAMR,KAAK,EAOL,YAAY,EACZ,OAAO,GACR,MAAM,UAAU,CAAC;AAClB,OAAO,EAKL,QAAQ,EAIR,kBAAkB,EAClB,UAAU,EACV,cAAc,EACd,SAAS,GAGV,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,eAAe,EACf,SAAS,EACT,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,GAOf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,eAAe,EACf,cAAc,EACd,KAAK,EAEL,OAAO,EACP,aAAa,EACb,QAAQ,EAIR,SAAS,GAEV,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAIL,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,cAAc,GAGf,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,OAAO,EAAiB,QAAQ,EAAE,MAAM,UAAU,CAAC"}
package/dist/lzma.d.ts ADDED
@@ -0,0 +1,33 @@
1
+ /**
2
+ * An LZMA decoder, as the LZMA SDK's specification decoder (LzmaSpec.cpp,
3
+ * Igor Pavlov, public domain) describes one, for the SWF bodies and
4
+ * ByteArrays swf2es reads. lzma1, which still compresses, decoded them
5
+ * before, but read the properties' first byte as signed, so 128 and more
6
+ * asked it for up to 2^30 literal coders, and went on decoding after its
7
+ * input had ended, for as long as the header's length asked: 30 bytes of
8
+ * zeros naming 4 GB decoded 4 GB. This one refuses both: properties past
9
+ * 224, which no encoder writes, and any read past the input's end, which a
10
+ * whole stream never makes.
11
+ */
12
+ /** A stream this decoder cannot read: corrupt, truncated, or not LZMA. */
13
+ export declare class LzmaError extends Error {
14
+ }
15
+ /**
16
+ * The literal context bits, the literal position bits and the position
17
+ * bits of a properties byte.
18
+ */
19
+ export declare function lzmaProperties(byte: number): {
20
+ lc: number;
21
+ lp: number;
22
+ pb: number;
23
+ };
24
+ /**
25
+ * Decode an LZMA stream, `input` from `start`, of the properties in its
26
+ * 5 bytes at `properties` of `input`, to `length` bytes, or to its end
27
+ * marker if it has one first: the bytes it decoded, fewer than `length`
28
+ * after a marker, after `offset` bytes left for the caller, as a SWF's
29
+ * header, so that its file needs no copy. The output grows as it is
30
+ * written, never past `length`.
31
+ */
32
+ export declare function lzmaDecode(input: Uint8Array, properties: number, start: number, length: number, offset?: number): Uint8Array;
33
+ //# sourceMappingURL=lzma.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lzma.d.ts","sourceRoot":"","sources":["../src/lzma.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,0EAA0E;AAC1E,qBAAa,SAAU,SAAQ,KAAK;CAAG;AAuBvC;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAMnF;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,UAAU,EACjB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,SAAI,GACT,UAAU,CAiQZ"}
package/dist/lzma.js ADDED
@@ -0,0 +1,279 @@
1
+ /**
2
+ * An LZMA decoder, as the LZMA SDK's specification decoder (LzmaSpec.cpp,
3
+ * Igor Pavlov, public domain) describes one, for the SWF bodies and
4
+ * ByteArrays swf2es reads. lzma1, which still compresses, decoded them
5
+ * before, but read the properties' first byte as signed, so 128 and more
6
+ * asked it for up to 2^30 literal coders, and went on decoding after its
7
+ * input had ended, for as long as the header's length asked: 30 bytes of
8
+ * zeros naming 4 GB decoded 4 GB. This one refuses both: properties past
9
+ * 224, which no encoder writes, and any read past the input's end, which a
10
+ * whole stream never makes.
11
+ */
12
+ /** A stream this decoder cannot read: corrupt, truncated, or not LZMA. */
13
+ export class LzmaError extends Error {
14
+ }
15
+ const TOP = 1 << 24;
16
+ const PROB_INIT = 1024;
17
+ const STATES = 12;
18
+ const POS_BITS_MAX = 4;
19
+ const LEN_TO_POS_STATES = 4;
20
+ const END_POS_MODEL_INDEX = 14;
21
+ const FULL_DISTANCES = 1 << (END_POS_MODEL_INDEX >> 1);
22
+ const ALIGN_BITS = 4;
23
+ const MATCH_MIN_LEN = 2;
24
+ // A length decoder's probabilities, in one array: choice, choice2, the
25
+ // low and mid trees (3 bits) for each of 16 position states, the high tree (8 bits).
26
+ const LEN_CHOICE = 0;
27
+ const LEN_CHOICE2 = 1;
28
+ const LEN_LOW = 2;
29
+ const LEN_MID = LEN_LOW + (16 << 3);
30
+ const LEN_HIGH = LEN_MID + (16 << 3);
31
+ const LEN_SIZE = LEN_HIGH + 256;
32
+ const probabilities = (n) => new Uint16Array(n).fill(PROB_INIT);
33
+ /**
34
+ * The literal context bits, the literal position bits and the position
35
+ * bits of a properties byte.
36
+ */
37
+ export function lzmaProperties(byte) {
38
+ if (byte >= 9 * 5 * 5) {
39
+ throw new LzmaError(`properties byte ${byte}`);
40
+ }
41
+ return { lc: byte % 9, lp: Math.floor(byte / 9) % 5, pb: Math.floor(byte / 45) };
42
+ }
43
+ /**
44
+ * Decode an LZMA stream, `input` from `start`, of the properties in its
45
+ * 5 bytes at `properties` of `input`, to `length` bytes, or to its end
46
+ * marker if it has one first: the bytes it decoded, fewer than `length`
47
+ * after a marker, after `offset` bytes left for the caller, as a SWF's
48
+ * header, so that its file needs no copy. The output grows as it is
49
+ * written, never past `length`.
50
+ */
51
+ export function lzmaDecode(input, properties, start, length, offset = 0) {
52
+ if (length < 0) {
53
+ throw new LzmaError(`length ${length}`);
54
+ }
55
+ const { lc, lp, pb } = lzmaProperties(input[properties]);
56
+ const dictionary = (input[properties + 1] |
57
+ (input[properties + 2] << 8) |
58
+ (input[properties + 3] << 16) |
59
+ (input[properties + 4] << 24)) >>>
60
+ 0;
61
+ // As the SDK's decoder, a dictionary of at least 4 KB, whatever the header says.
62
+ const dictSize = Math.max(dictionary, 4096);
63
+ let pos = start;
64
+ const end = input.length;
65
+ const readByte = () => {
66
+ if (pos >= end) {
67
+ throw new LzmaError("truncated");
68
+ }
69
+ return input[pos++];
70
+ };
71
+ // The range decoder: the first byte is 0, then the code's 4.
72
+ if (readByte() !== 0) {
73
+ throw new LzmaError("corrupt");
74
+ }
75
+ let range = 0xffffffff;
76
+ let code = 0;
77
+ for (let i = 0; i < 4; i++) {
78
+ code = ((code << 8) | readByte()) >>> 0;
79
+ }
80
+ if (code === range) {
81
+ throw new LzmaError("corrupt");
82
+ }
83
+ const bit = (probs, i) => {
84
+ const v = probs[i];
85
+ const bound = (range >>> 11) * v;
86
+ let symbol;
87
+ if (code < bound) {
88
+ probs[i] = v + ((2048 - v) >>> 5);
89
+ range = bound;
90
+ symbol = 0;
91
+ }
92
+ else {
93
+ probs[i] = v - (v >>> 5);
94
+ code -= bound;
95
+ range -= bound;
96
+ symbol = 1;
97
+ }
98
+ if (range < TOP) {
99
+ range = (range * 256) >>> 0;
100
+ code = ((code * 256) | readByte()) >>> 0;
101
+ }
102
+ return symbol;
103
+ };
104
+ const directBits = (count) => {
105
+ let result = 0;
106
+ for (let i = 0; i < count; i++) {
107
+ range >>>= 1;
108
+ let b = 0;
109
+ if (code >= range) {
110
+ code -= range;
111
+ b = 1;
112
+ }
113
+ result = result * 2 + b;
114
+ if (range < TOP) {
115
+ range = (range * 256) >>> 0;
116
+ code = ((code * 256) | readByte()) >>> 0;
117
+ }
118
+ }
119
+ return result;
120
+ };
121
+ const tree = (probs, offset, bits) => {
122
+ let m = 1;
123
+ for (let i = 0; i < bits; i++) {
124
+ m = (m << 1) + bit(probs, offset + m);
125
+ }
126
+ return m - (1 << bits);
127
+ };
128
+ const reverseTree = (probs, offset, bits) => {
129
+ let m = 1;
130
+ let symbol = 0;
131
+ for (let i = 0; i < bits; i++) {
132
+ const b = bit(probs, offset + m);
133
+ m = (m << 1) + b;
134
+ symbol |= b << i;
135
+ }
136
+ return symbol;
137
+ };
138
+ const lenDecode = (probs, posState) => {
139
+ if (bit(probs, LEN_CHOICE) === 0) {
140
+ return tree(probs, LEN_LOW + (posState << 3), 3);
141
+ }
142
+ if (bit(probs, LEN_CHOICE2) === 0) {
143
+ return 8 + tree(probs, LEN_MID + (posState << 3), 3);
144
+ }
145
+ return 16 + tree(probs, LEN_HIGH, 8);
146
+ };
147
+ const literals = probabilities(0x300 << (lc + lp));
148
+ const posSlots = probabilities(LEN_TO_POS_STATES << 6);
149
+ const posDecoders = probabilities(1 + FULL_DISTANCES - END_POS_MODEL_INDEX);
150
+ const align = probabilities(1 << ALIGN_BITS);
151
+ const isMatch = probabilities(STATES << POS_BITS_MAX);
152
+ const isRep = probabilities(STATES);
153
+ const isRepG0 = probabilities(STATES);
154
+ const isRepG1 = probabilities(STATES);
155
+ const isRepG2 = probabilities(STATES);
156
+ const isRep0Long = probabilities(STATES << POS_BITS_MAX);
157
+ const lens = probabilities(LEN_SIZE);
158
+ const repLens = probabilities(LEN_SIZE);
159
+ const pbMask = (1 << pb) - 1;
160
+ const lpMask = (1 << lp) - 1;
161
+ let out = new Uint8Array(offset + Math.min(length, 1 << 16));
162
+ let outPos = 0;
163
+ /** Room for `n` more bytes, the buffer doubled as it fills, never past `length`. */
164
+ const room = (n) => {
165
+ if (offset + outPos + n > out.length) {
166
+ const size = Math.min(length, Math.max((out.length - offset) * 2, outPos + n));
167
+ const grown = new Uint8Array(offset + size);
168
+ grown.set(out.subarray(0, offset + outPos));
169
+ out = grown;
170
+ }
171
+ };
172
+ let state = 0;
173
+ let rep0 = 0;
174
+ let rep1 = 0;
175
+ let rep2 = 0;
176
+ let rep3 = 0;
177
+ while (outPos < length) {
178
+ const posState = outPos & pbMask;
179
+ if (bit(isMatch, (state << POS_BITS_MAX) + posState) === 0) {
180
+ const prev = outPos > 0 ? out[offset + outPos - 1] : 0;
181
+ const base = 0x300 * (((outPos & lpMask) << lc) + (prev >>> (8 - lc)));
182
+ let symbol = 1;
183
+ if (state >= 7) {
184
+ let matchByte = out[offset + outPos - rep0 - 1];
185
+ do {
186
+ const matchBit = (matchByte >>> 7) & 1;
187
+ matchByte <<= 1;
188
+ const b = bit(literals, base + ((1 + matchBit) << 8) + symbol);
189
+ symbol = (symbol << 1) | b;
190
+ if (matchBit !== b) {
191
+ break;
192
+ }
193
+ } while (symbol < 0x100);
194
+ }
195
+ while (symbol < 0x100) {
196
+ symbol = (symbol << 1) | bit(literals, base + symbol);
197
+ }
198
+ room(1);
199
+ out[offset + outPos++] = symbol - 0x100;
200
+ state = state < 4 ? 0 : state < 10 ? state - 3 : state - 6;
201
+ continue;
202
+ }
203
+ let len;
204
+ if (bit(isRep, state) !== 0) {
205
+ if (outPos === 0) {
206
+ throw new LzmaError("corrupt");
207
+ }
208
+ if (bit(isRepG0, state) === 0) {
209
+ if (bit(isRep0Long, (state << POS_BITS_MAX) + posState) === 0) {
210
+ state = state < 7 ? 9 : 11;
211
+ room(1);
212
+ out[offset + outPos] = out[offset + outPos - rep0 - 1];
213
+ outPos++;
214
+ continue;
215
+ }
216
+ }
217
+ else {
218
+ let distance;
219
+ if (bit(isRepG1, state) === 0) {
220
+ distance = rep1;
221
+ }
222
+ else {
223
+ if (bit(isRepG2, state) === 0) {
224
+ distance = rep2;
225
+ }
226
+ else {
227
+ distance = rep3;
228
+ rep3 = rep2;
229
+ }
230
+ rep2 = rep1;
231
+ }
232
+ rep1 = rep0;
233
+ rep0 = distance;
234
+ }
235
+ len = lenDecode(repLens, posState);
236
+ state = state < 7 ? 8 : 11;
237
+ }
238
+ else {
239
+ rep3 = rep2;
240
+ rep2 = rep1;
241
+ rep1 = rep0;
242
+ len = lenDecode(lens, posState);
243
+ state = state < 7 ? 7 : 10;
244
+ const lenState = Math.min(len, LEN_TO_POS_STATES - 1);
245
+ const posSlot = tree(posSlots, lenState << 6, 6);
246
+ if (posSlot < 4) {
247
+ rep0 = posSlot;
248
+ }
249
+ else {
250
+ const bits = (posSlot >>> 1) - 1;
251
+ let distance = (2 | (posSlot & 1)) * 2 ** bits;
252
+ if (posSlot < END_POS_MODEL_INDEX) {
253
+ distance += reverseTree(posDecoders, distance - posSlot, bits);
254
+ }
255
+ else {
256
+ distance += directBits(bits - ALIGN_BITS) * 16;
257
+ distance += reverseTree(align, 0, ALIGN_BITS);
258
+ }
259
+ rep0 = distance;
260
+ }
261
+ // The end marker.
262
+ if (rep0 === 0xffffffff) {
263
+ break;
264
+ }
265
+ if (rep0 >= dictSize || rep0 >= outPos) {
266
+ throw new LzmaError("corrupt");
267
+ }
268
+ }
269
+ // A match past the length ends the output there, as a prefix asks.
270
+ len = Math.min(len + MATCH_MIN_LEN, length - outPos);
271
+ room(len);
272
+ for (let i = 0; i < len; i++) {
273
+ out[offset + outPos] = out[offset + outPos - rep0 - 1];
274
+ outPos++;
275
+ }
276
+ }
277
+ return offset + outPos === out.length ? out : out.subarray(0, offset + outPos);
278
+ }
279
+ //# sourceMappingURL=lzma.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lzma.js","sourceRoot":"","sources":["../src/lzma.ts"],"names":[],"mappings":"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"}