@chicowall/grf-loader 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/@chicowall/grf-loader.js +541 -0
- package/dist/cjs/@chicowall/grf-loader.js.map +1 -0
- package/dist/cjs/@chicowall/grf-loader.min.js +2 -0
- package/dist/cjs/@chicowall/grf-loader.min.js.map +1 -0
- package/dist/esm/@chicowall/grf-loader.js +536 -0
- package/dist/esm/@chicowall/grf-loader.js.map +1 -0
- package/dist/umd/@chicowall/grf-loader.js +545 -0
- package/dist/umd/@chicowall/grf-loader.js.map +1 -0
- package/dist/umd/@chicowall/grf-loader.min.js +17 -0
- package/dist/umd/@chicowall/grf-loader.min.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,545 @@
|
|
|
1
|
+
(function (global, factory) {
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('pako'), require('jdataview'), require('fs')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', 'pako', 'jdataview', 'fs'], factory) :
|
|
4
|
+
(global = global || self, factory(global.GrfLoader = {}, global.pako, global.jDataview, global.fs));
|
|
5
|
+
}(this, (function (exports, pako, jDataview, fs) { 'use strict';
|
|
6
|
+
|
|
7
|
+
jDataview = jDataview && Object.prototype.hasOwnProperty.call(jDataview, 'default') ? jDataview['default'] : jDataview;
|
|
8
|
+
|
|
9
|
+
/*! *****************************************************************************
|
|
10
|
+
Copyright (c) Microsoft Corporation.
|
|
11
|
+
|
|
12
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
13
|
+
purpose with or without fee is hereby granted.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
16
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
17
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
18
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
19
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
20
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
21
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
22
|
+
***************************************************************************** */
|
|
23
|
+
/* global Reflect, Promise */
|
|
24
|
+
|
|
25
|
+
var extendStatics = function(d, b) {
|
|
26
|
+
extendStatics = Object.setPrototypeOf ||
|
|
27
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
28
|
+
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
29
|
+
return extendStatics(d, b);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
function __extends(d, b) {
|
|
33
|
+
extendStatics(d, b);
|
|
34
|
+
function __() { this.constructor = d; }
|
|
35
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function __awaiter(thisArg, _arguments, P, generator) {
|
|
39
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
40
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
41
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
42
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
43
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
44
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function __generator(thisArg, body) {
|
|
49
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
50
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
51
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
52
|
+
function step(op) {
|
|
53
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
54
|
+
while (_) try {
|
|
55
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
56
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
57
|
+
switch (op[0]) {
|
|
58
|
+
case 0: case 1: t = op; break;
|
|
59
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
60
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
61
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
62
|
+
default:
|
|
63
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
64
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
65
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
66
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
67
|
+
if (t[2]) _.ops.pop();
|
|
68
|
+
_.trys.pop(); continue;
|
|
69
|
+
}
|
|
70
|
+
op = body.call(thisArg, _);
|
|
71
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
72
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Ragnarok Online DES decoder implementation
|
|
78
|
+
* It's a custom one with some alterations
|
|
79
|
+
*/
|
|
80
|
+
var mask = new Uint8Array([0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01]);
|
|
81
|
+
var tmp = new Uint8Array(8);
|
|
82
|
+
var tmp2 = new Uint8Array(8);
|
|
83
|
+
var clean = new Uint8Array(8);
|
|
84
|
+
// prettier-ignore
|
|
85
|
+
var initialPermutationTable = new Uint8Array([
|
|
86
|
+
58, 50, 42, 34, 26, 18, 10, 2,
|
|
87
|
+
60, 52, 44, 36, 28, 20, 12, 4,
|
|
88
|
+
62, 54, 46, 38, 30, 22, 14, 6,
|
|
89
|
+
64, 56, 48, 40, 32, 24, 16, 8,
|
|
90
|
+
57, 49, 41, 33, 25, 17, 9, 1,
|
|
91
|
+
59, 51, 43, 35, 27, 19, 11, 3,
|
|
92
|
+
61, 53, 45, 37, 29, 21, 13, 5,
|
|
93
|
+
63, 55, 47, 39, 31, 23, 15, 7
|
|
94
|
+
]);
|
|
95
|
+
// prettier-ignore
|
|
96
|
+
var finalPermutationTable = new Uint8Array([
|
|
97
|
+
40, 8, 48, 16, 56, 24, 64, 32,
|
|
98
|
+
39, 7, 47, 15, 55, 23, 63, 31,
|
|
99
|
+
38, 6, 46, 14, 54, 22, 62, 30,
|
|
100
|
+
37, 5, 45, 13, 53, 21, 61, 29,
|
|
101
|
+
36, 4, 44, 12, 52, 20, 60, 28,
|
|
102
|
+
35, 3, 43, 11, 51, 19, 59, 27,
|
|
103
|
+
34, 2, 42, 10, 50, 18, 58, 26,
|
|
104
|
+
33, 1, 41, 9, 49, 17, 57, 25
|
|
105
|
+
]);
|
|
106
|
+
// prettier-ignore
|
|
107
|
+
var transpositionTable = new Uint8Array([
|
|
108
|
+
16, 7, 20, 21,
|
|
109
|
+
29, 12, 28, 17,
|
|
110
|
+
1, 15, 23, 26,
|
|
111
|
+
5, 18, 31, 10,
|
|
112
|
+
2, 8, 24, 14,
|
|
113
|
+
32, 27, 3, 9,
|
|
114
|
+
19, 13, 30, 6,
|
|
115
|
+
22, 11, 4, 25
|
|
116
|
+
]);
|
|
117
|
+
// prettier-ignore
|
|
118
|
+
var substitutionBoxTable = [
|
|
119
|
+
new Uint8Array([
|
|
120
|
+
0xef, 0x03, 0x41, 0xfd, 0xd8, 0x74, 0x1e, 0x47, 0x26, 0xef, 0xfb, 0x22, 0xb3, 0xd8, 0x84, 0x1e,
|
|
121
|
+
0x39, 0xac, 0xa7, 0x60, 0x62, 0xc1, 0xcd, 0xba, 0x5c, 0x96, 0x90, 0x59, 0x05, 0x3b, 0x7a, 0x85,
|
|
122
|
+
0x40, 0xfd, 0x1e, 0xc8, 0xe7, 0x8a, 0x8b, 0x21, 0xda, 0x43, 0x64, 0x9f, 0x2d, 0x14, 0xb1, 0x72,
|
|
123
|
+
0xf5, 0x5b, 0xc8, 0xb6, 0x9c, 0x37, 0x76, 0xec, 0x39, 0xa0, 0xa3, 0x05, 0x52, 0x6e, 0x0f, 0xd9
|
|
124
|
+
]),
|
|
125
|
+
new Uint8Array([
|
|
126
|
+
0xa7, 0xdd, 0x0d, 0x78, 0x9e, 0x0b, 0xe3, 0x95, 0x60, 0x36, 0x36, 0x4f, 0xf9, 0x60, 0x5a, 0xa3,
|
|
127
|
+
0x11, 0x24, 0xd2, 0x87, 0xc8, 0x52, 0x75, 0xec, 0xbb, 0xc1, 0x4c, 0xba, 0x24, 0xfe, 0x8f, 0x19,
|
|
128
|
+
0xda, 0x13, 0x66, 0xaf, 0x49, 0xd0, 0x90, 0x06, 0x8c, 0x6a, 0xfb, 0x91, 0x37, 0x8d, 0x0d, 0x78,
|
|
129
|
+
0xbf, 0x49, 0x11, 0xf4, 0x23, 0xe5, 0xce, 0x3b, 0x55, 0xbc, 0xa2, 0x57, 0xe8, 0x22, 0x74, 0xce
|
|
130
|
+
]),
|
|
131
|
+
new Uint8Array([
|
|
132
|
+
0x2c, 0xea, 0xc1, 0xbf, 0x4a, 0x24, 0x1f, 0xc2, 0x79, 0x47, 0xa2, 0x7c, 0xb6, 0xd9, 0x68, 0x15,
|
|
133
|
+
0x80, 0x56, 0x5d, 0x01, 0x33, 0xfd, 0xf4, 0xae, 0xde, 0x30, 0x07, 0x9b, 0xe5, 0x83, 0x9b, 0x68,
|
|
134
|
+
0x49, 0xb4, 0x2e, 0x83, 0x1f, 0xc2, 0xb5, 0x7c, 0xa2, 0x19, 0xd8, 0xe5, 0x7c, 0x2f, 0x83, 0xda,
|
|
135
|
+
0xf7, 0x6b, 0x90, 0xfe, 0xc4, 0x01, 0x5a, 0x97, 0x61, 0xa6, 0x3d, 0x40, 0x0b, 0x58, 0xe6, 0x3d
|
|
136
|
+
]),
|
|
137
|
+
new Uint8Array([
|
|
138
|
+
0x4d, 0xd1, 0xb2, 0x0f, 0x28, 0xbd, 0xe4, 0x78, 0xf6, 0x4a, 0x0f, 0x93, 0x8b, 0x17, 0xd1, 0xa4,
|
|
139
|
+
0x3a, 0xec, 0xc9, 0x35, 0x93, 0x56, 0x7e, 0xcb, 0x55, 0x20, 0xa0, 0xfe, 0x6c, 0x89, 0x17, 0x62,
|
|
140
|
+
0x17, 0x62, 0x4b, 0xb1, 0xb4, 0xde, 0xd1, 0x87, 0xc9, 0x14, 0x3c, 0x4a, 0x7e, 0xa8, 0xe2, 0x7d,
|
|
141
|
+
0xa0, 0x9f, 0xf6, 0x5c, 0x6a, 0x09, 0x8d, 0xf0, 0x0f, 0xe3, 0x53, 0x25, 0x95, 0x36, 0x28, 0xcb
|
|
142
|
+
])
|
|
143
|
+
];
|
|
144
|
+
/**
|
|
145
|
+
* Initial permutation (IP).
|
|
146
|
+
*/
|
|
147
|
+
function initialPermutation(src, index) {
|
|
148
|
+
for (var i = 0; i < 64; ++i) {
|
|
149
|
+
var j = initialPermutationTable[i] - 1;
|
|
150
|
+
if (src[index + ((j >> 3) & 7)] & mask[j & 7]) {
|
|
151
|
+
tmp[(i >> 3) & 7] |= mask[i & 7];
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
src.set(tmp, index);
|
|
155
|
+
tmp.set(clean);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Final permutation (IP^-1).
|
|
159
|
+
*/
|
|
160
|
+
function finalPermutation(src, index) {
|
|
161
|
+
for (var i = 0; i < 64; ++i) {
|
|
162
|
+
var j = finalPermutationTable[i] - 1;
|
|
163
|
+
if (src[index + ((j >> 3) & 7)] & mask[j & 7]) {
|
|
164
|
+
tmp[(i >> 3) & 7] |= mask[i & 7];
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
src.set(tmp, index);
|
|
168
|
+
tmp.set(clean);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Transposition (P-BOX).
|
|
172
|
+
*/
|
|
173
|
+
function transposition(src, index) {
|
|
174
|
+
for (var i = 0; i < 32; ++i) {
|
|
175
|
+
var j = transpositionTable[i] - 1;
|
|
176
|
+
if (src[index + (j >> 3)] & mask[j & 7]) {
|
|
177
|
+
tmp[(i >> 3) + 4] |= mask[i & 7];
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
src.set(tmp, index);
|
|
181
|
+
tmp.set(clean);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Expansion (E).
|
|
185
|
+
* Expands upper four 8-bits (32b) into eight 6-bits (48b).
|
|
186
|
+
*/
|
|
187
|
+
function expansion(src, index) {
|
|
188
|
+
tmp[0] = ((src[index + 7] << 5) | (src[index + 4] >> 3)) & 0x3f; // ..0 vutsr
|
|
189
|
+
tmp[1] = ((src[index + 4] << 1) | (src[index + 5] >> 7)) & 0x3f; // ..srqpo n
|
|
190
|
+
tmp[2] = ((src[index + 4] << 5) | (src[index + 5] >> 3)) & 0x3f; // ..o nmlkj
|
|
191
|
+
tmp[3] = ((src[index + 5] << 1) | (src[index + 6] >> 7)) & 0x3f; // ..kjihg f
|
|
192
|
+
tmp[4] = ((src[index + 5] << 5) | (src[index + 6] >> 3)) & 0x3f; // ..g fedcb
|
|
193
|
+
tmp[5] = ((src[index + 6] << 1) | (src[index + 7] >> 7)) & 0x3f; // ..cba98 7
|
|
194
|
+
tmp[6] = ((src[index + 6] << 5) | (src[index + 7] >> 3)) & 0x3f; // ..8 76543
|
|
195
|
+
tmp[7] = ((src[index + 7] << 1) | (src[index + 4] >> 7)) & 0x3f; // ..43210 v
|
|
196
|
+
src.set(tmp, index);
|
|
197
|
+
tmp.set(clean);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Substitution boxes (S-boxes).
|
|
201
|
+
* NOTE: This implementation was optimized to process two nibbles in one step (twice as fast).
|
|
202
|
+
*/
|
|
203
|
+
function substitutionBox(src, index) {
|
|
204
|
+
for (var i = 0; i < 4; ++i) {
|
|
205
|
+
tmp[i] =
|
|
206
|
+
(substitutionBoxTable[i][src[i * 2 + 0 + index]] & 0xf0) |
|
|
207
|
+
(substitutionBoxTable[i][src[i * 2 + 1 + index]] & 0x0f);
|
|
208
|
+
}
|
|
209
|
+
src.set(tmp, index);
|
|
210
|
+
tmp.set(clean);
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* DES round function.
|
|
214
|
+
* XORs src[0..3] with TP(SBOX(E(src[4..7]))).
|
|
215
|
+
*/
|
|
216
|
+
function roundFunction(src, index) {
|
|
217
|
+
for (var i = 0; i < 8; i++) {
|
|
218
|
+
tmp2[i] = src[index + i];
|
|
219
|
+
}
|
|
220
|
+
expansion(tmp2, 0);
|
|
221
|
+
substitutionBox(tmp2, 0);
|
|
222
|
+
transposition(tmp2, 0);
|
|
223
|
+
src[index + 0] ^= tmp2[4];
|
|
224
|
+
src[index + 1] ^= tmp2[5];
|
|
225
|
+
src[index + 2] ^= tmp2[6];
|
|
226
|
+
src[index + 3] ^= tmp2[7];
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* DEcrypt a block
|
|
230
|
+
*/
|
|
231
|
+
function decryptBlock(src, index) {
|
|
232
|
+
initialPermutation(src, index);
|
|
233
|
+
roundFunction(src, index);
|
|
234
|
+
finalPermutation(src, index);
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Decode the whole file
|
|
238
|
+
*/
|
|
239
|
+
function decodeFull(src, length, entryLength) {
|
|
240
|
+
// compute number of digits of the entry length
|
|
241
|
+
var digits = entryLength.toString().length;
|
|
242
|
+
// choose size of gap between two encrypted blocks
|
|
243
|
+
// digits: 0 1 2 3 4 5 6 7 8 9 ...
|
|
244
|
+
// cycle: 1 1 1 4 5 14 15 22 23 24 ...
|
|
245
|
+
var cycle = digits < 3
|
|
246
|
+
? 1
|
|
247
|
+
: digits < 5
|
|
248
|
+
? digits + 1
|
|
249
|
+
: digits < 7
|
|
250
|
+
? digits + 9
|
|
251
|
+
: digits + 15;
|
|
252
|
+
var nblocks = length >> 3;
|
|
253
|
+
// first 20 blocks are all des-encrypted
|
|
254
|
+
for (var i = 0; i < 20 && i < nblocks; ++i) {
|
|
255
|
+
decryptBlock(src, i * 8);
|
|
256
|
+
}
|
|
257
|
+
for (var i = 20, j = -1; i < nblocks; ++i) {
|
|
258
|
+
// decrypt block
|
|
259
|
+
if (i % cycle === 0) {
|
|
260
|
+
decryptBlock(src, i * 8);
|
|
261
|
+
continue;
|
|
262
|
+
}
|
|
263
|
+
// de-shuffle block
|
|
264
|
+
if (++j && j % 7 === 0) {
|
|
265
|
+
shuffleDec(src, i * 8);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Decode only the header
|
|
271
|
+
*/
|
|
272
|
+
function decodeHeader(src, length) {
|
|
273
|
+
var count = length >> 3;
|
|
274
|
+
// first 20 blocks are all des-encrypted
|
|
275
|
+
for (var i = 0; i < 20 && i < count; ++i) {
|
|
276
|
+
decryptBlock(src, i * 8);
|
|
277
|
+
}
|
|
278
|
+
// the rest is plaintext, done.
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Shuffle decode
|
|
282
|
+
*/
|
|
283
|
+
function shuffleDec(src, index) {
|
|
284
|
+
tmp[0] = src[index + 3];
|
|
285
|
+
tmp[1] = src[index + 4];
|
|
286
|
+
tmp[2] = src[index + 6];
|
|
287
|
+
tmp[3] = src[index + 0];
|
|
288
|
+
tmp[4] = src[index + 1];
|
|
289
|
+
tmp[5] = src[index + 2];
|
|
290
|
+
tmp[6] = src[index + 5];
|
|
291
|
+
tmp[7] = shuffleDecTable[src[index + 7]];
|
|
292
|
+
src.set(tmp, index);
|
|
293
|
+
tmp.set(clean);
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* GRF substitution table
|
|
297
|
+
*/
|
|
298
|
+
var shuffleDecTable = (function () {
|
|
299
|
+
// prettier-ignore
|
|
300
|
+
var list = new Uint8Array([
|
|
301
|
+
0x00, 0x2b, 0x6c, 0x80, 0x01, 0x68, 0x48,
|
|
302
|
+
0x77, 0x60, 0xff, 0xb9, 0xc0, 0xfe, 0xeb
|
|
303
|
+
]);
|
|
304
|
+
var out = new Uint8Array(Array.from({ length: 256 }, function (_, k) { return k; }));
|
|
305
|
+
var count = list.length;
|
|
306
|
+
for (var i = 0; i < count; i += 2) {
|
|
307
|
+
out[list[i + 0]] = list[i + 1];
|
|
308
|
+
out[list[i + 1]] = list[i + 0];
|
|
309
|
+
}
|
|
310
|
+
return out;
|
|
311
|
+
})();
|
|
312
|
+
|
|
313
|
+
var FILELIST_TYPE_FILE = 0x01;
|
|
314
|
+
var FILELIST_TYPE_ENCRYPT_MIXED = 0x02; // encryption mode 0 (header DES + periodic DES/shuffle)
|
|
315
|
+
var FILELIST_TYPE_ENCRYPT_HEADER = 0x04; // encryption mode 1 (header DES only)
|
|
316
|
+
var HEADER_SIGNATURE = 'Master of Magic';
|
|
317
|
+
var HEADER_SIZE = 46;
|
|
318
|
+
var FILE_TABLE_SIZE = Uint32Array.BYTES_PER_ELEMENT * 2;
|
|
319
|
+
var GrfBase = /** @class */ (function () {
|
|
320
|
+
function GrfBase(fd) {
|
|
321
|
+
this.fd = fd;
|
|
322
|
+
this.version = 0x200;
|
|
323
|
+
this.fileCount = 0;
|
|
324
|
+
this.loaded = false;
|
|
325
|
+
this.files = new Map();
|
|
326
|
+
this.fileTableOffset = 0;
|
|
327
|
+
}
|
|
328
|
+
GrfBase.prototype.getStreamReader = function (offset, length) {
|
|
329
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
330
|
+
var buffer;
|
|
331
|
+
return __generator(this, function (_a) {
|
|
332
|
+
switch (_a.label) {
|
|
333
|
+
case 0: return [4 /*yield*/, this.getStreamBuffer(this.fd, offset, length)];
|
|
334
|
+
case 1:
|
|
335
|
+
buffer = _a.sent();
|
|
336
|
+
return [2 /*return*/, new jDataview(buffer, void 0, void 0, true)];
|
|
337
|
+
}
|
|
338
|
+
});
|
|
339
|
+
});
|
|
340
|
+
};
|
|
341
|
+
GrfBase.prototype.load = function () {
|
|
342
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
343
|
+
return __generator(this, function (_a) {
|
|
344
|
+
switch (_a.label) {
|
|
345
|
+
case 0:
|
|
346
|
+
if (!!this.loaded) return [3 /*break*/, 3];
|
|
347
|
+
return [4 /*yield*/, this.parseHeader()];
|
|
348
|
+
case 1:
|
|
349
|
+
_a.sent();
|
|
350
|
+
return [4 /*yield*/, this.parseFileList()];
|
|
351
|
+
case 2:
|
|
352
|
+
_a.sent();
|
|
353
|
+
this.loaded = true;
|
|
354
|
+
_a.label = 3;
|
|
355
|
+
case 3: return [2 /*return*/];
|
|
356
|
+
}
|
|
357
|
+
});
|
|
358
|
+
});
|
|
359
|
+
};
|
|
360
|
+
GrfBase.prototype.parseHeader = function () {
|
|
361
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
362
|
+
var reader, signature, reservedFiles;
|
|
363
|
+
return __generator(this, function (_a) {
|
|
364
|
+
switch (_a.label) {
|
|
365
|
+
case 0: return [4 /*yield*/, this.getStreamReader(0, HEADER_SIZE)];
|
|
366
|
+
case 1:
|
|
367
|
+
reader = _a.sent();
|
|
368
|
+
signature = reader.getString(15);
|
|
369
|
+
if (signature !== HEADER_SIGNATURE) {
|
|
370
|
+
throw new Error('Not a GRF file (invalid signature)');
|
|
371
|
+
}
|
|
372
|
+
reader.skip(15);
|
|
373
|
+
this.fileTableOffset = reader.getUint32() + HEADER_SIZE;
|
|
374
|
+
reservedFiles = reader.getUint32();
|
|
375
|
+
this.fileCount = reader.getUint32() - reservedFiles - 7;
|
|
376
|
+
this.version = reader.getUint32();
|
|
377
|
+
if (this.version !== 0x200) {
|
|
378
|
+
throw new Error("Unsupported version \"0x" + this.version.toString(16) + "\"");
|
|
379
|
+
}
|
|
380
|
+
return [2 /*return*/];
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
});
|
|
384
|
+
};
|
|
385
|
+
GrfBase.prototype.parseFileList = function () {
|
|
386
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
387
|
+
var reader, compressedSize, realSize, compressed, data, i, p, filename, entry;
|
|
388
|
+
return __generator(this, function (_a) {
|
|
389
|
+
switch (_a.label) {
|
|
390
|
+
case 0: return [4 /*yield*/, this.getStreamReader(this.fileTableOffset, FILE_TABLE_SIZE)];
|
|
391
|
+
case 1:
|
|
392
|
+
reader = _a.sent();
|
|
393
|
+
compressedSize = reader.getUint32();
|
|
394
|
+
realSize = reader.getUint32();
|
|
395
|
+
return [4 /*yield*/, this.getStreamBuffer(this.fd, this.fileTableOffset + FILE_TABLE_SIZE, compressedSize)];
|
|
396
|
+
case 2:
|
|
397
|
+
compressed = _a.sent();
|
|
398
|
+
data = pako.inflate(compressed, {
|
|
399
|
+
//chunkSize: realSize
|
|
400
|
+
});
|
|
401
|
+
// Optimized version without using jDataView (faster)
|
|
402
|
+
for (i = 0, p = 0; i < this.fileCount; ++i) {
|
|
403
|
+
filename = '';
|
|
404
|
+
while (data[p]) {
|
|
405
|
+
filename += String.fromCharCode(data[p++]);
|
|
406
|
+
}
|
|
407
|
+
p++;
|
|
408
|
+
entry = {
|
|
409
|
+
compressedSize: data[p++] | (data[p++] << 8) | (data[p++] << 16) | (data[p++] << 24),
|
|
410
|
+
lengthAligned: data[p++] | (data[p++] << 8) | (data[p++] << 16) | (data[p++] << 24),
|
|
411
|
+
realSize: data[p++] | (data[p++] << 8) | (data[p++] << 16) | (data[p++] << 24),
|
|
412
|
+
type: data[p++],
|
|
413
|
+
offset: (data[p++] | (data[p++] << 8) | (data[p++] << 16) | (data[p++] << 24)) >>> 0
|
|
414
|
+
};
|
|
415
|
+
// Not a file (folder ?)
|
|
416
|
+
if (entry.type & FILELIST_TYPE_FILE) {
|
|
417
|
+
this.files.set(filename.toLowerCase(), entry);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
return [2 /*return*/];
|
|
421
|
+
}
|
|
422
|
+
});
|
|
423
|
+
});
|
|
424
|
+
};
|
|
425
|
+
GrfBase.prototype.decodeEntry = function (data, entry) {
|
|
426
|
+
// Decode the file
|
|
427
|
+
if (entry.type & FILELIST_TYPE_ENCRYPT_MIXED) {
|
|
428
|
+
decodeFull(data, entry.lengthAligned, entry.compressedSize);
|
|
429
|
+
}
|
|
430
|
+
else if (entry.type & FILELIST_TYPE_ENCRYPT_HEADER) {
|
|
431
|
+
decodeHeader(data, entry.lengthAligned);
|
|
432
|
+
}
|
|
433
|
+
// No compression
|
|
434
|
+
if (entry.realSize === entry.compressedSize) {
|
|
435
|
+
return data;
|
|
436
|
+
}
|
|
437
|
+
// Uncompress
|
|
438
|
+
return pako.inflate(data, {
|
|
439
|
+
//chunkSize: entry.realSize
|
|
440
|
+
});
|
|
441
|
+
};
|
|
442
|
+
GrfBase.prototype.getFile = function (filename) {
|
|
443
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
444
|
+
var path, entry, data, result;
|
|
445
|
+
return __generator(this, function (_a) {
|
|
446
|
+
switch (_a.label) {
|
|
447
|
+
case 0:
|
|
448
|
+
if (!this.loaded) {
|
|
449
|
+
return [2 /*return*/, Promise.resolve({ data: null, error: 'GRF not loaded yet' })];
|
|
450
|
+
}
|
|
451
|
+
path = filename.toLowerCase();
|
|
452
|
+
// Not exists
|
|
453
|
+
if (!this.files.has(path)) {
|
|
454
|
+
return [2 /*return*/, Promise.resolve({ data: null, error: "File \"" + path + "\" not found" })];
|
|
455
|
+
}
|
|
456
|
+
entry = this.files.get(path);
|
|
457
|
+
return [4 /*yield*/, this.getStreamBuffer(this.fd, entry.offset + HEADER_SIZE, entry.lengthAligned)];
|
|
458
|
+
case 1:
|
|
459
|
+
data = _a.sent();
|
|
460
|
+
try {
|
|
461
|
+
result = this.decodeEntry(data, entry);
|
|
462
|
+
return [2 /*return*/, Promise.resolve({ data: result, error: null })];
|
|
463
|
+
}
|
|
464
|
+
catch (error) {
|
|
465
|
+
return [2 /*return*/, Promise.resolve({ data: null, error: error })];
|
|
466
|
+
}
|
|
467
|
+
return [2 /*return*/];
|
|
468
|
+
}
|
|
469
|
+
});
|
|
470
|
+
});
|
|
471
|
+
};
|
|
472
|
+
return GrfBase;
|
|
473
|
+
}());
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* Using this Browser, we work from a File or Blob object.
|
|
477
|
+
* We are use the FileReader API to read only some part of the file to avoid
|
|
478
|
+
* loading 2 gigas into memory
|
|
479
|
+
*/
|
|
480
|
+
var GrfBrowser = /** @class */ (function (_super) {
|
|
481
|
+
__extends(GrfBrowser, _super);
|
|
482
|
+
function GrfBrowser() {
|
|
483
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
484
|
+
}
|
|
485
|
+
GrfBrowser.prototype.getStreamBuffer = function (buffer, offset, length) {
|
|
486
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
487
|
+
return __generator(this, function (_a) {
|
|
488
|
+
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
489
|
+
var reader = new FileReader();
|
|
490
|
+
reader.onerror = reject;
|
|
491
|
+
reader.onload = function () {
|
|
492
|
+
return resolve(new Uint8Array(reader.result));
|
|
493
|
+
};
|
|
494
|
+
reader.readAsArrayBuffer(buffer.slice(offset, offset + length));
|
|
495
|
+
})];
|
|
496
|
+
});
|
|
497
|
+
});
|
|
498
|
+
};
|
|
499
|
+
return GrfBrowser;
|
|
500
|
+
}(GrfBase));
|
|
501
|
+
|
|
502
|
+
/**
|
|
503
|
+
* Using this Node env, we work from a fd object.
|
|
504
|
+
* We do not work directly with a buffer to avoid loading 2 gigas into memory.
|
|
505
|
+
*
|
|
506
|
+
* You can get the `fd` by using :
|
|
507
|
+
* ```
|
|
508
|
+
* const fd = openSync('path/to/grf', 'r');
|
|
509
|
+
* const grf = new GRFNode(fd);
|
|
510
|
+
* ```
|
|
511
|
+
*/
|
|
512
|
+
var GrfNode = /** @class */ (function (_super) {
|
|
513
|
+
__extends(GrfNode, _super);
|
|
514
|
+
function GrfNode() {
|
|
515
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
516
|
+
}
|
|
517
|
+
GrfNode.prototype.getStreamBuffer = function (fd, offset, length) {
|
|
518
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
519
|
+
var buffer;
|
|
520
|
+
return __generator(this, function (_a) {
|
|
521
|
+
switch (_a.label) {
|
|
522
|
+
case 0:
|
|
523
|
+
buffer = Buffer.alloc(length);
|
|
524
|
+
return [4 /*yield*/, new Promise(function (resolve, reject) {
|
|
525
|
+
return fs.read(fd, buffer, 0, length, offset, function (error) {
|
|
526
|
+
return error ? reject(error) : resolve();
|
|
527
|
+
});
|
|
528
|
+
})];
|
|
529
|
+
case 1:
|
|
530
|
+
_a.sent();
|
|
531
|
+
return [2 /*return*/, buffer];
|
|
532
|
+
}
|
|
533
|
+
});
|
|
534
|
+
});
|
|
535
|
+
};
|
|
536
|
+
return GrfNode;
|
|
537
|
+
}(GrfBase));
|
|
538
|
+
|
|
539
|
+
exports.GrfBrowser = GrfBrowser;
|
|
540
|
+
exports.GrfNode = GrfNode;
|
|
541
|
+
|
|
542
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
543
|
+
|
|
544
|
+
})));
|
|
545
|
+
//# sourceMappingURL=grf-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grf-loader.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../src/des.ts","../../../src/grf-base.ts","../../../src/grf-browser.ts","../../../src/grf-node.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n",null,null,null,null],"names":["inflate","read"],"mappings":"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I,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;SAChG,CAAC;QACF,IAAI,UAAU,CAAC;YACb,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YAC/F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YAC/F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YAC/F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;SAChG,CAAC;QACF,IAAI,UAAU,CAAC;YACb,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YAC/F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YAC/F,IAAI,EAAE,IAAI,E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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var t,e;t=this,e=function(t,e,r,n){"use strict";r=r&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r;
|
|
2
|
+
/*! *****************************************************************************
|
|
3
|
+
Copyright (c) Microsoft Corporation.
|
|
4
|
+
|
|
5
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
6
|
+
purpose with or without fee is hereby granted.
|
|
7
|
+
|
|
8
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
9
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
10
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
11
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
12
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
13
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
14
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
15
|
+
***************************************************************************** */
|
|
16
|
+
var i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)};function o(t,e){function r(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}function a(t,e,r,n){return new(r||(r=Promise))((function(i,o){function a(t){try{u(n.next(t))}catch(t){o(t)}}function s(t){try{u(n.throw(t))}catch(t){o(t)}}function u(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,s)}u((n=n.apply(t,e||[])).next())}))}function s(t,e){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!((i=(i=a.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){a.label=o[1];break}if(6===o[0]&&a.label<i[1]){a.label=i[1],i=o;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(o);break}i[2]&&a.ops.pop(),a.trys.pop();continue}o=e.call(t,a)}catch(t){o=[6,t],n=0}finally{r=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}}var u=new Uint8Array([128,64,32,16,8,4,2,1]),f=new Uint8Array(8),c=new Uint8Array(8),l=new Uint8Array(8),h=new Uint8Array([58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7]),d=new Uint8Array([40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,34,2,42,10,50,18,58,26,33,1,41,9,49,17,57,25]),p=new Uint8Array([16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10,2,8,24,14,32,27,3,9,19,13,30,6,22,11,4,25]),v=[new Uint8Array([239,3,65,253,216,116,30,71,38,239,251,34,179,216,132,30,57,172,167,96,98,193,205,186,92,150,144,89,5,59,122,133,64,253,30,200,231,138,139,33,218,67,100,159,45,20,177,114,245,91,200,182,156,55,118,236,57,160,163,5,82,110,15,217]),new Uint8Array([167,221,13,120,158,11,227,149,96,54,54,79,249,96,90,163,17,36,210,135,200,82,117,236,187,193,76,186,36,254,143,25,218,19,102,175,73,208,144,6,140,106,251,145,55,141,13,120,191,73,17,244,35,229,206,59,85,188,162,87,232,34,116,206]),new Uint8Array([44,234,193,191,74,36,31,194,121,71,162,124,182,217,104,21,128,86,93,1,51,253,244,174,222,48,7,155,229,131,155,104,73,180,46,131,31,194,181,124,162,25,216,229,124,47,131,218,247,107,144,254,196,1,90,151,97,166,61,64,11,88,230,61]),new Uint8Array([77,209,178,15,40,189,228,120,246,74,15,147,139,23,209,164,58,236,201,53,147,86,126,203,85,32,160,254,108,137,23,98,23,98,75,177,180,222,209,135,201,20,60,74,126,168,226,125,160,159,246,92,106,9,141,240,15,227,83,37,149,54,40,203])];function y(t,e){for(var r=0;r<8;r++)c[r]=t[e+r];!function(t,e){f[0]=63&(t[e+7]<<5|t[e+4]>>3),f[1]=63&(t[e+4]<<1|t[e+5]>>7),f[2]=63&(t[e+4]<<5|t[e+5]>>3),f[3]=63&(t[e+5]<<1|t[e+6]>>7),f[4]=63&(t[e+5]<<5|t[e+6]>>3),f[5]=63&(t[e+6]<<1|t[e+7]>>7),f[6]=63&(t[e+6]<<5|t[e+7]>>3),f[7]=63&(t[e+7]<<1|t[e+4]>>7),t.set(f,e),f.set(l)}(c,0),function(t,e){for(var r=0;r<4;++r)f[r]=240&v[r][t[2*r+0+e]]|15&v[r][t[2*r+1+e]];t.set(f,e),f.set(l)}(c,0),function(t,e){for(var r=0;r<32;++r){var n=p[r]-1;t[e+(n>>3)]&u[7&n]&&(f[4+(r>>3)]|=u[7&r])}t.set(f,e),f.set(l)}(c,0),t[e+0]^=c[4],t[e+1]^=c[5],t[e+2]^=c[6],t[e+3]^=c[7]}function w(t,e){!function(t,e){for(var r=0;r<64;++r){var n=h[r]-1;t[e+(n>>3&7)]&u[7&n]&&(f[r>>3&7]|=u[7&r])}t.set(f,e),f.set(l)}(t,e),y(t,e),function(t,e){for(var r=0;r<64;++r){var n=d[r]-1;t[e+(n>>3&7)]&u[7&n]&&(f[r>>3&7]|=u[7&r])}t.set(f,e),f.set(l)}(t,e)}function g(t,e){f[0]=t[e+3],f[1]=t[e+4],f[2]=t[e+6],f[3]=t[e+0],f[4]=t[e+1],f[5]=t[e+2],f[6]=t[e+5],f[7]=b[t[e+7]],t.set(f,e),f.set(l)}var b=function(){for(var t=new Uint8Array([0,43,108,128,1,104,72,119,96,255,185,192,254,235]),e=new Uint8Array(Array.from({length:256},(function(t,e){return e}))),r=t.length,n=0;n<r;n+=2)e[t[n+0]]=t[n+1],e[t[n+1]]=t[n+0];return e}(),m=2*Uint32Array.BYTES_PER_ELEMENT,A=function(){function t(t){this.fd=t,this.version=512,this.fileCount=0,this.loaded=!1,this.files=new Map,this.fileTableOffset=0}return t.prototype.getStreamReader=function(t,e){return a(this,void 0,void 0,(function(){var n;return s(this,(function(i){switch(i.label){case 0:return[4,this.getStreamBuffer(this.fd,t,e)];case 1:return n=i.sent(),[2,new r(n,void 0,void 0,!0)]}}))}))},t.prototype.load=function(){return a(this,void 0,void 0,(function(){return s(this,(function(t){switch(t.label){case 0:return this.loaded?[3,3]:[4,this.parseHeader()];case 1:return t.sent(),[4,this.parseFileList()];case 2:t.sent(),this.loaded=!0,t.label=3;case 3:return[2]}}))}))},t.prototype.parseHeader=function(){return a(this,void 0,void 0,(function(){var t,e;return s(this,(function(r){switch(r.label){case 0:return[4,this.getStreamReader(0,46)];case 1:if("Master of Magic"!==(t=r.sent()).getString(15))throw Error("Not a GRF file (invalid signature)");if(t.skip(15),this.fileTableOffset=t.getUint32()+46,e=t.getUint32(),this.fileCount=t.getUint32()-e-7,this.version=t.getUint32(),512!==this.version)throw Error('Unsupported version "0x'+this.version.toString(16)+'"');return[2]}}))}))},t.prototype.parseFileList=function(){return a(this,void 0,void 0,(function(){var t,r,n,i,o,a,u,f;return s(this,(function(s){switch(s.label){case 0:return[4,this.getStreamReader(this.fileTableOffset,m)];case 1:return t=s.sent(),r=t.getUint32(),t.getUint32(),[4,this.getStreamBuffer(this.fd,this.fileTableOffset+m,r)];case 2:for(n=s.sent(),i=e.inflate(n,{}),o=0,a=0;o<this.fileCount;++o){for(u="";i[a];)u+=String.fromCharCode(i[a++]);a++,1&(f={compressedSize:i[a++]|i[a++]<<8|i[a++]<<16|i[a++]<<24,lengthAligned:i[a++]|i[a++]<<8|i[a++]<<16|i[a++]<<24,realSize:i[a++]|i[a++]<<8|i[a++]<<16|i[a++]<<24,type:i[a++],offset:(i[a++]|i[a++]<<8|i[a++]<<16|i[a++]<<24)>>>0}).type&&this.files.set(u.toLowerCase(),f)}return[2]}}))}))},t.prototype.decodeEntry=function(t,r){return 2&r.type?function(t,e,r){for(var n=r.toString().length,i=n<3?1:n<5?n+1:n<7?n+9:n+15,o=e>>3,a=0;a<20&&a<o;++a)w(t,8*a);a=20;for(var s=-1;a<o;++a)a%i!=0?++s&&s%7==0&&g(t,8*a):w(t,8*a)}(t,r.lengthAligned,r.compressedSize):4&r.type&&function(t,e){for(var r=e>>3,n=0;n<20&&n<r;++n)w(t,8*n)}(t,r.lengthAligned),r.realSize===r.compressedSize?t:e.inflate(t,{})},t.prototype.getFile=function(t){return a(this,void 0,void 0,(function(){var e,r,n,i;return s(this,(function(o){switch(o.label){case 0:return this.loaded?(e=t.toLowerCase(),this.files.has(e)?(r=this.files.get(e),[4,this.getStreamBuffer(this.fd,r.offset+46,r.lengthAligned)]):[2,Promise.resolve({data:null,error:'File "'+e+'" not found'})]):[2,Promise.resolve({data:null,error:"GRF not loaded yet"})];case 1:n=o.sent();try{return i=this.decodeEntry(n,r),[2,Promise.resolve({data:i,error:null})]}catch(t){return[2,Promise.resolve({data:null,error:t})]}return[2]}}))}))},t}(),U=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e.prototype.getStreamBuffer=function(t,e,r){return a(this,void 0,void 0,(function(){return s(this,(function(n){return[2,new Promise((function(n,i){var o=new FileReader;o.onerror=i,o.onload=function(){return n(new Uint8Array(o.result))},o.readAsArrayBuffer(t.slice(e,e+r))}))]}))}))},e}(A),S=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e.prototype.getStreamBuffer=function(t,e,r){return a(this,void 0,void 0,(function(){var i;return s(this,(function(o){switch(o.label){case 0:return i=Buffer.alloc(r),[4,new Promise((function(o,a){return n.read(t,i,0,r,e,(function(t){return t?a(t):o()}))}))];case 1:return o.sent(),[2,i]}}))}))},e}(A);t.GrfBrowser=U,t.GrfNode=S,Object.defineProperty(t,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("pako"),require("jdataview"),require("fs")):"function"==typeof define&&define.amd?define(["exports","pako","jdataview","fs"],e):e((t=t||self).GrfLoader={},t.pako,t.jDataview,t.fs);
|
|
17
|
+
//# sourceMappingURL=grf-loader.min.js.map
|