@mistweaverco/kulala-cli 0.7.1 → 0.8.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.
package/dist/cli.cjs CHANGED
@@ -46,7 +46,7 @@ let node_readline = require("node:readline");
46
46
  node_readline = __toESM(node_readline, 1);
47
47
  var package_default = {
48
48
  name: "@mistweaverco/kulala-cli",
49
- version: "0.7.1",
49
+ version: "0.8.1",
50
50
  repository: {
51
51
  "type": "git",
52
52
  "url": "https://github.com/mistweaverco/kulala-cli"
@@ -62,16 +62,19 @@ var package_default = {
62
62
  "postinstall": "node dist/install-backend.cjs || true"
63
63
  },
64
64
  devDependencies: {
65
- "@inquirer/core": "^11.2.1",
65
+ "@inquirer/core": "11.2.1",
66
66
  "@inquirer/select": "4.3.4",
67
- "@inquirer/type": "^4.0.7",
67
+ "@inquirer/type": "4.0.7",
68
68
  "@types/node": "25.9.1",
69
+ "@types/pngjs": "6.0.5",
69
70
  "chalk": "5.6.2",
70
71
  "cli-highlight": "2.1.11",
71
72
  "commander": "15.0.0",
72
73
  "eslint-plugin-prettier": "5.5.6",
73
74
  "globals": "17.6.0",
75
+ "jpeg-js": "0.4.4",
74
76
  "picocolors": "1.1.1",
77
+ "pngjs": "7.0.0",
75
78
  "prettier": "3.8.4",
76
79
  "tsx": "4.22.4",
77
80
  "typescript": "5.9.3",
@@ -3471,7 +3474,7 @@ function fileWalker(inputPath, extensions) {
3471
3474
  }
3472
3475
  //#endregion
3473
3476
  //#region src/versions/backend.ts
3474
- var KULALA_CORE_VERSION = "0.24.1";
3477
+ var KULALA_CORE_VERSION = "0.24.2";
3475
3478
  //#endregion
3476
3479
  //#region src/lib/downloader/index.ts
3477
3480
  var BINARY_NAME = "kulala-core";
@@ -57805,7 +57808,7 @@ var require_foreign_content = /* @__PURE__ */ __commonJSMin(((exports) => {
57805
57808
  }));
57806
57809
  //#endregion
57807
57810
  //#region node_modules/.pnpm/parse5@5.1.1/node_modules/parse5/lib/parser/index.js
57808
- var require_parser = /* @__PURE__ */ __commonJSMin(((exports, module) => {
57811
+ var require_parser$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
57809
57812
  var Tokenizer = require_tokenizer();
57810
57813
  var OpenElementStack = require_open_element_stack();
57811
57814
  var FormattingElementList = require_formatting_element_list();
@@ -59683,7 +59686,7 @@ var require_serializer = /* @__PURE__ */ __commonJSMin(((exports, module) => {
59683
59686
  //#endregion
59684
59687
  //#region node_modules/.pnpm/parse5@5.1.1/node_modules/parse5/lib/index.js
59685
59688
  var require_lib$2 = /* @__PURE__ */ __commonJSMin(((exports) => {
59686
- var Parser = require_parser();
59689
+ var Parser = require_parser$1();
59687
59690
  var Serializer = require_serializer();
59688
59691
  exports.parse = function parse(html, options) {
59689
59692
  return new Parser(options).parse(html);
@@ -62842,18 +62845,3742 @@ function highlightCode(text, language) {
62842
62845
  }
62843
62846
  }
62844
62847
  //#endregion
62848
+ //#region node_modules/.pnpm/jpeg-js@0.4.4/node_modules/jpeg-js/lib/encoder.js
62849
+ var require_encoder = /* @__PURE__ */ __commonJSMin(((exports, module) => {
62850
+ function JPEGEncoder(quality) {
62851
+ var ffloor = Math.floor;
62852
+ var YTable = new Array(64);
62853
+ var UVTable = new Array(64);
62854
+ var fdtbl_Y = new Array(64);
62855
+ var fdtbl_UV = new Array(64);
62856
+ var YDC_HT;
62857
+ var UVDC_HT;
62858
+ var YAC_HT;
62859
+ var UVAC_HT;
62860
+ var bitcode = new Array(65535);
62861
+ var category = new Array(65535);
62862
+ var outputfDCTQuant = new Array(64);
62863
+ var DU = new Array(64);
62864
+ var byteout = [];
62865
+ var bytenew = 0;
62866
+ var bytepos = 7;
62867
+ var YDU = new Array(64);
62868
+ var UDU = new Array(64);
62869
+ var VDU = new Array(64);
62870
+ var clt = new Array(256);
62871
+ var RGB_YUV_TABLE = new Array(2048);
62872
+ var currentQuality;
62873
+ var ZigZag = [
62874
+ 0,
62875
+ 1,
62876
+ 5,
62877
+ 6,
62878
+ 14,
62879
+ 15,
62880
+ 27,
62881
+ 28,
62882
+ 2,
62883
+ 4,
62884
+ 7,
62885
+ 13,
62886
+ 16,
62887
+ 26,
62888
+ 29,
62889
+ 42,
62890
+ 3,
62891
+ 8,
62892
+ 12,
62893
+ 17,
62894
+ 25,
62895
+ 30,
62896
+ 41,
62897
+ 43,
62898
+ 9,
62899
+ 11,
62900
+ 18,
62901
+ 24,
62902
+ 31,
62903
+ 40,
62904
+ 44,
62905
+ 53,
62906
+ 10,
62907
+ 19,
62908
+ 23,
62909
+ 32,
62910
+ 39,
62911
+ 45,
62912
+ 52,
62913
+ 54,
62914
+ 20,
62915
+ 22,
62916
+ 33,
62917
+ 38,
62918
+ 46,
62919
+ 51,
62920
+ 55,
62921
+ 60,
62922
+ 21,
62923
+ 34,
62924
+ 37,
62925
+ 47,
62926
+ 50,
62927
+ 56,
62928
+ 59,
62929
+ 61,
62930
+ 35,
62931
+ 36,
62932
+ 48,
62933
+ 49,
62934
+ 57,
62935
+ 58,
62936
+ 62,
62937
+ 63
62938
+ ];
62939
+ var std_dc_luminance_nrcodes = [
62940
+ 0,
62941
+ 0,
62942
+ 1,
62943
+ 5,
62944
+ 1,
62945
+ 1,
62946
+ 1,
62947
+ 1,
62948
+ 1,
62949
+ 1,
62950
+ 0,
62951
+ 0,
62952
+ 0,
62953
+ 0,
62954
+ 0,
62955
+ 0,
62956
+ 0
62957
+ ];
62958
+ var std_dc_luminance_values = [
62959
+ 0,
62960
+ 1,
62961
+ 2,
62962
+ 3,
62963
+ 4,
62964
+ 5,
62965
+ 6,
62966
+ 7,
62967
+ 8,
62968
+ 9,
62969
+ 10,
62970
+ 11
62971
+ ];
62972
+ var std_ac_luminance_nrcodes = [
62973
+ 0,
62974
+ 0,
62975
+ 2,
62976
+ 1,
62977
+ 3,
62978
+ 3,
62979
+ 2,
62980
+ 4,
62981
+ 3,
62982
+ 5,
62983
+ 5,
62984
+ 4,
62985
+ 4,
62986
+ 0,
62987
+ 0,
62988
+ 1,
62989
+ 125
62990
+ ];
62991
+ var std_ac_luminance_values = [
62992
+ 1,
62993
+ 2,
62994
+ 3,
62995
+ 0,
62996
+ 4,
62997
+ 17,
62998
+ 5,
62999
+ 18,
63000
+ 33,
63001
+ 49,
63002
+ 65,
63003
+ 6,
63004
+ 19,
63005
+ 81,
63006
+ 97,
63007
+ 7,
63008
+ 34,
63009
+ 113,
63010
+ 20,
63011
+ 50,
63012
+ 129,
63013
+ 145,
63014
+ 161,
63015
+ 8,
63016
+ 35,
63017
+ 66,
63018
+ 177,
63019
+ 193,
63020
+ 21,
63021
+ 82,
63022
+ 209,
63023
+ 240,
63024
+ 36,
63025
+ 51,
63026
+ 98,
63027
+ 114,
63028
+ 130,
63029
+ 9,
63030
+ 10,
63031
+ 22,
63032
+ 23,
63033
+ 24,
63034
+ 25,
63035
+ 26,
63036
+ 37,
63037
+ 38,
63038
+ 39,
63039
+ 40,
63040
+ 41,
63041
+ 42,
63042
+ 52,
63043
+ 53,
63044
+ 54,
63045
+ 55,
63046
+ 56,
63047
+ 57,
63048
+ 58,
63049
+ 67,
63050
+ 68,
63051
+ 69,
63052
+ 70,
63053
+ 71,
63054
+ 72,
63055
+ 73,
63056
+ 74,
63057
+ 83,
63058
+ 84,
63059
+ 85,
63060
+ 86,
63061
+ 87,
63062
+ 88,
63063
+ 89,
63064
+ 90,
63065
+ 99,
63066
+ 100,
63067
+ 101,
63068
+ 102,
63069
+ 103,
63070
+ 104,
63071
+ 105,
63072
+ 106,
63073
+ 115,
63074
+ 116,
63075
+ 117,
63076
+ 118,
63077
+ 119,
63078
+ 120,
63079
+ 121,
63080
+ 122,
63081
+ 131,
63082
+ 132,
63083
+ 133,
63084
+ 134,
63085
+ 135,
63086
+ 136,
63087
+ 137,
63088
+ 138,
63089
+ 146,
63090
+ 147,
63091
+ 148,
63092
+ 149,
63093
+ 150,
63094
+ 151,
63095
+ 152,
63096
+ 153,
63097
+ 154,
63098
+ 162,
63099
+ 163,
63100
+ 164,
63101
+ 165,
63102
+ 166,
63103
+ 167,
63104
+ 168,
63105
+ 169,
63106
+ 170,
63107
+ 178,
63108
+ 179,
63109
+ 180,
63110
+ 181,
63111
+ 182,
63112
+ 183,
63113
+ 184,
63114
+ 185,
63115
+ 186,
63116
+ 194,
63117
+ 195,
63118
+ 196,
63119
+ 197,
63120
+ 198,
63121
+ 199,
63122
+ 200,
63123
+ 201,
63124
+ 202,
63125
+ 210,
63126
+ 211,
63127
+ 212,
63128
+ 213,
63129
+ 214,
63130
+ 215,
63131
+ 216,
63132
+ 217,
63133
+ 218,
63134
+ 225,
63135
+ 226,
63136
+ 227,
63137
+ 228,
63138
+ 229,
63139
+ 230,
63140
+ 231,
63141
+ 232,
63142
+ 233,
63143
+ 234,
63144
+ 241,
63145
+ 242,
63146
+ 243,
63147
+ 244,
63148
+ 245,
63149
+ 246,
63150
+ 247,
63151
+ 248,
63152
+ 249,
63153
+ 250
63154
+ ];
63155
+ var std_dc_chrominance_nrcodes = [
63156
+ 0,
63157
+ 0,
63158
+ 3,
63159
+ 1,
63160
+ 1,
63161
+ 1,
63162
+ 1,
63163
+ 1,
63164
+ 1,
63165
+ 1,
63166
+ 1,
63167
+ 1,
63168
+ 0,
63169
+ 0,
63170
+ 0,
63171
+ 0,
63172
+ 0
63173
+ ];
63174
+ var std_dc_chrominance_values = [
63175
+ 0,
63176
+ 1,
63177
+ 2,
63178
+ 3,
63179
+ 4,
63180
+ 5,
63181
+ 6,
63182
+ 7,
63183
+ 8,
63184
+ 9,
63185
+ 10,
63186
+ 11
63187
+ ];
63188
+ var std_ac_chrominance_nrcodes = [
63189
+ 0,
63190
+ 0,
63191
+ 2,
63192
+ 1,
63193
+ 2,
63194
+ 4,
63195
+ 4,
63196
+ 3,
63197
+ 4,
63198
+ 7,
63199
+ 5,
63200
+ 4,
63201
+ 4,
63202
+ 0,
63203
+ 1,
63204
+ 2,
63205
+ 119
63206
+ ];
63207
+ var std_ac_chrominance_values = [
63208
+ 0,
63209
+ 1,
63210
+ 2,
63211
+ 3,
63212
+ 17,
63213
+ 4,
63214
+ 5,
63215
+ 33,
63216
+ 49,
63217
+ 6,
63218
+ 18,
63219
+ 65,
63220
+ 81,
63221
+ 7,
63222
+ 97,
63223
+ 113,
63224
+ 19,
63225
+ 34,
63226
+ 50,
63227
+ 129,
63228
+ 8,
63229
+ 20,
63230
+ 66,
63231
+ 145,
63232
+ 161,
63233
+ 177,
63234
+ 193,
63235
+ 9,
63236
+ 35,
63237
+ 51,
63238
+ 82,
63239
+ 240,
63240
+ 21,
63241
+ 98,
63242
+ 114,
63243
+ 209,
63244
+ 10,
63245
+ 22,
63246
+ 36,
63247
+ 52,
63248
+ 225,
63249
+ 37,
63250
+ 241,
63251
+ 23,
63252
+ 24,
63253
+ 25,
63254
+ 26,
63255
+ 38,
63256
+ 39,
63257
+ 40,
63258
+ 41,
63259
+ 42,
63260
+ 53,
63261
+ 54,
63262
+ 55,
63263
+ 56,
63264
+ 57,
63265
+ 58,
63266
+ 67,
63267
+ 68,
63268
+ 69,
63269
+ 70,
63270
+ 71,
63271
+ 72,
63272
+ 73,
63273
+ 74,
63274
+ 83,
63275
+ 84,
63276
+ 85,
63277
+ 86,
63278
+ 87,
63279
+ 88,
63280
+ 89,
63281
+ 90,
63282
+ 99,
63283
+ 100,
63284
+ 101,
63285
+ 102,
63286
+ 103,
63287
+ 104,
63288
+ 105,
63289
+ 106,
63290
+ 115,
63291
+ 116,
63292
+ 117,
63293
+ 118,
63294
+ 119,
63295
+ 120,
63296
+ 121,
63297
+ 122,
63298
+ 130,
63299
+ 131,
63300
+ 132,
63301
+ 133,
63302
+ 134,
63303
+ 135,
63304
+ 136,
63305
+ 137,
63306
+ 138,
63307
+ 146,
63308
+ 147,
63309
+ 148,
63310
+ 149,
63311
+ 150,
63312
+ 151,
63313
+ 152,
63314
+ 153,
63315
+ 154,
63316
+ 162,
63317
+ 163,
63318
+ 164,
63319
+ 165,
63320
+ 166,
63321
+ 167,
63322
+ 168,
63323
+ 169,
63324
+ 170,
63325
+ 178,
63326
+ 179,
63327
+ 180,
63328
+ 181,
63329
+ 182,
63330
+ 183,
63331
+ 184,
63332
+ 185,
63333
+ 186,
63334
+ 194,
63335
+ 195,
63336
+ 196,
63337
+ 197,
63338
+ 198,
63339
+ 199,
63340
+ 200,
63341
+ 201,
63342
+ 202,
63343
+ 210,
63344
+ 211,
63345
+ 212,
63346
+ 213,
63347
+ 214,
63348
+ 215,
63349
+ 216,
63350
+ 217,
63351
+ 218,
63352
+ 226,
63353
+ 227,
63354
+ 228,
63355
+ 229,
63356
+ 230,
63357
+ 231,
63358
+ 232,
63359
+ 233,
63360
+ 234,
63361
+ 242,
63362
+ 243,
63363
+ 244,
63364
+ 245,
63365
+ 246,
63366
+ 247,
63367
+ 248,
63368
+ 249,
63369
+ 250
63370
+ ];
63371
+ function initQuantTables(sf) {
63372
+ var YQT = [
63373
+ 16,
63374
+ 11,
63375
+ 10,
63376
+ 16,
63377
+ 24,
63378
+ 40,
63379
+ 51,
63380
+ 61,
63381
+ 12,
63382
+ 12,
63383
+ 14,
63384
+ 19,
63385
+ 26,
63386
+ 58,
63387
+ 60,
63388
+ 55,
63389
+ 14,
63390
+ 13,
63391
+ 16,
63392
+ 24,
63393
+ 40,
63394
+ 57,
63395
+ 69,
63396
+ 56,
63397
+ 14,
63398
+ 17,
63399
+ 22,
63400
+ 29,
63401
+ 51,
63402
+ 87,
63403
+ 80,
63404
+ 62,
63405
+ 18,
63406
+ 22,
63407
+ 37,
63408
+ 56,
63409
+ 68,
63410
+ 109,
63411
+ 103,
63412
+ 77,
63413
+ 24,
63414
+ 35,
63415
+ 55,
63416
+ 64,
63417
+ 81,
63418
+ 104,
63419
+ 113,
63420
+ 92,
63421
+ 49,
63422
+ 64,
63423
+ 78,
63424
+ 87,
63425
+ 103,
63426
+ 121,
63427
+ 120,
63428
+ 101,
63429
+ 72,
63430
+ 92,
63431
+ 95,
63432
+ 98,
63433
+ 112,
63434
+ 100,
63435
+ 103,
63436
+ 99
63437
+ ];
63438
+ for (var i = 0; i < 64; i++) {
63439
+ var t = ffloor((YQT[i] * sf + 50) / 100);
63440
+ if (t < 1) t = 1;
63441
+ else if (t > 255) t = 255;
63442
+ YTable[ZigZag[i]] = t;
63443
+ }
63444
+ var UVQT = [
63445
+ 17,
63446
+ 18,
63447
+ 24,
63448
+ 47,
63449
+ 99,
63450
+ 99,
63451
+ 99,
63452
+ 99,
63453
+ 18,
63454
+ 21,
63455
+ 26,
63456
+ 66,
63457
+ 99,
63458
+ 99,
63459
+ 99,
63460
+ 99,
63461
+ 24,
63462
+ 26,
63463
+ 56,
63464
+ 99,
63465
+ 99,
63466
+ 99,
63467
+ 99,
63468
+ 99,
63469
+ 47,
63470
+ 66,
63471
+ 99,
63472
+ 99,
63473
+ 99,
63474
+ 99,
63475
+ 99,
63476
+ 99,
63477
+ 99,
63478
+ 99,
63479
+ 99,
63480
+ 99,
63481
+ 99,
63482
+ 99,
63483
+ 99,
63484
+ 99,
63485
+ 99,
63486
+ 99,
63487
+ 99,
63488
+ 99,
63489
+ 99,
63490
+ 99,
63491
+ 99,
63492
+ 99,
63493
+ 99,
63494
+ 99,
63495
+ 99,
63496
+ 99,
63497
+ 99,
63498
+ 99,
63499
+ 99,
63500
+ 99,
63501
+ 99,
63502
+ 99,
63503
+ 99,
63504
+ 99,
63505
+ 99,
63506
+ 99,
63507
+ 99,
63508
+ 99
63509
+ ];
63510
+ for (var j = 0; j < 64; j++) {
63511
+ var u = ffloor((UVQT[j] * sf + 50) / 100);
63512
+ if (u < 1) u = 1;
63513
+ else if (u > 255) u = 255;
63514
+ UVTable[ZigZag[j]] = u;
63515
+ }
63516
+ var aasf = [
63517
+ 1,
63518
+ 1.387039845,
63519
+ 1.306562965,
63520
+ 1.175875602,
63521
+ 1,
63522
+ .785694958,
63523
+ .5411961,
63524
+ .275899379
63525
+ ];
63526
+ var k = 0;
63527
+ for (var row = 0; row < 8; row++) for (var col = 0; col < 8; col++) {
63528
+ fdtbl_Y[k] = 1 / (YTable[ZigZag[k]] * aasf[row] * aasf[col] * 8);
63529
+ fdtbl_UV[k] = 1 / (UVTable[ZigZag[k]] * aasf[row] * aasf[col] * 8);
63530
+ k++;
63531
+ }
63532
+ }
63533
+ function computeHuffmanTbl(nrcodes, std_table) {
63534
+ var codevalue = 0;
63535
+ var pos_in_table = 0;
63536
+ var HT = new Array();
63537
+ for (var k = 1; k <= 16; k++) {
63538
+ for (var j = 1; j <= nrcodes[k]; j++) {
63539
+ HT[std_table[pos_in_table]] = [];
63540
+ HT[std_table[pos_in_table]][0] = codevalue;
63541
+ HT[std_table[pos_in_table]][1] = k;
63542
+ pos_in_table++;
63543
+ codevalue++;
63544
+ }
63545
+ codevalue *= 2;
63546
+ }
63547
+ return HT;
63548
+ }
63549
+ function initHuffmanTbl() {
63550
+ YDC_HT = computeHuffmanTbl(std_dc_luminance_nrcodes, std_dc_luminance_values);
63551
+ UVDC_HT = computeHuffmanTbl(std_dc_chrominance_nrcodes, std_dc_chrominance_values);
63552
+ YAC_HT = computeHuffmanTbl(std_ac_luminance_nrcodes, std_ac_luminance_values);
63553
+ UVAC_HT = computeHuffmanTbl(std_ac_chrominance_nrcodes, std_ac_chrominance_values);
63554
+ }
63555
+ function initCategoryNumber() {
63556
+ var nrlower = 1;
63557
+ var nrupper = 2;
63558
+ for (var cat = 1; cat <= 15; cat++) {
63559
+ for (var nr = nrlower; nr < nrupper; nr++) {
63560
+ category[32767 + nr] = cat;
63561
+ bitcode[32767 + nr] = [];
63562
+ bitcode[32767 + nr][1] = cat;
63563
+ bitcode[32767 + nr][0] = nr;
63564
+ }
63565
+ for (var nrneg = -(nrupper - 1); nrneg <= -nrlower; nrneg++) {
63566
+ category[32767 + nrneg] = cat;
63567
+ bitcode[32767 + nrneg] = [];
63568
+ bitcode[32767 + nrneg][1] = cat;
63569
+ bitcode[32767 + nrneg][0] = nrupper - 1 + nrneg;
63570
+ }
63571
+ nrlower <<= 1;
63572
+ nrupper <<= 1;
63573
+ }
63574
+ }
63575
+ function initRGBYUVTable() {
63576
+ for (var i = 0; i < 256; i++) {
63577
+ RGB_YUV_TABLE[i] = 19595 * i;
63578
+ RGB_YUV_TABLE[i + 256 >> 0] = 38470 * i;
63579
+ RGB_YUV_TABLE[i + 512 >> 0] = 7471 * i + 32768;
63580
+ RGB_YUV_TABLE[i + 768 >> 0] = -11059 * i;
63581
+ RGB_YUV_TABLE[i + 1024 >> 0] = -21709 * i;
63582
+ RGB_YUV_TABLE[i + 1280 >> 0] = 32768 * i + 8421375;
63583
+ RGB_YUV_TABLE[i + 1536 >> 0] = -27439 * i;
63584
+ RGB_YUV_TABLE[i + 1792 >> 0] = -5329 * i;
63585
+ }
63586
+ }
63587
+ function writeBits(bs) {
63588
+ var value = bs[0];
63589
+ var posval = bs[1] - 1;
63590
+ while (posval >= 0) {
63591
+ if (value & 1 << posval) bytenew |= 1 << bytepos;
63592
+ posval--;
63593
+ bytepos--;
63594
+ if (bytepos < 0) {
63595
+ if (bytenew == 255) {
63596
+ writeByte(255);
63597
+ writeByte(0);
63598
+ } else writeByte(bytenew);
63599
+ bytepos = 7;
63600
+ bytenew = 0;
63601
+ }
63602
+ }
63603
+ }
63604
+ function writeByte(value) {
63605
+ byteout.push(value);
63606
+ }
63607
+ function writeWord(value) {
63608
+ writeByte(value >> 8 & 255);
63609
+ writeByte(value & 255);
63610
+ }
63611
+ function fDCTQuant(data, fdtbl) {
63612
+ var d0, d1, d2, d3, d4, d5, d6, d7;
63613
+ var dataOff = 0;
63614
+ var i;
63615
+ var I8 = 8;
63616
+ var I64 = 64;
63617
+ for (i = 0; i < I8; ++i) {
63618
+ d0 = data[dataOff];
63619
+ d1 = data[dataOff + 1];
63620
+ d2 = data[dataOff + 2];
63621
+ d3 = data[dataOff + 3];
63622
+ d4 = data[dataOff + 4];
63623
+ d5 = data[dataOff + 5];
63624
+ d6 = data[dataOff + 6];
63625
+ d7 = data[dataOff + 7];
63626
+ var tmp0 = d0 + d7;
63627
+ var tmp7 = d0 - d7;
63628
+ var tmp1 = d1 + d6;
63629
+ var tmp6 = d1 - d6;
63630
+ var tmp2 = d2 + d5;
63631
+ var tmp5 = d2 - d5;
63632
+ var tmp3 = d3 + d4;
63633
+ var tmp4 = d3 - d4;
63634
+ var tmp10 = tmp0 + tmp3;
63635
+ var tmp13 = tmp0 - tmp3;
63636
+ var tmp11 = tmp1 + tmp2;
63637
+ var tmp12 = tmp1 - tmp2;
63638
+ data[dataOff] = tmp10 + tmp11;
63639
+ data[dataOff + 4] = tmp10 - tmp11;
63640
+ var z1 = (tmp12 + tmp13) * .707106781;
63641
+ data[dataOff + 2] = tmp13 + z1;
63642
+ data[dataOff + 6] = tmp13 - z1;
63643
+ tmp10 = tmp4 + tmp5;
63644
+ tmp11 = tmp5 + tmp6;
63645
+ tmp12 = tmp6 + tmp7;
63646
+ var z5 = (tmp10 - tmp12) * .382683433;
63647
+ var z2 = .5411961 * tmp10 + z5;
63648
+ var z4 = 1.306562965 * tmp12 + z5;
63649
+ var z3 = tmp11 * .707106781;
63650
+ var z11 = tmp7 + z3;
63651
+ var z13 = tmp7 - z3;
63652
+ data[dataOff + 5] = z13 + z2;
63653
+ data[dataOff + 3] = z13 - z2;
63654
+ data[dataOff + 1] = z11 + z4;
63655
+ data[dataOff + 7] = z11 - z4;
63656
+ dataOff += 8;
63657
+ }
63658
+ dataOff = 0;
63659
+ for (i = 0; i < I8; ++i) {
63660
+ d0 = data[dataOff];
63661
+ d1 = data[dataOff + 8];
63662
+ d2 = data[dataOff + 16];
63663
+ d3 = data[dataOff + 24];
63664
+ d4 = data[dataOff + 32];
63665
+ d5 = data[dataOff + 40];
63666
+ d6 = data[dataOff + 48];
63667
+ d7 = data[dataOff + 56];
63668
+ var tmp0p2 = d0 + d7;
63669
+ var tmp7p2 = d0 - d7;
63670
+ var tmp1p2 = d1 + d6;
63671
+ var tmp6p2 = d1 - d6;
63672
+ var tmp2p2 = d2 + d5;
63673
+ var tmp5p2 = d2 - d5;
63674
+ var tmp3p2 = d3 + d4;
63675
+ var tmp4p2 = d3 - d4;
63676
+ var tmp10p2 = tmp0p2 + tmp3p2;
63677
+ var tmp13p2 = tmp0p2 - tmp3p2;
63678
+ var tmp11p2 = tmp1p2 + tmp2p2;
63679
+ var tmp12p2 = tmp1p2 - tmp2p2;
63680
+ data[dataOff] = tmp10p2 + tmp11p2;
63681
+ data[dataOff + 32] = tmp10p2 - tmp11p2;
63682
+ var z1p2 = (tmp12p2 + tmp13p2) * .707106781;
63683
+ data[dataOff + 16] = tmp13p2 + z1p2;
63684
+ data[dataOff + 48] = tmp13p2 - z1p2;
63685
+ tmp10p2 = tmp4p2 + tmp5p2;
63686
+ tmp11p2 = tmp5p2 + tmp6p2;
63687
+ tmp12p2 = tmp6p2 + tmp7p2;
63688
+ var z5p2 = (tmp10p2 - tmp12p2) * .382683433;
63689
+ var z2p2 = .5411961 * tmp10p2 + z5p2;
63690
+ var z4p2 = 1.306562965 * tmp12p2 + z5p2;
63691
+ var z3p2 = tmp11p2 * .707106781;
63692
+ var z11p2 = tmp7p2 + z3p2;
63693
+ var z13p2 = tmp7p2 - z3p2;
63694
+ data[dataOff + 40] = z13p2 + z2p2;
63695
+ data[dataOff + 24] = z13p2 - z2p2;
63696
+ data[dataOff + 8] = z11p2 + z4p2;
63697
+ data[dataOff + 56] = z11p2 - z4p2;
63698
+ dataOff++;
63699
+ }
63700
+ var fDCTQuant;
63701
+ for (i = 0; i < I64; ++i) {
63702
+ fDCTQuant = data[i] * fdtbl[i];
63703
+ outputfDCTQuant[i] = fDCTQuant > 0 ? fDCTQuant + .5 | 0 : fDCTQuant - .5 | 0;
63704
+ }
63705
+ return outputfDCTQuant;
63706
+ }
63707
+ function writeAPP0() {
63708
+ writeWord(65504);
63709
+ writeWord(16);
63710
+ writeByte(74);
63711
+ writeByte(70);
63712
+ writeByte(73);
63713
+ writeByte(70);
63714
+ writeByte(0);
63715
+ writeByte(1);
63716
+ writeByte(1);
63717
+ writeByte(0);
63718
+ writeWord(1);
63719
+ writeWord(1);
63720
+ writeByte(0);
63721
+ writeByte(0);
63722
+ }
63723
+ function writeAPP1(exifBuffer) {
63724
+ if (!exifBuffer) return;
63725
+ writeWord(65505);
63726
+ if (exifBuffer[0] === 69 && exifBuffer[1] === 120 && exifBuffer[2] === 105 && exifBuffer[3] === 102) writeWord(exifBuffer.length + 2);
63727
+ else {
63728
+ writeWord(exifBuffer.length + 5 + 2);
63729
+ writeByte(69);
63730
+ writeByte(120);
63731
+ writeByte(105);
63732
+ writeByte(102);
63733
+ writeByte(0);
63734
+ }
63735
+ for (var i = 0; i < exifBuffer.length; i++) writeByte(exifBuffer[i]);
63736
+ }
63737
+ function writeSOF0(width, height) {
63738
+ writeWord(65472);
63739
+ writeWord(17);
63740
+ writeByte(8);
63741
+ writeWord(height);
63742
+ writeWord(width);
63743
+ writeByte(3);
63744
+ writeByte(1);
63745
+ writeByte(17);
63746
+ writeByte(0);
63747
+ writeByte(2);
63748
+ writeByte(17);
63749
+ writeByte(1);
63750
+ writeByte(3);
63751
+ writeByte(17);
63752
+ writeByte(1);
63753
+ }
63754
+ function writeDQT() {
63755
+ writeWord(65499);
63756
+ writeWord(132);
63757
+ writeByte(0);
63758
+ for (var i = 0; i < 64; i++) writeByte(YTable[i]);
63759
+ writeByte(1);
63760
+ for (var j = 0; j < 64; j++) writeByte(UVTable[j]);
63761
+ }
63762
+ function writeDHT() {
63763
+ writeWord(65476);
63764
+ writeWord(418);
63765
+ writeByte(0);
63766
+ for (var i = 0; i < 16; i++) writeByte(std_dc_luminance_nrcodes[i + 1]);
63767
+ for (var j = 0; j <= 11; j++) writeByte(std_dc_luminance_values[j]);
63768
+ writeByte(16);
63769
+ for (var k = 0; k < 16; k++) writeByte(std_ac_luminance_nrcodes[k + 1]);
63770
+ for (var l = 0; l <= 161; l++) writeByte(std_ac_luminance_values[l]);
63771
+ writeByte(1);
63772
+ for (var m = 0; m < 16; m++) writeByte(std_dc_chrominance_nrcodes[m + 1]);
63773
+ for (var n = 0; n <= 11; n++) writeByte(std_dc_chrominance_values[n]);
63774
+ writeByte(17);
63775
+ for (var o = 0; o < 16; o++) writeByte(std_ac_chrominance_nrcodes[o + 1]);
63776
+ for (var p = 0; p <= 161; p++) writeByte(std_ac_chrominance_values[p]);
63777
+ }
63778
+ function writeCOM(comments) {
63779
+ if (typeof comments === "undefined" || comments.constructor !== Array) return;
63780
+ comments.forEach((e) => {
63781
+ if (typeof e !== "string") return;
63782
+ writeWord(65534);
63783
+ var l = e.length;
63784
+ writeWord(l + 2);
63785
+ var i;
63786
+ for (i = 0; i < l; i++) writeByte(e.charCodeAt(i));
63787
+ });
63788
+ }
63789
+ function writeSOS() {
63790
+ writeWord(65498);
63791
+ writeWord(12);
63792
+ writeByte(3);
63793
+ writeByte(1);
63794
+ writeByte(0);
63795
+ writeByte(2);
63796
+ writeByte(17);
63797
+ writeByte(3);
63798
+ writeByte(17);
63799
+ writeByte(0);
63800
+ writeByte(63);
63801
+ writeByte(0);
63802
+ }
63803
+ function processDU(CDU, fdtbl, DC, HTDC, HTAC) {
63804
+ var EOB = HTAC[0];
63805
+ var M16zeroes = HTAC[240];
63806
+ var pos;
63807
+ var I16 = 16;
63808
+ var I63 = 63;
63809
+ var I64 = 64;
63810
+ var DU_DCT = fDCTQuant(CDU, fdtbl);
63811
+ for (var j = 0; j < I64; ++j) DU[ZigZag[j]] = DU_DCT[j];
63812
+ var Diff = DU[0] - DC;
63813
+ DC = DU[0];
63814
+ if (Diff == 0) writeBits(HTDC[0]);
63815
+ else {
63816
+ pos = 32767 + Diff;
63817
+ writeBits(HTDC[category[pos]]);
63818
+ writeBits(bitcode[pos]);
63819
+ }
63820
+ var end0pos = 63;
63821
+ for (; end0pos > 0 && DU[end0pos] == 0; end0pos--);
63822
+ if (end0pos == 0) {
63823
+ writeBits(EOB);
63824
+ return DC;
63825
+ }
63826
+ var i = 1;
63827
+ var lng;
63828
+ while (i <= end0pos) {
63829
+ var startpos = i;
63830
+ for (; DU[i] == 0 && i <= end0pos; ++i);
63831
+ var nrzeroes = i - startpos;
63832
+ if (nrzeroes >= I16) {
63833
+ lng = nrzeroes >> 4;
63834
+ for (var nrmarker = 1; nrmarker <= lng; ++nrmarker) writeBits(M16zeroes);
63835
+ nrzeroes = nrzeroes & 15;
63836
+ }
63837
+ pos = 32767 + DU[i];
63838
+ writeBits(HTAC[(nrzeroes << 4) + category[pos]]);
63839
+ writeBits(bitcode[pos]);
63840
+ i++;
63841
+ }
63842
+ if (end0pos != I63) writeBits(EOB);
63843
+ return DC;
63844
+ }
63845
+ function initCharLookupTable() {
63846
+ var sfcc = String.fromCharCode;
63847
+ for (var i = 0; i < 256; i++) clt[i] = sfcc(i);
63848
+ }
63849
+ this.encode = function(image, quality) {
63850
+ (/* @__PURE__ */ new Date()).getTime();
63851
+ if (quality) setQuality(quality);
63852
+ byteout = new Array();
63853
+ bytenew = 0;
63854
+ bytepos = 7;
63855
+ writeWord(65496);
63856
+ writeAPP0();
63857
+ writeCOM(image.comments);
63858
+ writeAPP1(image.exifBuffer);
63859
+ writeDQT();
63860
+ writeSOF0(image.width, image.height);
63861
+ writeDHT();
63862
+ writeSOS();
63863
+ var DCY = 0;
63864
+ var DCU = 0;
63865
+ var DCV = 0;
63866
+ bytenew = 0;
63867
+ bytepos = 7;
63868
+ this.encode.displayName = "_encode_";
63869
+ var imageData = image.data;
63870
+ var width = image.width;
63871
+ var height = image.height;
63872
+ var quadWidth = width * 4;
63873
+ width * 3;
63874
+ var x, y = 0;
63875
+ var r, g, b;
63876
+ var start, p, col, row, pos;
63877
+ while (y < height) {
63878
+ x = 0;
63879
+ while (x < quadWidth) {
63880
+ start = quadWidth * y + x;
63881
+ p = start;
63882
+ col = -1;
63883
+ row = 0;
63884
+ for (pos = 0; pos < 64; pos++) {
63885
+ row = pos >> 3;
63886
+ col = (pos & 7) * 4;
63887
+ p = start + row * quadWidth + col;
63888
+ if (y + row >= height) p -= quadWidth * (y + 1 + row - height);
63889
+ if (x + col >= quadWidth) p -= x + col - quadWidth + 4;
63890
+ r = imageData[p++];
63891
+ g = imageData[p++];
63892
+ b = imageData[p++];
63893
+ YDU[pos] = (RGB_YUV_TABLE[r] + RGB_YUV_TABLE[g + 256 >> 0] + RGB_YUV_TABLE[b + 512 >> 0] >> 16) - 128;
63894
+ UDU[pos] = (RGB_YUV_TABLE[r + 768 >> 0] + RGB_YUV_TABLE[g + 1024 >> 0] + RGB_YUV_TABLE[b + 1280 >> 0] >> 16) - 128;
63895
+ VDU[pos] = (RGB_YUV_TABLE[r + 1280 >> 0] + RGB_YUV_TABLE[g + 1536 >> 0] + RGB_YUV_TABLE[b + 1792 >> 0] >> 16) - 128;
63896
+ }
63897
+ DCY = processDU(YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT);
63898
+ DCU = processDU(UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT);
63899
+ DCV = processDU(VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT);
63900
+ x += 32;
63901
+ }
63902
+ y += 8;
63903
+ }
63904
+ if (bytepos >= 0) {
63905
+ var fillbits = [];
63906
+ fillbits[1] = bytepos + 1;
63907
+ fillbits[0] = (1 << bytepos + 1) - 1;
63908
+ writeBits(fillbits);
63909
+ }
63910
+ writeWord(65497);
63911
+ if (typeof module === "undefined") return new Uint8Array(byteout);
63912
+ return Buffer.from(byteout);
63913
+ };
63914
+ function setQuality(quality) {
63915
+ if (quality <= 0) quality = 1;
63916
+ if (quality > 100) quality = 100;
63917
+ if (currentQuality == quality) return;
63918
+ var sf = 0;
63919
+ if (quality < 50) sf = Math.floor(5e3 / quality);
63920
+ else sf = Math.floor(200 - quality * 2);
63921
+ initQuantTables(sf);
63922
+ currentQuality = quality;
63923
+ }
63924
+ function init() {
63925
+ var time_start = (/* @__PURE__ */ new Date()).getTime();
63926
+ if (!quality) quality = 50;
63927
+ initCharLookupTable();
63928
+ initHuffmanTbl();
63929
+ initCategoryNumber();
63930
+ initRGBYUVTable();
63931
+ setQuality(quality);
63932
+ (/* @__PURE__ */ new Date()).getTime() - time_start;
63933
+ }
63934
+ init();
63935
+ }
63936
+ if (typeof module !== "undefined") module.exports = encode;
63937
+ else if (typeof window !== "undefined") {
63938
+ window["jpeg-js"] = window["jpeg-js"] || {};
63939
+ window["jpeg-js"].encode = encode;
63940
+ }
63941
+ function encode(imgData, qu) {
63942
+ if (typeof qu === "undefined") qu = 50;
63943
+ return {
63944
+ data: new JPEGEncoder(qu).encode(imgData, qu),
63945
+ width: imgData.width,
63946
+ height: imgData.height
63947
+ };
63948
+ }
63949
+ }));
63950
+ //#endregion
63951
+ //#region node_modules/.pnpm/jpeg-js@0.4.4/node_modules/jpeg-js/lib/decoder.js
63952
+ var require_decoder = /* @__PURE__ */ __commonJSMin(((exports, module) => {
63953
+ var JpegImage = (function jpegImage() {
63954
+ "use strict";
63955
+ var dctZigZag = new Int32Array([
63956
+ 0,
63957
+ 1,
63958
+ 8,
63959
+ 16,
63960
+ 9,
63961
+ 2,
63962
+ 3,
63963
+ 10,
63964
+ 17,
63965
+ 24,
63966
+ 32,
63967
+ 25,
63968
+ 18,
63969
+ 11,
63970
+ 4,
63971
+ 5,
63972
+ 12,
63973
+ 19,
63974
+ 26,
63975
+ 33,
63976
+ 40,
63977
+ 48,
63978
+ 41,
63979
+ 34,
63980
+ 27,
63981
+ 20,
63982
+ 13,
63983
+ 6,
63984
+ 7,
63985
+ 14,
63986
+ 21,
63987
+ 28,
63988
+ 35,
63989
+ 42,
63990
+ 49,
63991
+ 56,
63992
+ 57,
63993
+ 50,
63994
+ 43,
63995
+ 36,
63996
+ 29,
63997
+ 22,
63998
+ 15,
63999
+ 23,
64000
+ 30,
64001
+ 37,
64002
+ 44,
64003
+ 51,
64004
+ 58,
64005
+ 59,
64006
+ 52,
64007
+ 45,
64008
+ 38,
64009
+ 31,
64010
+ 39,
64011
+ 46,
64012
+ 53,
64013
+ 60,
64014
+ 61,
64015
+ 54,
64016
+ 47,
64017
+ 55,
64018
+ 62,
64019
+ 63
64020
+ ]);
64021
+ var dctCos1 = 4017;
64022
+ var dctSin1 = 799;
64023
+ var dctCos3 = 3406;
64024
+ var dctSin3 = 2276;
64025
+ var dctCos6 = 1567;
64026
+ var dctSin6 = 3784;
64027
+ var dctSqrt2 = 5793;
64028
+ var dctSqrt1d2 = 2896;
64029
+ function constructor() {}
64030
+ function buildHuffmanTable(codeLengths, values) {
64031
+ var k = 0, code = [], i, j, length = 16;
64032
+ while (length > 0 && !codeLengths[length - 1]) length--;
64033
+ code.push({
64034
+ children: [],
64035
+ index: 0
64036
+ });
64037
+ var p = code[0], q;
64038
+ for (i = 0; i < length; i++) {
64039
+ for (j = 0; j < codeLengths[i]; j++) {
64040
+ p = code.pop();
64041
+ p.children[p.index] = values[k];
64042
+ while (p.index > 0) {
64043
+ if (code.length === 0) throw new Error("Could not recreate Huffman Table");
64044
+ p = code.pop();
64045
+ }
64046
+ p.index++;
64047
+ code.push(p);
64048
+ while (code.length <= i) {
64049
+ code.push(q = {
64050
+ children: [],
64051
+ index: 0
64052
+ });
64053
+ p.children[p.index] = q.children;
64054
+ p = q;
64055
+ }
64056
+ k++;
64057
+ }
64058
+ if (i + 1 < length) {
64059
+ code.push(q = {
64060
+ children: [],
64061
+ index: 0
64062
+ });
64063
+ p.children[p.index] = q.children;
64064
+ p = q;
64065
+ }
64066
+ }
64067
+ return code[0].children;
64068
+ }
64069
+ function decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive, opts) {
64070
+ frame.precision;
64071
+ frame.samplesPerLine;
64072
+ frame.scanLines;
64073
+ var mcusPerLine = frame.mcusPerLine;
64074
+ var progressive = frame.progressive;
64075
+ frame.maxH;
64076
+ frame.maxV;
64077
+ var startOffset = offset, bitsData = 0, bitsCount = 0;
64078
+ function readBit() {
64079
+ if (bitsCount > 0) {
64080
+ bitsCount--;
64081
+ return bitsData >> bitsCount & 1;
64082
+ }
64083
+ bitsData = data[offset++];
64084
+ if (bitsData == 255) {
64085
+ var nextByte = data[offset++];
64086
+ if (nextByte) throw new Error("unexpected marker: " + (bitsData << 8 | nextByte).toString(16));
64087
+ }
64088
+ bitsCount = 7;
64089
+ return bitsData >>> 7;
64090
+ }
64091
+ function decodeHuffman(tree) {
64092
+ var node = tree, bit;
64093
+ while ((bit = readBit()) !== null) {
64094
+ node = node[bit];
64095
+ if (typeof node === "number") return node;
64096
+ if (typeof node !== "object") throw new Error("invalid huffman sequence");
64097
+ }
64098
+ return null;
64099
+ }
64100
+ function receive(length) {
64101
+ var n = 0;
64102
+ while (length > 0) {
64103
+ var bit = readBit();
64104
+ if (bit === null) return;
64105
+ n = n << 1 | bit;
64106
+ length--;
64107
+ }
64108
+ return n;
64109
+ }
64110
+ function receiveAndExtend(length) {
64111
+ var n = receive(length);
64112
+ if (n >= 1 << length - 1) return n;
64113
+ return n + (-1 << length) + 1;
64114
+ }
64115
+ function decodeBaseline(component, zz) {
64116
+ var t = decodeHuffman(component.huffmanTableDC);
64117
+ var diff = t === 0 ? 0 : receiveAndExtend(t);
64118
+ zz[0] = component.pred += diff;
64119
+ var k = 1;
64120
+ while (k < 64) {
64121
+ var rs = decodeHuffman(component.huffmanTableAC);
64122
+ var s = rs & 15, r = rs >> 4;
64123
+ if (s === 0) {
64124
+ if (r < 15) break;
64125
+ k += 16;
64126
+ continue;
64127
+ }
64128
+ k += r;
64129
+ var z = dctZigZag[k];
64130
+ zz[z] = receiveAndExtend(s);
64131
+ k++;
64132
+ }
64133
+ }
64134
+ function decodeDCFirst(component, zz) {
64135
+ var t = decodeHuffman(component.huffmanTableDC);
64136
+ var diff = t === 0 ? 0 : receiveAndExtend(t) << successive;
64137
+ zz[0] = component.pred += diff;
64138
+ }
64139
+ function decodeDCSuccessive(component, zz) {
64140
+ zz[0] |= readBit() << successive;
64141
+ }
64142
+ var eobrun = 0;
64143
+ function decodeACFirst(component, zz) {
64144
+ if (eobrun > 0) {
64145
+ eobrun--;
64146
+ return;
64147
+ }
64148
+ var k = spectralStart, e = spectralEnd;
64149
+ while (k <= e) {
64150
+ var rs = decodeHuffman(component.huffmanTableAC);
64151
+ var s = rs & 15, r = rs >> 4;
64152
+ if (s === 0) {
64153
+ if (r < 15) {
64154
+ eobrun = receive(r) + (1 << r) - 1;
64155
+ break;
64156
+ }
64157
+ k += 16;
64158
+ continue;
64159
+ }
64160
+ k += r;
64161
+ var z = dctZigZag[k];
64162
+ zz[z] = receiveAndExtend(s) * (1 << successive);
64163
+ k++;
64164
+ }
64165
+ }
64166
+ var successiveACState = 0, successiveACNextValue;
64167
+ function decodeACSuccessive(component, zz) {
64168
+ var k = spectralStart, e = spectralEnd, r = 0;
64169
+ while (k <= e) {
64170
+ var z = dctZigZag[k];
64171
+ var direction = zz[z] < 0 ? -1 : 1;
64172
+ switch (successiveACState) {
64173
+ case 0:
64174
+ var rs = decodeHuffman(component.huffmanTableAC);
64175
+ var s = rs & 15, r = rs >> 4;
64176
+ if (s === 0) if (r < 15) {
64177
+ eobrun = receive(r) + (1 << r);
64178
+ successiveACState = 4;
64179
+ } else {
64180
+ r = 16;
64181
+ successiveACState = 1;
64182
+ }
64183
+ else {
64184
+ if (s !== 1) throw new Error("invalid ACn encoding");
64185
+ successiveACNextValue = receiveAndExtend(s);
64186
+ successiveACState = r ? 2 : 3;
64187
+ }
64188
+ continue;
64189
+ case 1:
64190
+ case 2:
64191
+ if (zz[z]) zz[z] += (readBit() << successive) * direction;
64192
+ else {
64193
+ r--;
64194
+ if (r === 0) successiveACState = successiveACState == 2 ? 3 : 0;
64195
+ }
64196
+ break;
64197
+ case 3:
64198
+ if (zz[z]) zz[z] += (readBit() << successive) * direction;
64199
+ else {
64200
+ zz[z] = successiveACNextValue << successive;
64201
+ successiveACState = 0;
64202
+ }
64203
+ break;
64204
+ case 4:
64205
+ if (zz[z]) zz[z] += (readBit() << successive) * direction;
64206
+ break;
64207
+ }
64208
+ k++;
64209
+ }
64210
+ if (successiveACState === 4) {
64211
+ eobrun--;
64212
+ if (eobrun === 0) successiveACState = 0;
64213
+ }
64214
+ }
64215
+ function decodeMcu(component, decode, mcu, row, col) {
64216
+ var mcuRow = mcu / mcusPerLine | 0;
64217
+ var mcuCol = mcu % mcusPerLine;
64218
+ var blockRow = mcuRow * component.v + row;
64219
+ var blockCol = mcuCol * component.h + col;
64220
+ if (component.blocks[blockRow] === void 0 && opts.tolerantDecoding) return;
64221
+ decode(component, component.blocks[blockRow][blockCol]);
64222
+ }
64223
+ function decodeBlock(component, decode, mcu) {
64224
+ var blockRow = mcu / component.blocksPerLine | 0;
64225
+ var blockCol = mcu % component.blocksPerLine;
64226
+ if (component.blocks[blockRow] === void 0 && opts.tolerantDecoding) return;
64227
+ decode(component, component.blocks[blockRow][blockCol]);
64228
+ }
64229
+ var componentsLength = components.length;
64230
+ var component, i, j, k, n;
64231
+ var decodeFn;
64232
+ if (progressive) if (spectralStart === 0) decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;
64233
+ else decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;
64234
+ else decodeFn = decodeBaseline;
64235
+ var mcu = 0, marker;
64236
+ var mcuExpected;
64237
+ if (componentsLength == 1) mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;
64238
+ else mcuExpected = mcusPerLine * frame.mcusPerColumn;
64239
+ if (!resetInterval) resetInterval = mcuExpected;
64240
+ var h, v;
64241
+ while (mcu < mcuExpected) {
64242
+ for (i = 0; i < componentsLength; i++) components[i].pred = 0;
64243
+ eobrun = 0;
64244
+ if (componentsLength == 1) {
64245
+ component = components[0];
64246
+ for (n = 0; n < resetInterval; n++) {
64247
+ decodeBlock(component, decodeFn, mcu);
64248
+ mcu++;
64249
+ }
64250
+ } else for (n = 0; n < resetInterval; n++) {
64251
+ for (i = 0; i < componentsLength; i++) {
64252
+ component = components[i];
64253
+ h = component.h;
64254
+ v = component.v;
64255
+ for (j = 0; j < v; j++) for (k = 0; k < h; k++) decodeMcu(component, decodeFn, mcu, j, k);
64256
+ }
64257
+ mcu++;
64258
+ if (mcu === mcuExpected) break;
64259
+ }
64260
+ if (mcu === mcuExpected) do {
64261
+ if (data[offset] === 255) {
64262
+ if (data[offset + 1] !== 0) break;
64263
+ }
64264
+ offset += 1;
64265
+ } while (offset < data.length - 2);
64266
+ bitsCount = 0;
64267
+ marker = data[offset] << 8 | data[offset + 1];
64268
+ if (marker < 65280) throw new Error("marker was not found");
64269
+ if (marker >= 65488 && marker <= 65495) offset += 2;
64270
+ else break;
64271
+ }
64272
+ return offset - startOffset;
64273
+ }
64274
+ function buildComponentData(frame, component) {
64275
+ var lines = [];
64276
+ var blocksPerLine = component.blocksPerLine;
64277
+ var blocksPerColumn = component.blocksPerColumn;
64278
+ var samplesPerLine = blocksPerLine << 3;
64279
+ var R = new Int32Array(64), r = new Uint8Array(64);
64280
+ function quantizeAndInverse(zz, dataOut, dataIn) {
64281
+ var qt = component.quantizationTable;
64282
+ var v0, v1, v2, v3, v4, v5, v6, v7, t;
64283
+ var p = dataIn;
64284
+ var i;
64285
+ for (i = 0; i < 64; i++) p[i] = zz[i] * qt[i];
64286
+ for (i = 0; i < 8; ++i) {
64287
+ var row = 8 * i;
64288
+ if (p[1 + row] == 0 && p[2 + row] == 0 && p[3 + row] == 0 && p[4 + row] == 0 && p[5 + row] == 0 && p[6 + row] == 0 && p[7 + row] == 0) {
64289
+ t = dctSqrt2 * p[0 + row] + 512 >> 10;
64290
+ p[0 + row] = t;
64291
+ p[1 + row] = t;
64292
+ p[2 + row] = t;
64293
+ p[3 + row] = t;
64294
+ p[4 + row] = t;
64295
+ p[5 + row] = t;
64296
+ p[6 + row] = t;
64297
+ p[7 + row] = t;
64298
+ continue;
64299
+ }
64300
+ v0 = dctSqrt2 * p[0 + row] + 128 >> 8;
64301
+ v1 = dctSqrt2 * p[4 + row] + 128 >> 8;
64302
+ v2 = p[2 + row];
64303
+ v3 = p[6 + row];
64304
+ v4 = dctSqrt1d2 * (p[1 + row] - p[7 + row]) + 128 >> 8;
64305
+ v7 = dctSqrt1d2 * (p[1 + row] + p[7 + row]) + 128 >> 8;
64306
+ v5 = p[3 + row] << 4;
64307
+ v6 = p[5 + row] << 4;
64308
+ t = v0 - v1 + 1 >> 1;
64309
+ v0 = v0 + v1 + 1 >> 1;
64310
+ v1 = t;
64311
+ t = v2 * dctSin6 + v3 * dctCos6 + 128 >> 8;
64312
+ v2 = v2 * dctCos6 - v3 * dctSin6 + 128 >> 8;
64313
+ v3 = t;
64314
+ t = v4 - v6 + 1 >> 1;
64315
+ v4 = v4 + v6 + 1 >> 1;
64316
+ v6 = t;
64317
+ t = v7 + v5 + 1 >> 1;
64318
+ v5 = v7 - v5 + 1 >> 1;
64319
+ v7 = t;
64320
+ t = v0 - v3 + 1 >> 1;
64321
+ v0 = v0 + v3 + 1 >> 1;
64322
+ v3 = t;
64323
+ t = v1 - v2 + 1 >> 1;
64324
+ v1 = v1 + v2 + 1 >> 1;
64325
+ v2 = t;
64326
+ t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;
64327
+ v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;
64328
+ v7 = t;
64329
+ t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;
64330
+ v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;
64331
+ v6 = t;
64332
+ p[0 + row] = v0 + v7;
64333
+ p[7 + row] = v0 - v7;
64334
+ p[1 + row] = v1 + v6;
64335
+ p[6 + row] = v1 - v6;
64336
+ p[2 + row] = v2 + v5;
64337
+ p[5 + row] = v2 - v5;
64338
+ p[3 + row] = v3 + v4;
64339
+ p[4 + row] = v3 - v4;
64340
+ }
64341
+ for (i = 0; i < 8; ++i) {
64342
+ var col = i;
64343
+ if (p[8 + col] == 0 && p[16 + col] == 0 && p[24 + col] == 0 && p[32 + col] == 0 && p[40 + col] == 0 && p[48 + col] == 0 && p[56 + col] == 0) {
64344
+ t = dctSqrt2 * dataIn[i + 0] + 8192 >> 14;
64345
+ p[0 + col] = t;
64346
+ p[8 + col] = t;
64347
+ p[16 + col] = t;
64348
+ p[24 + col] = t;
64349
+ p[32 + col] = t;
64350
+ p[40 + col] = t;
64351
+ p[48 + col] = t;
64352
+ p[56 + col] = t;
64353
+ continue;
64354
+ }
64355
+ v0 = dctSqrt2 * p[0 + col] + 2048 >> 12;
64356
+ v1 = dctSqrt2 * p[32 + col] + 2048 >> 12;
64357
+ v2 = p[16 + col];
64358
+ v3 = p[48 + col];
64359
+ v4 = dctSqrt1d2 * (p[8 + col] - p[56 + col]) + 2048 >> 12;
64360
+ v7 = dctSqrt1d2 * (p[8 + col] + p[56 + col]) + 2048 >> 12;
64361
+ v5 = p[24 + col];
64362
+ v6 = p[40 + col];
64363
+ t = v0 - v1 + 1 >> 1;
64364
+ v0 = v0 + v1 + 1 >> 1;
64365
+ v1 = t;
64366
+ t = v2 * dctSin6 + v3 * dctCos6 + 2048 >> 12;
64367
+ v2 = v2 * dctCos6 - v3 * dctSin6 + 2048 >> 12;
64368
+ v3 = t;
64369
+ t = v4 - v6 + 1 >> 1;
64370
+ v4 = v4 + v6 + 1 >> 1;
64371
+ v6 = t;
64372
+ t = v7 + v5 + 1 >> 1;
64373
+ v5 = v7 - v5 + 1 >> 1;
64374
+ v7 = t;
64375
+ t = v0 - v3 + 1 >> 1;
64376
+ v0 = v0 + v3 + 1 >> 1;
64377
+ v3 = t;
64378
+ t = v1 - v2 + 1 >> 1;
64379
+ v1 = v1 + v2 + 1 >> 1;
64380
+ v2 = t;
64381
+ t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;
64382
+ v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;
64383
+ v7 = t;
64384
+ t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;
64385
+ v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;
64386
+ v6 = t;
64387
+ p[0 + col] = v0 + v7;
64388
+ p[56 + col] = v0 - v7;
64389
+ p[8 + col] = v1 + v6;
64390
+ p[48 + col] = v1 - v6;
64391
+ p[16 + col] = v2 + v5;
64392
+ p[40 + col] = v2 - v5;
64393
+ p[24 + col] = v3 + v4;
64394
+ p[32 + col] = v3 - v4;
64395
+ }
64396
+ for (i = 0; i < 64; ++i) {
64397
+ var sample = 128 + (p[i] + 8 >> 4);
64398
+ dataOut[i] = sample < 0 ? 0 : sample > 255 ? 255 : sample;
64399
+ }
64400
+ }
64401
+ requestMemoryAllocation(samplesPerLine * blocksPerColumn * 8);
64402
+ var i, j;
64403
+ for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {
64404
+ var scanLine = blockRow << 3;
64405
+ for (i = 0; i < 8; i++) lines.push(new Uint8Array(samplesPerLine));
64406
+ for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {
64407
+ quantizeAndInverse(component.blocks[blockRow][blockCol], r, R);
64408
+ var offset = 0, sample = blockCol << 3;
64409
+ for (j = 0; j < 8; j++) {
64410
+ var line = lines[scanLine + j];
64411
+ for (i = 0; i < 8; i++) line[sample + i] = r[offset++];
64412
+ }
64413
+ }
64414
+ }
64415
+ return lines;
64416
+ }
64417
+ function clampTo8bit(a) {
64418
+ return a < 0 ? 0 : a > 255 ? 255 : a;
64419
+ }
64420
+ constructor.prototype = {
64421
+ load: function load(path) {
64422
+ var xhr = new XMLHttpRequest();
64423
+ xhr.open("GET", path, true);
64424
+ xhr.responseType = "arraybuffer";
64425
+ xhr.onload = (function() {
64426
+ var data = new Uint8Array(xhr.response || xhr.mozResponseArrayBuffer);
64427
+ this.parse(data);
64428
+ if (this.onload) this.onload();
64429
+ }).bind(this);
64430
+ xhr.send(null);
64431
+ },
64432
+ parse: function parse(data) {
64433
+ var maxResolutionInPixels = this.opts.maxResolutionInMP * 1e3 * 1e3, offset = 0;
64434
+ data.length;
64435
+ function readUint16() {
64436
+ var value = data[offset] << 8 | data[offset + 1];
64437
+ offset += 2;
64438
+ return value;
64439
+ }
64440
+ function readDataBlock() {
64441
+ var length = readUint16();
64442
+ var array = data.subarray(offset, offset + length - 2);
64443
+ offset += array.length;
64444
+ return array;
64445
+ }
64446
+ function prepareComponents(frame) {
64447
+ var maxH = 1, maxV = 1;
64448
+ var component, componentId;
64449
+ for (componentId in frame.components) if (frame.components.hasOwnProperty(componentId)) {
64450
+ component = frame.components[componentId];
64451
+ if (maxH < component.h) maxH = component.h;
64452
+ if (maxV < component.v) maxV = component.v;
64453
+ }
64454
+ var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / maxH);
64455
+ var mcusPerColumn = Math.ceil(frame.scanLines / 8 / maxV);
64456
+ for (componentId in frame.components) if (frame.components.hasOwnProperty(componentId)) {
64457
+ component = frame.components[componentId];
64458
+ var blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / maxH);
64459
+ var blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / maxV);
64460
+ var blocksPerLineForMcu = mcusPerLine * component.h;
64461
+ var blocksPerColumnForMcu = mcusPerColumn * component.v;
64462
+ var blocksToAllocate = blocksPerColumnForMcu * blocksPerLineForMcu;
64463
+ var blocks = [];
64464
+ requestMemoryAllocation(blocksToAllocate * 256);
64465
+ for (var i = 0; i < blocksPerColumnForMcu; i++) {
64466
+ var row = [];
64467
+ for (var j = 0; j < blocksPerLineForMcu; j++) row.push(new Int32Array(64));
64468
+ blocks.push(row);
64469
+ }
64470
+ component.blocksPerLine = blocksPerLine;
64471
+ component.blocksPerColumn = blocksPerColumn;
64472
+ component.blocks = blocks;
64473
+ }
64474
+ frame.maxH = maxH;
64475
+ frame.maxV = maxV;
64476
+ frame.mcusPerLine = mcusPerLine;
64477
+ frame.mcusPerColumn = mcusPerColumn;
64478
+ }
64479
+ var jfif = null;
64480
+ var adobe = null;
64481
+ var frame, resetInterval;
64482
+ var quantizationTables = [], frames = [];
64483
+ var huffmanTablesAC = [], huffmanTablesDC = [];
64484
+ var fileMarker = readUint16();
64485
+ var malformedDataOffset = -1;
64486
+ this.comments = [];
64487
+ if (fileMarker != 65496) throw new Error("SOI not found");
64488
+ fileMarker = readUint16();
64489
+ while (fileMarker != 65497) {
64490
+ var i, j;
64491
+ switch (fileMarker) {
64492
+ case 65280: break;
64493
+ case 65504:
64494
+ case 65505:
64495
+ case 65506:
64496
+ case 65507:
64497
+ case 65508:
64498
+ case 65509:
64499
+ case 65510:
64500
+ case 65511:
64501
+ case 65512:
64502
+ case 65513:
64503
+ case 65514:
64504
+ case 65515:
64505
+ case 65516:
64506
+ case 65517:
64507
+ case 65518:
64508
+ case 65519:
64509
+ case 65534:
64510
+ var appData = readDataBlock();
64511
+ if (fileMarker === 65534) {
64512
+ var comment = String.fromCharCode.apply(null, appData);
64513
+ this.comments.push(comment);
64514
+ }
64515
+ if (fileMarker === 65504) {
64516
+ if (appData[0] === 74 && appData[1] === 70 && appData[2] === 73 && appData[3] === 70 && appData[4] === 0) jfif = {
64517
+ version: {
64518
+ major: appData[5],
64519
+ minor: appData[6]
64520
+ },
64521
+ densityUnits: appData[7],
64522
+ xDensity: appData[8] << 8 | appData[9],
64523
+ yDensity: appData[10] << 8 | appData[11],
64524
+ thumbWidth: appData[12],
64525
+ thumbHeight: appData[13],
64526
+ thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13])
64527
+ };
64528
+ }
64529
+ if (fileMarker === 65505) {
64530
+ if (appData[0] === 69 && appData[1] === 120 && appData[2] === 105 && appData[3] === 102 && appData[4] === 0) this.exifBuffer = appData.subarray(5, appData.length);
64531
+ }
64532
+ if (fileMarker === 65518) {
64533
+ if (appData[0] === 65 && appData[1] === 100 && appData[2] === 111 && appData[3] === 98 && appData[4] === 101 && appData[5] === 0) adobe = {
64534
+ version: appData[6],
64535
+ flags0: appData[7] << 8 | appData[8],
64536
+ flags1: appData[9] << 8 | appData[10],
64537
+ transformCode: appData[11]
64538
+ };
64539
+ }
64540
+ break;
64541
+ case 65499:
64542
+ var quantizationTablesEnd = readUint16() + offset - 2;
64543
+ while (offset < quantizationTablesEnd) {
64544
+ var quantizationTableSpec = data[offset++];
64545
+ requestMemoryAllocation(256);
64546
+ var tableData = new Int32Array(64);
64547
+ if (quantizationTableSpec >> 4 === 0) for (j = 0; j < 64; j++) {
64548
+ var z = dctZigZag[j];
64549
+ tableData[z] = data[offset++];
64550
+ }
64551
+ else if (quantizationTableSpec >> 4 === 1) for (j = 0; j < 64; j++) {
64552
+ var z = dctZigZag[j];
64553
+ tableData[z] = readUint16();
64554
+ }
64555
+ else throw new Error("DQT: invalid table spec");
64556
+ quantizationTables[quantizationTableSpec & 15] = tableData;
64557
+ }
64558
+ break;
64559
+ case 65472:
64560
+ case 65473:
64561
+ case 65474:
64562
+ readUint16();
64563
+ frame = {};
64564
+ frame.extended = fileMarker === 65473;
64565
+ frame.progressive = fileMarker === 65474;
64566
+ frame.precision = data[offset++];
64567
+ frame.scanLines = readUint16();
64568
+ frame.samplesPerLine = readUint16();
64569
+ frame.components = {};
64570
+ frame.componentsOrder = [];
64571
+ var pixelsInFrame = frame.scanLines * frame.samplesPerLine;
64572
+ if (pixelsInFrame > maxResolutionInPixels) {
64573
+ var exceededAmount = Math.ceil((pixelsInFrame - maxResolutionInPixels) / 1e6);
64574
+ throw new Error(`maxResolutionInMP limit exceeded by ${exceededAmount}MP`);
64575
+ }
64576
+ var componentsCount = data[offset++], componentId;
64577
+ for (i = 0; i < componentsCount; i++) {
64578
+ componentId = data[offset];
64579
+ var h = data[offset + 1] >> 4;
64580
+ var v = data[offset + 1] & 15;
64581
+ var qId = data[offset + 2];
64582
+ if (h <= 0 || v <= 0) throw new Error("Invalid sampling factor, expected values above 0");
64583
+ frame.componentsOrder.push(componentId);
64584
+ frame.components[componentId] = {
64585
+ h,
64586
+ v,
64587
+ quantizationIdx: qId
64588
+ };
64589
+ offset += 3;
64590
+ }
64591
+ prepareComponents(frame);
64592
+ frames.push(frame);
64593
+ break;
64594
+ case 65476:
64595
+ var huffmanLength = readUint16();
64596
+ for (i = 2; i < huffmanLength;) {
64597
+ var huffmanTableSpec = data[offset++];
64598
+ var codeLengths = new Uint8Array(16);
64599
+ var codeLengthSum = 0;
64600
+ for (j = 0; j < 16; j++, offset++) codeLengthSum += codeLengths[j] = data[offset];
64601
+ requestMemoryAllocation(16 + codeLengthSum);
64602
+ var huffmanValues = new Uint8Array(codeLengthSum);
64603
+ for (j = 0; j < codeLengthSum; j++, offset++) huffmanValues[j] = data[offset];
64604
+ i += 17 + codeLengthSum;
64605
+ (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues);
64606
+ }
64607
+ break;
64608
+ case 65501:
64609
+ readUint16();
64610
+ resetInterval = readUint16();
64611
+ break;
64612
+ case 65500:
64613
+ readUint16();
64614
+ readUint16();
64615
+ break;
64616
+ case 65498:
64617
+ readUint16();
64618
+ var selectorsCount = data[offset++];
64619
+ var components = [], component;
64620
+ for (i = 0; i < selectorsCount; i++) {
64621
+ component = frame.components[data[offset++]];
64622
+ var tableSpec = data[offset++];
64623
+ component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];
64624
+ component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];
64625
+ components.push(component);
64626
+ }
64627
+ var spectralStart = data[offset++];
64628
+ var spectralEnd = data[offset++];
64629
+ var successiveApproximation = data[offset++];
64630
+ var processed = decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, this.opts);
64631
+ offset += processed;
64632
+ break;
64633
+ case 65535:
64634
+ if (data[offset] !== 255) offset--;
64635
+ break;
64636
+ default:
64637
+ if (data[offset - 3] == 255 && data[offset - 2] >= 192 && data[offset - 2] <= 254) {
64638
+ offset -= 3;
64639
+ break;
64640
+ } else if (fileMarker === 224 || fileMarker == 225) {
64641
+ if (malformedDataOffset !== -1) throw new Error(`first unknown JPEG marker at offset ${malformedDataOffset.toString(16)}, second unknown JPEG marker ${fileMarker.toString(16)} at offset ${(offset - 1).toString(16)}`);
64642
+ malformedDataOffset = offset - 1;
64643
+ const nextOffset = readUint16();
64644
+ if (data[offset + nextOffset - 2] === 255) {
64645
+ offset += nextOffset - 2;
64646
+ break;
64647
+ }
64648
+ }
64649
+ throw new Error("unknown JPEG marker " + fileMarker.toString(16));
64650
+ }
64651
+ fileMarker = readUint16();
64652
+ }
64653
+ if (frames.length != 1) throw new Error("only single frame JPEGs supported");
64654
+ for (var i = 0; i < frames.length; i++) {
64655
+ var cp = frames[i].components;
64656
+ for (var j in cp) {
64657
+ cp[j].quantizationTable = quantizationTables[cp[j].quantizationIdx];
64658
+ delete cp[j].quantizationIdx;
64659
+ }
64660
+ }
64661
+ this.width = frame.samplesPerLine;
64662
+ this.height = frame.scanLines;
64663
+ this.jfif = jfif;
64664
+ this.adobe = adobe;
64665
+ this.components = [];
64666
+ for (var i = 0; i < frame.componentsOrder.length; i++) {
64667
+ var component = frame.components[frame.componentsOrder[i]];
64668
+ this.components.push({
64669
+ lines: buildComponentData(frame, component),
64670
+ scaleX: component.h / frame.maxH,
64671
+ scaleY: component.v / frame.maxV
64672
+ });
64673
+ }
64674
+ },
64675
+ getData: function getData(width, height) {
64676
+ var scaleX = this.width / width, scaleY = this.height / height;
64677
+ var component1, component2, component3, component4;
64678
+ var component1Line, component2Line, component3Line, component4Line;
64679
+ var x, y;
64680
+ var offset = 0;
64681
+ var Y, Cb, Cr, K, C, M, Ye, R, G, B;
64682
+ var colorTransform;
64683
+ var dataLength = width * height * this.components.length;
64684
+ requestMemoryAllocation(dataLength);
64685
+ var data = new Uint8Array(dataLength);
64686
+ switch (this.components.length) {
64687
+ case 1:
64688
+ component1 = this.components[0];
64689
+ for (y = 0; y < height; y++) {
64690
+ component1Line = component1.lines[0 | y * component1.scaleY * scaleY];
64691
+ for (x = 0; x < width; x++) {
64692
+ Y = component1Line[0 | x * component1.scaleX * scaleX];
64693
+ data[offset++] = Y;
64694
+ }
64695
+ }
64696
+ break;
64697
+ case 2:
64698
+ component1 = this.components[0];
64699
+ component2 = this.components[1];
64700
+ for (y = 0; y < height; y++) {
64701
+ component1Line = component1.lines[0 | y * component1.scaleY * scaleY];
64702
+ component2Line = component2.lines[0 | y * component2.scaleY * scaleY];
64703
+ for (x = 0; x < width; x++) {
64704
+ Y = component1Line[0 | x * component1.scaleX * scaleX];
64705
+ data[offset++] = Y;
64706
+ Y = component2Line[0 | x * component2.scaleX * scaleX];
64707
+ data[offset++] = Y;
64708
+ }
64709
+ }
64710
+ break;
64711
+ case 3:
64712
+ colorTransform = true;
64713
+ if (this.adobe && this.adobe.transformCode) colorTransform = true;
64714
+ else if (typeof this.opts.colorTransform !== "undefined") colorTransform = !!this.opts.colorTransform;
64715
+ component1 = this.components[0];
64716
+ component2 = this.components[1];
64717
+ component3 = this.components[2];
64718
+ for (y = 0; y < height; y++) {
64719
+ component1Line = component1.lines[0 | y * component1.scaleY * scaleY];
64720
+ component2Line = component2.lines[0 | y * component2.scaleY * scaleY];
64721
+ component3Line = component3.lines[0 | y * component3.scaleY * scaleY];
64722
+ for (x = 0; x < width; x++) {
64723
+ if (!colorTransform) {
64724
+ R = component1Line[0 | x * component1.scaleX * scaleX];
64725
+ G = component2Line[0 | x * component2.scaleX * scaleX];
64726
+ B = component3Line[0 | x * component3.scaleX * scaleX];
64727
+ } else {
64728
+ Y = component1Line[0 | x * component1.scaleX * scaleX];
64729
+ Cb = component2Line[0 | x * component2.scaleX * scaleX];
64730
+ Cr = component3Line[0 | x * component3.scaleX * scaleX];
64731
+ R = clampTo8bit(Y + 1.402 * (Cr - 128));
64732
+ G = clampTo8bit(Y - .3441363 * (Cb - 128) - .71413636 * (Cr - 128));
64733
+ B = clampTo8bit(Y + 1.772 * (Cb - 128));
64734
+ }
64735
+ data[offset++] = R;
64736
+ data[offset++] = G;
64737
+ data[offset++] = B;
64738
+ }
64739
+ }
64740
+ break;
64741
+ case 4:
64742
+ if (!this.adobe) throw new Error("Unsupported color mode (4 components)");
64743
+ colorTransform = false;
64744
+ if (this.adobe && this.adobe.transformCode) colorTransform = true;
64745
+ else if (typeof this.opts.colorTransform !== "undefined") colorTransform = !!this.opts.colorTransform;
64746
+ component1 = this.components[0];
64747
+ component2 = this.components[1];
64748
+ component3 = this.components[2];
64749
+ component4 = this.components[3];
64750
+ for (y = 0; y < height; y++) {
64751
+ component1Line = component1.lines[0 | y * component1.scaleY * scaleY];
64752
+ component2Line = component2.lines[0 | y * component2.scaleY * scaleY];
64753
+ component3Line = component3.lines[0 | y * component3.scaleY * scaleY];
64754
+ component4Line = component4.lines[0 | y * component4.scaleY * scaleY];
64755
+ for (x = 0; x < width; x++) {
64756
+ if (!colorTransform) {
64757
+ C = component1Line[0 | x * component1.scaleX * scaleX];
64758
+ M = component2Line[0 | x * component2.scaleX * scaleX];
64759
+ Ye = component3Line[0 | x * component3.scaleX * scaleX];
64760
+ K = component4Line[0 | x * component4.scaleX * scaleX];
64761
+ } else {
64762
+ Y = component1Line[0 | x * component1.scaleX * scaleX];
64763
+ Cb = component2Line[0 | x * component2.scaleX * scaleX];
64764
+ Cr = component3Line[0 | x * component3.scaleX * scaleX];
64765
+ K = component4Line[0 | x * component4.scaleX * scaleX];
64766
+ C = 255 - clampTo8bit(Y + 1.402 * (Cr - 128));
64767
+ M = 255 - clampTo8bit(Y - .3441363 * (Cb - 128) - .71413636 * (Cr - 128));
64768
+ Ye = 255 - clampTo8bit(Y + 1.772 * (Cb - 128));
64769
+ }
64770
+ data[offset++] = 255 - C;
64771
+ data[offset++] = 255 - M;
64772
+ data[offset++] = 255 - Ye;
64773
+ data[offset++] = 255 - K;
64774
+ }
64775
+ }
64776
+ break;
64777
+ default: throw new Error("Unsupported color mode");
64778
+ }
64779
+ return data;
64780
+ },
64781
+ copyToImageData: function copyToImageData(imageData, formatAsRGBA) {
64782
+ var width = imageData.width, height = imageData.height;
64783
+ var imageDataArray = imageData.data;
64784
+ var data = this.getData(width, height);
64785
+ var i = 0, j = 0, x, y;
64786
+ var Y, K, C, M, R, G, B;
64787
+ switch (this.components.length) {
64788
+ case 1:
64789
+ for (y = 0; y < height; y++) for (x = 0; x < width; x++) {
64790
+ Y = data[i++];
64791
+ imageDataArray[j++] = Y;
64792
+ imageDataArray[j++] = Y;
64793
+ imageDataArray[j++] = Y;
64794
+ if (formatAsRGBA) imageDataArray[j++] = 255;
64795
+ }
64796
+ break;
64797
+ case 3:
64798
+ for (y = 0; y < height; y++) for (x = 0; x < width; x++) {
64799
+ R = data[i++];
64800
+ G = data[i++];
64801
+ B = data[i++];
64802
+ imageDataArray[j++] = R;
64803
+ imageDataArray[j++] = G;
64804
+ imageDataArray[j++] = B;
64805
+ if (formatAsRGBA) imageDataArray[j++] = 255;
64806
+ }
64807
+ break;
64808
+ case 4:
64809
+ for (y = 0; y < height; y++) for (x = 0; x < width; x++) {
64810
+ C = data[i++];
64811
+ M = data[i++];
64812
+ Y = data[i++];
64813
+ K = data[i++];
64814
+ R = 255 - clampTo8bit(C * (1 - K / 255) + K);
64815
+ G = 255 - clampTo8bit(M * (1 - K / 255) + K);
64816
+ B = 255 - clampTo8bit(Y * (1 - K / 255) + K);
64817
+ imageDataArray[j++] = R;
64818
+ imageDataArray[j++] = G;
64819
+ imageDataArray[j++] = B;
64820
+ if (formatAsRGBA) imageDataArray[j++] = 255;
64821
+ }
64822
+ break;
64823
+ default: throw new Error("Unsupported color mode");
64824
+ }
64825
+ }
64826
+ };
64827
+ var totalBytesAllocated = 0;
64828
+ var maxMemoryUsageBytes = 0;
64829
+ function requestMemoryAllocation(increaseAmount = 0) {
64830
+ var totalMemoryImpactBytes = totalBytesAllocated + increaseAmount;
64831
+ if (totalMemoryImpactBytes > maxMemoryUsageBytes) {
64832
+ var exceededAmount = Math.ceil((totalMemoryImpactBytes - maxMemoryUsageBytes) / 1024 / 1024);
64833
+ throw new Error(`maxMemoryUsageInMB limit exceeded by at least ${exceededAmount}MB`);
64834
+ }
64835
+ totalBytesAllocated = totalMemoryImpactBytes;
64836
+ }
64837
+ constructor.resetMaxMemoryUsage = function(maxMemoryUsageBytes_) {
64838
+ totalBytesAllocated = 0;
64839
+ maxMemoryUsageBytes = maxMemoryUsageBytes_;
64840
+ };
64841
+ constructor.getBytesAllocated = function() {
64842
+ return totalBytesAllocated;
64843
+ };
64844
+ constructor.requestMemoryAllocation = requestMemoryAllocation;
64845
+ return constructor;
64846
+ })();
64847
+ if (typeof module !== "undefined") module.exports = decode;
64848
+ else if (typeof window !== "undefined") {
64849
+ window["jpeg-js"] = window["jpeg-js"] || {};
64850
+ window["jpeg-js"].decode = decode;
64851
+ }
64852
+ function decode(jpegData, userOpts = {}) {
64853
+ var opts = {
64854
+ colorTransform: void 0,
64855
+ useTArray: false,
64856
+ formatAsRGBA: true,
64857
+ tolerantDecoding: true,
64858
+ maxResolutionInMP: 100,
64859
+ maxMemoryUsageInMB: 512,
64860
+ ...userOpts
64861
+ };
64862
+ var arr = new Uint8Array(jpegData);
64863
+ var decoder = new JpegImage();
64864
+ decoder.opts = opts;
64865
+ JpegImage.resetMaxMemoryUsage(opts.maxMemoryUsageInMB * 1024 * 1024);
64866
+ decoder.parse(arr);
64867
+ var channels = opts.formatAsRGBA ? 4 : 3;
64868
+ var bytesNeeded = decoder.width * decoder.height * channels;
64869
+ try {
64870
+ JpegImage.requestMemoryAllocation(bytesNeeded);
64871
+ var image = {
64872
+ width: decoder.width,
64873
+ height: decoder.height,
64874
+ exifBuffer: decoder.exifBuffer,
64875
+ data: opts.useTArray ? new Uint8Array(bytesNeeded) : Buffer.alloc(bytesNeeded)
64876
+ };
64877
+ if (decoder.comments.length > 0) image["comments"] = decoder.comments;
64878
+ } catch (err) {
64879
+ if (err instanceof RangeError) throw new Error("Could not allocate enough memory for the image. Required: " + bytesNeeded);
64880
+ if (err instanceof ReferenceError) {
64881
+ if (err.message === "Buffer is not defined") throw new Error("Buffer is not globally defined in this environment. Consider setting useTArray to true");
64882
+ }
64883
+ throw err;
64884
+ }
64885
+ decoder.copyToImageData(image, opts.formatAsRGBA);
64886
+ return image;
64887
+ }
64888
+ }));
64889
+ //#endregion
64890
+ //#region node_modules/.pnpm/jpeg-js@0.4.4/node_modules/jpeg-js/index.js
64891
+ var require_jpeg_js = /* @__PURE__ */ __commonJSMin(((exports, module) => {
64892
+ module.exports = {
64893
+ encode: require_encoder(),
64894
+ decode: require_decoder()
64895
+ };
64896
+ }));
64897
+ //#endregion
64898
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/chunkstream.js
64899
+ var require_chunkstream = /* @__PURE__ */ __commonJSMin(((exports, module) => {
64900
+ var util$5 = require("util");
64901
+ var Stream$3 = require("stream");
64902
+ var ChunkStream = module.exports = function() {
64903
+ Stream$3.call(this);
64904
+ this._buffers = [];
64905
+ this._buffered = 0;
64906
+ this._reads = [];
64907
+ this._paused = false;
64908
+ this._encoding = "utf8";
64909
+ this.writable = true;
64910
+ };
64911
+ util$5.inherits(ChunkStream, Stream$3);
64912
+ ChunkStream.prototype.read = function(length, callback) {
64913
+ this._reads.push({
64914
+ length: Math.abs(length),
64915
+ allowLess: length < 0,
64916
+ func: callback
64917
+ });
64918
+ process.nextTick(function() {
64919
+ this._process();
64920
+ if (this._paused && this._reads && this._reads.length > 0) {
64921
+ this._paused = false;
64922
+ this.emit("drain");
64923
+ }
64924
+ }.bind(this));
64925
+ };
64926
+ ChunkStream.prototype.write = function(data, encoding) {
64927
+ if (!this.writable) {
64928
+ this.emit("error", /* @__PURE__ */ new Error("Stream not writable"));
64929
+ return false;
64930
+ }
64931
+ let dataBuffer;
64932
+ if (Buffer.isBuffer(data)) dataBuffer = data;
64933
+ else dataBuffer = Buffer.from(data, encoding || this._encoding);
64934
+ this._buffers.push(dataBuffer);
64935
+ this._buffered += dataBuffer.length;
64936
+ this._process();
64937
+ if (this._reads && this._reads.length === 0) this._paused = true;
64938
+ return this.writable && !this._paused;
64939
+ };
64940
+ ChunkStream.prototype.end = function(data, encoding) {
64941
+ if (data) this.write(data, encoding);
64942
+ this.writable = false;
64943
+ if (!this._buffers) return;
64944
+ if (this._buffers.length === 0) this._end();
64945
+ else {
64946
+ this._buffers.push(null);
64947
+ this._process();
64948
+ }
64949
+ };
64950
+ ChunkStream.prototype.destroySoon = ChunkStream.prototype.end;
64951
+ ChunkStream.prototype._end = function() {
64952
+ if (this._reads.length > 0) this.emit("error", /* @__PURE__ */ new Error("Unexpected end of input"));
64953
+ this.destroy();
64954
+ };
64955
+ ChunkStream.prototype.destroy = function() {
64956
+ if (!this._buffers) return;
64957
+ this.writable = false;
64958
+ this._reads = null;
64959
+ this._buffers = null;
64960
+ this.emit("close");
64961
+ };
64962
+ ChunkStream.prototype._processReadAllowingLess = function(read) {
64963
+ this._reads.shift();
64964
+ let smallerBuf = this._buffers[0];
64965
+ if (smallerBuf.length > read.length) {
64966
+ this._buffered -= read.length;
64967
+ this._buffers[0] = smallerBuf.slice(read.length);
64968
+ read.func.call(this, smallerBuf.slice(0, read.length));
64969
+ } else {
64970
+ this._buffered -= smallerBuf.length;
64971
+ this._buffers.shift();
64972
+ read.func.call(this, smallerBuf);
64973
+ }
64974
+ };
64975
+ ChunkStream.prototype._processRead = function(read) {
64976
+ this._reads.shift();
64977
+ let pos = 0;
64978
+ let count = 0;
64979
+ let data = Buffer.alloc(read.length);
64980
+ while (pos < read.length) {
64981
+ let buf = this._buffers[count++];
64982
+ let len = Math.min(buf.length, read.length - pos);
64983
+ buf.copy(data, pos, 0, len);
64984
+ pos += len;
64985
+ if (len !== buf.length) this._buffers[--count] = buf.slice(len);
64986
+ }
64987
+ if (count > 0) this._buffers.splice(0, count);
64988
+ this._buffered -= read.length;
64989
+ read.func.call(this, data);
64990
+ };
64991
+ ChunkStream.prototype._process = function() {
64992
+ try {
64993
+ while (this._buffered > 0 && this._reads && this._reads.length > 0) {
64994
+ let read = this._reads[0];
64995
+ if (read.allowLess) this._processReadAllowingLess(read);
64996
+ else if (this._buffered >= read.length) this._processRead(read);
64997
+ else break;
64998
+ }
64999
+ if (this._buffers && !this.writable) this._end();
65000
+ } catch (ex) {
65001
+ this.emit("error", ex);
65002
+ }
65003
+ };
65004
+ }));
65005
+ //#endregion
65006
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/interlace.js
65007
+ var require_interlace = /* @__PURE__ */ __commonJSMin(((exports) => {
65008
+ var imagePasses = [
65009
+ {
65010
+ x: [0],
65011
+ y: [0]
65012
+ },
65013
+ {
65014
+ x: [4],
65015
+ y: [0]
65016
+ },
65017
+ {
65018
+ x: [0, 4],
65019
+ y: [4]
65020
+ },
65021
+ {
65022
+ x: [2, 6],
65023
+ y: [0, 4]
65024
+ },
65025
+ {
65026
+ x: [
65027
+ 0,
65028
+ 2,
65029
+ 4,
65030
+ 6
65031
+ ],
65032
+ y: [2, 6]
65033
+ },
65034
+ {
65035
+ x: [
65036
+ 1,
65037
+ 3,
65038
+ 5,
65039
+ 7
65040
+ ],
65041
+ y: [
65042
+ 0,
65043
+ 2,
65044
+ 4,
65045
+ 6
65046
+ ]
65047
+ },
65048
+ {
65049
+ x: [
65050
+ 0,
65051
+ 1,
65052
+ 2,
65053
+ 3,
65054
+ 4,
65055
+ 5,
65056
+ 6,
65057
+ 7
65058
+ ],
65059
+ y: [
65060
+ 1,
65061
+ 3,
65062
+ 5,
65063
+ 7
65064
+ ]
65065
+ }
65066
+ ];
65067
+ exports.getImagePasses = function(width, height) {
65068
+ let images = [];
65069
+ let xLeftOver = width % 8;
65070
+ let yLeftOver = height % 8;
65071
+ let xRepeats = (width - xLeftOver) / 8;
65072
+ let yRepeats = (height - yLeftOver) / 8;
65073
+ for (let i = 0; i < imagePasses.length; i++) {
65074
+ let pass = imagePasses[i];
65075
+ let passWidth = xRepeats * pass.x.length;
65076
+ let passHeight = yRepeats * pass.y.length;
65077
+ for (let j = 0; j < pass.x.length; j++) if (pass.x[j] < xLeftOver) passWidth++;
65078
+ else break;
65079
+ for (let j = 0; j < pass.y.length; j++) if (pass.y[j] < yLeftOver) passHeight++;
65080
+ else break;
65081
+ if (passWidth > 0 && passHeight > 0) images.push({
65082
+ width: passWidth,
65083
+ height: passHeight,
65084
+ index: i
65085
+ });
65086
+ }
65087
+ return images;
65088
+ };
65089
+ exports.getInterlaceIterator = function(width) {
65090
+ return function(x, y, pass) {
65091
+ let outerXLeftOver = x % imagePasses[pass].x.length;
65092
+ let outerX = (x - outerXLeftOver) / imagePasses[pass].x.length * 8 + imagePasses[pass].x[outerXLeftOver];
65093
+ let outerYLeftOver = y % imagePasses[pass].y.length;
65094
+ let outerY = (y - outerYLeftOver) / imagePasses[pass].y.length * 8 + imagePasses[pass].y[outerYLeftOver];
65095
+ return outerX * 4 + outerY * width * 4;
65096
+ };
65097
+ };
65098
+ }));
65099
+ //#endregion
65100
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/paeth-predictor.js
65101
+ var require_paeth_predictor = /* @__PURE__ */ __commonJSMin(((exports, module) => {
65102
+ module.exports = function paethPredictor(left, above, upLeft) {
65103
+ let paeth = left + above - upLeft;
65104
+ let pLeft = Math.abs(paeth - left);
65105
+ let pAbove = Math.abs(paeth - above);
65106
+ let pUpLeft = Math.abs(paeth - upLeft);
65107
+ if (pLeft <= pAbove && pLeft <= pUpLeft) return left;
65108
+ if (pAbove <= pUpLeft) return above;
65109
+ return upLeft;
65110
+ };
65111
+ }));
65112
+ //#endregion
65113
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/filter-parse.js
65114
+ var require_filter_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => {
65115
+ var interlaceUtils = require_interlace();
65116
+ var paethPredictor = require_paeth_predictor();
65117
+ function getByteWidth(width, bpp, depth) {
65118
+ let byteWidth = width * bpp;
65119
+ if (depth !== 8) byteWidth = Math.ceil(byteWidth / (8 / depth));
65120
+ return byteWidth;
65121
+ }
65122
+ var Filter = module.exports = function(bitmapInfo, dependencies) {
65123
+ let width = bitmapInfo.width;
65124
+ let height = bitmapInfo.height;
65125
+ let interlace = bitmapInfo.interlace;
65126
+ let bpp = bitmapInfo.bpp;
65127
+ let depth = bitmapInfo.depth;
65128
+ this.read = dependencies.read;
65129
+ this.write = dependencies.write;
65130
+ this.complete = dependencies.complete;
65131
+ this._imageIndex = 0;
65132
+ this._images = [];
65133
+ if (interlace) {
65134
+ let passes = interlaceUtils.getImagePasses(width, height);
65135
+ for (let i = 0; i < passes.length; i++) this._images.push({
65136
+ byteWidth: getByteWidth(passes[i].width, bpp, depth),
65137
+ height: passes[i].height,
65138
+ lineIndex: 0
65139
+ });
65140
+ } else this._images.push({
65141
+ byteWidth: getByteWidth(width, bpp, depth),
65142
+ height,
65143
+ lineIndex: 0
65144
+ });
65145
+ if (depth === 8) this._xComparison = bpp;
65146
+ else if (depth === 16) this._xComparison = bpp * 2;
65147
+ else this._xComparison = 1;
65148
+ };
65149
+ Filter.prototype.start = function() {
65150
+ this.read(this._images[this._imageIndex].byteWidth + 1, this._reverseFilterLine.bind(this));
65151
+ };
65152
+ Filter.prototype._unFilterType1 = function(rawData, unfilteredLine, byteWidth) {
65153
+ let xComparison = this._xComparison;
65154
+ let xBiggerThan = xComparison - 1;
65155
+ for (let x = 0; x < byteWidth; x++) unfilteredLine[x] = rawData[1 + x] + (x > xBiggerThan ? unfilteredLine[x - xComparison] : 0);
65156
+ };
65157
+ Filter.prototype._unFilterType2 = function(rawData, unfilteredLine, byteWidth) {
65158
+ let lastLine = this._lastLine;
65159
+ for (let x = 0; x < byteWidth; x++) unfilteredLine[x] = rawData[1 + x] + (lastLine ? lastLine[x] : 0);
65160
+ };
65161
+ Filter.prototype._unFilterType3 = function(rawData, unfilteredLine, byteWidth) {
65162
+ let xComparison = this._xComparison;
65163
+ let xBiggerThan = xComparison - 1;
65164
+ let lastLine = this._lastLine;
65165
+ for (let x = 0; x < byteWidth; x++) {
65166
+ let rawByte = rawData[1 + x];
65167
+ let f3Up = lastLine ? lastLine[x] : 0;
65168
+ let f3Left = x > xBiggerThan ? unfilteredLine[x - xComparison] : 0;
65169
+ unfilteredLine[x] = rawByte + Math.floor((f3Left + f3Up) / 2);
65170
+ }
65171
+ };
65172
+ Filter.prototype._unFilterType4 = function(rawData, unfilteredLine, byteWidth) {
65173
+ let xComparison = this._xComparison;
65174
+ let xBiggerThan = xComparison - 1;
65175
+ let lastLine = this._lastLine;
65176
+ for (let x = 0; x < byteWidth; x++) {
65177
+ let rawByte = rawData[1 + x];
65178
+ let f4Up = lastLine ? lastLine[x] : 0;
65179
+ unfilteredLine[x] = rawByte + paethPredictor(x > xBiggerThan ? unfilteredLine[x - xComparison] : 0, f4Up, x > xBiggerThan && lastLine ? lastLine[x - xComparison] : 0);
65180
+ }
65181
+ };
65182
+ Filter.prototype._reverseFilterLine = function(rawData) {
65183
+ let filter = rawData[0];
65184
+ let unfilteredLine;
65185
+ let currentImage = this._images[this._imageIndex];
65186
+ let byteWidth = currentImage.byteWidth;
65187
+ if (filter === 0) unfilteredLine = rawData.slice(1, byteWidth + 1);
65188
+ else {
65189
+ unfilteredLine = Buffer.alloc(byteWidth);
65190
+ switch (filter) {
65191
+ case 1:
65192
+ this._unFilterType1(rawData, unfilteredLine, byteWidth);
65193
+ break;
65194
+ case 2:
65195
+ this._unFilterType2(rawData, unfilteredLine, byteWidth);
65196
+ break;
65197
+ case 3:
65198
+ this._unFilterType3(rawData, unfilteredLine, byteWidth);
65199
+ break;
65200
+ case 4:
65201
+ this._unFilterType4(rawData, unfilteredLine, byteWidth);
65202
+ break;
65203
+ default: throw new Error("Unrecognised filter type - " + filter);
65204
+ }
65205
+ }
65206
+ this.write(unfilteredLine);
65207
+ currentImage.lineIndex++;
65208
+ if (currentImage.lineIndex >= currentImage.height) {
65209
+ this._lastLine = null;
65210
+ this._imageIndex++;
65211
+ currentImage = this._images[this._imageIndex];
65212
+ } else this._lastLine = unfilteredLine;
65213
+ if (currentImage) this.read(currentImage.byteWidth + 1, this._reverseFilterLine.bind(this));
65214
+ else {
65215
+ this._lastLine = null;
65216
+ this.complete();
65217
+ }
65218
+ };
65219
+ }));
65220
+ //#endregion
65221
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/filter-parse-async.js
65222
+ var require_filter_parse_async = /* @__PURE__ */ __commonJSMin(((exports, module) => {
65223
+ var util$4 = require("util");
65224
+ var ChunkStream = require_chunkstream();
65225
+ var Filter = require_filter_parse();
65226
+ var FilterAsync = module.exports = function(bitmapInfo) {
65227
+ ChunkStream.call(this);
65228
+ let buffers = [];
65229
+ let that = this;
65230
+ this._filter = new Filter(bitmapInfo, {
65231
+ read: this.read.bind(this),
65232
+ write: function(buffer) {
65233
+ buffers.push(buffer);
65234
+ },
65235
+ complete: function() {
65236
+ that.emit("complete", Buffer.concat(buffers));
65237
+ }
65238
+ });
65239
+ this._filter.start();
65240
+ };
65241
+ util$4.inherits(FilterAsync, ChunkStream);
65242
+ }));
65243
+ //#endregion
65244
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/constants.js
65245
+ var require_constants = /* @__PURE__ */ __commonJSMin(((exports, module) => {
65246
+ module.exports = {
65247
+ PNG_SIGNATURE: [
65248
+ 137,
65249
+ 80,
65250
+ 78,
65251
+ 71,
65252
+ 13,
65253
+ 10,
65254
+ 26,
65255
+ 10
65256
+ ],
65257
+ TYPE_IHDR: 1229472850,
65258
+ TYPE_IEND: 1229278788,
65259
+ TYPE_IDAT: 1229209940,
65260
+ TYPE_PLTE: 1347179589,
65261
+ TYPE_tRNS: 1951551059,
65262
+ TYPE_gAMA: 1732332865,
65263
+ COLORTYPE_GRAYSCALE: 0,
65264
+ COLORTYPE_PALETTE: 1,
65265
+ COLORTYPE_COLOR: 2,
65266
+ COLORTYPE_ALPHA: 4,
65267
+ COLORTYPE_PALETTE_COLOR: 3,
65268
+ COLORTYPE_COLOR_ALPHA: 6,
65269
+ COLORTYPE_TO_BPP_MAP: {
65270
+ 0: 1,
65271
+ 2: 3,
65272
+ 3: 1,
65273
+ 4: 2,
65274
+ 6: 4
65275
+ },
65276
+ GAMMA_DIVISION: 1e5
65277
+ };
65278
+ }));
65279
+ //#endregion
65280
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/crc.js
65281
+ var require_crc = /* @__PURE__ */ __commonJSMin(((exports, module) => {
65282
+ var crcTable = [];
65283
+ (function() {
65284
+ for (let i = 0; i < 256; i++) {
65285
+ let currentCrc = i;
65286
+ for (let j = 0; j < 8; j++) if (currentCrc & 1) currentCrc = 3988292384 ^ currentCrc >>> 1;
65287
+ else currentCrc = currentCrc >>> 1;
65288
+ crcTable[i] = currentCrc;
65289
+ }
65290
+ })();
65291
+ var CrcCalculator = module.exports = function() {
65292
+ this._crc = -1;
65293
+ };
65294
+ CrcCalculator.prototype.write = function(data) {
65295
+ for (let i = 0; i < data.length; i++) this._crc = crcTable[(this._crc ^ data[i]) & 255] ^ this._crc >>> 8;
65296
+ return true;
65297
+ };
65298
+ CrcCalculator.prototype.crc32 = function() {
65299
+ return this._crc ^ -1;
65300
+ };
65301
+ CrcCalculator.crc32 = function(buf) {
65302
+ let crc = -1;
65303
+ for (let i = 0; i < buf.length; i++) crc = crcTable[(crc ^ buf[i]) & 255] ^ crc >>> 8;
65304
+ return crc ^ -1;
65305
+ };
65306
+ }));
65307
+ //#endregion
65308
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/parser.js
65309
+ var require_parser = /* @__PURE__ */ __commonJSMin(((exports, module) => {
65310
+ var constants = require_constants();
65311
+ var CrcCalculator = require_crc();
65312
+ var Parser = module.exports = function(options, dependencies) {
65313
+ this._options = options;
65314
+ options.checkCRC = options.checkCRC !== false;
65315
+ this._hasIHDR = false;
65316
+ this._hasIEND = false;
65317
+ this._emittedHeadersFinished = false;
65318
+ this._palette = [];
65319
+ this._colorType = 0;
65320
+ this._chunks = {};
65321
+ this._chunks[constants.TYPE_IHDR] = this._handleIHDR.bind(this);
65322
+ this._chunks[constants.TYPE_IEND] = this._handleIEND.bind(this);
65323
+ this._chunks[constants.TYPE_IDAT] = this._handleIDAT.bind(this);
65324
+ this._chunks[constants.TYPE_PLTE] = this._handlePLTE.bind(this);
65325
+ this._chunks[constants.TYPE_tRNS] = this._handleTRNS.bind(this);
65326
+ this._chunks[constants.TYPE_gAMA] = this._handleGAMA.bind(this);
65327
+ this.read = dependencies.read;
65328
+ this.error = dependencies.error;
65329
+ this.metadata = dependencies.metadata;
65330
+ this.gamma = dependencies.gamma;
65331
+ this.transColor = dependencies.transColor;
65332
+ this.palette = dependencies.palette;
65333
+ this.parsed = dependencies.parsed;
65334
+ this.inflateData = dependencies.inflateData;
65335
+ this.finished = dependencies.finished;
65336
+ this.simpleTransparency = dependencies.simpleTransparency;
65337
+ this.headersFinished = dependencies.headersFinished || function() {};
65338
+ };
65339
+ Parser.prototype.start = function() {
65340
+ this.read(constants.PNG_SIGNATURE.length, this._parseSignature.bind(this));
65341
+ };
65342
+ Parser.prototype._parseSignature = function(data) {
65343
+ let signature = constants.PNG_SIGNATURE;
65344
+ for (let i = 0; i < signature.length; i++) if (data[i] !== signature[i]) {
65345
+ this.error(/* @__PURE__ */ new Error("Invalid file signature"));
65346
+ return;
65347
+ }
65348
+ this.read(8, this._parseChunkBegin.bind(this));
65349
+ };
65350
+ Parser.prototype._parseChunkBegin = function(data) {
65351
+ let length = data.readUInt32BE(0);
65352
+ let type = data.readUInt32BE(4);
65353
+ let name = "";
65354
+ for (let i = 4; i < 8; i++) name += String.fromCharCode(data[i]);
65355
+ let ancillary = Boolean(data[4] & 32);
65356
+ if (!this._hasIHDR && type !== constants.TYPE_IHDR) {
65357
+ this.error(/* @__PURE__ */ new Error("Expected IHDR on beggining"));
65358
+ return;
65359
+ }
65360
+ this._crc = new CrcCalculator();
65361
+ this._crc.write(Buffer.from(name));
65362
+ if (this._chunks[type]) return this._chunks[type](length);
65363
+ if (!ancillary) {
65364
+ this.error(/* @__PURE__ */ new Error("Unsupported critical chunk type " + name));
65365
+ return;
65366
+ }
65367
+ this.read(length + 4, this._skipChunk.bind(this));
65368
+ };
65369
+ Parser.prototype._skipChunk = function() {
65370
+ this.read(8, this._parseChunkBegin.bind(this));
65371
+ };
65372
+ Parser.prototype._handleChunkEnd = function() {
65373
+ this.read(4, this._parseChunkEnd.bind(this));
65374
+ };
65375
+ Parser.prototype._parseChunkEnd = function(data) {
65376
+ let fileCrc = data.readInt32BE(0);
65377
+ let calcCrc = this._crc.crc32();
65378
+ if (this._options.checkCRC && calcCrc !== fileCrc) {
65379
+ this.error(/* @__PURE__ */ new Error("Crc error - " + fileCrc + " - " + calcCrc));
65380
+ return;
65381
+ }
65382
+ if (!this._hasIEND) this.read(8, this._parseChunkBegin.bind(this));
65383
+ };
65384
+ Parser.prototype._handleIHDR = function(length) {
65385
+ this.read(length, this._parseIHDR.bind(this));
65386
+ };
65387
+ Parser.prototype._parseIHDR = function(data) {
65388
+ this._crc.write(data);
65389
+ let width = data.readUInt32BE(0);
65390
+ let height = data.readUInt32BE(4);
65391
+ let depth = data[8];
65392
+ let colorType = data[9];
65393
+ let compr = data[10];
65394
+ let filter = data[11];
65395
+ let interlace = data[12];
65396
+ if (depth !== 8 && depth !== 4 && depth !== 2 && depth !== 1 && depth !== 16) {
65397
+ this.error(/* @__PURE__ */ new Error("Unsupported bit depth " + depth));
65398
+ return;
65399
+ }
65400
+ if (!(colorType in constants.COLORTYPE_TO_BPP_MAP)) {
65401
+ this.error(/* @__PURE__ */ new Error("Unsupported color type"));
65402
+ return;
65403
+ }
65404
+ if (compr !== 0) {
65405
+ this.error(/* @__PURE__ */ new Error("Unsupported compression method"));
65406
+ return;
65407
+ }
65408
+ if (filter !== 0) {
65409
+ this.error(/* @__PURE__ */ new Error("Unsupported filter method"));
65410
+ return;
65411
+ }
65412
+ if (interlace !== 0 && interlace !== 1) {
65413
+ this.error(/* @__PURE__ */ new Error("Unsupported interlace method"));
65414
+ return;
65415
+ }
65416
+ this._colorType = colorType;
65417
+ let bpp = constants.COLORTYPE_TO_BPP_MAP[this._colorType];
65418
+ this._hasIHDR = true;
65419
+ this.metadata({
65420
+ width,
65421
+ height,
65422
+ depth,
65423
+ interlace: Boolean(interlace),
65424
+ palette: Boolean(colorType & constants.COLORTYPE_PALETTE),
65425
+ color: Boolean(colorType & constants.COLORTYPE_COLOR),
65426
+ alpha: Boolean(colorType & constants.COLORTYPE_ALPHA),
65427
+ bpp,
65428
+ colorType
65429
+ });
65430
+ this._handleChunkEnd();
65431
+ };
65432
+ Parser.prototype._handlePLTE = function(length) {
65433
+ this.read(length, this._parsePLTE.bind(this));
65434
+ };
65435
+ Parser.prototype._parsePLTE = function(data) {
65436
+ this._crc.write(data);
65437
+ let entries = Math.floor(data.length / 3);
65438
+ for (let i = 0; i < entries; i++) this._palette.push([
65439
+ data[i * 3],
65440
+ data[i * 3 + 1],
65441
+ data[i * 3 + 2],
65442
+ 255
65443
+ ]);
65444
+ this.palette(this._palette);
65445
+ this._handleChunkEnd();
65446
+ };
65447
+ Parser.prototype._handleTRNS = function(length) {
65448
+ this.simpleTransparency();
65449
+ this.read(length, this._parseTRNS.bind(this));
65450
+ };
65451
+ Parser.prototype._parseTRNS = function(data) {
65452
+ this._crc.write(data);
65453
+ if (this._colorType === constants.COLORTYPE_PALETTE_COLOR) {
65454
+ if (this._palette.length === 0) {
65455
+ this.error(/* @__PURE__ */ new Error("Transparency chunk must be after palette"));
65456
+ return;
65457
+ }
65458
+ if (data.length > this._palette.length) {
65459
+ this.error(/* @__PURE__ */ new Error("More transparent colors than palette size"));
65460
+ return;
65461
+ }
65462
+ for (let i = 0; i < data.length; i++) this._palette[i][3] = data[i];
65463
+ this.palette(this._palette);
65464
+ }
65465
+ if (this._colorType === constants.COLORTYPE_GRAYSCALE) this.transColor([data.readUInt16BE(0)]);
65466
+ if (this._colorType === constants.COLORTYPE_COLOR) this.transColor([
65467
+ data.readUInt16BE(0),
65468
+ data.readUInt16BE(2),
65469
+ data.readUInt16BE(4)
65470
+ ]);
65471
+ this._handleChunkEnd();
65472
+ };
65473
+ Parser.prototype._handleGAMA = function(length) {
65474
+ this.read(length, this._parseGAMA.bind(this));
65475
+ };
65476
+ Parser.prototype._parseGAMA = function(data) {
65477
+ this._crc.write(data);
65478
+ this.gamma(data.readUInt32BE(0) / constants.GAMMA_DIVISION);
65479
+ this._handleChunkEnd();
65480
+ };
65481
+ Parser.prototype._handleIDAT = function(length) {
65482
+ if (!this._emittedHeadersFinished) {
65483
+ this._emittedHeadersFinished = true;
65484
+ this.headersFinished();
65485
+ }
65486
+ this.read(-length, this._parseIDAT.bind(this, length));
65487
+ };
65488
+ Parser.prototype._parseIDAT = function(length, data) {
65489
+ this._crc.write(data);
65490
+ if (this._colorType === constants.COLORTYPE_PALETTE_COLOR && this._palette.length === 0) throw new Error("Expected palette not found");
65491
+ this.inflateData(data);
65492
+ let leftOverLength = length - data.length;
65493
+ if (leftOverLength > 0) this._handleIDAT(leftOverLength);
65494
+ else this._handleChunkEnd();
65495
+ };
65496
+ Parser.prototype._handleIEND = function(length) {
65497
+ this.read(length, this._parseIEND.bind(this));
65498
+ };
65499
+ Parser.prototype._parseIEND = function(data) {
65500
+ this._crc.write(data);
65501
+ this._hasIEND = true;
65502
+ this._handleChunkEnd();
65503
+ if (this.finished) this.finished();
65504
+ };
65505
+ }));
65506
+ //#endregion
65507
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/bitmapper.js
65508
+ var require_bitmapper = /* @__PURE__ */ __commonJSMin(((exports) => {
65509
+ var interlaceUtils = require_interlace();
65510
+ var pixelBppMapper = [
65511
+ function() {},
65512
+ function(pxData, data, pxPos, rawPos) {
65513
+ if (rawPos === data.length) throw new Error("Ran out of data");
65514
+ let pixel = data[rawPos];
65515
+ pxData[pxPos] = pixel;
65516
+ pxData[pxPos + 1] = pixel;
65517
+ pxData[pxPos + 2] = pixel;
65518
+ pxData[pxPos + 3] = 255;
65519
+ },
65520
+ function(pxData, data, pxPos, rawPos) {
65521
+ if (rawPos + 1 >= data.length) throw new Error("Ran out of data");
65522
+ let pixel = data[rawPos];
65523
+ pxData[pxPos] = pixel;
65524
+ pxData[pxPos + 1] = pixel;
65525
+ pxData[pxPos + 2] = pixel;
65526
+ pxData[pxPos + 3] = data[rawPos + 1];
65527
+ },
65528
+ function(pxData, data, pxPos, rawPos) {
65529
+ if (rawPos + 2 >= data.length) throw new Error("Ran out of data");
65530
+ pxData[pxPos] = data[rawPos];
65531
+ pxData[pxPos + 1] = data[rawPos + 1];
65532
+ pxData[pxPos + 2] = data[rawPos + 2];
65533
+ pxData[pxPos + 3] = 255;
65534
+ },
65535
+ function(pxData, data, pxPos, rawPos) {
65536
+ if (rawPos + 3 >= data.length) throw new Error("Ran out of data");
65537
+ pxData[pxPos] = data[rawPos];
65538
+ pxData[pxPos + 1] = data[rawPos + 1];
65539
+ pxData[pxPos + 2] = data[rawPos + 2];
65540
+ pxData[pxPos + 3] = data[rawPos + 3];
65541
+ }
65542
+ ];
65543
+ var pixelBppCustomMapper = [
65544
+ function() {},
65545
+ function(pxData, pixelData, pxPos, maxBit) {
65546
+ let pixel = pixelData[0];
65547
+ pxData[pxPos] = pixel;
65548
+ pxData[pxPos + 1] = pixel;
65549
+ pxData[pxPos + 2] = pixel;
65550
+ pxData[pxPos + 3] = maxBit;
65551
+ },
65552
+ function(pxData, pixelData, pxPos) {
65553
+ let pixel = pixelData[0];
65554
+ pxData[pxPos] = pixel;
65555
+ pxData[pxPos + 1] = pixel;
65556
+ pxData[pxPos + 2] = pixel;
65557
+ pxData[pxPos + 3] = pixelData[1];
65558
+ },
65559
+ function(pxData, pixelData, pxPos, maxBit) {
65560
+ pxData[pxPos] = pixelData[0];
65561
+ pxData[pxPos + 1] = pixelData[1];
65562
+ pxData[pxPos + 2] = pixelData[2];
65563
+ pxData[pxPos + 3] = maxBit;
65564
+ },
65565
+ function(pxData, pixelData, pxPos) {
65566
+ pxData[pxPos] = pixelData[0];
65567
+ pxData[pxPos + 1] = pixelData[1];
65568
+ pxData[pxPos + 2] = pixelData[2];
65569
+ pxData[pxPos + 3] = pixelData[3];
65570
+ }
65571
+ ];
65572
+ function bitRetriever(data, depth) {
65573
+ let leftOver = [];
65574
+ let i = 0;
65575
+ function split() {
65576
+ if (i === data.length) throw new Error("Ran out of data");
65577
+ let byte = data[i];
65578
+ i++;
65579
+ let byte8, byte7, byte6, byte5, byte4, byte3, byte2, byte1;
65580
+ switch (depth) {
65581
+ default: throw new Error("unrecognised depth");
65582
+ case 16:
65583
+ byte2 = data[i];
65584
+ i++;
65585
+ leftOver.push((byte << 8) + byte2);
65586
+ break;
65587
+ case 4:
65588
+ byte2 = byte & 15;
65589
+ byte1 = byte >> 4;
65590
+ leftOver.push(byte1, byte2);
65591
+ break;
65592
+ case 2:
65593
+ byte4 = byte & 3;
65594
+ byte3 = byte >> 2 & 3;
65595
+ byte2 = byte >> 4 & 3;
65596
+ byte1 = byte >> 6 & 3;
65597
+ leftOver.push(byte1, byte2, byte3, byte4);
65598
+ break;
65599
+ case 1:
65600
+ byte8 = byte & 1;
65601
+ byte7 = byte >> 1 & 1;
65602
+ byte6 = byte >> 2 & 1;
65603
+ byte5 = byte >> 3 & 1;
65604
+ byte4 = byte >> 4 & 1;
65605
+ byte3 = byte >> 5 & 1;
65606
+ byte2 = byte >> 6 & 1;
65607
+ byte1 = byte >> 7 & 1;
65608
+ leftOver.push(byte1, byte2, byte3, byte4, byte5, byte6, byte7, byte8);
65609
+ break;
65610
+ }
65611
+ }
65612
+ return {
65613
+ get: function(count) {
65614
+ while (leftOver.length < count) split();
65615
+ let returner = leftOver.slice(0, count);
65616
+ leftOver = leftOver.slice(count);
65617
+ return returner;
65618
+ },
65619
+ resetAfterLine: function() {
65620
+ leftOver.length = 0;
65621
+ },
65622
+ end: function() {
65623
+ if (i !== data.length) throw new Error("extra data found");
65624
+ }
65625
+ };
65626
+ }
65627
+ function mapImage8Bit(image, pxData, getPxPos, bpp, data, rawPos) {
65628
+ let imageWidth = image.width;
65629
+ let imageHeight = image.height;
65630
+ let imagePass = image.index;
65631
+ for (let y = 0; y < imageHeight; y++) for (let x = 0; x < imageWidth; x++) {
65632
+ let pxPos = getPxPos(x, y, imagePass);
65633
+ pixelBppMapper[bpp](pxData, data, pxPos, rawPos);
65634
+ rawPos += bpp;
65635
+ }
65636
+ return rawPos;
65637
+ }
65638
+ function mapImageCustomBit(image, pxData, getPxPos, bpp, bits, maxBit) {
65639
+ let imageWidth = image.width;
65640
+ let imageHeight = image.height;
65641
+ let imagePass = image.index;
65642
+ for (let y = 0; y < imageHeight; y++) {
65643
+ for (let x = 0; x < imageWidth; x++) {
65644
+ let pixelData = bits.get(bpp);
65645
+ let pxPos = getPxPos(x, y, imagePass);
65646
+ pixelBppCustomMapper[bpp](pxData, pixelData, pxPos, maxBit);
65647
+ }
65648
+ bits.resetAfterLine();
65649
+ }
65650
+ }
65651
+ exports.dataToBitMap = function(data, bitmapInfo) {
65652
+ let width = bitmapInfo.width;
65653
+ let height = bitmapInfo.height;
65654
+ let depth = bitmapInfo.depth;
65655
+ let bpp = bitmapInfo.bpp;
65656
+ let interlace = bitmapInfo.interlace;
65657
+ let bits;
65658
+ if (depth !== 8) bits = bitRetriever(data, depth);
65659
+ let pxData;
65660
+ if (depth <= 8) pxData = Buffer.alloc(width * height * 4);
65661
+ else pxData = new Uint16Array(width * height * 4);
65662
+ let maxBit = Math.pow(2, depth) - 1;
65663
+ let rawPos = 0;
65664
+ let images;
65665
+ let getPxPos;
65666
+ if (interlace) {
65667
+ images = interlaceUtils.getImagePasses(width, height);
65668
+ getPxPos = interlaceUtils.getInterlaceIterator(width, height);
65669
+ } else {
65670
+ let nonInterlacedPxPos = 0;
65671
+ getPxPos = function() {
65672
+ let returner = nonInterlacedPxPos;
65673
+ nonInterlacedPxPos += 4;
65674
+ return returner;
65675
+ };
65676
+ images = [{
65677
+ width,
65678
+ height
65679
+ }];
65680
+ }
65681
+ for (let imageIndex = 0; imageIndex < images.length; imageIndex++) if (depth === 8) rawPos = mapImage8Bit(images[imageIndex], pxData, getPxPos, bpp, data, rawPos);
65682
+ else mapImageCustomBit(images[imageIndex], pxData, getPxPos, bpp, bits, maxBit);
65683
+ if (depth === 8) {
65684
+ if (rawPos !== data.length) throw new Error("extra data found");
65685
+ } else bits.end();
65686
+ return pxData;
65687
+ };
65688
+ }));
65689
+ //#endregion
65690
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/format-normaliser.js
65691
+ var require_format_normaliser = /* @__PURE__ */ __commonJSMin(((exports, module) => {
65692
+ function dePalette(indata, outdata, width, height, palette) {
65693
+ let pxPos = 0;
65694
+ for (let y = 0; y < height; y++) for (let x = 0; x < width; x++) {
65695
+ let color = palette[indata[pxPos]];
65696
+ if (!color) throw new Error("index " + indata[pxPos] + " not in palette");
65697
+ for (let i = 0; i < 4; i++) outdata[pxPos + i] = color[i];
65698
+ pxPos += 4;
65699
+ }
65700
+ }
65701
+ function replaceTransparentColor(indata, outdata, width, height, transColor) {
65702
+ let pxPos = 0;
65703
+ for (let y = 0; y < height; y++) for (let x = 0; x < width; x++) {
65704
+ let makeTrans = false;
65705
+ if (transColor.length === 1) {
65706
+ if (transColor[0] === indata[pxPos]) makeTrans = true;
65707
+ } else if (transColor[0] === indata[pxPos] && transColor[1] === indata[pxPos + 1] && transColor[2] === indata[pxPos + 2]) makeTrans = true;
65708
+ if (makeTrans) for (let i = 0; i < 4; i++) outdata[pxPos + i] = 0;
65709
+ pxPos += 4;
65710
+ }
65711
+ }
65712
+ function scaleDepth(indata, outdata, width, height, depth) {
65713
+ let maxOutSample = 255;
65714
+ let maxInSample = Math.pow(2, depth) - 1;
65715
+ let pxPos = 0;
65716
+ for (let y = 0; y < height; y++) for (let x = 0; x < width; x++) {
65717
+ for (let i = 0; i < 4; i++) outdata[pxPos + i] = Math.floor(indata[pxPos + i] * maxOutSample / maxInSample + .5);
65718
+ pxPos += 4;
65719
+ }
65720
+ }
65721
+ module.exports = function(indata, imageData, skipRescale = false) {
65722
+ let depth = imageData.depth;
65723
+ let width = imageData.width;
65724
+ let height = imageData.height;
65725
+ let colorType = imageData.colorType;
65726
+ let transColor = imageData.transColor;
65727
+ let palette = imageData.palette;
65728
+ let outdata = indata;
65729
+ if (colorType === 3) dePalette(indata, outdata, width, height, palette);
65730
+ else {
65731
+ if (transColor) replaceTransparentColor(indata, outdata, width, height, transColor);
65732
+ if (depth !== 8 && !skipRescale) {
65733
+ if (depth === 16) outdata = Buffer.alloc(width * height * 4);
65734
+ scaleDepth(indata, outdata, width, height, depth);
65735
+ }
65736
+ }
65737
+ return outdata;
65738
+ };
65739
+ }));
65740
+ //#endregion
65741
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/parser-async.js
65742
+ var require_parser_async = /* @__PURE__ */ __commonJSMin(((exports, module) => {
65743
+ var util$3 = require("util");
65744
+ var zlib$4 = require("zlib");
65745
+ var ChunkStream = require_chunkstream();
65746
+ var FilterAsync = require_filter_parse_async();
65747
+ var Parser = require_parser();
65748
+ var bitmapper = require_bitmapper();
65749
+ var formatNormaliser = require_format_normaliser();
65750
+ var ParserAsync = module.exports = function(options) {
65751
+ ChunkStream.call(this);
65752
+ this._parser = new Parser(options, {
65753
+ read: this.read.bind(this),
65754
+ error: this._handleError.bind(this),
65755
+ metadata: this._handleMetaData.bind(this),
65756
+ gamma: this.emit.bind(this, "gamma"),
65757
+ palette: this._handlePalette.bind(this),
65758
+ transColor: this._handleTransColor.bind(this),
65759
+ finished: this._finished.bind(this),
65760
+ inflateData: this._inflateData.bind(this),
65761
+ simpleTransparency: this._simpleTransparency.bind(this),
65762
+ headersFinished: this._headersFinished.bind(this)
65763
+ });
65764
+ this._options = options;
65765
+ this.writable = true;
65766
+ this._parser.start();
65767
+ };
65768
+ util$3.inherits(ParserAsync, ChunkStream);
65769
+ ParserAsync.prototype._handleError = function(err) {
65770
+ this.emit("error", err);
65771
+ this.writable = false;
65772
+ this.destroy();
65773
+ if (this._inflate && this._inflate.destroy) this._inflate.destroy();
65774
+ if (this._filter) {
65775
+ this._filter.destroy();
65776
+ this._filter.on("error", function() {});
65777
+ }
65778
+ this.errord = true;
65779
+ };
65780
+ ParserAsync.prototype._inflateData = function(data) {
65781
+ if (!this._inflate) if (this._bitmapInfo.interlace) {
65782
+ this._inflate = zlib$4.createInflate();
65783
+ this._inflate.on("error", this.emit.bind(this, "error"));
65784
+ this._filter.on("complete", this._complete.bind(this));
65785
+ this._inflate.pipe(this._filter);
65786
+ } else {
65787
+ let imageSize = ((this._bitmapInfo.width * this._bitmapInfo.bpp * this._bitmapInfo.depth + 7 >> 3) + 1) * this._bitmapInfo.height;
65788
+ let chunkSize = Math.max(imageSize, zlib$4.Z_MIN_CHUNK);
65789
+ this._inflate = zlib$4.createInflate({ chunkSize });
65790
+ let leftToInflate = imageSize;
65791
+ let emitError = this.emit.bind(this, "error");
65792
+ this._inflate.on("error", function(err) {
65793
+ if (!leftToInflate) return;
65794
+ emitError(err);
65795
+ });
65796
+ this._filter.on("complete", this._complete.bind(this));
65797
+ let filterWrite = this._filter.write.bind(this._filter);
65798
+ this._inflate.on("data", function(chunk) {
65799
+ if (!leftToInflate) return;
65800
+ if (chunk.length > leftToInflate) chunk = chunk.slice(0, leftToInflate);
65801
+ leftToInflate -= chunk.length;
65802
+ filterWrite(chunk);
65803
+ });
65804
+ this._inflate.on("end", this._filter.end.bind(this._filter));
65805
+ }
65806
+ this._inflate.write(data);
65807
+ };
65808
+ ParserAsync.prototype._handleMetaData = function(metaData) {
65809
+ this._metaData = metaData;
65810
+ this._bitmapInfo = Object.create(metaData);
65811
+ this._filter = new FilterAsync(this._bitmapInfo);
65812
+ };
65813
+ ParserAsync.prototype._handleTransColor = function(transColor) {
65814
+ this._bitmapInfo.transColor = transColor;
65815
+ };
65816
+ ParserAsync.prototype._handlePalette = function(palette) {
65817
+ this._bitmapInfo.palette = palette;
65818
+ };
65819
+ ParserAsync.prototype._simpleTransparency = function() {
65820
+ this._metaData.alpha = true;
65821
+ };
65822
+ ParserAsync.prototype._headersFinished = function() {
65823
+ this.emit("metadata", this._metaData);
65824
+ };
65825
+ ParserAsync.prototype._finished = function() {
65826
+ if (this.errord) return;
65827
+ if (!this._inflate) this.emit("error", "No Inflate block");
65828
+ else this._inflate.end();
65829
+ };
65830
+ ParserAsync.prototype._complete = function(filteredData) {
65831
+ if (this.errord) return;
65832
+ let normalisedBitmapData;
65833
+ try {
65834
+ let bitmapData = bitmapper.dataToBitMap(filteredData, this._bitmapInfo);
65835
+ normalisedBitmapData = formatNormaliser(bitmapData, this._bitmapInfo, this._options.skipRescale);
65836
+ bitmapData = null;
65837
+ } catch (ex) {
65838
+ this._handleError(ex);
65839
+ return;
65840
+ }
65841
+ this.emit("parsed", normalisedBitmapData);
65842
+ };
65843
+ }));
65844
+ //#endregion
65845
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/bitpacker.js
65846
+ var require_bitpacker = /* @__PURE__ */ __commonJSMin(((exports, module) => {
65847
+ var constants = require_constants();
65848
+ module.exports = function(dataIn, width, height, options) {
65849
+ let outHasAlpha = [constants.COLORTYPE_COLOR_ALPHA, constants.COLORTYPE_ALPHA].indexOf(options.colorType) !== -1;
65850
+ if (options.colorType === options.inputColorType) {
65851
+ let bigEndian = (function() {
65852
+ let buffer = /* @__PURE__ */ new ArrayBuffer(2);
65853
+ new DataView(buffer).setInt16(0, 256, true);
65854
+ return new Int16Array(buffer)[0] !== 256;
65855
+ })();
65856
+ if (options.bitDepth === 8 || options.bitDepth === 16 && bigEndian) return dataIn;
65857
+ }
65858
+ let data = options.bitDepth !== 16 ? dataIn : new Uint16Array(dataIn.buffer);
65859
+ let maxValue = 255;
65860
+ let inBpp = constants.COLORTYPE_TO_BPP_MAP[options.inputColorType];
65861
+ if (inBpp === 4 && !options.inputHasAlpha) inBpp = 3;
65862
+ let outBpp = constants.COLORTYPE_TO_BPP_MAP[options.colorType];
65863
+ if (options.bitDepth === 16) {
65864
+ maxValue = 65535;
65865
+ outBpp *= 2;
65866
+ }
65867
+ let outData = Buffer.alloc(width * height * outBpp);
65868
+ let inIndex = 0;
65869
+ let outIndex = 0;
65870
+ let bgColor = options.bgColor || {};
65871
+ if (bgColor.red === void 0) bgColor.red = maxValue;
65872
+ if (bgColor.green === void 0) bgColor.green = maxValue;
65873
+ if (bgColor.blue === void 0) bgColor.blue = maxValue;
65874
+ function getRGBA() {
65875
+ let red;
65876
+ let green;
65877
+ let blue;
65878
+ let alpha = maxValue;
65879
+ switch (options.inputColorType) {
65880
+ case constants.COLORTYPE_COLOR_ALPHA:
65881
+ alpha = data[inIndex + 3];
65882
+ red = data[inIndex];
65883
+ green = data[inIndex + 1];
65884
+ blue = data[inIndex + 2];
65885
+ break;
65886
+ case constants.COLORTYPE_COLOR:
65887
+ red = data[inIndex];
65888
+ green = data[inIndex + 1];
65889
+ blue = data[inIndex + 2];
65890
+ break;
65891
+ case constants.COLORTYPE_ALPHA:
65892
+ alpha = data[inIndex + 1];
65893
+ red = data[inIndex];
65894
+ green = red;
65895
+ blue = red;
65896
+ break;
65897
+ case constants.COLORTYPE_GRAYSCALE:
65898
+ red = data[inIndex];
65899
+ green = red;
65900
+ blue = red;
65901
+ break;
65902
+ default: throw new Error("input color type:" + options.inputColorType + " is not supported at present");
65903
+ }
65904
+ if (options.inputHasAlpha) {
65905
+ if (!outHasAlpha) {
65906
+ alpha /= maxValue;
65907
+ red = Math.min(Math.max(Math.round((1 - alpha) * bgColor.red + alpha * red), 0), maxValue);
65908
+ green = Math.min(Math.max(Math.round((1 - alpha) * bgColor.green + alpha * green), 0), maxValue);
65909
+ blue = Math.min(Math.max(Math.round((1 - alpha) * bgColor.blue + alpha * blue), 0), maxValue);
65910
+ }
65911
+ }
65912
+ return {
65913
+ red,
65914
+ green,
65915
+ blue,
65916
+ alpha
65917
+ };
65918
+ }
65919
+ for (let y = 0; y < height; y++) for (let x = 0; x < width; x++) {
65920
+ let rgba = getRGBA(data, inIndex);
65921
+ switch (options.colorType) {
65922
+ case constants.COLORTYPE_COLOR_ALPHA:
65923
+ case constants.COLORTYPE_COLOR:
65924
+ if (options.bitDepth === 8) {
65925
+ outData[outIndex] = rgba.red;
65926
+ outData[outIndex + 1] = rgba.green;
65927
+ outData[outIndex + 2] = rgba.blue;
65928
+ if (outHasAlpha) outData[outIndex + 3] = rgba.alpha;
65929
+ } else {
65930
+ outData.writeUInt16BE(rgba.red, outIndex);
65931
+ outData.writeUInt16BE(rgba.green, outIndex + 2);
65932
+ outData.writeUInt16BE(rgba.blue, outIndex + 4);
65933
+ if (outHasAlpha) outData.writeUInt16BE(rgba.alpha, outIndex + 6);
65934
+ }
65935
+ break;
65936
+ case constants.COLORTYPE_ALPHA:
65937
+ case constants.COLORTYPE_GRAYSCALE: {
65938
+ let grayscale = (rgba.red + rgba.green + rgba.blue) / 3;
65939
+ if (options.bitDepth === 8) {
65940
+ outData[outIndex] = grayscale;
65941
+ if (outHasAlpha) outData[outIndex + 1] = rgba.alpha;
65942
+ } else {
65943
+ outData.writeUInt16BE(grayscale, outIndex);
65944
+ if (outHasAlpha) outData.writeUInt16BE(rgba.alpha, outIndex + 2);
65945
+ }
65946
+ break;
65947
+ }
65948
+ default: throw new Error("unrecognised color Type " + options.colorType);
65949
+ }
65950
+ inIndex += inBpp;
65951
+ outIndex += outBpp;
65952
+ }
65953
+ return outData;
65954
+ };
65955
+ }));
65956
+ //#endregion
65957
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/filter-pack.js
65958
+ var require_filter_pack = /* @__PURE__ */ __commonJSMin(((exports, module) => {
65959
+ var paethPredictor = require_paeth_predictor();
65960
+ function filterNone(pxData, pxPos, byteWidth, rawData, rawPos) {
65961
+ for (let x = 0; x < byteWidth; x++) rawData[rawPos + x] = pxData[pxPos + x];
65962
+ }
65963
+ function filterSumNone(pxData, pxPos, byteWidth) {
65964
+ let sum = 0;
65965
+ let length = pxPos + byteWidth;
65966
+ for (let i = pxPos; i < length; i++) sum += Math.abs(pxData[i]);
65967
+ return sum;
65968
+ }
65969
+ function filterSub(pxData, pxPos, byteWidth, rawData, rawPos, bpp) {
65970
+ for (let x = 0; x < byteWidth; x++) {
65971
+ let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;
65972
+ let val = pxData[pxPos + x] - left;
65973
+ rawData[rawPos + x] = val;
65974
+ }
65975
+ }
65976
+ function filterSumSub(pxData, pxPos, byteWidth, bpp) {
65977
+ let sum = 0;
65978
+ for (let x = 0; x < byteWidth; x++) {
65979
+ let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;
65980
+ let val = pxData[pxPos + x] - left;
65981
+ sum += Math.abs(val);
65982
+ }
65983
+ return sum;
65984
+ }
65985
+ function filterUp(pxData, pxPos, byteWidth, rawData, rawPos) {
65986
+ for (let x = 0; x < byteWidth; x++) {
65987
+ let up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;
65988
+ let val = pxData[pxPos + x] - up;
65989
+ rawData[rawPos + x] = val;
65990
+ }
65991
+ }
65992
+ function filterSumUp(pxData, pxPos, byteWidth) {
65993
+ let sum = 0;
65994
+ let length = pxPos + byteWidth;
65995
+ for (let x = pxPos; x < length; x++) {
65996
+ let up = pxPos > 0 ? pxData[x - byteWidth] : 0;
65997
+ let val = pxData[x] - up;
65998
+ sum += Math.abs(val);
65999
+ }
66000
+ return sum;
66001
+ }
66002
+ function filterAvg(pxData, pxPos, byteWidth, rawData, rawPos, bpp) {
66003
+ for (let x = 0; x < byteWidth; x++) {
66004
+ let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;
66005
+ let up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;
66006
+ let val = pxData[pxPos + x] - (left + up >> 1);
66007
+ rawData[rawPos + x] = val;
66008
+ }
66009
+ }
66010
+ function filterSumAvg(pxData, pxPos, byteWidth, bpp) {
66011
+ let sum = 0;
66012
+ for (let x = 0; x < byteWidth; x++) {
66013
+ let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;
66014
+ let up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;
66015
+ let val = pxData[pxPos + x] - (left + up >> 1);
66016
+ sum += Math.abs(val);
66017
+ }
66018
+ return sum;
66019
+ }
66020
+ function filterPaeth(pxData, pxPos, byteWidth, rawData, rawPos, bpp) {
66021
+ for (let x = 0; x < byteWidth; x++) {
66022
+ let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;
66023
+ let up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;
66024
+ let upleft = pxPos > 0 && x >= bpp ? pxData[pxPos + x - (byteWidth + bpp)] : 0;
66025
+ let val = pxData[pxPos + x] - paethPredictor(left, up, upleft);
66026
+ rawData[rawPos + x] = val;
66027
+ }
66028
+ }
66029
+ function filterSumPaeth(pxData, pxPos, byteWidth, bpp) {
66030
+ let sum = 0;
66031
+ for (let x = 0; x < byteWidth; x++) {
66032
+ let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;
66033
+ let up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;
66034
+ let upleft = pxPos > 0 && x >= bpp ? pxData[pxPos + x - (byteWidth + bpp)] : 0;
66035
+ let val = pxData[pxPos + x] - paethPredictor(left, up, upleft);
66036
+ sum += Math.abs(val);
66037
+ }
66038
+ return sum;
66039
+ }
66040
+ var filters = {
66041
+ 0: filterNone,
66042
+ 1: filterSub,
66043
+ 2: filterUp,
66044
+ 3: filterAvg,
66045
+ 4: filterPaeth
66046
+ };
66047
+ var filterSums = {
66048
+ 0: filterSumNone,
66049
+ 1: filterSumSub,
66050
+ 2: filterSumUp,
66051
+ 3: filterSumAvg,
66052
+ 4: filterSumPaeth
66053
+ };
66054
+ module.exports = function(pxData, width, height, options, bpp) {
66055
+ let filterTypes;
66056
+ if (!("filterType" in options) || options.filterType === -1) filterTypes = [
66057
+ 0,
66058
+ 1,
66059
+ 2,
66060
+ 3,
66061
+ 4
66062
+ ];
66063
+ else if (typeof options.filterType === "number") filterTypes = [options.filterType];
66064
+ else throw new Error("unrecognised filter types");
66065
+ if (options.bitDepth === 16) bpp *= 2;
66066
+ let byteWidth = width * bpp;
66067
+ let rawPos = 0;
66068
+ let pxPos = 0;
66069
+ let rawData = Buffer.alloc((byteWidth + 1) * height);
66070
+ let sel = filterTypes[0];
66071
+ for (let y = 0; y < height; y++) {
66072
+ if (filterTypes.length > 1) {
66073
+ let min = Infinity;
66074
+ for (let i = 0; i < filterTypes.length; i++) {
66075
+ let sum = filterSums[filterTypes[i]](pxData, pxPos, byteWidth, bpp);
66076
+ if (sum < min) {
66077
+ sel = filterTypes[i];
66078
+ min = sum;
66079
+ }
66080
+ }
66081
+ }
66082
+ rawData[rawPos] = sel;
66083
+ rawPos++;
66084
+ filters[sel](pxData, pxPos, byteWidth, rawData, rawPos, bpp);
66085
+ rawPos += byteWidth;
66086
+ pxPos += byteWidth;
66087
+ }
66088
+ return rawData;
66089
+ };
66090
+ }));
66091
+ //#endregion
66092
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/packer.js
66093
+ var require_packer = /* @__PURE__ */ __commonJSMin(((exports, module) => {
66094
+ var constants = require_constants();
66095
+ var CrcStream = require_crc();
66096
+ var bitPacker = require_bitpacker();
66097
+ var filter = require_filter_pack();
66098
+ var zlib$3 = require("zlib");
66099
+ var Packer = module.exports = function(options) {
66100
+ this._options = options;
66101
+ options.deflateChunkSize = options.deflateChunkSize || 32 * 1024;
66102
+ options.deflateLevel = options.deflateLevel != null ? options.deflateLevel : 9;
66103
+ options.deflateStrategy = options.deflateStrategy != null ? options.deflateStrategy : 3;
66104
+ options.inputHasAlpha = options.inputHasAlpha != null ? options.inputHasAlpha : true;
66105
+ options.deflateFactory = options.deflateFactory || zlib$3.createDeflate;
66106
+ options.bitDepth = options.bitDepth || 8;
66107
+ options.colorType = typeof options.colorType === "number" ? options.colorType : constants.COLORTYPE_COLOR_ALPHA;
66108
+ options.inputColorType = typeof options.inputColorType === "number" ? options.inputColorType : constants.COLORTYPE_COLOR_ALPHA;
66109
+ if ([
66110
+ constants.COLORTYPE_GRAYSCALE,
66111
+ constants.COLORTYPE_COLOR,
66112
+ constants.COLORTYPE_COLOR_ALPHA,
66113
+ constants.COLORTYPE_ALPHA
66114
+ ].indexOf(options.colorType) === -1) throw new Error("option color type:" + options.colorType + " is not supported at present");
66115
+ if ([
66116
+ constants.COLORTYPE_GRAYSCALE,
66117
+ constants.COLORTYPE_COLOR,
66118
+ constants.COLORTYPE_COLOR_ALPHA,
66119
+ constants.COLORTYPE_ALPHA
66120
+ ].indexOf(options.inputColorType) === -1) throw new Error("option input color type:" + options.inputColorType + " is not supported at present");
66121
+ if (options.bitDepth !== 8 && options.bitDepth !== 16) throw new Error("option bit depth:" + options.bitDepth + " is not supported at present");
66122
+ };
66123
+ Packer.prototype.getDeflateOptions = function() {
66124
+ return {
66125
+ chunkSize: this._options.deflateChunkSize,
66126
+ level: this._options.deflateLevel,
66127
+ strategy: this._options.deflateStrategy
66128
+ };
66129
+ };
66130
+ Packer.prototype.createDeflate = function() {
66131
+ return this._options.deflateFactory(this.getDeflateOptions());
66132
+ };
66133
+ Packer.prototype.filterData = function(data, width, height) {
66134
+ let packedData = bitPacker(data, width, height, this._options);
66135
+ let bpp = constants.COLORTYPE_TO_BPP_MAP[this._options.colorType];
66136
+ return filter(packedData, width, height, this._options, bpp);
66137
+ };
66138
+ Packer.prototype._packChunk = function(type, data) {
66139
+ let len = data ? data.length : 0;
66140
+ let buf = Buffer.alloc(len + 12);
66141
+ buf.writeUInt32BE(len, 0);
66142
+ buf.writeUInt32BE(type, 4);
66143
+ if (data) data.copy(buf, 8);
66144
+ buf.writeInt32BE(CrcStream.crc32(buf.slice(4, buf.length - 4)), buf.length - 4);
66145
+ return buf;
66146
+ };
66147
+ Packer.prototype.packGAMA = function(gamma) {
66148
+ let buf = Buffer.alloc(4);
66149
+ buf.writeUInt32BE(Math.floor(gamma * constants.GAMMA_DIVISION), 0);
66150
+ return this._packChunk(constants.TYPE_gAMA, buf);
66151
+ };
66152
+ Packer.prototype.packIHDR = function(width, height) {
66153
+ let buf = Buffer.alloc(13);
66154
+ buf.writeUInt32BE(width, 0);
66155
+ buf.writeUInt32BE(height, 4);
66156
+ buf[8] = this._options.bitDepth;
66157
+ buf[9] = this._options.colorType;
66158
+ buf[10] = 0;
66159
+ buf[11] = 0;
66160
+ buf[12] = 0;
66161
+ return this._packChunk(constants.TYPE_IHDR, buf);
66162
+ };
66163
+ Packer.prototype.packIDAT = function(data) {
66164
+ return this._packChunk(constants.TYPE_IDAT, data);
66165
+ };
66166
+ Packer.prototype.packIEND = function() {
66167
+ return this._packChunk(constants.TYPE_IEND, null);
66168
+ };
66169
+ }));
66170
+ //#endregion
66171
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/packer-async.js
66172
+ var require_packer_async = /* @__PURE__ */ __commonJSMin(((exports, module) => {
66173
+ var util$2 = require("util");
66174
+ var Stream$2 = require("stream");
66175
+ var constants = require_constants();
66176
+ var Packer = require_packer();
66177
+ var PackerAsync = module.exports = function(opt) {
66178
+ Stream$2.call(this);
66179
+ let options = opt || {};
66180
+ this._packer = new Packer(options);
66181
+ this._deflate = this._packer.createDeflate();
66182
+ this.readable = true;
66183
+ };
66184
+ util$2.inherits(PackerAsync, Stream$2);
66185
+ PackerAsync.prototype.pack = function(data, width, height, gamma) {
66186
+ this.emit("data", Buffer.from(constants.PNG_SIGNATURE));
66187
+ this.emit("data", this._packer.packIHDR(width, height));
66188
+ if (gamma) this.emit("data", this._packer.packGAMA(gamma));
66189
+ let filteredData = this._packer.filterData(data, width, height);
66190
+ this._deflate.on("error", this.emit.bind(this, "error"));
66191
+ this._deflate.on("data", function(compressedData) {
66192
+ this.emit("data", this._packer.packIDAT(compressedData));
66193
+ }.bind(this));
66194
+ this._deflate.on("end", function() {
66195
+ this.emit("data", this._packer.packIEND());
66196
+ this.emit("end");
66197
+ }.bind(this));
66198
+ this._deflate.end(filteredData);
66199
+ };
66200
+ }));
66201
+ //#endregion
66202
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/sync-inflate.js
66203
+ var require_sync_inflate = /* @__PURE__ */ __commonJSMin(((exports, module) => {
66204
+ var assert = require("assert").ok;
66205
+ var zlib$2 = require("zlib");
66206
+ var util$1 = require("util");
66207
+ var kMaxLength = require("buffer").kMaxLength;
66208
+ function Inflate(opts) {
66209
+ if (!(this instanceof Inflate)) return new Inflate(opts);
66210
+ if (opts && opts.chunkSize < zlib$2.Z_MIN_CHUNK) opts.chunkSize = zlib$2.Z_MIN_CHUNK;
66211
+ zlib$2.Inflate.call(this, opts);
66212
+ this._offset = this._offset === void 0 ? this._outOffset : this._offset;
66213
+ this._buffer = this._buffer || this._outBuffer;
66214
+ if (opts && opts.maxLength != null) this._maxLength = opts.maxLength;
66215
+ }
66216
+ function createInflate(opts) {
66217
+ return new Inflate(opts);
66218
+ }
66219
+ function _close(engine, callback) {
66220
+ if (callback) process.nextTick(callback);
66221
+ if (!engine._handle) return;
66222
+ engine._handle.close();
66223
+ engine._handle = null;
66224
+ }
66225
+ Inflate.prototype._processChunk = function(chunk, flushFlag, asyncCb) {
66226
+ if (typeof asyncCb === "function") return zlib$2.Inflate._processChunk.call(this, chunk, flushFlag, asyncCb);
66227
+ let self = this;
66228
+ let availInBefore = chunk && chunk.length;
66229
+ let availOutBefore = this._chunkSize - this._offset;
66230
+ let leftToInflate = this._maxLength;
66231
+ let inOff = 0;
66232
+ let buffers = [];
66233
+ let nread = 0;
66234
+ let error;
66235
+ this.on("error", function(err) {
66236
+ error = err;
66237
+ });
66238
+ function handleChunk(availInAfter, availOutAfter) {
66239
+ if (self._hadError) return;
66240
+ let have = availOutBefore - availOutAfter;
66241
+ assert(have >= 0, "have should not go down");
66242
+ if (have > 0) {
66243
+ let out = self._buffer.slice(self._offset, self._offset + have);
66244
+ self._offset += have;
66245
+ if (out.length > leftToInflate) out = out.slice(0, leftToInflate);
66246
+ buffers.push(out);
66247
+ nread += out.length;
66248
+ leftToInflate -= out.length;
66249
+ if (leftToInflate === 0) return false;
66250
+ }
66251
+ if (availOutAfter === 0 || self._offset >= self._chunkSize) {
66252
+ availOutBefore = self._chunkSize;
66253
+ self._offset = 0;
66254
+ self._buffer = Buffer.allocUnsafe(self._chunkSize);
66255
+ }
66256
+ if (availOutAfter === 0) {
66257
+ inOff += availInBefore - availInAfter;
66258
+ availInBefore = availInAfter;
66259
+ return true;
66260
+ }
66261
+ return false;
66262
+ }
66263
+ assert(this._handle, "zlib binding closed");
66264
+ let res;
66265
+ do {
66266
+ res = this._handle.writeSync(flushFlag, chunk, inOff, availInBefore, this._buffer, this._offset, availOutBefore);
66267
+ res = res || this._writeState;
66268
+ } while (!this._hadError && handleChunk(res[0], res[1]));
66269
+ if (this._hadError) throw error;
66270
+ if (nread >= kMaxLength) {
66271
+ _close(this);
66272
+ throw new RangeError("Cannot create final Buffer. It would be larger than 0x" + kMaxLength.toString(16) + " bytes");
66273
+ }
66274
+ let buf = Buffer.concat(buffers, nread);
66275
+ _close(this);
66276
+ return buf;
66277
+ };
66278
+ util$1.inherits(Inflate, zlib$2.Inflate);
66279
+ function zlibBufferSync(engine, buffer) {
66280
+ if (typeof buffer === "string") buffer = Buffer.from(buffer);
66281
+ if (!(buffer instanceof Buffer)) throw new TypeError("Not a string or buffer");
66282
+ let flushFlag = engine._finishFlushFlag;
66283
+ if (flushFlag == null) flushFlag = zlib$2.Z_FINISH;
66284
+ return engine._processChunk(buffer, flushFlag);
66285
+ }
66286
+ function inflateSync(buffer, opts) {
66287
+ return zlibBufferSync(new Inflate(opts), buffer);
66288
+ }
66289
+ module.exports = exports = inflateSync;
66290
+ exports.Inflate = Inflate;
66291
+ exports.createInflate = createInflate;
66292
+ exports.inflateSync = inflateSync;
66293
+ }));
66294
+ //#endregion
66295
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/sync-reader.js
66296
+ var require_sync_reader = /* @__PURE__ */ __commonJSMin(((exports, module) => {
66297
+ var SyncReader = module.exports = function(buffer) {
66298
+ this._buffer = buffer;
66299
+ this._reads = [];
66300
+ };
66301
+ SyncReader.prototype.read = function(length, callback) {
66302
+ this._reads.push({
66303
+ length: Math.abs(length),
66304
+ allowLess: length < 0,
66305
+ func: callback
66306
+ });
66307
+ };
66308
+ SyncReader.prototype.process = function() {
66309
+ while (this._reads.length > 0 && this._buffer.length) {
66310
+ let read = this._reads[0];
66311
+ if (this._buffer.length && (this._buffer.length >= read.length || read.allowLess)) {
66312
+ this._reads.shift();
66313
+ let buf = this._buffer;
66314
+ this._buffer = buf.slice(read.length);
66315
+ read.func.call(this, buf.slice(0, read.length));
66316
+ } else break;
66317
+ }
66318
+ if (this._reads.length > 0) throw new Error("There are some read requests waitng on finished stream");
66319
+ if (this._buffer.length > 0) throw new Error("unrecognised content at end of stream");
66320
+ };
66321
+ }));
66322
+ //#endregion
66323
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/filter-parse-sync.js
66324
+ var require_filter_parse_sync = /* @__PURE__ */ __commonJSMin(((exports) => {
66325
+ var SyncReader = require_sync_reader();
66326
+ var Filter = require_filter_parse();
66327
+ exports.process = function(inBuffer, bitmapInfo) {
66328
+ let outBuffers = [];
66329
+ let reader = new SyncReader(inBuffer);
66330
+ new Filter(bitmapInfo, {
66331
+ read: reader.read.bind(reader),
66332
+ write: function(bufferPart) {
66333
+ outBuffers.push(bufferPart);
66334
+ },
66335
+ complete: function() {}
66336
+ }).start();
66337
+ reader.process();
66338
+ return Buffer.concat(outBuffers);
66339
+ };
66340
+ }));
66341
+ //#endregion
66342
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/parser-sync.js
66343
+ var require_parser_sync = /* @__PURE__ */ __commonJSMin(((exports, module) => {
66344
+ var hasSyncZlib = true;
66345
+ var zlib$1 = require("zlib");
66346
+ var inflateSync = require_sync_inflate();
66347
+ if (!zlib$1.deflateSync) hasSyncZlib = false;
66348
+ var SyncReader = require_sync_reader();
66349
+ var FilterSync = require_filter_parse_sync();
66350
+ var Parser = require_parser();
66351
+ var bitmapper = require_bitmapper();
66352
+ var formatNormaliser = require_format_normaliser();
66353
+ module.exports = function(buffer, options) {
66354
+ if (!hasSyncZlib) throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");
66355
+ let err;
66356
+ function handleError(_err_) {
66357
+ err = _err_;
66358
+ }
66359
+ let metaData;
66360
+ function handleMetaData(_metaData_) {
66361
+ metaData = _metaData_;
66362
+ }
66363
+ function handleTransColor(transColor) {
66364
+ metaData.transColor = transColor;
66365
+ }
66366
+ function handlePalette(palette) {
66367
+ metaData.palette = palette;
66368
+ }
66369
+ function handleSimpleTransparency() {
66370
+ metaData.alpha = true;
66371
+ }
66372
+ let gamma;
66373
+ function handleGamma(_gamma_) {
66374
+ gamma = _gamma_;
66375
+ }
66376
+ let inflateDataList = [];
66377
+ function handleInflateData(inflatedData) {
66378
+ inflateDataList.push(inflatedData);
66379
+ }
66380
+ let reader = new SyncReader(buffer);
66381
+ new Parser(options, {
66382
+ read: reader.read.bind(reader),
66383
+ error: handleError,
66384
+ metadata: handleMetaData,
66385
+ gamma: handleGamma,
66386
+ palette: handlePalette,
66387
+ transColor: handleTransColor,
66388
+ inflateData: handleInflateData,
66389
+ simpleTransparency: handleSimpleTransparency
66390
+ }).start();
66391
+ reader.process();
66392
+ if (err) throw err;
66393
+ let inflateData = Buffer.concat(inflateDataList);
66394
+ inflateDataList.length = 0;
66395
+ let inflatedData;
66396
+ if (metaData.interlace) inflatedData = zlib$1.inflateSync(inflateData);
66397
+ else {
66398
+ let imageSize = ((metaData.width * metaData.bpp * metaData.depth + 7 >> 3) + 1) * metaData.height;
66399
+ inflatedData = inflateSync(inflateData, {
66400
+ chunkSize: imageSize,
66401
+ maxLength: imageSize
66402
+ });
66403
+ }
66404
+ inflateData = null;
66405
+ if (!inflatedData || !inflatedData.length) throw new Error("bad png - invalid inflate data response");
66406
+ let unfilteredData = FilterSync.process(inflatedData, metaData);
66407
+ inflateData = null;
66408
+ let bitmapData = bitmapper.dataToBitMap(unfilteredData, metaData);
66409
+ unfilteredData = null;
66410
+ let normalisedBitmapData = formatNormaliser(bitmapData, metaData, options.skipRescale);
66411
+ metaData.data = normalisedBitmapData;
66412
+ metaData.gamma = gamma || 0;
66413
+ return metaData;
66414
+ };
66415
+ }));
66416
+ //#endregion
66417
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/packer-sync.js
66418
+ var require_packer_sync = /* @__PURE__ */ __commonJSMin(((exports, module) => {
66419
+ var hasSyncZlib = true;
66420
+ var zlib = require("zlib");
66421
+ if (!zlib.deflateSync) hasSyncZlib = false;
66422
+ var constants = require_constants();
66423
+ var Packer = require_packer();
66424
+ module.exports = function(metaData, opt) {
66425
+ if (!hasSyncZlib) throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");
66426
+ let packer = new Packer(opt || {});
66427
+ let chunks = [];
66428
+ chunks.push(Buffer.from(constants.PNG_SIGNATURE));
66429
+ chunks.push(packer.packIHDR(metaData.width, metaData.height));
66430
+ if (metaData.gamma) chunks.push(packer.packGAMA(metaData.gamma));
66431
+ let filteredData = packer.filterData(metaData.data, metaData.width, metaData.height);
66432
+ let compressedData = zlib.deflateSync(filteredData, packer.getDeflateOptions());
66433
+ filteredData = null;
66434
+ if (!compressedData || !compressedData.length) throw new Error("bad png - invalid compressed data response");
66435
+ chunks.push(packer.packIDAT(compressedData));
66436
+ chunks.push(packer.packIEND());
66437
+ return Buffer.concat(chunks);
66438
+ };
66439
+ }));
66440
+ //#endregion
66441
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/png-sync.js
66442
+ var require_png_sync = /* @__PURE__ */ __commonJSMin(((exports) => {
66443
+ var parse = require_parser_sync();
66444
+ var pack = require_packer_sync();
66445
+ exports.read = function(buffer, options) {
66446
+ return parse(buffer, options || {});
66447
+ };
66448
+ exports.write = function(png, options) {
66449
+ return pack(png, options);
66450
+ };
66451
+ }));
66452
+ //#endregion
66453
+ //#region node_modules/.pnpm/pngjs@7.0.0/node_modules/pngjs/lib/png.js
66454
+ var require_png = /* @__PURE__ */ __commonJSMin(((exports) => {
66455
+ var util = require("util");
66456
+ var Stream$1 = require("stream");
66457
+ var Parser = require_parser_async();
66458
+ var Packer = require_packer_async();
66459
+ var PNGSync = require_png_sync();
66460
+ var PNG = exports.PNG = function(options) {
66461
+ Stream$1.call(this);
66462
+ options = options || {};
66463
+ this.width = options.width | 0;
66464
+ this.height = options.height | 0;
66465
+ this.data = this.width > 0 && this.height > 0 ? Buffer.alloc(4 * this.width * this.height) : null;
66466
+ if (options.fill && this.data) this.data.fill(0);
66467
+ this.gamma = 0;
66468
+ this.readable = this.writable = true;
66469
+ this._parser = new Parser(options);
66470
+ this._parser.on("error", this.emit.bind(this, "error"));
66471
+ this._parser.on("close", this._handleClose.bind(this));
66472
+ this._parser.on("metadata", this._metadata.bind(this));
66473
+ this._parser.on("gamma", this._gamma.bind(this));
66474
+ this._parser.on("parsed", function(data) {
66475
+ this.data = data;
66476
+ this.emit("parsed", data);
66477
+ }.bind(this));
66478
+ this._packer = new Packer(options);
66479
+ this._packer.on("data", this.emit.bind(this, "data"));
66480
+ this._packer.on("end", this.emit.bind(this, "end"));
66481
+ this._parser.on("close", this._handleClose.bind(this));
66482
+ this._packer.on("error", this.emit.bind(this, "error"));
66483
+ };
66484
+ util.inherits(PNG, Stream$1);
66485
+ PNG.sync = PNGSync;
66486
+ PNG.prototype.pack = function() {
66487
+ if (!this.data || !this.data.length) {
66488
+ this.emit("error", "No data provided");
66489
+ return this;
66490
+ }
66491
+ process.nextTick(function() {
66492
+ this._packer.pack(this.data, this.width, this.height, this.gamma);
66493
+ }.bind(this));
66494
+ return this;
66495
+ };
66496
+ PNG.prototype.parse = function(data, callback) {
66497
+ if (callback) {
66498
+ let onParsed, onError;
66499
+ onParsed = function(parsedData) {
66500
+ this.removeListener("error", onError);
66501
+ this.data = parsedData;
66502
+ callback(null, this);
66503
+ }.bind(this);
66504
+ onError = function(err) {
66505
+ this.removeListener("parsed", onParsed);
66506
+ callback(err, null);
66507
+ }.bind(this);
66508
+ this.once("parsed", onParsed);
66509
+ this.once("error", onError);
66510
+ }
66511
+ this.end(data);
66512
+ return this;
66513
+ };
66514
+ PNG.prototype.write = function(data) {
66515
+ this._parser.write(data);
66516
+ return true;
66517
+ };
66518
+ PNG.prototype.end = function(data) {
66519
+ this._parser.end(data);
66520
+ };
66521
+ PNG.prototype._metadata = function(metadata) {
66522
+ this.width = metadata.width;
66523
+ this.height = metadata.height;
66524
+ this.emit("metadata", metadata);
66525
+ };
66526
+ PNG.prototype._gamma = function(gamma) {
66527
+ this.gamma = gamma;
66528
+ };
66529
+ PNG.prototype._handleClose = function() {
66530
+ if (!this._parser.writable && !this._packer.readable) this.emit("close");
66531
+ };
66532
+ PNG.bitblt = function(src, dst, srcX, srcY, width, height, deltaX, deltaY) {
66533
+ srcX |= 0;
66534
+ srcY |= 0;
66535
+ width |= 0;
66536
+ height |= 0;
66537
+ deltaX |= 0;
66538
+ deltaY |= 0;
66539
+ if (srcX > src.width || srcY > src.height || srcX + width > src.width || srcY + height > src.height) throw new Error("bitblt reading outside image");
66540
+ if (deltaX > dst.width || deltaY > dst.height || deltaX + width > dst.width || deltaY + height > dst.height) throw new Error("bitblt writing outside image");
66541
+ for (let y = 0; y < height; y++) src.data.copy(dst.data, (deltaY + y) * dst.width + deltaX << 2, (srcY + y) * src.width + srcX << 2, (srcY + y) * src.width + srcX + width << 2);
66542
+ };
66543
+ PNG.prototype.bitblt = function(dst, srcX, srcY, width, height, deltaX, deltaY) {
66544
+ PNG.bitblt(this, dst, srcX, srcY, width, height, deltaX, deltaY);
66545
+ return this;
66546
+ };
66547
+ PNG.adjustGamma = function(src) {
66548
+ if (src.gamma) {
66549
+ for (let y = 0; y < src.height; y++) for (let x = 0; x < src.width; x++) {
66550
+ let idx = src.width * y + x << 2;
66551
+ for (let i = 0; i < 3; i++) {
66552
+ let sample = src.data[idx + i] / 255;
66553
+ sample = Math.pow(sample, 1 / 2.2 / src.gamma);
66554
+ src.data[idx + i] = Math.round(sample * 255);
66555
+ }
66556
+ }
66557
+ src.gamma = 0;
66558
+ }
66559
+ };
66560
+ PNG.prototype.adjustGamma = function() {
66561
+ PNG.adjustGamma(this);
66562
+ };
66563
+ }));
66564
+ //#endregion
62845
66565
  //#region src/lib/output/binary.ts
66566
+ var import_jpeg_js = /* @__PURE__ */ __toESM(require_jpeg_js(), 1);
66567
+ var import_png = require_png();
62846
66568
  function isGhostty() {
62847
- if (process.env.GHOSTTY_RESOURCES_DIR) return true;
66569
+ if (process.env.GHOSTTY_RESOURCES_DIR || process.env.GHOSTTY_BIN_DIR || process.env.GHOSTTY_SHELL_FEATURES) return true;
62848
66570
  if ((process.env.TERM ?? "").includes("ghostty")) return true;
62849
66571
  return (process.env.TERM_PROGRAM ?? "").toLowerCase().includes("ghostty");
62850
66572
  }
66573
+ function isKitty() {
66574
+ if (process.env.KITTY_WINDOW_ID || process.env.KITTY_PID) return true;
66575
+ if ((process.env.TERM ?? "").includes("xterm-kitty")) return true;
66576
+ return (process.env.TERM_PROGRAM ?? "").toLowerCase() === "kitty";
66577
+ }
62851
66578
  function isWezTerm() {
62852
66579
  if (process.env.WEZTERM_EXECUTABLE || process.env.WEZTERM_PANE) return true;
62853
66580
  return (process.env.TERM_PROGRAM ?? "").toLowerCase().includes("wezterm");
62854
66581
  }
62855
66582
  function detectTerminalImageProtocol() {
62856
- if (process.env.KITTY_WINDOW_ID || (process.env.TERM ?? "").includes("xterm-kitty")) return "kitty";
66583
+ if (isKitty()) return "kitty";
62857
66584
  if (isGhostty()) return "ghostty";
62858
66585
  if (isWezTerm()) return "wezterm";
62859
66586
  if (process.env.TERM_PROGRAM === "iTerm.app" || process.env.ITERM_SESSION_ID) return "iterm2";
@@ -62866,6 +66593,31 @@ function isImageBody(body) {
62866
66593
  if (!body || body.type !== "text" && body.type !== "binary") return false;
62867
66594
  return (body.mediaType?.toLowerCase() ?? "").startsWith("image/");
62868
66595
  }
66596
+ function isPngImage(body) {
66597
+ if ((body.mediaType?.toLowerCase() ?? "") === "image/png") return true;
66598
+ return body.content.startsWith("iVBORw0KGgo");
66599
+ }
66600
+ function isJpegImage(body) {
66601
+ const mediaType = body.mediaType?.toLowerCase() ?? "";
66602
+ if (mediaType === "image/jpeg" || mediaType === "image/jpg") return true;
66603
+ return body.content.startsWith("/9j/");
66604
+ }
66605
+ function usesKittyGraphicsProtocol(protocol) {
66606
+ return protocol === "kitty" || protocol === "ghostty";
66607
+ }
66608
+ function convertJpegBase64ToPngBase64(base64) {
66609
+ try {
66610
+ const decoded = import_jpeg_js.default.decode(Buffer.from(base64, "base64"));
66611
+ const png = new import_png.PNG({
66612
+ width: decoded.width,
66613
+ height: decoded.height
66614
+ });
66615
+ png.data = decoded.data;
66616
+ return import_png.PNG.sync.write(png).toString("base64");
66617
+ } catch {
66618
+ return null;
66619
+ }
66620
+ }
62869
66621
  function formatByteSize(bytes) {
62870
66622
  if (!Number.isFinite(bytes) || bytes < 0) return `${bytes} B`;
62871
66623
  if (bytes < 1024) return `${bytes} B`;
@@ -62876,10 +66628,16 @@ function formatByteSize(bytes) {
62876
66628
  function kittyImageEscape(base64) {
62877
66629
  const CHUNK = 4096;
62878
66630
  let out = "";
62879
- for (let i = 0; i < base64.length; i += CHUNK) {
62880
- const chunk = base64.slice(i, i + CHUNK);
62881
- const more = i + CHUNK < base64.length ? 1 : 0;
62882
- out += `\u001b_Ga=T,t=d,m=${more};${chunk}\u001b\\`;
66631
+ let offset = 0;
66632
+ let first = true;
66633
+ while (offset < base64.length) {
66634
+ const chunk = base64.slice(offset, offset + CHUNK);
66635
+ offset += CHUNK;
66636
+ const more = offset < base64.length ? 1 : 0;
66637
+ if (first) {
66638
+ out += `\u001b_Ga=T,f=100,m=${more};${chunk}\u001b\\`;
66639
+ first = false;
66640
+ } else out += `\u001b_Gm=${more};${chunk}\u001b\\`;
62883
66641
  }
62884
66642
  return out;
62885
66643
  }
@@ -62890,8 +66648,21 @@ function renderImageInline(body) {
62890
66648
  const protocol = detectTerminalImageProtocol();
62891
66649
  if (!protocol) return null;
62892
66650
  if (body.encoding !== "base64") return null;
62893
- if (protocol === "kitty" || protocol === "ghostty") return kittyImageEscape(body.content);
62894
- if (protocol === "iterm2" || protocol === "wezterm") return iterm2ImageEscape(body.content, body.byteLength);
66651
+ if (usesKittyGraphicsProtocol(protocol)) {
66652
+ let base64 = body.content;
66653
+ let convertedFrom;
66654
+ if (!isPngImage(body) && isJpegImage(body)) {
66655
+ const pngBase64 = convertJpegBase64ToPngBase64(body.content);
66656
+ if (!pngBase64) return null;
66657
+ base64 = pngBase64;
66658
+ convertedFrom = "jpeg";
66659
+ }
66660
+ return {
66661
+ content: kittyImageEscape(base64),
66662
+ convertedFrom
66663
+ };
66664
+ }
66665
+ if (protocol === "iterm2" || protocol === "wezterm") return { content: iterm2ImageEscape(body.content, body.byteLength) };
62895
66666
  return null;
62896
66667
  }
62897
66668
  //#endregion
@@ -63121,7 +66892,12 @@ function formatBody(body) {
63121
66892
  const mediaType = body.mediaType ?? "application/octet-stream";
63122
66893
  if (isImageBody(body)) {
63123
66894
  const rendered = renderImageInline(body);
63124
- if (rendered) return rendered;
66895
+ if (rendered) {
66896
+ const parts = [];
66897
+ if (rendered.convertedFrom === "jpeg") parts.push(import_picocolors.default.yellow("! Converted JPEG to PNG for terminal compatibility"));
66898
+ parts.push(rendered.content);
66899
+ return parts.join("\n");
66900
+ }
63125
66901
  }
63126
66902
  return import_picocolors.default.dim(`Binary response body omitted (${mediaType}, ${formatByteSize(body.byteLength)})`);
63127
66903
  }