@swf2es/format 0.0.0-stage → 0.1.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 (94) 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/pbj.d.ts +178 -0
  49. package/dist/pbj.d.ts.map +1 -0
  50. package/dist/pbj.js +485 -0
  51. package/dist/pbj.js.map +1 -0
  52. package/dist/shape.d.ts +152 -0
  53. package/dist/shape.d.ts.map +1 -0
  54. package/dist/shape.js +412 -0
  55. package/dist/shape.js.map +1 -0
  56. package/dist/sound.d.ts +71 -0
  57. package/dist/sound.d.ts.map +1 -0
  58. package/dist/sound.js +92 -0
  59. package/dist/sound.js.map +1 -0
  60. package/dist/swf.d.ts +77 -0
  61. package/dist/swf.d.ts.map +1 -0
  62. package/dist/swf.js +164 -0
  63. package/dist/swf.js.map +1 -0
  64. package/dist/tags.d.ts +57 -0
  65. package/dist/tags.d.ts.map +1 -0
  66. package/dist/tags.js +59 -0
  67. package/dist/tags.js.map +1 -0
  68. package/dist/text.d.ts +75 -0
  69. package/dist/text.d.ts.map +1 -0
  70. package/dist/text.js +136 -0
  71. package/dist/text.js.map +1 -0
  72. package/dist/zip.d.ts +17 -0
  73. package/dist/zip.d.ts.map +1 -0
  74. package/dist/zip.js +92 -0
  75. package/dist/zip.js.map +1 -0
  76. package/package.json +33 -3
  77. package/src/abc-names.ts +138 -0
  78. package/src/actions.ts +319 -0
  79. package/src/air-descriptor.ts +84 -0
  80. package/src/api-versions.ts +27 -0
  81. package/src/bitmap.ts +259 -0
  82. package/src/button.ts +99 -0
  83. package/src/compression.ts +243 -0
  84. package/src/display.ts +419 -0
  85. package/src/filters.ts +206 -0
  86. package/src/font.ts +238 -0
  87. package/src/index.ts +151 -0
  88. package/src/pbj.ts +651 -0
  89. package/src/shape.ts +618 -0
  90. package/src/sound.ts +173 -0
  91. package/src/swf.ts +234 -0
  92. package/src/tags.ts +58 -0
  93. package/src/text.ts +213 -0
  94. package/src/zip.ts +135 -0
package/dist/swf.d.ts ADDED
@@ -0,0 +1,77 @@
1
+ export type SwfCompression = "none" | "zlib" | "lzma";
2
+ export interface SwfHeader {
3
+ compression: SwfCompression;
4
+ /** SWF version byte (e.g. 10 for Flash Player 10). */
5
+ version: number;
6
+ /** Uncompressed length of the whole file, header included. */
7
+ fileLength: number;
8
+ }
9
+ /** A rectangle in twips (1/20 pixel), as a RECT holds one. */
10
+ export interface Rect {
11
+ xMin: number;
12
+ xMax: number;
13
+ yMin: number;
14
+ yMax: number;
15
+ }
16
+ /** A tag: its code, and where its body is in the decompressed file. */
17
+ export interface Tag {
18
+ code: number;
19
+ /** Offset of the body in the decompressed file, after the tag's header. */
20
+ offset: number;
21
+ length: number;
22
+ /** Whether the header was the long form, which Flash requires of a bitmap tag. */
23
+ long: boolean;
24
+ }
25
+ export interface Swf {
26
+ header: SwfHeader;
27
+ /** The whole file, decompressed, header included; tags' offsets are into it. */
28
+ bytes: Uint8Array;
29
+ frameSize: Rect;
30
+ /** Frames per second: the 8.8 fixed-point value as a number. */
31
+ frameRate: number;
32
+ frameCount: number;
33
+ tags: Tag[];
34
+ /** Whether the tags ran past the end of the file, and were cut there. */
35
+ truncated: boolean;
36
+ }
37
+ /** Read the 8-byte header every SWF starts with. */
38
+ export declare function readSwfHeader(bytes: Uint8Array): SwfHeader;
39
+ /** Reads bits and bytes of a SWF body, bits most significant first, as the format packs them. */
40
+ export declare class SwfReader {
41
+ readonly bytes: Uint8Array;
42
+ pos: number;
43
+ readonly end: number;
44
+ private bit;
45
+ private byte;
46
+ constructor(bytes: Uint8Array, pos?: number, end?: number);
47
+ /** Past the end: every read after it gives 0. */
48
+ get overrun(): boolean;
49
+ align(): void;
50
+ ub(n: number): number;
51
+ sb(n: number): number;
52
+ u8(): number;
53
+ u16(): number;
54
+ u32(): number;
55
+ s16(): number;
56
+ rect(): Rect;
57
+ }
58
+ /** A SWF's header and tags, its body decompressed. */
59
+ export declare function readSwf(file: Uint8Array): Swf;
60
+ /** The tags from `start` to an End tag or `end`, as a sprite's or the file's. */
61
+ export declare function readTags(bytes: Uint8Array, start: number, end: number): {
62
+ tags: Tag[];
63
+ truncated: boolean;
64
+ };
65
+ /** The background colour SetBackgroundColor sets, 0xRRGGBB, or white without one. */
66
+ export declare function backgroundColor(swf: Swf): number;
67
+ /**
68
+ * The flags of a SWF file's FileAttributes, from the start of the file
69
+ * alone, as Flash Player reads them, FileAttributes being the first tag:
70
+ * 0 for a SWF whose first tag is another. For a host that must not
71
+ * decompress the whole of a SWF it does not trust, as a desktop shell
72
+ * choosing a local SWF's sandbox; ActionScript3 is 0x08, UseNetwork 0x01.
73
+ */
74
+ export declare function fileAttributes(file: Uint8Array): number;
75
+ /** Whether FileAttributes marks the SWF as ActionScript 3; without the bit it is an AVM1 movie. */
76
+ export declare function isAs3(swf: Swf): boolean;
77
+ //# sourceMappingURL=swf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swf.d.ts","sourceRoot":"","sources":["../src/swf.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,cAAc,CAAC;IAC5B,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,8DAA8D;AAC9D,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uEAAuE;AACvE,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,SAAS,CAAC;IAClB,gFAAgF;IAChF,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,yEAAyE;IACzE,SAAS,EAAE,OAAO,CAAC;CACpB;AAID,oDAAoD;AACpD,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,CAa1D;AAED,iGAAiG;AACjG,qBAAa,SAAS;IAKlB,QAAQ,CAAC,KAAK,EAAE,UAAU;IACnB,GAAG;IACV,QAAQ,CAAC,GAAG;IANd,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,IAAI,CAAK;IAEjB,YACW,KAAK,EAAE,UAAU,EACnB,GAAG,SAAI,EACL,GAAG,SAAe,EACzB;IAEJ,iDAAiD;IACjD,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,KAAK,IAAI,IAAI,CAEZ;IAED,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAcpB;IAED,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAYpB;IAED,EAAE,IAAI,MAAM,CAKX;IAED,GAAG,IAAI,MAAM,CAEZ;IAED,GAAG,IAAI,MAAM,CAEZ;IAED,GAAG,IAAI,MAAM,CAEZ;IAED,IAAI,IAAI,IAAI,CAMX;CACF;AAED,sDAAsD;AACtD,wBAAgB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,GAAG,CAS7C;AAED,iFAAiF;AACjF,wBAAgB,QAAQ,CACtB,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV;IAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAyBrC;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAQhD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAqBvD;AAED,mGAAmG;AACnG,wBAAgB,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAGvC"}
package/dist/swf.js ADDED
@@ -0,0 +1,164 @@
1
+ // A SWF's movie header and its tags, as the SWF file format specification
2
+ // (version 19) lays them out: after the 8-byte file header and the body's
3
+ // decompression, the frame size as a RECT, the frame rate as 8.8 fixed
4
+ // point, the frame count, then tags to an End tag or the body's end.
5
+ import { decompressSwf, decompressSwfPrefix } from "./compression.js";
6
+ import { End, FileAttributes, SetBackgroundColor } from "./tags.js";
7
+ const SIGNATURES = { FWS: "none", CWS: "zlib", ZWS: "lzma" };
8
+ /** Read the 8-byte header every SWF starts with. */
9
+ export function readSwfHeader(bytes) {
10
+ if (bytes.length < 8) {
11
+ throw new RangeError(`SWF header needs 8 bytes, got ${bytes.length}`);
12
+ }
13
+ const signature = String.fromCharCode(bytes[0], bytes[1], bytes[2]);
14
+ const compression = SIGNATURES[signature];
15
+ if (!compression) {
16
+ throw new TypeError(`Not a SWF file (signature ${JSON.stringify(signature)})`);
17
+ }
18
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
19
+ return { compression, version: bytes[3], fileLength: view.getUint32(4, true) };
20
+ }
21
+ /** Reads bits and bytes of a SWF body, bits most significant first, as the format packs them. */
22
+ export class SwfReader {
23
+ bytes;
24
+ pos;
25
+ end;
26
+ bit = 0;
27
+ byte = 0;
28
+ constructor(bytes, pos = 0, end = bytes.length) {
29
+ this.bytes = bytes;
30
+ this.pos = pos;
31
+ this.end = end;
32
+ }
33
+ /** Past the end: every read after it gives 0. */
34
+ get overrun() {
35
+ return this.pos > this.end;
36
+ }
37
+ align() {
38
+ this.bit = 0;
39
+ }
40
+ ub(n) {
41
+ let v = 0;
42
+ for (let i = 0; i < n; i++) {
43
+ if (this.bit === 0) {
44
+ this.byte = this.pos < this.end ? this.bytes[this.pos] : 0;
45
+ this.pos++;
46
+ this.bit = 8;
47
+ }
48
+ this.bit--;
49
+ v = v * 2 + ((this.byte >> this.bit) & 1);
50
+ }
51
+ return v;
52
+ }
53
+ sb(n) {
54
+ if (n > 0 && n <= 32 && n === (n | 0)) {
55
+ const shift = 32 - n;
56
+ return (this.ub(n) << shift) >> shift;
57
+ }
58
+ if (n === 0) {
59
+ return 0;
60
+ }
61
+ const v = this.ub(n);
62
+ return v >= 2 ** (n - 1) ? v - 2 ** n : v;
63
+ }
64
+ u8() {
65
+ this.align();
66
+ const v = this.pos < this.end ? this.bytes[this.pos] : 0;
67
+ this.pos++;
68
+ return v;
69
+ }
70
+ u16() {
71
+ return this.u8() | (this.u8() << 8);
72
+ }
73
+ u32() {
74
+ return (this.u16() | (this.u16() << 16)) >>> 0;
75
+ }
76
+ s16() {
77
+ return (this.u16() << 16) >> 16;
78
+ }
79
+ rect() {
80
+ this.align();
81
+ const n = this.ub(5);
82
+ const rect = { xMin: this.sb(n), xMax: this.sb(n), yMin: this.sb(n), yMax: this.sb(n) };
83
+ this.align();
84
+ return rect;
85
+ }
86
+ }
87
+ /** A SWF's header and tags, its body decompressed. */
88
+ export function readSwf(file) {
89
+ const header = readSwfHeader(file);
90
+ const bytes = decompressSwf(file);
91
+ const r = new SwfReader(bytes, 8);
92
+ const frameSize = r.rect();
93
+ const frameRate = r.u16() / 256;
94
+ const frameCount = r.u16();
95
+ const { tags, truncated } = readTags(bytes, r.pos, bytes.length);
96
+ return { header, bytes, frameSize, frameRate, frameCount, tags, truncated };
97
+ }
98
+ /** The tags from `start` to an End tag or `end`, as a sprite's or the file's. */
99
+ export function readTags(bytes, start, end) {
100
+ const tags = [];
101
+ const r = new SwfReader(bytes, start, end);
102
+ while (r.pos + 2 <= end) {
103
+ const codeAndLength = r.u16();
104
+ const code = codeAndLength >> 6;
105
+ let length = codeAndLength & 0x3f;
106
+ const long = length === 0x3f;
107
+ if (long) {
108
+ length = r.u32();
109
+ }
110
+ if (r.pos + length > end) {
111
+ tags.push({ code, offset: r.pos, length: Math.max(0, end - r.pos), long });
112
+ return { tags, truncated: true };
113
+ }
114
+ tags.push({ code, offset: r.pos, length, long });
115
+ r.pos += length;
116
+ if (code === End) {
117
+ break;
118
+ }
119
+ }
120
+ return { tags, truncated: false };
121
+ }
122
+ /** The background colour SetBackgroundColor sets, 0xRRGGBB, or white without one. */
123
+ export function backgroundColor(swf) {
124
+ const tag = swf.tags.find((t) => t.code === SetBackgroundColor);
125
+ if (!tag || tag.length < 3) {
126
+ return 0xffffff;
127
+ }
128
+ const b = swf.bytes;
129
+ return (b[tag.offset] << 16) | (b[tag.offset + 1] << 8) | b[tag.offset + 2];
130
+ }
131
+ /**
132
+ * The flags of a SWF file's FileAttributes, from the start of the file
133
+ * alone, as Flash Player reads them, FileAttributes being the first tag:
134
+ * 0 for a SWF whose first tag is another. For a host that must not
135
+ * decompress the whole of a SWF it does not trust, as a desktop shell
136
+ * choosing a local SWF's sandbox; ActionScript3 is 0x08, UseNetwork 0x01.
137
+ */
138
+ export function fileAttributes(file) {
139
+ // The header's rect is 17 bytes at most, then the rate, count, and a long tag header.
140
+ const bytes = decompressSwfPrefix(file, 64);
141
+ try {
142
+ const r = new SwfReader(bytes, 8);
143
+ r.rect();
144
+ r.u16();
145
+ r.u16();
146
+ const head = r.u16();
147
+ if (head >> 6 !== FileAttributes) {
148
+ return 0;
149
+ }
150
+ if ((head & 0x3f) === 0x3f) {
151
+ r.u32();
152
+ }
153
+ return r.u8();
154
+ }
155
+ catch {
156
+ return 0;
157
+ }
158
+ }
159
+ /** Whether FileAttributes marks the SWF as ActionScript 3; without the bit it is an AVM1 movie. */
160
+ export function isAs3(swf) {
161
+ const tag = swf.tags.find((t) => t.code === FileAttributes);
162
+ return !!tag && tag.length >= 1 && (swf.bytes[tag.offset] & 0x08) !== 0;
163
+ }
164
+ //# sourceMappingURL=swf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swf.js","sourceRoot":"","sources":["../src/swf.ts"],"names":[],"mappings":"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"}
package/dist/tags.d.ts ADDED
@@ -0,0 +1,57 @@
1
+ export declare const End = 0;
2
+ export declare const ShowFrame = 1;
3
+ export declare const DefineShape = 2;
4
+ export declare const PlaceObject = 4;
5
+ export declare const RemoveObject = 5;
6
+ export declare const DefineBits = 6;
7
+ export declare const DefineButton = 7;
8
+ export declare const JPEGTables = 8;
9
+ export declare const SetBackgroundColor = 9;
10
+ export declare const DefineFont = 10;
11
+ export declare const DefineText = 11;
12
+ export declare const DoAction = 12;
13
+ export declare const DefineFontInfo = 13;
14
+ export declare const DefineSound = 14;
15
+ export declare const StartSound = 15;
16
+ export declare const DefineButtonSound = 17;
17
+ export declare const SoundStreamHead = 18;
18
+ export declare const SoundStreamBlock = 19;
19
+ export declare const DefineBitsLossless = 20;
20
+ export declare const DefineBitsJPEG2 = 21;
21
+ export declare const DefineShape2 = 22;
22
+ export declare const DefineButtonCxform = 23;
23
+ export declare const PlaceObject2 = 26;
24
+ export declare const RemoveObject2 = 28;
25
+ export declare const DefineShape3 = 32;
26
+ export declare const DefineText2 = 33;
27
+ export declare const DefineButton2 = 34;
28
+ export declare const DefineBitsJPEG3 = 35;
29
+ export declare const DefineBitsLossless2 = 36;
30
+ export declare const DefineEditText = 37;
31
+ export declare const DefineSprite = 39;
32
+ export declare const FrameLabel = 43;
33
+ export declare const SoundStreamHead2 = 45;
34
+ export declare const DefineMorphShape = 46;
35
+ export declare const DefineFont2 = 48;
36
+ export declare const ExportAssets = 56;
37
+ export declare const ScriptLimits = 65;
38
+ export declare const DoInitAction = 59;
39
+ export declare const DefineFontInfo2 = 62;
40
+ export declare const FileAttributes = 69;
41
+ export declare const PlaceObject3 = 70;
42
+ export declare const DoABC = 72;
43
+ export declare const DefineFontAlignZones = 73;
44
+ export declare const CSMTextSettings = 74;
45
+ export declare const DefineFont3 = 75;
46
+ export declare const SymbolClass = 76;
47
+ export declare const DefineScalingGrid = 78;
48
+ export declare const DoABC2 = 82;
49
+ export declare const DefineShape4 = 83;
50
+ export declare const DefineMorphShape2 = 84;
51
+ export declare const DefineSceneAndFrameLabelData = 86;
52
+ export declare const DefineBinaryData = 87;
53
+ export declare const StartSound2 = 89;
54
+ export declare const DefineBitsJPEG4 = 90;
55
+ export declare const DefineFont4 = 91;
56
+ export declare const PlaceObject4 = 94;
57
+ //# sourceMappingURL=tags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../src/tags.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,GAAG,IAAI,CAAC;AACrB,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,QAAQ,KAAK,CAAC;AAC3B,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,KAAK,KAAK,CAAC;AACxB,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,MAAM,KAAK,CAAC;AACzB,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAC/C,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,YAAY,KAAK,CAAC"}
package/dist/tags.js ADDED
@@ -0,0 +1,59 @@
1
+ // SWF tag codes, as the specification numbers them. The player reads these
2
+ // first; any other tag is kept by its code.
3
+ export const End = 0;
4
+ export const ShowFrame = 1;
5
+ export const DefineShape = 2;
6
+ export const PlaceObject = 4;
7
+ export const RemoveObject = 5;
8
+ export const DefineBits = 6;
9
+ export const DefineButton = 7;
10
+ export const JPEGTables = 8;
11
+ export const SetBackgroundColor = 9;
12
+ export const DefineFont = 10;
13
+ export const DefineText = 11;
14
+ export const DoAction = 12;
15
+ export const DefineFontInfo = 13;
16
+ export const DefineSound = 14;
17
+ export const StartSound = 15;
18
+ export const DefineButtonSound = 17;
19
+ export const SoundStreamHead = 18;
20
+ export const SoundStreamBlock = 19;
21
+ export const DefineBitsLossless = 20;
22
+ export const DefineBitsJPEG2 = 21;
23
+ export const DefineShape2 = 22;
24
+ export const DefineButtonCxform = 23;
25
+ export const PlaceObject2 = 26;
26
+ export const RemoveObject2 = 28;
27
+ export const DefineShape3 = 32;
28
+ export const DefineText2 = 33;
29
+ export const DefineButton2 = 34;
30
+ export const DefineBitsJPEG3 = 35;
31
+ export const DefineBitsLossless2 = 36;
32
+ export const DefineEditText = 37;
33
+ export const DefineSprite = 39;
34
+ export const FrameLabel = 43;
35
+ export const SoundStreamHead2 = 45;
36
+ export const DefineMorphShape = 46;
37
+ export const DefineFont2 = 48;
38
+ export const ExportAssets = 56;
39
+ export const ScriptLimits = 65;
40
+ export const DoInitAction = 59;
41
+ export const DefineFontInfo2 = 62;
42
+ export const FileAttributes = 69;
43
+ export const PlaceObject3 = 70;
44
+ export const DoABC = 72;
45
+ export const DefineFontAlignZones = 73;
46
+ export const CSMTextSettings = 74;
47
+ export const DefineFont3 = 75;
48
+ export const SymbolClass = 76;
49
+ export const DefineScalingGrid = 78;
50
+ export const DoABC2 = 82;
51
+ export const DefineShape4 = 83;
52
+ export const DefineMorphShape2 = 84;
53
+ export const DefineSceneAndFrameLabelData = 86;
54
+ export const DefineBinaryData = 87;
55
+ export const StartSound2 = 89;
56
+ export const DefineBitsJPEG4 = 90;
57
+ export const DefineFont4 = 91;
58
+ export const PlaceObject4 = 94;
59
+ //# sourceMappingURL=tags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags.js","sourceRoot":"","sources":["../src/tags.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,4CAA4C;AAC5C,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;AACrB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC;AAC3B,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAC5B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAC5B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AAC7B,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AAC7B,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC3B,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAC9B,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AAC7B,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACnC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACrC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAC/B,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACrC,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAC/B,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAC/B,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAC9B,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACtC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAC/B,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AAC7B,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACnC,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAC9B,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAC/B,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAC/B,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAC/B,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAC/B,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;AACxB,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAC9B,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAC9B,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC;AACzB,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAC/B,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAC/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACnC,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAC9B,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAC9B,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC"}
package/dist/text.d.ts ADDED
@@ -0,0 +1,75 @@
1
+ import { type Matrix } from "./shape.js";
2
+ import { type Rect, type Tag } from "./swf.js";
3
+ export interface EditText {
4
+ id: number;
5
+ bounds: Rect;
6
+ variable: string;
7
+ text: string;
8
+ color: number | null;
9
+ fontId: number | null;
10
+ fontClass: string | null;
11
+ fontHeight: number | null;
12
+ align: number;
13
+ leftMargin: number;
14
+ rightMargin: number;
15
+ indent: number;
16
+ leading: number;
17
+ maxLength: number | null;
18
+ wordWrap: boolean;
19
+ multiline: boolean;
20
+ password: boolean;
21
+ readOnly: boolean;
22
+ autoSize: boolean;
23
+ selectable: boolean;
24
+ border: boolean;
25
+ html: boolean;
26
+ useOutlines: boolean;
27
+ }
28
+ /** DefineEditText (tag 37), including every conditional field before its variable and text. */
29
+ export declare function readEditText(bytes: Uint8Array, tag: Tag): EditText;
30
+ /** A DefineFont2 or DefineFont3's name and style: what a field in it shows its text in, the glyphs left. */
31
+ export interface FontName {
32
+ id: number;
33
+ name: string;
34
+ bold: boolean;
35
+ italic: boolean;
36
+ }
37
+ /** DefineFont2 (48) or DefineFont3 (75): the id, flags, language, then the name, a length-prefixed string. */
38
+ export declare function readFontName(bytes: Uint8Array, tag: Tag): FontName;
39
+ /** A run of DefineText's glyphs: what its record sets, null where it keeps the run before's. */
40
+ export interface TextRecord {
41
+ font: number | null;
42
+ /** 0xAARRGGBB; DefineText's opaque. */
43
+ color: number | null;
44
+ /** The pen's place, in twips. */
45
+ x: number | null;
46
+ y: number | null;
47
+ /** The glyphs' height, in twips; set with the font. */
48
+ height: number | null;
49
+ /** Each glyph's index into the font's glyphs, and the pen's advance after it, in twips. */
50
+ glyphs: {
51
+ index: number;
52
+ advance: number;
53
+ }[];
54
+ }
55
+ /** DefineText or DefineText2: static text, glyphs of embedded fonts placed by the authoring tool. */
56
+ export interface StaticText {
57
+ id: number;
58
+ bounds: Rect;
59
+ matrix: Matrix;
60
+ records: TextRecord[];
61
+ }
62
+ /** DefineText (11) or DefineText2 (33, whose colours have alpha), up to its end record or the tag's end. */
63
+ export declare function readStaticText(bytes: Uint8Array, tag: Tag): StaticText;
64
+ /** CSMTextSettings (74): how a text character is anti-aliased, as TextField's settings of the same names. */
65
+ export interface CsmTextSettings {
66
+ id: number;
67
+ /** Advanced anti-aliasing (Saffron) rather than normal. */
68
+ useFlashType: boolean;
69
+ /** 0 none, 1 pixel, 2 subpixel. */
70
+ gridFit: number;
71
+ thickness: number;
72
+ sharpness: number;
73
+ }
74
+ export declare function readCsmTextSettings(bytes: Uint8Array, tag: Tag): CsmTextSettings;
75
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,KAAK,IAAI,EAAa,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAG1D,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,IAAI,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,+FAA+F;AAC/F,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,QAAQ,CAqDlE;AAED,4GAA4G;AAC5G,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,8GAA8G;AAC9G,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,QAAQ,CAelE;AAED,gGAAgG;AAChG,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,uCAAuC;IACvC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,iCAAiC;IACjC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjB,uDAAuD;IACvD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,2FAA2F;IAC3F,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC9C;AAED,qGAAqG;AACrG,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,4GAA4G;AAC5G,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,UAAU,CA4CtE;AAED,6GAA6G;AAC7G,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,2DAA2D;IAC3D,YAAY,EAAE,OAAO,CAAC;IACtB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,eAAe,CAiBhF"}
package/dist/text.js ADDED
@@ -0,0 +1,136 @@
1
+ // The text characters a SWF places on its timeline: editable text
2
+ // (DefineEditText) and static text (DefineText, DefineText2).
3
+ import { readString, utf8 } from "./display.js";
4
+ import { readMatrix } from "./shape.js";
5
+ import { SwfReader } from "./swf.js";
6
+ import { DefineText2 } from "./tags.js";
7
+ /** DefineEditText (tag 37), including every conditional field before its variable and text. */
8
+ export function readEditText(bytes, tag) {
9
+ const r = new SwfReader(bytes, tag.offset, tag.offset + tag.length);
10
+ const id = r.u16();
11
+ const bounds = r.rect();
12
+ const flags = r.u8();
13
+ const flags2 = r.u8();
14
+ const hasText = (flags & 0x80) !== 0;
15
+ const hasFont = (flags & 0x01) !== 0;
16
+ const hasFontClass = (flags2 & 0x80) !== 0;
17
+ const fontId = hasFont ? r.u16() : null;
18
+ const fontClass = hasFontClass ? readString(r) : null;
19
+ const fontHeight = hasFont || hasFontClass ? r.u16() : null;
20
+ const color = flags & 0x04 ? r.u32() : null;
21
+ const maxLength = flags & 0x02 ? r.u16() : null;
22
+ let align = 0;
23
+ let leftMargin = 0;
24
+ let rightMargin = 0;
25
+ let indent = 0;
26
+ let leading = 0;
27
+ if (flags2 & 0x20) {
28
+ align = r.u8();
29
+ leftMargin = r.u16();
30
+ rightMargin = r.u16();
31
+ // Signed, as Flash reads it, though the specification says UI16: a hanging indent is negative.
32
+ indent = r.s16();
33
+ leading = r.s16();
34
+ }
35
+ return {
36
+ id,
37
+ bounds,
38
+ variable: readString(r),
39
+ text: hasText ? readString(r) : "",
40
+ color,
41
+ fontId,
42
+ fontClass,
43
+ fontHeight,
44
+ align,
45
+ leftMargin,
46
+ rightMargin,
47
+ indent,
48
+ leading,
49
+ maxLength,
50
+ wordWrap: (flags & 0x40) !== 0,
51
+ multiline: (flags & 0x20) !== 0,
52
+ password: (flags & 0x10) !== 0,
53
+ readOnly: (flags & 0x08) !== 0,
54
+ autoSize: (flags2 & 0x40) !== 0,
55
+ selectable: (flags2 & 0x10) === 0,
56
+ border: (flags2 & 0x08) !== 0,
57
+ html: (flags2 & 0x02) !== 0,
58
+ useOutlines: (flags2 & 0x01) !== 0,
59
+ };
60
+ }
61
+ /** DefineFont2 (48) or DefineFont3 (75): the id, flags, language, then the name, a length-prefixed string. */
62
+ export function readFontName(bytes, tag) {
63
+ const r = new SwfReader(bytes, tag.offset, tag.offset + tag.length);
64
+ const id = r.u16();
65
+ const flags = r.u8();
66
+ r.u8();
67
+ const length = r.u8();
68
+ const start = r.pos;
69
+ let end = Math.min(start + length, r.end);
70
+ // A trailing NUL, which some tools write, is no part of the name.
71
+ while (end > start && bytes[end - 1] === 0) {
72
+ end--;
73
+ }
74
+ const name = utf8(bytes.subarray(start, end));
75
+ return { id, name, bold: (flags & 0x01) !== 0, italic: (flags & 0x02) !== 0 };
76
+ }
77
+ /** DefineText (11) or DefineText2 (33, whose colours have alpha), up to its end record or the tag's end. */
78
+ export function readStaticText(bytes, tag) {
79
+ const r = new SwfReader(bytes, tag.offset, tag.offset + tag.length);
80
+ const alpha = tag.code === DefineText2;
81
+ const id = r.u16();
82
+ const bounds = r.rect();
83
+ const matrix = readMatrix(r);
84
+ const glyphBits = r.u8();
85
+ const advanceBits = r.u8();
86
+ const records = [];
87
+ for (;;) {
88
+ const flags = r.u8();
89
+ if (flags === 0 || r.overrun) {
90
+ break;
91
+ }
92
+ const font = flags & 0x08 ? r.u16() : null;
93
+ let color = null;
94
+ if (flags & 0x04) {
95
+ const red = r.u8();
96
+ const green = r.u8();
97
+ const blue = r.u8();
98
+ const a = alpha ? r.u8() : 255;
99
+ color = ((a << 24) | (red << 16) | (green << 8) | blue) >>> 0;
100
+ }
101
+ const x = flags & 0x01 ? r.s16() : null;
102
+ const y = flags & 0x02 ? r.s16() : null;
103
+ const height = font !== null ? r.u16() : null;
104
+ const count = r.u8();
105
+ const glyphs = [];
106
+ for (let i = 0; i < count && !r.overrun; i++) {
107
+ glyphs.push({ index: r.ub(glyphBits), advance: r.sb(advanceBits) });
108
+ }
109
+ // A record the tag's end cuts off is left out, not read as zeros.
110
+ if (r.overrun) {
111
+ break;
112
+ }
113
+ r.align();
114
+ records.push({ font, color, x, y, height, glyphs });
115
+ }
116
+ return { id, bounds, matrix, records };
117
+ }
118
+ export function readCsmTextSettings(bytes, tag) {
119
+ const r = new SwfReader(bytes, tag.offset, tag.offset + tag.length);
120
+ const id = r.u16();
121
+ const flags = r.u8();
122
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
123
+ const float = () => {
124
+ const at = r.pos;
125
+ r.pos += 4;
126
+ return at + 4 <= r.end ? view.getFloat32(at, true) : 0;
127
+ };
128
+ return {
129
+ id,
130
+ useFlashType: flags >> 6 === 1,
131
+ gridFit: (flags >> 3) & 7,
132
+ thickness: float(),
133
+ sharpness: float(),
134
+ };
135
+ }
136
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"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"}
package/dist/zip.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ export declare class ZipError extends Error {
2
+ name: string;
3
+ }
4
+ /** One file of an archive; a directory's name ends in "/". */
5
+ export interface ZipEntry {
6
+ /** Its path in the archive, "/"-separated. */
7
+ name: string;
8
+ /** Its uncompressed size in bytes. */
9
+ size: number;
10
+ /** When it was last changed, in ms since 1970, read as local time as DOS's fields are. */
11
+ modified: number;
12
+ /** Its bytes, inflated on each call. */
13
+ bytes(): Uint8Array;
14
+ }
15
+ /** The files of the archive `zip`, in its central directory's order. */
16
+ export declare function readZip(zip: Uint8Array): ZipEntry[];
17
+ //# sourceMappingURL=zip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zip.d.ts","sourceRoot":"","sources":["../src/zip.ts"],"names":[],"mappings":"AAgBA,qBAAa,QAAS,SAAQ,KAAK;IACxB,IAAI,SAAc;CAC5B;AAED,8DAA8D;AAC9D,MAAM,WAAW,QAAQ;IACvB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,0FAA0F;IAC1F,QAAQ,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,KAAK,IAAI,UAAU,CAAC;CACrB;AAED,wEAAwE;AACxE,wBAAgB,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,QAAQ,EAAE,CA2CnD"}