azot 5.0.0-alpha.13 → 5.0.0-alpha.15

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/azt.cjs CHANGED
@@ -1,196 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const require_chunk = require('./chunk-BmvPcxpV.cjs');
3
- let node_util = require("node:util");
4
- let node_fs = require("node:fs");
5
- let node_path = require("node:path");
6
- node_path = require_chunk.__toESM(node_path);
7
- let tsdown = require("tsdown");
8
- let node_crypto = require("node:crypto");
9
- let javascript_obfuscator = require("javascript-obfuscator");
10
- javascript_obfuscator = require_chunk.__toESM(javascript_obfuscator);
11
-
12
- //#region src/crypto.ts
13
- const MAGIC_BYTES = Buffer.from("STX", "utf8");
14
- const encrypt = (publicKey, inputPath, outputPath) => {
15
- const aesKey = (0, node_crypto.randomBytes)(32);
16
- const aesIv = (0, node_crypto.randomBytes)(16);
17
- const code = (0, node_fs.readFileSync)(inputPath);
18
- const cipher = (0, node_crypto.createCipheriv)("aes-256-cbc", aesKey, aesIv);
19
- const encryptedCode = Buffer.concat([cipher.update(code), cipher.final()]);
20
- const encryptedAesKey = (0, node_crypto.publicEncrypt)(publicKey, aesKey);
21
- const output = Buffer.concat([
22
- MAGIC_BYTES,
23
- aesIv,
24
- encryptedAesKey,
25
- encryptedCode
26
- ]);
27
- if (outputPath) (0, node_fs.writeFileSync)(outputPath, output);
28
- return {
29
- aesIv,
30
- encryptedAesKey,
31
- encryptedCode
32
- };
33
- };
34
- const decrypt = (privateKey, inputPath, outputPath) => {
35
- const data = (0, node_fs.readFileSync)(inputPath);
36
- const magicSize = MAGIC_BYTES.byteLength;
37
- if (!data.subarray(0, magicSize).equals(MAGIC_BYTES)) throw new Error("Incorrect file format");
38
- const aesIvStart = magicSize;
39
- const encryptedAesKeyStart = aesIvStart + 16;
40
- const encryptedCodeStart = encryptedAesKeyStart + 512;
41
- const aesIv = data.subarray(aesIvStart, encryptedAesKeyStart);
42
- const encryptedAesKey = data.subarray(encryptedAesKeyStart, encryptedCodeStart);
43
- const encryptedCode = data.subarray(encryptedCodeStart);
44
- const decipher = (0, node_crypto.createDecipheriv)("aes-256-cbc", (0, node_crypto.privateDecrypt)(privateKey, encryptedAesKey), aesIv);
45
- const result = Buffer.concat([decipher.update(encryptedCode), decipher.final()]).toString("utf8");
46
- if (outputPath) (0, node_fs.writeFileSync)(outputPath, result);
47
- return result;
48
- };
49
-
50
- //#endregion
51
- //#region src/obfuscation.ts
52
- const obfuscate = (inputPath, outputPath) => {
53
- const code = (0, node_fs.readFileSync)(inputPath, "utf8");
54
- console.log("Obfuscating...");
55
- console.time("Obfuscation complete in");
56
- const result = javascript_obfuscator.default.obfuscate(code, {
57
- target: "node",
58
- compact: true,
59
- controlFlowFlattening: true,
60
- controlFlowFlatteningThreshold: 1,
61
- deadCodeInjection: true,
62
- debugProtection: true,
63
- identifierNamesGenerator: "hexadecimal",
64
- numbersToExpressions: true,
65
- selfDefending: true,
66
- simplify: true,
67
- splitStrings: true,
68
- splitStringsChunkLength: 5,
69
- stringArray: true,
70
- stringArrayCallsTransform: true,
71
- stringArrayCallsTransformThreshold: 1,
72
- stringArrayEncoding: ["base64"],
73
- stringArrayIndexShift: true,
74
- stringArrayRotate: true,
75
- stringArrayShuffle: true,
76
- stringArrayWrappersCount: 2,
77
- stringArrayWrappersChainedCalls: true,
78
- stringArrayWrappersType: "function",
79
- stringArrayThreshold: 1,
80
- transformObjectKeys: true,
81
- unicodeEscapeSequence: false
82
- });
83
- console.timeEnd("Obfuscation complete in");
84
- const obfuscatedCode = result.getObfuscatedCode();
85
- (0, node_fs.writeFileSync)(outputPath || inputPath, obfuscatedCode);
86
- return obfuscatedCode;
87
- };
88
-
89
- //#endregion
90
- //#region src/cli.ts
91
- const args = (0, node_util.parseArgs)({
92
- allowPositionals: true,
93
- allowNegative: true,
94
- options: {
95
- input: {
96
- type: "string",
97
- short: "i",
98
- description: "Path to the input file"
99
- },
100
- key: {
101
- type: "string",
102
- short: "k",
103
- description: "Path to the key file (public for encrypt, private for decrypt)"
104
- },
105
- output: {
106
- type: "string",
107
- short: "o",
108
- description: "Path to the output file"
109
- },
110
- format: {
111
- type: "string",
112
- short: "f",
113
- description: "Output format"
114
- },
115
- watch: {
116
- type: "boolean",
117
- description: "Watch file changes"
118
- },
119
- minify: {
120
- type: "boolean",
121
- description: "Minify output"
122
- },
123
- obfuscate: {
124
- type: "boolean",
125
- description: "Obfuscate output"
126
- },
127
- encrypt: {
128
- type: "boolean",
129
- description: "Encrypt extension source code (.js will be packed inside .stx)"
130
- },
131
- decrypt: {
132
- type: "boolean",
133
- description: "Decrypt encrypted extension"
134
- }
135
- }
136
- });
137
- const getDefaultEntryFile = () => {
138
- const searchDirs = [
139
- process.cwd(),
140
- node_path.default.join(process.cwd(), "src"),
141
- node_path.default.join(process.cwd(), "lib")
142
- ];
143
- for (const searchDir of searchDirs) {
144
- const scripts = (0, node_fs.readdirSync)(searchDir).filter((file) => !file.endsWith(".d.ts")).filter((file) => new Set([
145
- ".ts",
146
- ".js",
147
- ".cjs",
148
- ".mjs"
149
- ]).has(node_path.default.extname(file)));
150
- const getFilename = (file) => node_path.default.basename(file, node_path.default.extname(file));
151
- const entry = scripts.find((file) => getFilename(file) === "index") || scripts.find((file) => getFilename(file) === "main") || scripts[0];
152
- if (entry) return node_path.default.join(searchDir, entry);
153
- }
154
- };
155
- (async () => {
156
- const [command, ...commands] = args.positionals;
157
- const entry = args.values.input || commands[0] || getDefaultEntryFile();
158
- if (!entry) throw new Error("No entry file found");
159
- if (command === "build" || command === "pack") {
160
- const shouldMinify = typeof args.values.minify === "boolean" ? args.values.minify : true;
161
- await (0, tsdown.build)({
162
- entry: entry.replace(process.cwd(), ".").replace(node_path.default.sep, "/"),
163
- format: args.values.format ?? "cjs",
164
- platform: "node",
165
- target: "node22",
166
- watch: args.values.watch,
167
- minify: shouldMinify,
168
- inlineOnly: false
169
- });
170
- const ext = args.values.format ?? "cjs";
171
- args.values.input = node_path.default.join(process.cwd(), "dist", node_path.default.basename(entry).replace(/\.ts$/, `.${ext}`));
172
- const packageJson = require(node_path.default.join(process.cwd(), "package.json"));
173
- if (typeof args.values.obfuscate === "boolean" ? args.values.obfuscate : packageJson.private) obfuscate(args.values.input, args.values.input);
174
- if (args.values.encrypt || command === "pack") {
175
- const key = (0, node_fs.readFileSync)(args.values.key || node_path.default.join(__dirname, "../public.pem"), "utf8");
176
- const output = args.values.output || args.values.input.replace(/\.js$/, `-${packageJson.version}.stx`);
177
- encrypt(key, args.values.input, output);
178
- (0, node_fs.rmSync)(args.values.input);
179
- }
180
- } else if (command === "decrypt") {
181
- decrypt((0, node_fs.readFileSync)(args.values.key || node_path.default.join(__dirname, "../private.pem"), "utf8"), entry, args.values.output || entry.replace(/\.stx$/, ".js"));
182
- if (args.values.input) (0, node_fs.rmSync)(args.values.input);
183
- } else if (command === "dev" || command === "develop" || !command) {
184
- const shouldMinify = typeof args.values.minify === "boolean" ? args.values.minify : false;
185
- await (0, tsdown.build)({
186
- entry,
187
- format: args.values.format ?? "cjs",
188
- platform: "node",
189
- target: "node22",
190
- watch: true,
191
- minify: shouldMinify
192
- });
193
- }
194
- })();
195
-
196
- //#endregion
2
+ const e=require(`./chunk-350yNsax.cjs`);let t=require(`node:util`),n=require(`node:fs`),r=require(`node:path`);r=e.n(r);let i=require(`tsdown`),a=require(`node:crypto`),o=require(`javascript-obfuscator`);o=e.n(o);const s=Buffer.from(`STX`,`utf8`),c=(e,t,r)=>{let i=(0,a.randomBytes)(32),o=(0,a.randomBytes)(16),c=(0,n.readFileSync)(t),l=(0,a.createCipheriv)(`aes-256-cbc`,i,o),u=Buffer.concat([l.update(c),l.final()]),d=(0,a.publicEncrypt)(e,i),f=Buffer.concat([s,o,d,u]);return r&&(0,n.writeFileSync)(r,f),{aesIv:o,encryptedAesKey:d,encryptedCode:u}},l=(e,t,r)=>{let i=(0,n.readFileSync)(t),o=s.byteLength;if(!i.subarray(0,o).equals(s))throw Error(`Incorrect file format`);let c=o,l=c+16,u=l+512,d=i.subarray(c,l),f=i.subarray(l,u),p=i.subarray(u),m=(0,a.createDecipheriv)(`aes-256-cbc`,(0,a.privateDecrypt)(e,f),d),h=Buffer.concat([m.update(p),m.final()]).toString(`utf8`);return r&&(0,n.writeFileSync)(r,h),h},u=(e,t)=>{let r=(0,n.readFileSync)(e,`utf8`);console.log(`Obfuscating...`),console.time(`Obfuscation complete in`);let i=o.default.obfuscate(r,{target:`node`,compact:!0,controlFlowFlattening:!0,controlFlowFlatteningThreshold:1,deadCodeInjection:!0,debugProtection:!0,identifierNamesGenerator:`hexadecimal`,numbersToExpressions:!0,selfDefending:!0,simplify:!0,splitStrings:!0,splitStringsChunkLength:5,stringArray:!0,stringArrayCallsTransform:!0,stringArrayCallsTransformThreshold:1,stringArrayEncoding:[`base64`],stringArrayIndexShift:!0,stringArrayRotate:!0,stringArrayShuffle:!0,stringArrayWrappersCount:2,stringArrayWrappersChainedCalls:!0,stringArrayWrappersType:`function`,stringArrayThreshold:1,transformObjectKeys:!0,unicodeEscapeSequence:!1});console.timeEnd(`Obfuscation complete in`);let a=i.getObfuscatedCode();return(0,n.writeFileSync)(t||e,a),a},d=(0,t.parseArgs)({allowPositionals:!0,allowNegative:!0,options:{input:{type:`string`,short:`i`,description:`Path to the input file`},key:{type:`string`,short:`k`,description:`Path to the key file (public for encrypt, private for decrypt)`},output:{type:`string`,short:`o`,description:`Path to the output file`},format:{type:`string`,short:`f`,description:`Output format`},watch:{type:`boolean`,description:`Watch file changes`},minify:{type:`boolean`,description:`Minify output`},obfuscate:{type:`boolean`,description:`Obfuscate output`},encrypt:{type:`boolean`,description:`Encrypt extension source code (.js will be packed inside .stx)`},decrypt:{type:`boolean`,description:`Decrypt encrypted extension`}}}),f=()=>{let e=[process.cwd(),r.default.join(process.cwd(),`src`),r.default.join(process.cwd(),`lib`)];for(let t of e){let e=(0,n.readdirSync)(t).filter(e=>!e.endsWith(`.d.ts`)).filter(e=>new Set([`.ts`,`.js`,`.cjs`,`.mjs`]).has(r.default.extname(e))),i=e=>r.default.basename(e,r.default.extname(e)),a=e.find(e=>i(e)===`index`)||e.find(e=>i(e)===`main`)||e[0];if(a)return r.default.join(t,a)}};(async()=>{let[e,...t]=d.positionals,a=d.values.input||t[0]||f();if(!a)throw Error(`No entry file found`);if(e===`build`||e===`pack`){let t=typeof d.values.minify==`boolean`?d.values.minify:!0;await(0,i.build)({entry:a.replace(process.cwd(),`.`).replace(r.default.sep,`/`),format:d.values.format??`cjs`,platform:`node`,target:`node22`,watch:d.values.watch,minify:t,inlineOnly:!1});let o=d.values.format??`cjs`;d.values.input=r.default.join(process.cwd(),`dist`,r.default.basename(a).replace(/\.ts$/,`.${o}`));let s=require(r.default.join(process.cwd(),`package.json`));if((typeof d.values.obfuscate==`boolean`?d.values.obfuscate:s.private)&&u(d.values.input,d.values.input),d.values.encrypt||e===`pack`){let e=(0,n.readFileSync)(d.values.key||r.default.join(__dirname,`../public.pem`),`utf8`),t=d.values.output||d.values.input.replace(/\.js$/,`-${s.version}.stx`);c(e,d.values.input,t),(0,n.rmSync)(d.values.input)}}else if(e===`decrypt`)l((0,n.readFileSync)(d.values.key||r.default.join(__dirname,`../private.pem`),`utf8`),a,d.values.output||a.replace(/\.stx$/,`.js`)),d.values.input&&(0,n.rmSync)(d.values.input);else if(e===`dev`||e===`develop`||!e){let e=typeof d.values.minify==`boolean`?d.values.minify:!1;await(0,i.build)({entry:a,format:d.values.format??`cjs`,platform:`node`,target:`node22`,watch:!0,minify:e})}})();
package/dist/azt.mjs CHANGED
@@ -1,195 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import { n as __require } from "./chunk-DEt8GZDa.mjs";
3
- import { parseArgs } from "node:util";
4
- import { readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs";
5
- import path from "node:path";
6
- import { build } from "tsdown";
7
- import { createCipheriv, createDecipheriv, privateDecrypt, publicEncrypt, randomBytes } from "node:crypto";
8
- import JavaScriptObfuscator from "javascript-obfuscator";
9
-
10
- //#region src/crypto.ts
11
- const MAGIC_BYTES = Buffer.from("STX", "utf8");
12
- const encrypt = (publicKey, inputPath, outputPath) => {
13
- const aesKey = randomBytes(32);
14
- const aesIv = randomBytes(16);
15
- const code = readFileSync(inputPath);
16
- const cipher = createCipheriv("aes-256-cbc", aesKey, aesIv);
17
- const encryptedCode = Buffer.concat([cipher.update(code), cipher.final()]);
18
- const encryptedAesKey = publicEncrypt(publicKey, aesKey);
19
- const output = Buffer.concat([
20
- MAGIC_BYTES,
21
- aesIv,
22
- encryptedAesKey,
23
- encryptedCode
24
- ]);
25
- if (outputPath) writeFileSync(outputPath, output);
26
- return {
27
- aesIv,
28
- encryptedAesKey,
29
- encryptedCode
30
- };
31
- };
32
- const decrypt = (privateKey, inputPath, outputPath) => {
33
- const data = readFileSync(inputPath);
34
- const magicSize = MAGIC_BYTES.byteLength;
35
- if (!data.subarray(0, magicSize).equals(MAGIC_BYTES)) throw new Error("Incorrect file format");
36
- const aesIvStart = magicSize;
37
- const encryptedAesKeyStart = aesIvStart + 16;
38
- const encryptedCodeStart = encryptedAesKeyStart + 512;
39
- const aesIv = data.subarray(aesIvStart, encryptedAesKeyStart);
40
- const encryptedAesKey = data.subarray(encryptedAesKeyStart, encryptedCodeStart);
41
- const encryptedCode = data.subarray(encryptedCodeStart);
42
- const decipher = createDecipheriv("aes-256-cbc", privateDecrypt(privateKey, encryptedAesKey), aesIv);
43
- const result = Buffer.concat([decipher.update(encryptedCode), decipher.final()]).toString("utf8");
44
- if (outputPath) writeFileSync(outputPath, result);
45
- return result;
46
- };
47
-
48
- //#endregion
49
- //#region src/obfuscation.ts
50
- const obfuscate = (inputPath, outputPath) => {
51
- const code = readFileSync(inputPath, "utf8");
52
- console.log("Obfuscating...");
53
- console.time("Obfuscation complete in");
54
- const result = JavaScriptObfuscator.obfuscate(code, {
55
- target: "node",
56
- compact: true,
57
- controlFlowFlattening: true,
58
- controlFlowFlatteningThreshold: 1,
59
- deadCodeInjection: true,
60
- debugProtection: true,
61
- identifierNamesGenerator: "hexadecimal",
62
- numbersToExpressions: true,
63
- selfDefending: true,
64
- simplify: true,
65
- splitStrings: true,
66
- splitStringsChunkLength: 5,
67
- stringArray: true,
68
- stringArrayCallsTransform: true,
69
- stringArrayCallsTransformThreshold: 1,
70
- stringArrayEncoding: ["base64"],
71
- stringArrayIndexShift: true,
72
- stringArrayRotate: true,
73
- stringArrayShuffle: true,
74
- stringArrayWrappersCount: 2,
75
- stringArrayWrappersChainedCalls: true,
76
- stringArrayWrappersType: "function",
77
- stringArrayThreshold: 1,
78
- transformObjectKeys: true,
79
- unicodeEscapeSequence: false
80
- });
81
- console.timeEnd("Obfuscation complete in");
82
- const obfuscatedCode = result.getObfuscatedCode();
83
- writeFileSync(outputPath || inputPath, obfuscatedCode);
84
- return obfuscatedCode;
85
- };
86
-
87
- //#endregion
88
- //#region src/cli.ts
89
- const args = parseArgs({
90
- allowPositionals: true,
91
- allowNegative: true,
92
- options: {
93
- input: {
94
- type: "string",
95
- short: "i",
96
- description: "Path to the input file"
97
- },
98
- key: {
99
- type: "string",
100
- short: "k",
101
- description: "Path to the key file (public for encrypt, private for decrypt)"
102
- },
103
- output: {
104
- type: "string",
105
- short: "o",
106
- description: "Path to the output file"
107
- },
108
- format: {
109
- type: "string",
110
- short: "f",
111
- description: "Output format"
112
- },
113
- watch: {
114
- type: "boolean",
115
- description: "Watch file changes"
116
- },
117
- minify: {
118
- type: "boolean",
119
- description: "Minify output"
120
- },
121
- obfuscate: {
122
- type: "boolean",
123
- description: "Obfuscate output"
124
- },
125
- encrypt: {
126
- type: "boolean",
127
- description: "Encrypt extension source code (.js will be packed inside .stx)"
128
- },
129
- decrypt: {
130
- type: "boolean",
131
- description: "Decrypt encrypted extension"
132
- }
133
- }
134
- });
135
- const getDefaultEntryFile = () => {
136
- const searchDirs = [
137
- process.cwd(),
138
- path.join(process.cwd(), "src"),
139
- path.join(process.cwd(), "lib")
140
- ];
141
- for (const searchDir of searchDirs) {
142
- const scripts = readdirSync(searchDir).filter((file) => !file.endsWith(".d.ts")).filter((file) => new Set([
143
- ".ts",
144
- ".js",
145
- ".cjs",
146
- ".mjs"
147
- ]).has(path.extname(file)));
148
- const getFilename = (file) => path.basename(file, path.extname(file));
149
- const entry = scripts.find((file) => getFilename(file) === "index") || scripts.find((file) => getFilename(file) === "main") || scripts[0];
150
- if (entry) return path.join(searchDir, entry);
151
- }
152
- };
153
- (async () => {
154
- const [command, ...commands] = args.positionals;
155
- const entry = args.values.input || commands[0] || getDefaultEntryFile();
156
- if (!entry) throw new Error("No entry file found");
157
- if (command === "build" || command === "pack") {
158
- const shouldMinify = typeof args.values.minify === "boolean" ? args.values.minify : true;
159
- await build({
160
- entry: entry.replace(process.cwd(), ".").replace(path.sep, "/"),
161
- format: args.values.format ?? "cjs",
162
- platform: "node",
163
- target: "node22",
164
- watch: args.values.watch,
165
- minify: shouldMinify,
166
- inlineOnly: false
167
- });
168
- const ext = args.values.format ?? "cjs";
169
- args.values.input = path.join(process.cwd(), "dist", path.basename(entry).replace(/\.ts$/, `.${ext}`));
170
- const packageJson = __require(path.join(process.cwd(), "package.json"));
171
- if (typeof args.values.obfuscate === "boolean" ? args.values.obfuscate : packageJson.private) obfuscate(args.values.input, args.values.input);
172
- if (args.values.encrypt || command === "pack") {
173
- const key = readFileSync(args.values.key || path.join(__dirname, "../public.pem"), "utf8");
174
- const output = args.values.output || args.values.input.replace(/\.js$/, `-${packageJson.version}.stx`);
175
- encrypt(key, args.values.input, output);
176
- rmSync(args.values.input);
177
- }
178
- } else if (command === "decrypt") {
179
- decrypt(readFileSync(args.values.key || path.join(__dirname, "../private.pem"), "utf8"), entry, args.values.output || entry.replace(/\.stx$/, ".js"));
180
- if (args.values.input) rmSync(args.values.input);
181
- } else if (command === "dev" || command === "develop" || !command) {
182
- const shouldMinify = typeof args.values.minify === "boolean" ? args.values.minify : false;
183
- await build({
184
- entry,
185
- format: args.values.format ?? "cjs",
186
- platform: "node",
187
- target: "node22",
188
- watch: true,
189
- minify: shouldMinify
190
- });
191
- }
192
- })();
193
-
194
- //#endregion
195
- export { };
2
+ import{n as e}from"./chunk-DtROqxiw.mjs";import{parseArgs as t}from"node:util";import{readFileSync as n,readdirSync as r,rmSync as i,writeFileSync as a}from"node:fs";import o from"node:path";import{build as s}from"tsdown";import{createCipheriv as c,createDecipheriv as l,privateDecrypt as u,publicEncrypt as d,randomBytes as f}from"node:crypto";import p from"javascript-obfuscator";const m=Buffer.from(`STX`,`utf8`),h=(e,t,r)=>{let i=f(32),o=f(16),s=n(t),l=c(`aes-256-cbc`,i,o),u=Buffer.concat([l.update(s),l.final()]),p=d(e,i),h=Buffer.concat([m,o,p,u]);return r&&a(r,h),{aesIv:o,encryptedAesKey:p,encryptedCode:u}},g=(e,t,r)=>{let i=n(t),o=m.byteLength;if(!i.subarray(0,o).equals(m))throw Error(`Incorrect file format`);let s=o,c=s+16,d=c+512,f=i.subarray(s,c),p=i.subarray(c,d),h=i.subarray(d),g=l(`aes-256-cbc`,u(e,p),f),_=Buffer.concat([g.update(h),g.final()]).toString(`utf8`);return r&&a(r,_),_},_=(e,t)=>{let r=n(e,`utf8`);console.log(`Obfuscating...`),console.time(`Obfuscation complete in`);let i=p.obfuscate(r,{target:`node`,compact:!0,controlFlowFlattening:!0,controlFlowFlatteningThreshold:1,deadCodeInjection:!0,debugProtection:!0,identifierNamesGenerator:`hexadecimal`,numbersToExpressions:!0,selfDefending:!0,simplify:!0,splitStrings:!0,splitStringsChunkLength:5,stringArray:!0,stringArrayCallsTransform:!0,stringArrayCallsTransformThreshold:1,stringArrayEncoding:[`base64`],stringArrayIndexShift:!0,stringArrayRotate:!0,stringArrayShuffle:!0,stringArrayWrappersCount:2,stringArrayWrappersChainedCalls:!0,stringArrayWrappersType:`function`,stringArrayThreshold:1,transformObjectKeys:!0,unicodeEscapeSequence:!1});console.timeEnd(`Obfuscation complete in`);let o=i.getObfuscatedCode();return a(t||e,o),o},v=t({allowPositionals:!0,allowNegative:!0,options:{input:{type:`string`,short:`i`,description:`Path to the input file`},key:{type:`string`,short:`k`,description:`Path to the key file (public for encrypt, private for decrypt)`},output:{type:`string`,short:`o`,description:`Path to the output file`},format:{type:`string`,short:`f`,description:`Output format`},watch:{type:`boolean`,description:`Watch file changes`},minify:{type:`boolean`,description:`Minify output`},obfuscate:{type:`boolean`,description:`Obfuscate output`},encrypt:{type:`boolean`,description:`Encrypt extension source code (.js will be packed inside .stx)`},decrypt:{type:`boolean`,description:`Decrypt encrypted extension`}}}),y=()=>{let e=[process.cwd(),o.join(process.cwd(),`src`),o.join(process.cwd(),`lib`)];for(let t of e){let e=r(t).filter(e=>!e.endsWith(`.d.ts`)).filter(e=>new Set([`.ts`,`.js`,`.cjs`,`.mjs`]).has(o.extname(e))),n=e=>o.basename(e,o.extname(e)),i=e.find(e=>n(e)===`index`)||e.find(e=>n(e)===`main`)||e[0];if(i)return o.join(t,i)}};(async()=>{let[t,...r]=v.positionals,a=v.values.input||r[0]||y();if(!a)throw Error(`No entry file found`);if(t===`build`||t===`pack`){let r=typeof v.values.minify==`boolean`?v.values.minify:!0;await s({entry:a.replace(process.cwd(),`.`).replace(o.sep,`/`),format:v.values.format??`cjs`,platform:`node`,target:`node22`,watch:v.values.watch,minify:r,inlineOnly:!1});let c=v.values.format??`cjs`;v.values.input=o.join(process.cwd(),`dist`,o.basename(a).replace(/\.ts$/,`.${c}`));let l=e(o.join(process.cwd(),`package.json`));if((typeof v.values.obfuscate==`boolean`?v.values.obfuscate:l.private)&&_(v.values.input,v.values.input),v.values.encrypt||t===`pack`){let e=n(v.values.key||o.join(__dirname,`../public.pem`),`utf8`),t=v.values.output||v.values.input.replace(/\.js$/,`-${l.version}.stx`);h(e,v.values.input,t),i(v.values.input)}}else if(t===`decrypt`)g(n(v.values.key||o.join(__dirname,`../private.pem`),`utf8`),a,v.values.output||a.replace(/\.stx$/,`.js`)),v.values.input&&i(v.values.input);else if(t===`dev`||t===`develop`||!t){let e=typeof v.values.minify==`boolean`?v.values.minify:!1;await s({entry:a,format:v.values.format??`cjs`,platform:`node`,target:`node22`,watch:!0,minify:e})}})();export{};
@@ -0,0 +1 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
@@ -0,0 +1 @@
1
+ import{createRequire as e}from"node:module";var t=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),n=e(import.meta.url);export{n,t};
@@ -0,0 +1,4 @@
1
+ import{t as e}from"./chunk-DtROqxiw.mjs";import{existsSync as t,mkdirSync as n}from"node:fs";import r,{basename as i,dirname as a,join as o}from"node:path";import s,{EOL as c,homedir as l,tmpdir as u}from"node:os";import{setTimeout as d}from"node:timers/promises";import{confirm as f,input as ee,number as te,password as ne,select as p}from"@inquirer/prompts";import re,{readFile as m,rm as ie,stat as h,writeFile as ae}from"node:fs/promises";import{configureSync as oe,getConsoleSink as se,getLogger as ce,withFilter as le}from"@logtape/logtape";import{getFileSink as ue}from"@logtape/file";import{getPrettyFormatter as de}from"@logtape/pretty";import{arch as fe,platform as pe,stdin as me,stdout as he,version as ge}from"node:process";import _e,{EventEmitter as g}from"node:events";import"urlpattern-polyfill";import{createInterface as ve}from"node:readline/promises";import{Impit as ye}from"impit";import{Agent as be,ProxyAgent as xe}from"undici";import _ from"metavm";import"picocolors";import"nanospinner";import v from"conf";var y=`@azot/desktop`,b=`5.0.0-alpha.51`,Se=`Azot`,x={name:y,version:b,description:`A powerful, extensible app for downloading videos`,keywords:[`downloader`],homepage:`https://azot.mov`,author:`Vitaly Gashkov <vitalygashkov@vk.com>`,repository:{type:`git`,url:`https://github.com/azot-labs/azot.git`},funding:[{type:`individual`,url:`https://t.me/tribute/app?startapp=dqW2`}],files:[`out`],os:[`darwin`,`linux`,`win32`],main:`./out/main.js`,scripts:{start:`tsx --env-file .env ./src/main/cli.ts`,preview:`electron-vite preview --config vite.desktop.config.mjs`,dev:`pnpm run bundle:extensions && electron-vite dev --config vite.desktop.config.mjs --watch`,cli:`pnpm run bundle:extensions && bun run ./src/main/cli.ts --env-file .env`,test:`vitest`,coverage:`vitest run --coverage`,"prepare:runtime-deps":`pnpm -C ../../packages/api build && pnpm -C ../../packages/molnia build`,"bundle:extensions":`node ./scripts/bundle-extensions.mjs`,"bundle:cli":`pnpm run bundle:extensions && node ./scripts/bundle-cli.mjs`,bundle:`pnpm run prepare:runtime-deps && pnpm run bundle:extensions && electron-vite build --config vite.cli.config.mjs && electron-vite build --config vite.desktop.config.mjs`,"build:cli":`pnpm run prepare:runtime-deps && pnpm run bundle:cli && bun build --compile ./out/cli.mjs --minify --outfile ./release/azot`,build:`pnpm run bundle && electron-builder build --config electron-builder.config.js`,"build:mac":`pnpm run bundle && electron-builder build --mac --arm64 --config electron-builder.config.js`,"build:mac:intel":`pnpm run bundle && electron-builder build --mac --x64 --config electron-builder.config.js`,"build:win":`pnpm run bundle && electron-builder build --win --config electron-builder.config.js`,"build:linux":`pnpm run bundle && electron-builder build --linux --config electron-builder.config.js`,"publish:desktop":`pnpm run bundle && electron-builder build --publish always --config electron-builder.config.js`,"sync:native-optionals":`node ./scripts/sync-native-optionals.mjs`,"check:native-optionals":`node ./scripts/sync-native-optionals.mjs --check`,typecheck:`pnpm run typecheck:node && pnpm run typecheck:web`,"typecheck:node":`tsc --noEmit -p tsconfig.node.json --composite false`,"typecheck:web":`vue-tsc --noEmit -p tsconfig.web.json --composite false`,lint:`../../node_modules/.bin/oxlint -c ../../.oxlintrc.json .`,"lint:fix":`../../node_modules/.bin/oxlint -c ../../.oxlintrc.json --fix .`,fmt:`../../node_modules/.bin/oxfmt -c ../../.oxfmtrc.json .`,"fmt:check":`../../node_modules/.bin/oxfmt -c ../../.oxfmtrc.json --check .`},dependencies:{"@electron-toolkit/preload":`^3.0.2`,"@electron-toolkit/utils":`^4.0.0`,"@gitbeaker/rest":`^43.8.0`,"@inquirer/prompts":`^8.3.0`,"@logtape/file":`^2.0.2`,"@logtape/logtape":`^2.0.2`,"@logtape/pretty":`^2.0.2`,"@tanstack/query-core":`^5.90.20`,"@tribute-tg/better-auth":`^2.1.9`,azot:`workspace:*`,"better-auth":`^1.4.19`,bytenode:`^1.5.7`,conf:`^15.1.0`,cookie:`^1.1.1`,"cross-spawn":`^7.0.6`,dasha:`4.0.0-alpha.11`,"electron-updater":`^6.8.3`,impit:`^0.9.2`,ky:`^1.14.3`,mediabunny:`^1.38.1`,metavm:`^1.4.5`,molnia:`workspace:*`,nanospinner:`^1.2.2`,okova:`^0.10.5`,open:`^11.0.0`,"p-queue":`^9.1.0`,picocolors:`^1.1.1`,"posthog-js":`^1.353.1`,semver:`^7.7.4`,"telegram-better-auth":`^0.0.8`,undici:`^7.22.0`,"urlpattern-polyfill":`^10.1.0`,yargs:`^18.0.0`,yauzl:`^3.2.0`,zod:`^4.3.6`},devDependencies:{"@electron-toolkit/tsconfig":`^2.0.0`,"@iconify/vue":`^5.0.0`,"@intlify/unplugin-vue-i18n":`^11.0.7`,"@tailwindcss/vite":`^4.2.1`,"@tanstack/vue-query":`^5.92.9`,"@types/node":`^25.3.0`,"@types/semver":`^7.7.1`,"@types/wicg-file-system-access":`^2023.10.7`,"@types/yargs":`^17.0.35`,"@vee-validate/zod":`^4.15.1`,"@vitejs/plugin-vue":`^6.0.4`,"@vueuse/core":`^14.2.1`,"class-variance-authority":`^0.7.1`,clsx:`^2.1.1`,dotenv:`^17.3.1`,electron:`39.5.1`,"electron-builder":`^26.8.1`,"electron-vite":`^5.0.0`,esbuild:`^0.27.3`,execa:`^9.6.1`,"lucide-vue-next":`^0.575.0`,"non.geist":`^1.0.4`,pinia:`^3.0.4`,postcss:`^8.5.6`,"reka-ui":`^2.8.2`,rolldown:`^1.0.0-rc.5`,sass:`^1.97.3`,"tailwind-merge":`^3.5.0`,tailwindcss:`^4.2.1`,"tailwindcss-animate":`^1.0.7`,tsdown:`^0.20.3`,tsx:`^4.21.0`,typescript:`^5.9.3`,"vee-validate":`^4.15.1`,vite:`^7.3.1`,"vite-plugin-static-copy":`^3.1.2`,vitest:`^4.0.18`,vue:`^3.5.29`,"vue-i18n":`^11.2.8`,"vue-sonner":`^2.0.9`,"vue-tsc":`^3.2.5`},peerDependencies:{vitest:`>=4.0.0`},optionalDependencies:{"impit-darwin-arm64":`0.9.2`,"impit-darwin-x64":`0.9.2`,"impit-linux-arm64-gnu":`0.9.2`,"impit-linux-arm64-musl":`0.9.2`,"impit-linux-x64-gnu":`0.9.2`,"impit-linux-x64-musl":`0.9.2`,"impit-win32-arm64-msvc":`0.9.2`,"impit-win32-x64-msvc":`0.9.2`},engines:{node:`>=24.10`},packageManager:`pnpm@10.28.2`,productName:Se,readmeFilename:`README.md`};`pkg`in process&&process.pkg,process.versions.electron,`${b}${pe}${fe}${ge}`,`${b}`,y.split(`/`)[0]?.split(`-`)[0]?.replace(`@`,``);const S=Se,Ce={darwin:`macOS`,win32:`Windows`,linux:`Linux`}[process.platform],C=e=>{let r=typeof e==`string`?e:e[Ce];return t(r)||n(r,{recursive:!0}),r},w=l(),we=u(),T=C({Windows:process.env.APPDATA||o(w,`AppData`,`Roaming`),macOS:o(w,`Library`,`Application Support`),Linux:process.env.XDG_DATA_HOME||o(w,`.local`,`share`)}),E=C({Windows:process.env.APPDATA||o(w,`AppData`,`Roaming`),macOS:o(w,`Library`,`Application Support`),Linux:process.env.XDG_CONFIG_HOME||o(w,`.config`)});C({Windows:process.env.LOCALAPPDATA||o(w,`AppData`,`Local`),macOS:o(w,`Library`,`Caches`),Linux:process.env.XDG_CACHE_HOME||o(w,`.cache`)}),C({Windows:o(w,`Downloads`),macOS:o(w,`Downloads`),Linux:process.env.XDG_DOWNLOAD_DIR||o(w,`Downloads`)});const Te=C({Windows:o(T,S),macOS:o(T,S),Linux:o(T,S.toLowerCase())}),Ee=C({Windows:o(E,S),macOS:o(E,S),Linux:o(E,S.toLowerCase())}),De=C({Windows:o(E,S,`logs`),macOS:o(w,`Library`,`Logs`,S),Linux:o(E,S.toLowerCase(),`logs`)});o(we,S.toLowerCase());const D=C(o(Te,`extensions`));C(o(D,`installed`)),C(o(D,`work`)),o(D,`index.json`),o(Ee,`settings.json`);const Oe=process.argv.includes(`-d`)||process.argv.includes(`--debug`)||process.env.NODE_ENV_ELECTRON_VITE===`development`||!!process.env.ELECTRON_CLI_ARGS;oe({sinks:{console:le(se({formatter:de({timestamp:`time`,messageColor:null,messageStyle:null,levelStyle:null,icons:!1,colors:!0,level:`FULL`,categoryWidth:0,categoryStyle:null,categoryTruncate:`end`,wordWrap:!0})}),Oe?`debug`:`info`),file:ue(o(De,`Azot_${new Date().toISOString().split(`.`)[0].replace(`T`,`_`).replaceAll(`-`,``).replaceAll(`:`,``)}.log`),{flushInterval:0})},loggers:[{category:[],lowestLevel:`trace`,sinks:[`console`,`file`]},{category:[`logtape`,`meta`],lowestLevel:`error`,sinks:[`console`]}]});const O=ce([]),k=new class e extends g{static requestEventName=`feedback`;static responseEventName=`feedback:response`;#e=Promise.resolve();async ask(t){let n=()=>new Promise(n=>{this.once(e.responseEventName,e=>{n(e)}),this.emit(e.requestEventName,t)}),r=this.#e.then(n,n);return this.#e=r.then(()=>void 0,()=>void 0),r}listen(t){this.addListener(e.requestEventName,async n=>{let r=await t(n);this.emit(e.responseEventName,r)})}},ke=e=>{let t=[`}`,`{`,`%`,`>`,`<`,`^`,`;`,"`",`$`,`"`,`@`,`=`],n=e;for(let e in t)n=n.replaceAll(`/`,`_`).replaceAll(t[e],``);return n},Ae=(e,t,n)=>{let r={},i={};for(let a of n)for(let n of t){let t=new URLPattern(n,a).exec(e);t&&(Object.assign(r,t.pathname.groups),Object.assign(i,t.search.groups))}return{pathname:r,search:i}},A=(e=new Map)=>{let t=(t,n)=>{for(let r of e.keys())for(let i of e.get(r)||[]){let e=n===void 0||isNaN(n),a=t===void 0||isNaN(t),o=!1;if(o=a?r===n:(e?isNaN(r):r===n)&&i===t,o)return!0}return!1},n=(t,n)=>{let r=n||NaN,i=t||NaN;e.has(r)?e.get(r)?.add(i):e.set(r,new Set([i]))},r=()=>Array.from(e.values()).flatMap(e=>Array.from(e)),i=e.size,a=r();return{items:e,has:t,set:n,getMin:()=>Math.min(...a),getMax:()=>Math.max(...a),seasonsCount:i,episodesCount:a.length}};new Intl.DateTimeFormat(`en-US`,{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1}),new Intl.DateTimeFormat(`en-US`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1});const j=new class e extends g{static requestEventName=`form`;static responseEventName=`form:response`;title;#e=Promise.resolve();constructor(e={}){super(),this.title=e.title,this.listen(async e=>{let t=ve({input:me,output:he}),{title:n,description:r,fields:i,...a}=e,o={};for(let[e,{label:s,type:c}]of Object.entries(i||a)){let i=c===`confirm`,a=[n,r,s].filter(Boolean).join(`. `)+(i?` (y/n)`:``)+`: `;o[e]=await Promise.race([t.question(a),d(Me,``)])}return t.close(),o})}async ask(t){let n=()=>new Promise(n=>{this.once(e.responseEventName,e=>{n(e)}),this.emit(e.requestEventName,t)}),r=this.#e.then(n,n);return this.#e=r.then(()=>void 0,()=>void 0),r}listen(t){this.addListener(e.requestEventName,async n=>{let r=await t(n);this.emit(e.responseEventName,r)})}},je=async(e,t)=>{let n=t?.fields??{answer:{label:e}};return await j.ask({title:t?.title,description:e,fields:n})},Me=12e4;var M=class extends Error{response;request;options;constructor(e,t,n){let r=`${e.status||e.status===0?e.status:``} ${e.statusText??``}`.trim(),i=r?`status code ${r}`:`an unknown error`;super(`Request failed with ${i}: ${t.method} ${t.url}`),this.name=`HTTPError`,this.response=e,this.request=t,this.options=n}},Ne=class extends Error{name=`NonError`;value;constructor(e){let t=`Non-error value was thrown`;try{typeof e==`string`?t=e:e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`&&(t=e.message)}catch{}super(t),this.value=e}},N=class extends Error{name=`ForceRetryError`;customDelay;code;customRequest;constructor(e){let t=e?.cause?e.cause instanceof Error?e.cause:new Ne(e.cause):void 0;super(e?.code?`Forced retry: ${e.code}`:`Forced retry`,t?{cause:t}:void 0),this.customDelay=e?.delay,this.code=e?.code,this.customRequest=e?.request}};const Pe=(()=>{let e=!1,t=!1,n=typeof globalThis.ReadableStream==`function`,r=typeof globalThis.Request==`function`;if(n&&r)try{t=new globalThis.Request(`https://empty.invalid`,{body:new globalThis.ReadableStream,method:`POST`,get duplex(){return e=!0,`half`}}).headers.has(`Content-Type`)}catch(e){if(e instanceof Error&&e.message===`unsupported BodyInit type`)return!1;throw e}return e&&!t})(),Fe=typeof globalThis.AbortController==`function`,Ie=typeof globalThis.AbortSignal==`function`&&typeof globalThis.AbortSignal.any==`function`,Le=typeof globalThis.ReadableStream==`function`,Re=typeof globalThis.FormData==`function`,ze=[`get`,`post`,`put`,`patch`,`head`,`delete`],Be={json:`application/json`,text:`text/*`,formData:`multipart/form-data`,arrayBuffer:`*/*`,blob:`*/*`,bytes:`*/*`},P=2147483647,Ve=new TextEncoder().encode(`------WebKitFormBoundaryaxpyiPgbbPti10Rw`).length,He=Symbol(`stop`);var F=class{options;constructor(e){this.options=e}};const Ue=e=>new F(e),We={json:!0,parseJson:!0,stringifyJson:!0,searchParams:!0,prefixUrl:!0,retry:!0,timeout:!0,hooks:!0,throwHttpErrors:!0,onDownloadProgress:!0,onUploadProgress:!0,fetch:!0,context:!0},Ge={next:!0},Ke={method:!0,headers:!0,body:!0,mode:!0,credentials:!0,cache:!0,redirect:!0,referrer:!0,referrerPolicy:!0,integrity:!0,keepalive:!0,signal:!0,window:!0,duplex:!0},qe=e=>{if(!e)return 0;if(e instanceof FormData){let t=0;for(let[n,r]of e)t+=Ve,t+=new TextEncoder().encode(`Content-Disposition: form-data; name="${n}"`).length,t+=typeof r==`string`?new TextEncoder().encode(r).length:r.size;return t}if(e instanceof Blob)return e.size;if(e instanceof ArrayBuffer)return e.byteLength;if(typeof e==`string`)return new TextEncoder().encode(e).length;if(e instanceof URLSearchParams)return new TextEncoder().encode(e.toString()).length;if(`byteLength`in e)return e.byteLength;if(typeof e==`object`&&e)try{let t=JSON.stringify(e);return new TextEncoder().encode(t).length}catch{return 0}return 0},I=(e,t,n)=>{let r,i=0;return e.pipeThrough(new TransformStream({transform(e,a){if(a.enqueue(e),r){i+=r.byteLength;let e=t===0?0:i/t;e>=1&&(e=1-2**-52),n?.({percent:e,totalBytes:Math.max(t,i),transferredBytes:i},r)}r=e},flush(){r&&(i+=r.byteLength,n?.({percent:1,totalBytes:Math.max(t,i),transferredBytes:i},r))}}))},Je=(e,t)=>{if(!e.body)return e;if(e.status===204)return new Response(null,{status:e.status,statusText:e.statusText,headers:e.headers});let n=Math.max(0,Number(e.headers.get(`content-length`))||0);return new Response(I(e.body,n,t),{status:e.status,statusText:e.statusText,headers:e.headers})},Ye=(e,t,n)=>{if(!e.body)return e;let r=qe(n??e.body);return new Request(e,{duplex:`half`,body:I(e.body,r,t)})},L=e=>typeof e==`object`&&!!e,R=(...e)=>{for(let t of e)if((!L(t)||Array.isArray(t))&&t!==void 0)throw TypeError("The `options` argument must be an object");return H({},...e)},z=(e={},t={})=>{let n=new globalThis.Headers(e),r=t instanceof globalThis.Headers,i=new globalThis.Headers(t);for(let[e,t]of i.entries())r&&t===`undefined`||t===void 0?n.delete(e):n.set(e,t);return n};function B(e,t,n){return Object.hasOwn(t,n)&&t[n]===void 0?[]:H(e[n]??[],t[n]??[])}const V=(e={},t={})=>({beforeRequest:B(e,t,`beforeRequest`),beforeRetry:B(e,t,`beforeRetry`),afterResponse:B(e,t,`afterResponse`),beforeError:B(e,t,`beforeError`)}),Xe=(e,t)=>{let n=new URLSearchParams;for(let r of[e,t])if(r!==void 0)if(r instanceof URLSearchParams)for(let[e,t]of r.entries())n.append(e,t);else if(Array.isArray(r))for(let e of r){if(!Array.isArray(e)||e.length!==2)throw TypeError(`Array search parameters must be provided in [[key, value], ...] format`);n.append(String(e[0]),String(e[1]))}else if(L(r))for(let[e,t]of Object.entries(r))t!==void 0&&n.append(e,String(t));else{let e=new URLSearchParams(r);for(let[t,r]of e.entries())n.append(t,r)}return n},H=(...e)=>{let t={},n={},r={},i,a=[];for(let o of e)if(Array.isArray(o))Array.isArray(t)||(t=[]),t=[...t,...o];else if(L(o)){for(let[e,n]of Object.entries(o)){if(e===`signal`&&n instanceof globalThis.AbortSignal){a.push(n);continue}if(e===`context`){if(n!=null&&(!L(n)||Array.isArray(n)))throw TypeError("The `context` option must be an object");t={...t,context:n==null?{}:{...t.context,...n}};continue}if(e===`searchParams`){i=n==null?void 0:i===void 0?n:Xe(i,n);continue}L(n)&&e in t&&(n=H(t[e],n)),t={...t,[e]:n}}L(o.hooks)&&(r=V(r,o.hooks),t.hooks=r),L(o.headers)&&(n=z(n,o.headers),t.headers=n)}return i!==void 0&&(t.searchParams=i),a.length>0&&(a.length===1?t.signal=a[0]:Ie?t.signal=AbortSignal.any(a):t.signal=a.at(-1)),t},Ze=e=>ze.includes(e)?e.toUpperCase():e,U={limit:2,methods:[`get`,`put`,`head`,`delete`,`options`,`trace`],statusCodes:[408,413,429,500,502,503,504],afterStatusCodes:[413,429,503],maxRetryAfter:1/0,backoffLimit:1/0,delay:e=>.3*2**(e-1)*1e3,jitter:void 0,retryOnTimeout:!1},Qe=(e={})=>{if(typeof e==`number`)return{...U,limit:e};if(e.methods&&!Array.isArray(e.methods))throw Error(`retry.methods must be an array`);if(e.methods&&=e.methods.map(e=>e.toLowerCase()),e.statusCodes&&!Array.isArray(e.statusCodes))throw Error(`retry.statusCodes must be an array`);let t=Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0));return{...U,...t}};var W=class extends Error{request;constructor(e){super(`Request timed out: ${e.method} ${e.url}`),this.name=`TimeoutError`,this.request=e}};async function $e(e,t,n,r){return new Promise((i,a)=>{let o=setTimeout(()=>{n&&n.abort(),a(new W(e))},r.timeout);r.fetch(e,t).then(i).catch(a).then(()=>{clearTimeout(o)})})}async function et(e,{signal:t}){return new Promise((n,r)=>{t&&(t.throwIfAborted(),t.addEventListener(`abort`,i,{once:!0}));function i(){clearTimeout(a),r(t.reason)}let a=setTimeout(()=>{t?.removeEventListener(`abort`,i),n()},e)})}const tt=(e,t)=>{let n={};for(let r in t)Object.hasOwn(t,r)&&!(r in Ke)&&!(r in We)&&(!(r in e)||r in Ge)&&(n[r]=t[r]);return n},nt=e=>e===void 0?!1:Array.isArray(e)?e.length>0:e instanceof URLSearchParams?e.size>0:typeof e==`object`?Object.keys(e).length>0:typeof e==`string`?e.trim().length>0:!!e;function rt(e){return e instanceof M||e?.name===M.name}function it(e){return e instanceof W||e?.name===W.name}var at=class e{static create(t,n){let r=new e(t,n),i=r.#p(async()=>{if(typeof r.#i.timeout==`number`&&r.#i.timeout>P)throw RangeError(`The \`timeout\` option cannot be greater than ${P}`);await Promise.resolve();let e=await r.#m();for(let t of r.#i.hooks.afterResponse){let n=r.#u(e.clone()),i;try{i=await t(r.request,r.#h(),n,{retryCount:r.#n})}catch(t){throw r.#f(n),r.#f(e),t}if(i instanceof F)throw r.#f(n),r.#f(e),new N(i.options);let a=i instanceof globalThis.Response?i:e;n!==a&&r.#f(n),e!==a&&r.#f(e),e=a}if(r.#u(e),!e.ok&&(typeof r.#i.throwHttpErrors==`function`?r.#i.throwHttpErrors(e.status):r.#i.throwHttpErrors)){let t=new M(e,r.request,r.#h());for(let e of r.#i.hooks.beforeError)t=await e(t,{retryCount:r.#n});throw t}if(r.#i.onDownloadProgress){if(typeof r.#i.onDownloadProgress!=`function`)throw TypeError("The `onDownloadProgress` option must be a function");if(!Le)throw Error("Streams are not supported in your environment. `ReadableStream` is missing.");let t=e.clone();return r.#f(e),Je(t,r.#i.onDownloadProgress)}return e}).finally(()=>{let e=r.#a;r.#d(e?.body??void 0),r.#d(r.request.body??void 0)});for(let[e,t]of Object.entries(Be))e===`bytes`&&typeof globalThis.Response?.prototype?.bytes!=`function`||(i[e]=async()=>{r.request.headers.set(`accept`,r.request.headers.get(`accept`)||t);let a=await i;if(e===`json`){if(a.status===204)return``;let e=await a.text();return e===``?``:n.parseJson?n.parseJson(e):JSON.parse(e)}return a[e]()});return i}static#e(e){return e&&typeof e==`object`&&!Array.isArray(e)&&!(e instanceof URLSearchParams)?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):e}request;#t;#n=0;#r;#i;#a;#o;#s;constructor(t,n={}){if(this.#r=t,this.#i={...n,headers:z(this.#r.headers,n.headers),hooks:V({beforeRequest:[],beforeRetry:[],beforeError:[],afterResponse:[]},n.hooks),method:Ze(n.method??this.#r.method??`GET`),prefixUrl:String(n.prefixUrl||``),retry:Qe(n.retry),throwHttpErrors:n.throwHttpErrors??!0,timeout:n.timeout??1e4,fetch:n.fetch??globalThis.fetch.bind(globalThis),context:n.context??{}},typeof this.#r!=`string`&&!(this.#r instanceof URL||this.#r instanceof globalThis.Request))throw TypeError("`input` must be a string, URL, or Request");if(this.#i.prefixUrl&&typeof this.#r==`string`){if(this.#r.startsWith(`/`))throw Error("`input` must not begin with a slash when using `prefixUrl`");this.#i.prefixUrl.endsWith(`/`)||(this.#i.prefixUrl+=`/`),this.#r=this.#i.prefixUrl+this.#r}Fe&&Ie&&(this.#o=this.#i.signal??this.#r.signal,this.#t=new globalThis.AbortController,this.#i.signal=this.#o?AbortSignal.any([this.#o,this.#t.signal]):this.#t.signal),Pe&&(this.#i.duplex=`half`),this.#i.json!==void 0&&(this.#i.body=this.#i.stringifyJson?.(this.#i.json)??JSON.stringify(this.#i.json),this.#i.headers.set(`content-type`,this.#i.headers.get(`content-type`)??`application/json`));let r=n.headers&&new globalThis.Headers(n.headers).has(`content-type`);if(this.#r instanceof globalThis.Request&&(Re&&this.#i.body instanceof globalThis.FormData||this.#i.body instanceof URLSearchParams)&&!r&&this.#i.headers.delete(`content-type`),this.request=new globalThis.Request(this.#r,this.#i),nt(this.#i.searchParams)){let t=`?`+(typeof this.#i.searchParams==`string`?this.#i.searchParams.replace(/^\?/,``):new URLSearchParams(e.#e(this.#i.searchParams)).toString()),n=this.request.url.replace(/(?:\?.*?)?(?=#|$)/,t);this.request=new globalThis.Request(n,this.#i)}if(this.#i.onUploadProgress){if(typeof this.#i.onUploadProgress!=`function`)throw TypeError("The `onUploadProgress` option must be a function");if(!Pe)throw Error("Request streams are not supported in your environment. The `duplex` option for `Request` is not available.");this.request=this.#_(this.request,this.#i.body??void 0)}}#c(){let e=this.#i.retry.delay(this.#n),t=e;this.#i.retry.jitter===!0?t=Math.random()*e:typeof this.#i.retry.jitter==`function`&&(t=this.#i.retry.jitter(e),(!Number.isFinite(t)||t<0)&&(t=e));let n=this.#i.retry.backoffLimit??1/0;return Math.min(n,t)}async#l(e){if(this.#n++,this.#n>this.#i.retry.limit)throw e;let t=e instanceof Error?e:new Ne(e);if(t instanceof N)return t.customDelay??this.#c();if(!this.#i.retry.methods.includes(this.request.method.toLowerCase()))throw e;if(this.#i.retry.shouldRetry!==void 0){let n=await this.#i.retry.shouldRetry({error:t,retryCount:this.#n});if(n===!1)throw e;if(n===!0)return this.#c()}if(it(e)&&!this.#i.retry.retryOnTimeout)throw e;if(rt(e)){if(!this.#i.retry.statusCodes.includes(e.response.status))throw e;let t=e.response.headers.get(`Retry-After`)??e.response.headers.get(`RateLimit-Reset`)??e.response.headers.get(`X-RateLimit-Retry-After`)??e.response.headers.get(`X-RateLimit-Reset`)??e.response.headers.get(`X-Rate-Limit-Reset`);if(t&&this.#i.retry.afterStatusCodes.includes(e.response.status)){let e=Number(t)*1e3;Number.isNaN(e)?e=Date.parse(t)-Date.now():e>=Date.parse(`2024-01-01`)&&(e-=Date.now());let n=this.#i.retry.maxRetryAfter??e;return e<n?e:n}if(e.response.status===413)throw e}return this.#c()}#u(e){return this.#i.parseJson&&(e.json=async()=>this.#i.parseJson(await e.text())),e}#d(e){e&&e.cancel().catch(()=>void 0)}#f(e){this.#d(e.body??void 0)}async#p(e){try{return await e()}catch(t){let n=Math.min(await this.#l(t),P);if(this.#n<1)throw t;if(await et(n,this.#o?{signal:this.#o}:{}),t instanceof N&&t.customRequest){let e=this.#i.signal?new globalThis.Request(t.customRequest,{signal:this.#i.signal}):new globalThis.Request(t.customRequest);this.#g(e)}for(let e of this.#i.hooks.beforeRetry){let n=await e({request:this.request,options:this.#h(),error:t,retryCount:this.#n});if(n instanceof globalThis.Request){this.#g(n);break}if(n instanceof globalThis.Response)return n;if(n===He)return}return this.#p(e)}}async#m(){this.#t?.signal.aborted&&(this.#t=new globalThis.AbortController,this.#i.signal=this.#o?AbortSignal.any([this.#o,this.#t.signal]):this.#t.signal,this.request=new globalThis.Request(this.request,{signal:this.#i.signal}));for(let e of this.#i.hooks.beforeRequest){let t=await e(this.request,this.#h(),{retryCount:this.#n});if(t instanceof Response)return t;if(t instanceof globalThis.Request){this.#g(t);break}}let e=tt(this.request,this.#i);return this.#a=this.request,this.request=this.#a.clone(),this.#i.timeout===!1?this.#i.fetch(this.#a,e):$e(this.#a,e,this.#t,this.#i)}#h(){if(!this.#s){let{hooks:e,...t}=this.#i;this.#s=Object.freeze(t)}return this.#s}#g(e){this.#s=void 0,this.request=this.#_(e)}#_(e,t){return!this.#i.onUploadProgress||!e.body?e:Ye(e,this.#i.onUploadProgress,t??this.#i.body??void 0)}};
2
+ /*! MIT License © Sindre Sorhus */
3
+ const G=e=>{let t=(t,n)=>at.create(t,R(e,n));for(let n of ze)t[n]=(t,r)=>at.create(t,R(e,r,{method:n}));return t.create=e=>G(R(e)),t.extend=t=>(typeof t==`function`&&(t=t(e??{})),G(R(e,t))),t.stop=He,t.retry=Ue,t},ot=G();var st=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.stringifySetCookie=s,e.serialize=s,e.parseSetCookie=c,e.stringifySetCookie=s,e.serialize=s;let t=/^[\u0021-\u003A\u003C\u003E-\u007E]+$/,n=/^[\u0021-\u003A\u003C-\u007E]*$/,r=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,i=/^[\u0020-\u003A\u003D-\u007E]*$/,a=/^-?\d+$/,o=Object.prototype.toString;function s(e,a,o){let s=typeof e==`object`?e:{...o,name:e,value:String(a)},c=(typeof a==`object`?a:o)?.encode||encodeURIComponent;if(!t.test(s.name))throw TypeError(`argument name is invalid: ${s.name}`);let l=s.value?c(s.value):``;if(!n.test(l))throw TypeError(`argument val is invalid: ${s.value}`);let u=s.name+`=`+l;if(s.maxAge!==void 0){if(!Number.isInteger(s.maxAge))throw TypeError(`option maxAge is invalid: ${s.maxAge}`);u+=`; Max-Age=`+s.maxAge}if(s.domain){if(!r.test(s.domain))throw TypeError(`option domain is invalid: ${s.domain}`);u+=`; Domain=`+s.domain}if(s.path){if(!i.test(s.path))throw TypeError(`option path is invalid: ${s.path}`);u+=`; Path=`+s.path}if(s.expires){if(!ee(s.expires)||!Number.isFinite(s.expires.valueOf()))throw TypeError(`option expires is invalid: ${s.expires}`);u+=`; Expires=`+s.expires.toUTCString()}if(s.httpOnly&&(u+=`; HttpOnly`),s.secure&&(u+=`; Secure`),s.partitioned&&(u+=`; Partitioned`),s.priority)switch(typeof s.priority==`string`?s.priority.toLowerCase():void 0){case`low`:u+=`; Priority=Low`;break;case`medium`:u+=`; Priority=Medium`;break;case`high`:u+=`; Priority=High`;break;default:throw TypeError(`option priority is invalid: ${s.priority}`)}if(s.sameSite)switch(typeof s.sameSite==`string`?s.sameSite.toLowerCase():s.sameSite){case!0:case`strict`:u+=`; SameSite=Strict`;break;case`lax`:u+=`; SameSite=Lax`;break;case`none`:u+=`; SameSite=None`;break;default:throw TypeError(`option sameSite is invalid: ${s.sameSite}`)}return u}function c(e,t){let n=t?.decode||f,r=e.length,i=l(e,0,r),o=u(e,0,i),s=o===-1?{name:``,value:n(d(e,0,i))}:{name:d(e,0,o),value:n(d(e,o+1,i))},c=i+1;for(;c<r;){let t=l(e,c,r),n=u(e,c,t),i=n===-1?d(e,c,t):d(e,c,n),o=n===-1?void 0:d(e,n+1,t);switch(i.toLowerCase()){case`httponly`:s.httpOnly=!0;break;case`secure`:s.secure=!0;break;case`partitioned`:s.partitioned=!0;break;case`domain`:s.domain=o;break;case`path`:s.path=o;break;case`max-age`:o&&a.test(o)&&(s.maxAge=Number(o));break;case`expires`:if(!o)break;let e=new Date(o);Number.isFinite(e.valueOf())&&(s.expires=e);break;case`priority`:if(!o)break;let t=o.toLowerCase();(t===`low`||t===`medium`||t===`high`)&&(s.priority=t);break;case`samesite`:if(!o)break;let n=o.toLowerCase();(n===`lax`||n===`strict`||n===`none`)&&(s.sameSite=n);break}c=t+1}return s}function l(e,t,n){let r=e.indexOf(`;`,t);return r===-1?n:r}function u(e,t,n){let r=e.indexOf(`=`,t);return r<n?r:-1}function d(e,t,n){let r=t,i=n;do{let t=e.charCodeAt(r);if(t!==32&&t!==9)break}while(++r<i);for(;i>r;){let t=e.charCodeAt(i-1);if(t!==32&&t!==9)break;i--}return e.slice(r,i)}function f(e){if(e.indexOf(`%`)===-1)return e;try{return decodeURIComponent(e)}catch{return e}}function ee(e){return o.call(e)===`[object Date]`}}))();const K=e=>{let t=[];for(let n of e)try{let e=(0,st.parseSetCookie)(n),r={...e,expires:e.expires instanceof Date?e.expires.getTime():e.expires,sameSite:typeof e.sameSite==`boolean`?`strict`:e.sameSite};t.push(r)}catch(e){O.debug(e)}return t},ct=async e=>{let t=await m(e,`utf8`).catch(()=>``);if(!t)return[];let n=t.split(c).flatMap(e=>e.split(`
4
+ `)).filter(e=>!!e.trim()&&!e.startsWith(`# `)).map(e=>e.split(` `)),r=[];for(let e of n){let[t,n,i,a,o,s,c]=e;r.push({name:s,value:c,expires:Number(o),maxAge:void 0,domain:t.replace(`#HttpOnly_`,``),path:i,secure:a===`TRUE`,httpOnly:void 0,sameSite:void 0})}return r},lt=(e,t)=>{if(typeof e!=`string`)return e;if(t===void 0)throw TypeError(`CookieStore.set(name, value) requires a value argument`);return{name:e,value:t}};var ut=class{#e={};#t;#n;#r=!1;static parse(e){return K(e)}constructor({storagePath:e}={}){this.#n=e,this.#t=[]}async import(e){(await h(e).catch(()=>null))?.isFile()&&(O.debug(`Importing cookies from ${e}`),this.#t=await ct(e),await ie(e,{recursive:!0,force:!0}))}async#i(){if(!(!this.#n||this.#r)){if((await h(this.#n).catch(()=>null))?.isFile()){let e=await m(this.#n,`utf8`);this.#e=e?JSON.parse(e):{},this.#t=`cookies`in this.#e?this.#e.cookies:[]}this.#r=!0}}async#a(){if(!this.#n)return;let e=JSON.stringify({...this.#e,cookies:this.#t},null,2);await ae(this.#n,e,`utf8`)}async get(e){await this.#i();let t=typeof e==`string`?e:e.name;return this.#t.find(e=>e.name===t)??null}async getAll(e){if(await this.#i(),!e)return this.#t;let t=typeof e==`string`?e:e.name;return this.#t.filter(e=>e.name===t)??null}async set(e,t){await this.#i();let n=lt(e,t);this.#t=this.#t.filter(e=>!(e.name===n.name&&e.domain===n.domain)),this.#t.push(n),await this.#a()}async delete(e){if(await this.#i(),!e)this.#t=[];else{let t=typeof e==`string`?e:e.name;this.#t=this.#t.filter(e=>e.name!==t)}await this.#a()}toString(){return this.#t.map(e=>`${e.name}=${e.value}`).join(`; `)}};const dt=ot.default??ot,ft=e=>e?e instanceof Headers?e.has(`User-Agent`):typeof e==`object`&&e?`User-Agent`in e||`user-agent`in e:!1:!1,pt=e=>e instanceof URL?e:e instanceof Request?new URL(e.url):new URL(e);var mt=class{cookieStore;headers;#e;#t;constructor(e={}){this.headers=new Headers,this.configure(e)}configure({maxRetries:e=3,proxyUrl:t,allowH2:n=!0,cookieStore:r}={}){this.cookieStore=r??this.cookieStore??new ut;let i=t?new xe({uri:t,allowH2:n}):new be({allowH2:n}),a={retry:e};this.#e=dt.create({dispatcher:i,proxy:t,...a});let o=new ye({browser:`chrome`,proxyUrl:t,ignoreTlsErrors:!0,followRedirects:!0});this.#t=dt.create({fetch:o.fetch.bind(o),...a})}async fetch(e,t={}){let n=await this.#n(e,t?.headers),r=(ft(t?.headers)?this.#e:this.#t)[t?.method?.toLowerCase()??`get`],i=await r(e,{...t,headers:n}),a=i.headers.getSetCookie();return a&&await this.setCookies(a),i}async#n(e,t){let n=this.appendHeaders(t),r=await this.cookieStore.getAll(),i=r.filter(t=>!t.domain||pt(e).hostname.includes(t.domain));for(let e of r)i.find(t=>t.name===e.name)||e.domain||i.push(e);let a=i.map(e=>`${e.name}=${e.value}`).join(`; `);return n.has(`cookie`)?n.get(`cookie`)||n.delete(`cookie`):n.set(`cookie`,a),n}async setCookies(e){let t=[];if(typeof e==`string`){let[n]=K([e]);n&&t.push(n)}else if(Array.isArray(e)&&typeof e.at(0)==`string`){let n=K(e);t.push(...n)}else Array.isArray(e)&&typeof e[0]!=`string`&&t.push(...e);if(!(!t||!t?.length))for(let e of t)await this.cookieStore.set(e)}appendHeaders(e){let t=new Headers(this.headers);for(let[n,r]of Object.entries(e??{}))t.set(n,r);return t}setHeader(e,t){this.headers.set(e,t)}removeHeader(e){this.headers.delete(e)}};new mt;const{COMMON_CONTEXT:ht}=_,gt=(e,t=`Eval`,n)=>{try{return _.createScript(t,e,n)}catch(t){return console.debug(t),console.debug(e),console.error(`Syntax Error: ${t.message}`),null}},_t=(e,t=1)=>{if(Array.isArray(e)||typeof e==`string`){let n=[];for(let r=1;r<=t;r++)n.push(e[Math.floor(Math.random()*e.length)]);return n}else return[]},vt=e=>new(`default`in v?v.default:v)(e);var yt=class{#e;constructor(e){this.#e=vt({cwd:a(e),configName:i(e,`.json`)})}get length(){return Object.keys(this.#e.store).length}clear(){this.#e.clear()}getItem(e){return this.#e.get(e)??null}key(e){return Object.keys(this.#e.store).at(e)??null}removeItem(e){this.#e.delete(e)}setItem(e,t){this.#e.set(e,t)}};const bt=new _e,q=e=>{if(!e||typeof e!=`object`)return!1;let t=`name`in e?String(e.name):``;return t===`ExitPromptError`||t===`AbortPromptError`},xt=e=>e[0].toUpperCase()+e.slice(1),J=(e,t=!1)=>{if(typeof e==`boolean`)return e;if(typeof e!=`string`)return t;let n=e.trim().toLowerCase();return[`1`,`true`,`yes`,`y`,`on`].includes(n)?!0:[`0`,`false`,`no`,`n`,`off`].includes(n)?!1:t},Y=(e,t=0)=>{if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e!=`string`)return t;let n=Number(e);return Number.isFinite(n)?n:t},St=e=>{switch(e.type){case`checkbox`:return J(e.defaultValue,!1);case`number`:return Y(e.defaultValue,0);default:return e.defaultValue??``}},Ct=(e,t)=>{switch(e.type){case`checkbox`:return J(t,J(e.defaultValue,!1));case`number`:return Y(t,Y(e.defaultValue,0));default:return typeof t==`string`?t:t==null?e.defaultValue??``:String(t)}},wt=e=>{let t=Object.entries(e).map(([e,t])=>[e,St(t)]);return Object.fromEntries(t)},X=(e,t)=>{let n=Object.entries(e).map(([e,n])=>[e,Ct(n,t[e])]);return Object.fromEntries(n)},Z=async e=>{e?.onAction&&await e.onAction()},Tt=async e=>{{let{default:t}=await import(`./open-DxsWuSWk.mjs`);await t(e);return}let{shell:t}=await import(`electron`);await t.openExternal(e)},Et=(e,t,n)=>{let r=typeof e==`string`?e:e?.toString();return r?.trim()&&Tt(r).catch(e=>{O.error(`Failed to open URL: ${r}`),O.debug(e instanceof Error?e.message:String(e))}),null},Q=async(e,t)=>{if(!t.length)return`dismiss`;try{return await p({message:e,loop:!1,choices:t.map(e=>({name:e.action.title,value:e.kind}))})}catch(e){if(q(e))return`dismiss`;throw e}},$=()=>{switch(s.type()){case`Darwin`:return`macOS`;case`Windows_NT`:return`Windows`;default:return`Linux`}};Object.defineProperties(Uint8Array.prototype,{toBase64:{value:function(){return Buffer.from(this).toString(`base64`)},writable:!0,configurable:!0},toHex:{value:function(){return Buffer.from(this).toString(`hex`)},writable:!0,configurable:!0}}),Object.defineProperties(Uint8Array,{fromBase64:{value:function(e){return new Uint8Array(Buffer.from(e,`base64`))},writable:!0,configurable:!0},fromHex:{value:function(e){return new Uint8Array(Buffer.from(e,`hex`))},writable:!0,configurable:!0}});const Dt=new Map([[24,[`Sequoia`,`15`]],[23,[`Sonoma`,`14`]],[22,[`Ventura`,`13`]],[21,[`Monterey`,`12`]],[20,[`Big Sur`,`11`]],[19,[`Catalina`,`10.15`]],[18,[`Mojave`,`10.14`]],[17,[`High Sierra`,`10.13`]],[16,[`Sierra`,`10.12`]],[15,[`El Capitan`,`10.11`]],[14,[`Yosemite`,`10.10`]],[13,[`Mavericks`,`10.9`]],[12,[`Mountain Lion`,`10.8`]],[11,[`Lion`,`10.7`]],[10,[`Snow Leopard`,`10.6`]],[9,[`Leopard`,`10.5`]],[8,[`Tiger`,`10.4`]],[7,[`Panther`,`10.3`]],[6,[`Jaguar`,`10.2`]],[5,[`Puma`,`10.1`]]]),Ot=()=>{let e=Number(s.release().split(`.`)[0]),[t,n]=Dt.get(e)||[`Unknown`,``];return{name:t,version:n}},kt=()=>{switch($()){case`macOS`:return Ot().version;case`Windows`:return s.release();case`Linux`:return s.release()}},At=()=>{let e=[{brand:`Azot`,version:x.version.split(`.`).slice(0,2).join(`.`)},{brand:`Node.js`,version:process.version.replace(`v`,``).split(`.`).slice(0,1).join(`.`)}];return{mobile:!1,platform:$(),brands:e,getHighEntropyValues:async t=>{let n={mobile:!1,platform:$(),brands:e};return t.includes(`architecture`)&&(n.architecture=s.arch()),t.includes(`platform`)&&(n.platform=$()),t.includes(`platformVersion`)&&(n.platformVersion=kt()),t.includes(`fullVersionList`)&&(n.fullVersionList=[{brand:`Azot`,version:x.version},{brand:`Node.js`,version:process.version}]),n}}},jt=({name:e=`extension`,dir:t=process.cwd(),title:n}={})=>{let r=C(o(t,e)),i=new yt(o(r,`storage.json`)),a=new ut({storagePath:o(r,`cookies.json`)}),s=new mt({cookieStore:a}),c=(e,t,n)=>e.split(t)[1]?.split(n)[0]?.trim(),l={sanitizeString:ke,execUrlPatterns:Ae,extendEpisodes:A,between:c,getRandomElements:_t},u=n?xt(n):void 0,p=e=>e||u,re=async e=>(e.title||=u,await j.ask(e)),m={defineExtension:e=>e,version:x.version,sleep:d,sanitizeString:ke,execUrlPatterns:Ae,extendEpisodes:A,between:c,getRandomElements:_t,utils:l,prompt:re,input:je,notify:async(e,t={})=>{let n=p(t.title)??`Azot`,r=[t.primaryAction?{kind:`primary`,action:t.primaryAction}:null,t.secondaryAction?{kind:`secondary`,action:t.secondaryAction}:null].filter(Boolean);{if(!r.length)return O.info(e);let n=await Q(e,r);n===`primary`&&await Z(t.primaryAction),n===`secondary`&&await Z(t.secondaryAction);return}let i=(await k.ask({variant:`notify`,title:n,message:e,style:t.style,primaryAction:t.primaryAction?{title:t.primaryAction.title,style:t.primaryAction.style}:void 0,secondaryAction:t.secondaryAction?{title:t.secondaryAction.title,style:t.secondaryAction.style}:void 0})).action??`dismiss`;i===`primary`&&await Z(t.primaryAction),i===`secondary`&&await Z(t.secondaryAction)},confirm:async(e,t={})=>{let n=p(t.title)??`Azot`,r=!!t.primaryAction||!!t.secondaryAction,i=t.primaryAction??{title:`OK`},a=t.secondaryAction??{title:`Cancel`,style:`cancel`};if(r){let t=await Q(e,[{kind:`primary`,action:i},{kind:`secondary`,action:a}]);return t===`primary`?(await Z(i),!0):(t===`secondary`&&await Z(a),!1)}try{let n=await f({message:e,default:!0});return n?await Z(t.primaryAction):await Z(t.secondaryAction),n}catch(e){if(q(e))return!1;throw e}let o=await k.ask({variant:`confirm`,title:n,message:e,style:t.style,primaryAction:{title:i.title,style:i.style},secondaryAction:{title:a.title,style:a.style}}),s=o.action===`primary`;return s?await Z(i):o.action===`secondary`&&await Z(a),s},ask:async(e,t)=>{let n=wt(t.form),r=Object.entries(t.form),i=!!t.primaryAction||!!t.secondaryAction,a=t.primaryAction??{title:`Submit`},o=t.secondaryAction??{title:`Cancel`,style:`cancel`};{let s={};try{for(let[e,t]of r){let n=[t.title||e,t.description].filter(Boolean).join(` - `);if(t.type===`checkbox`){s[e]=await f({message:n,default:J(t.defaultValue,!1)});continue}if(t.type===`number`){let r=Y(t.defaultValue,NaN);s[e]=await te({message:n,default:Number.isFinite(r)?r:void 0,validate:e=>(e===void 0||Number.isNaN(e))&&t.required?`This field is required`:!0});continue}if(t.type===`password`){s[e]=await ne({message:n,validate:t.required?e=>String(e??``).trim()?!0:`This field is required`:void 0});continue}s[e]=await ee({message:n,default:t.defaultValue,validate:t.required?e=>String(e??``).trim()?!0:`This field is required`:void 0})}}catch(e){if(q(e))return n;throw e}if(!i)return X(t.form,s);let c=await Q(e,[{kind:`primary`,action:a},{kind:`secondary`,action:o}]);return c===`primary`?(await Z(a),X(t.form,s)):(c===`secondary`&&await Z(o),n)}let s=Object.fromEntries(r.map(([e,t])=>[e,{type:t.type,label:t.title||e,description:t.description,placeholder:t.placeholder,defaultValue:t.defaultValue,value:t.defaultValue,required:t.required,autoFocus:t.autoFocus}])),c=await re({title:p(t.title),description:e,fields:s,actions:i?{primaryAction:{title:a.title,style:a.style},secondaryAction:{title:o.title,style:o.style}}:void 0}),l=c.__action??`primary`,u={...c};return delete u.__action,l===`primary`?(await Z(t.primaryAction),X(t.form,u)):(l===`secondary`&&await Z(t.secondaryAction),n)}};class ie{get cookie(){return a.toString()}}let h={fetch:s.fetch.bind(s),Response,Request,Headers,AbortController,AbortSignal,URL,URLSearchParams,URLPattern,open:Et,Blob,structuredClone,btoa,atob,TextEncoder,TextDecoder,Uint8Array,crypto,console:{log:console.log,info:O.info.bind(O),warn:O.warn.bind(O),error:(...e)=>{let t=String(e[0]??`Unknown error`);bt.emit(`error`,{message:t}),O.error(t)},trace:O.trace.bind(O),debug:O.debug.bind(O)},Event,EventTarget,localStorage:i,cookieStore:a,document:new ie,eval:e=>gt(e)?.exports,navigator:{appName:`Azot`,appVersion:x.version,platform:process.platform,userAgent:`Azot/${x.version}`,userAgentData:At()}};return{http:s,question:j,common:l,Streamyx:m,Azot:m,window:h,...h}};export{jt as t};
@@ -0,0 +1,4 @@
1
+ const e=require(`./chunk-350yNsax.cjs`);let t=require(`node:fs`),n=require(`node:path`);n=e.n(n);let r=require(`node:os`);r=e.n(r);let i=require(`node:timers/promises`),a=require(`@inquirer/prompts`),o=require(`node:fs/promises`);o=e.n(o);let s=require(`@logtape/logtape`),c=require(`@logtape/file`),l=require(`@logtape/pretty`),u=require(`node:process`),d=require(`node:events`);d=e.n(d),require(`urlpattern-polyfill`);let f=require(`node:readline/promises`),p=require(`impit`),m=require(`undici`),h=require(`metavm`);h=e.n(h),require(`node:child_process`),require(`picocolors`),require(`nanospinner`);let g=require(`conf`);g=e.n(g);var _=`@azot/desktop`,v=`5.0.0-alpha.51`,y=`Azot`,b={name:_,version:v,description:`A powerful, extensible app for downloading videos`,keywords:[`downloader`],homepage:`https://azot.mov`,author:`Vitaly Gashkov <vitalygashkov@vk.com>`,repository:{type:`git`,url:`https://github.com/azot-labs/azot.git`},funding:[{type:`individual`,url:`https://t.me/tribute/app?startapp=dqW2`}],files:[`out`],os:[`darwin`,`linux`,`win32`],main:`./out/main.js`,scripts:{start:`tsx --env-file .env ./src/main/cli.ts`,preview:`electron-vite preview --config vite.desktop.config.mjs`,dev:`pnpm run bundle:extensions && electron-vite dev --config vite.desktop.config.mjs --watch`,cli:`pnpm run bundle:extensions && bun run ./src/main/cli.ts --env-file .env`,test:`vitest`,coverage:`vitest run --coverage`,"prepare:runtime-deps":`pnpm -C ../../packages/api build && pnpm -C ../../packages/molnia build`,"bundle:extensions":`node ./scripts/bundle-extensions.mjs`,"bundle:cli":`pnpm run bundle:extensions && node ./scripts/bundle-cli.mjs`,bundle:`pnpm run prepare:runtime-deps && pnpm run bundle:extensions && electron-vite build --config vite.cli.config.mjs && electron-vite build --config vite.desktop.config.mjs`,"build:cli":`pnpm run prepare:runtime-deps && pnpm run bundle:cli && bun build --compile ./out/cli.mjs --minify --outfile ./release/azot`,build:`pnpm run bundle && electron-builder build --config electron-builder.config.js`,"build:mac":`pnpm run bundle && electron-builder build --mac --arm64 --config electron-builder.config.js`,"build:mac:intel":`pnpm run bundle && electron-builder build --mac --x64 --config electron-builder.config.js`,"build:win":`pnpm run bundle && electron-builder build --win --config electron-builder.config.js`,"build:linux":`pnpm run bundle && electron-builder build --linux --config electron-builder.config.js`,"publish:desktop":`pnpm run bundle && electron-builder build --publish always --config electron-builder.config.js`,"sync:native-optionals":`node ./scripts/sync-native-optionals.mjs`,"check:native-optionals":`node ./scripts/sync-native-optionals.mjs --check`,typecheck:`pnpm run typecheck:node && pnpm run typecheck:web`,"typecheck:node":`tsc --noEmit -p tsconfig.node.json --composite false`,"typecheck:web":`vue-tsc --noEmit -p tsconfig.web.json --composite false`,lint:`../../node_modules/.bin/oxlint -c ../../.oxlintrc.json .`,"lint:fix":`../../node_modules/.bin/oxlint -c ../../.oxlintrc.json --fix .`,fmt:`../../node_modules/.bin/oxfmt -c ../../.oxfmtrc.json .`,"fmt:check":`../../node_modules/.bin/oxfmt -c ../../.oxfmtrc.json --check .`},dependencies:{"@electron-toolkit/preload":`^3.0.2`,"@electron-toolkit/utils":`^4.0.0`,"@gitbeaker/rest":`^43.8.0`,"@inquirer/prompts":`^8.3.0`,"@logtape/file":`^2.0.2`,"@logtape/logtape":`^2.0.2`,"@logtape/pretty":`^2.0.2`,"@tanstack/query-core":`^5.90.20`,"@tribute-tg/better-auth":`^2.1.9`,azot:`workspace:*`,"better-auth":`^1.4.19`,bytenode:`^1.5.7`,conf:`^15.1.0`,cookie:`^1.1.1`,"cross-spawn":`^7.0.6`,dasha:`4.0.0-alpha.11`,"electron-updater":`^6.8.3`,impit:`^0.9.2`,ky:`^1.14.3`,mediabunny:`^1.38.1`,metavm:`^1.4.5`,molnia:`workspace:*`,nanospinner:`^1.2.2`,okova:`^0.10.5`,open:`^11.0.0`,"p-queue":`^9.1.0`,picocolors:`^1.1.1`,"posthog-js":`^1.353.1`,semver:`^7.7.4`,"telegram-better-auth":`^0.0.8`,undici:`^7.22.0`,"urlpattern-polyfill":`^10.1.0`,yargs:`^18.0.0`,yauzl:`^3.2.0`,zod:`^4.3.6`},devDependencies:{"@electron-toolkit/tsconfig":`^2.0.0`,"@iconify/vue":`^5.0.0`,"@intlify/unplugin-vue-i18n":`^11.0.7`,"@tailwindcss/vite":`^4.2.1`,"@tanstack/vue-query":`^5.92.9`,"@types/node":`^25.3.0`,"@types/semver":`^7.7.1`,"@types/wicg-file-system-access":`^2023.10.7`,"@types/yargs":`^17.0.35`,"@vee-validate/zod":`^4.15.1`,"@vitejs/plugin-vue":`^6.0.4`,"@vueuse/core":`^14.2.1`,"class-variance-authority":`^0.7.1`,clsx:`^2.1.1`,dotenv:`^17.3.1`,electron:`39.5.1`,"electron-builder":`^26.8.1`,"electron-vite":`^5.0.0`,esbuild:`^0.27.3`,execa:`^9.6.1`,"lucide-vue-next":`^0.575.0`,"non.geist":`^1.0.4`,pinia:`^3.0.4`,postcss:`^8.5.6`,"reka-ui":`^2.8.2`,rolldown:`^1.0.0-rc.5`,sass:`^1.97.3`,"tailwind-merge":`^3.5.0`,tailwindcss:`^4.2.1`,"tailwindcss-animate":`^1.0.7`,tsdown:`^0.20.3`,tsx:`^4.21.0`,typescript:`^5.9.3`,"vee-validate":`^4.15.1`,vite:`^7.3.1`,"vite-plugin-static-copy":`^3.1.2`,vitest:`^4.0.18`,vue:`^3.5.29`,"vue-i18n":`^11.2.8`,"vue-sonner":`^2.0.9`,"vue-tsc":`^3.2.5`},peerDependencies:{vitest:`>=4.0.0`},optionalDependencies:{"impit-darwin-arm64":`0.9.2`,"impit-darwin-x64":`0.9.2`,"impit-linux-arm64-gnu":`0.9.2`,"impit-linux-arm64-musl":`0.9.2`,"impit-linux-x64-gnu":`0.9.2`,"impit-linux-x64-musl":`0.9.2`,"impit-win32-arm64-msvc":`0.9.2`,"impit-win32-x64-msvc":`0.9.2`},engines:{node:`>=24.10`},packageManager:`pnpm@10.28.2`,productName:y,readmeFilename:`README.md`};`pkg`in process&&process.pkg,process.versions.electron,`${v}${u.platform}${u.arch}${u.version}`,`${v}`,_.split(`/`)[0]?.split(`-`)[0]?.replace(`@`,``);const x=y,ee={darwin:`macOS`,win32:`Windows`,linux:`Linux`}[process.platform],S=e=>{let n=typeof e==`string`?e:e[ee];return(0,t.existsSync)(n)||(0,t.mkdirSync)(n,{recursive:!0}),n},C=(0,r.homedir)(),te=(0,r.tmpdir)(),w=S({Windows:process.env.APPDATA||(0,n.join)(C,`AppData`,`Roaming`),macOS:(0,n.join)(C,`Library`,`Application Support`),Linux:process.env.XDG_DATA_HOME||(0,n.join)(C,`.local`,`share`)}),T=S({Windows:process.env.APPDATA||(0,n.join)(C,`AppData`,`Roaming`),macOS:(0,n.join)(C,`Library`,`Application Support`),Linux:process.env.XDG_CONFIG_HOME||(0,n.join)(C,`.config`)});S({Windows:process.env.LOCALAPPDATA||(0,n.join)(C,`AppData`,`Local`),macOS:(0,n.join)(C,`Library`,`Caches`),Linux:process.env.XDG_CACHE_HOME||(0,n.join)(C,`.cache`)}),S({Windows:(0,n.join)(C,`Downloads`),macOS:(0,n.join)(C,`Downloads`),Linux:process.env.XDG_DOWNLOAD_DIR||(0,n.join)(C,`Downloads`)});const ne=S({Windows:(0,n.join)(w,x),macOS:(0,n.join)(w,x),Linux:(0,n.join)(w,x.toLowerCase())}),re=S({Windows:(0,n.join)(T,x),macOS:(0,n.join)(T,x),Linux:(0,n.join)(T,x.toLowerCase())}),ie=S({Windows:(0,n.join)(T,x,`logs`),macOS:(0,n.join)(C,`Library`,`Logs`,x),Linux:(0,n.join)(T,x.toLowerCase(),`logs`)});(0,n.join)(te,x.toLowerCase());const E=S((0,n.join)(ne,`extensions`));S((0,n.join)(E,`installed`)),S((0,n.join)(E,`work`)),(0,n.join)(E,`index.json`),(0,n.join)(re,`settings.json`);const ae=process.argv.includes(`-d`)||process.argv.includes(`--debug`)||process.env.NODE_ENV_ELECTRON_VITE===`development`||!!process.env.ELECTRON_CLI_ARGS;(0,s.configureSync)({sinks:{console:(0,s.withFilter)((0,s.getConsoleSink)({formatter:(0,l.getPrettyFormatter)({timestamp:`time`,messageColor:null,messageStyle:null,levelStyle:null,icons:!1,colors:!0,level:`FULL`,categoryWidth:0,categoryStyle:null,categoryTruncate:`end`,wordWrap:!0})}),ae?`debug`:`info`),file:(0,c.getFileSink)((0,n.join)(ie,`Azot_${new Date().toISOString().split(`.`)[0].replace(`T`,`_`).replaceAll(`-`,``).replaceAll(`:`,``)}.log`),{flushInterval:0})},loggers:[{category:[],lowestLevel:`trace`,sinks:[`console`,`file`]},{category:[`logtape`,`meta`],lowestLevel:`error`,sinks:[`console`]}]});const D=(0,s.getLogger)([]),O=new class e extends d.EventEmitter{static requestEventName=`feedback`;static responseEventName=`feedback:response`;#e=Promise.resolve();async ask(t){let n=()=>new Promise(n=>{this.once(e.responseEventName,e=>{n(e)}),this.emit(e.requestEventName,t)}),r=this.#e.then(n,n);return this.#e=r.then(()=>void 0,()=>void 0),r}listen(t){this.addListener(e.requestEventName,async n=>{let r=await t(n);this.emit(e.responseEventName,r)})}},oe=e=>{let t=[`}`,`{`,`%`,`>`,`<`,`^`,`;`,"`",`$`,`"`,`@`,`=`],n=e;for(let e in t)n=n.replaceAll(`/`,`_`).replaceAll(t[e],``);return n},k=(e,t,n)=>{let r={},i={};for(let a of n)for(let n of t){let t=new URLPattern(n,a).exec(e);t&&(Object.assign(r,t.pathname.groups),Object.assign(i,t.search.groups))}return{pathname:r,search:i}},se=(e=new Map)=>{let t=(t,n)=>{for(let r of e.keys())for(let i of e.get(r)||[]){let e=n===void 0||isNaN(n),a=t===void 0||isNaN(t),o=!1;if(o=a?r===n:(e?isNaN(r):r===n)&&i===t,o)return!0}return!1},n=(t,n)=>{let r=n||NaN,i=t||NaN;e.has(r)?e.get(r)?.add(i):e.set(r,new Set([i]))},r=()=>Array.from(e.values()).flatMap(e=>Array.from(e)),i=e.size,a=r();return{items:e,has:t,set:n,getMin:()=>Math.min(...a),getMax:()=>Math.max(...a),seasonsCount:i,episodesCount:a.length}};new Intl.DateTimeFormat(`en-US`,{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1}),new Intl.DateTimeFormat(`en-US`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1});const A=new class e extends d.EventEmitter{static requestEventName=`form`;static responseEventName=`form:response`;title;#e=Promise.resolve();constructor(e={}){super(),this.title=e.title,this.listen(async e=>{let t=(0,f.createInterface)({input:u.stdin,output:u.stdout}),{title:n,description:r,fields:a,...o}=e,s={};for(let[e,{label:c,type:l}]of Object.entries(a||o)){let a=l===`confirm`,o=[n,r,c].filter(Boolean).join(`. `)+(a?` (y/n)`:``)+`: `;s[e]=await Promise.race([t.question(o),(0,i.setTimeout)(le,``)])}return t.close(),s})}async ask(t){let n=()=>new Promise(n=>{this.once(e.responseEventName,e=>{n(e)}),this.emit(e.requestEventName,t)}),r=this.#e.then(n,n);return this.#e=r.then(()=>void 0,()=>void 0),r}listen(t){this.addListener(e.requestEventName,async n=>{let r=await t(n);this.emit(e.responseEventName,r)})}},ce=async(e,t)=>{let n=t?.fields??{answer:{label:e}};return await A.ask({title:t?.title,description:e,fields:n})},le=12e4;var j=class extends Error{response;request;options;constructor(e,t,n){let r=`${e.status||e.status===0?e.status:``} ${e.statusText??``}`.trim(),i=r?`status code ${r}`:`an unknown error`;super(`Request failed with ${i}: ${t.method} ${t.url}`),this.name=`HTTPError`,this.response=e,this.request=t,this.options=n}},M=class extends Error{name=`NonError`;value;constructor(e){let t=`Non-error value was thrown`;try{typeof e==`string`?t=e:e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`&&(t=e.message)}catch{}super(t),this.value=e}},N=class extends Error{name=`ForceRetryError`;customDelay;code;customRequest;constructor(e){let t=e?.cause?e.cause instanceof Error?e.cause:new M(e.cause):void 0;super(e?.code?`Forced retry: ${e.code}`:`Forced retry`,t?{cause:t}:void 0),this.customDelay=e?.delay,this.code=e?.code,this.customRequest=e?.request}};const ue=(()=>{let e=!1,t=!1,n=typeof globalThis.ReadableStream==`function`,r=typeof globalThis.Request==`function`;if(n&&r)try{t=new globalThis.Request(`https://empty.invalid`,{body:new globalThis.ReadableStream,method:`POST`,get duplex(){return e=!0,`half`}}).headers.has(`Content-Type`)}catch(e){if(e instanceof Error&&e.message===`unsupported BodyInit type`)return!1;throw e}return e&&!t})(),de=typeof globalThis.AbortController==`function`,fe=typeof globalThis.AbortSignal==`function`&&typeof globalThis.AbortSignal.any==`function`,pe=typeof globalThis.ReadableStream==`function`,me=typeof globalThis.FormData==`function`,he=[`get`,`post`,`put`,`patch`,`head`,`delete`],ge={json:`application/json`,text:`text/*`,formData:`multipart/form-data`,arrayBuffer:`*/*`,blob:`*/*`,bytes:`*/*`},P=2147483647,_e=new TextEncoder().encode(`------WebKitFormBoundaryaxpyiPgbbPti10Rw`).length,ve=Symbol(`stop`);var ye=class{options;constructor(e){this.options=e}};const be=e=>new ye(e),xe={json:!0,parseJson:!0,stringifyJson:!0,searchParams:!0,prefixUrl:!0,retry:!0,timeout:!0,hooks:!0,throwHttpErrors:!0,onDownloadProgress:!0,onUploadProgress:!0,fetch:!0,context:!0},Se={next:!0},Ce={method:!0,headers:!0,body:!0,mode:!0,credentials:!0,cache:!0,redirect:!0,referrer:!0,referrerPolicy:!0,integrity:!0,keepalive:!0,signal:!0,window:!0,duplex:!0},we=e=>{if(!e)return 0;if(e instanceof FormData){let t=0;for(let[n,r]of e)t+=_e,t+=new TextEncoder().encode(`Content-Disposition: form-data; name="${n}"`).length,t+=typeof r==`string`?new TextEncoder().encode(r).length:r.size;return t}if(e instanceof Blob)return e.size;if(e instanceof ArrayBuffer)return e.byteLength;if(typeof e==`string`)return new TextEncoder().encode(e).length;if(e instanceof URLSearchParams)return new TextEncoder().encode(e.toString()).length;if(`byteLength`in e)return e.byteLength;if(typeof e==`object`&&e)try{let t=JSON.stringify(e);return new TextEncoder().encode(t).length}catch{return 0}return 0},F=(e,t,n)=>{let r,i=0;return e.pipeThrough(new TransformStream({transform(e,a){if(a.enqueue(e),r){i+=r.byteLength;let e=t===0?0:i/t;e>=1&&(e=1-2**-52),n?.({percent:e,totalBytes:Math.max(t,i),transferredBytes:i},r)}r=e},flush(){r&&(i+=r.byteLength,n?.({percent:1,totalBytes:Math.max(t,i),transferredBytes:i},r))}}))},Te=(e,t)=>{if(!e.body)return e;if(e.status===204)return new Response(null,{status:e.status,statusText:e.statusText,headers:e.headers});let n=Math.max(0,Number(e.headers.get(`content-length`))||0);return new Response(F(e.body,n,t),{status:e.status,statusText:e.statusText,headers:e.headers})},Ee=(e,t,n)=>{if(!e.body)return e;let r=we(n??e.body);return new Request(e,{duplex:`half`,body:F(e.body,r,t)})},I=e=>typeof e==`object`&&!!e,L=(...e)=>{for(let t of e)if((!I(t)||Array.isArray(t))&&t!==void 0)throw TypeError("The `options` argument must be an object");return V({},...e)},R=(e={},t={})=>{let n=new globalThis.Headers(e),r=t instanceof globalThis.Headers,i=new globalThis.Headers(t);for(let[e,t]of i.entries())r&&t===`undefined`||t===void 0?n.delete(e):n.set(e,t);return n};function z(e,t,n){return Object.hasOwn(t,n)&&t[n]===void 0?[]:V(e[n]??[],t[n]??[])}const B=(e={},t={})=>({beforeRequest:z(e,t,`beforeRequest`),beforeRetry:z(e,t,`beforeRetry`),afterResponse:z(e,t,`afterResponse`),beforeError:z(e,t,`beforeError`)}),De=(e,t)=>{let n=new URLSearchParams;for(let r of[e,t])if(r!==void 0)if(r instanceof URLSearchParams)for(let[e,t]of r.entries())n.append(e,t);else if(Array.isArray(r))for(let e of r){if(!Array.isArray(e)||e.length!==2)throw TypeError(`Array search parameters must be provided in [[key, value], ...] format`);n.append(String(e[0]),String(e[1]))}else if(I(r))for(let[e,t]of Object.entries(r))t!==void 0&&n.append(e,String(t));else{let e=new URLSearchParams(r);for(let[t,r]of e.entries())n.append(t,r)}return n},V=(...e)=>{let t={},n={},r={},i,a=[];for(let o of e)if(Array.isArray(o))Array.isArray(t)||(t=[]),t=[...t,...o];else if(I(o)){for(let[e,n]of Object.entries(o)){if(e===`signal`&&n instanceof globalThis.AbortSignal){a.push(n);continue}if(e===`context`){if(n!=null&&(!I(n)||Array.isArray(n)))throw TypeError("The `context` option must be an object");t={...t,context:n==null?{}:{...t.context,...n}};continue}if(e===`searchParams`){i=n==null?void 0:i===void 0?n:De(i,n);continue}I(n)&&e in t&&(n=V(t[e],n)),t={...t,[e]:n}}I(o.hooks)&&(r=B(r,o.hooks),t.hooks=r),I(o.headers)&&(n=R(n,o.headers),t.headers=n)}return i!==void 0&&(t.searchParams=i),a.length>0&&(a.length===1?t.signal=a[0]:fe?t.signal=AbortSignal.any(a):t.signal=a.at(-1)),t},Oe=e=>he.includes(e)?e.toUpperCase():e,H={limit:2,methods:[`get`,`put`,`head`,`delete`,`options`,`trace`],statusCodes:[408,413,429,500,502,503,504],afterStatusCodes:[413,429,503],maxRetryAfter:1/0,backoffLimit:1/0,delay:e=>.3*2**(e-1)*1e3,jitter:void 0,retryOnTimeout:!1},ke=(e={})=>{if(typeof e==`number`)return{...H,limit:e};if(e.methods&&!Array.isArray(e.methods))throw Error(`retry.methods must be an array`);if(e.methods&&=e.methods.map(e=>e.toLowerCase()),e.statusCodes&&!Array.isArray(e.statusCodes))throw Error(`retry.statusCodes must be an array`);let t=Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0));return{...H,...t}};var U=class extends Error{request;constructor(e){super(`Request timed out: ${e.method} ${e.url}`),this.name=`TimeoutError`,this.request=e}};async function Ae(e,t,n,r){return new Promise((i,a)=>{let o=setTimeout(()=>{n&&n.abort(),a(new U(e))},r.timeout);r.fetch(e,t).then(i).catch(a).then(()=>{clearTimeout(o)})})}async function je(e,{signal:t}){return new Promise((n,r)=>{t&&(t.throwIfAborted(),t.addEventListener(`abort`,i,{once:!0}));function i(){clearTimeout(a),r(t.reason)}let a=setTimeout(()=>{t?.removeEventListener(`abort`,i),n()},e)})}const Me=(e,t)=>{let n={};for(let r in t)Object.hasOwn(t,r)&&!(r in Ce)&&!(r in xe)&&(!(r in e)||r in Se)&&(n[r]=t[r]);return n},Ne=e=>e===void 0?!1:Array.isArray(e)?e.length>0:e instanceof URLSearchParams?e.size>0:typeof e==`object`?Object.keys(e).length>0:typeof e==`string`?e.trim().length>0:!!e;function Pe(e){return e instanceof j||e?.name===j.name}function Fe(e){return e instanceof U||e?.name===U.name}var Ie=class e{static create(t,n){let r=new e(t,n),i=r.#p(async()=>{if(typeof r.#i.timeout==`number`&&r.#i.timeout>P)throw RangeError(`The \`timeout\` option cannot be greater than ${P}`);await Promise.resolve();let e=await r.#m();for(let t of r.#i.hooks.afterResponse){let n=r.#u(e.clone()),i;try{i=await t(r.request,r.#h(),n,{retryCount:r.#n})}catch(t){throw r.#f(n),r.#f(e),t}if(i instanceof ye)throw r.#f(n),r.#f(e),new N(i.options);let a=i instanceof globalThis.Response?i:e;n!==a&&r.#f(n),e!==a&&r.#f(e),e=a}if(r.#u(e),!e.ok&&(typeof r.#i.throwHttpErrors==`function`?r.#i.throwHttpErrors(e.status):r.#i.throwHttpErrors)){let t=new j(e,r.request,r.#h());for(let e of r.#i.hooks.beforeError)t=await e(t,{retryCount:r.#n});throw t}if(r.#i.onDownloadProgress){if(typeof r.#i.onDownloadProgress!=`function`)throw TypeError("The `onDownloadProgress` option must be a function");if(!pe)throw Error("Streams are not supported in your environment. `ReadableStream` is missing.");let t=e.clone();return r.#f(e),Te(t,r.#i.onDownloadProgress)}return e}).finally(()=>{let e=r.#a;r.#d(e?.body??void 0),r.#d(r.request.body??void 0)});for(let[e,t]of Object.entries(ge))e===`bytes`&&typeof globalThis.Response?.prototype?.bytes!=`function`||(i[e]=async()=>{r.request.headers.set(`accept`,r.request.headers.get(`accept`)||t);let a=await i;if(e===`json`){if(a.status===204)return``;let e=await a.text();return e===``?``:n.parseJson?n.parseJson(e):JSON.parse(e)}return a[e]()});return i}static#e(e){return e&&typeof e==`object`&&!Array.isArray(e)&&!(e instanceof URLSearchParams)?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):e}request;#t;#n=0;#r;#i;#a;#o;#s;constructor(t,n={}){if(this.#r=t,this.#i={...n,headers:R(this.#r.headers,n.headers),hooks:B({beforeRequest:[],beforeRetry:[],beforeError:[],afterResponse:[]},n.hooks),method:Oe(n.method??this.#r.method??`GET`),prefixUrl:String(n.prefixUrl||``),retry:ke(n.retry),throwHttpErrors:n.throwHttpErrors??!0,timeout:n.timeout??1e4,fetch:n.fetch??globalThis.fetch.bind(globalThis),context:n.context??{}},typeof this.#r!=`string`&&!(this.#r instanceof URL||this.#r instanceof globalThis.Request))throw TypeError("`input` must be a string, URL, or Request");if(this.#i.prefixUrl&&typeof this.#r==`string`){if(this.#r.startsWith(`/`))throw Error("`input` must not begin with a slash when using `prefixUrl`");this.#i.prefixUrl.endsWith(`/`)||(this.#i.prefixUrl+=`/`),this.#r=this.#i.prefixUrl+this.#r}de&&fe&&(this.#o=this.#i.signal??this.#r.signal,this.#t=new globalThis.AbortController,this.#i.signal=this.#o?AbortSignal.any([this.#o,this.#t.signal]):this.#t.signal),ue&&(this.#i.duplex=`half`),this.#i.json!==void 0&&(this.#i.body=this.#i.stringifyJson?.(this.#i.json)??JSON.stringify(this.#i.json),this.#i.headers.set(`content-type`,this.#i.headers.get(`content-type`)??`application/json`));let r=n.headers&&new globalThis.Headers(n.headers).has(`content-type`);if(this.#r instanceof globalThis.Request&&(me&&this.#i.body instanceof globalThis.FormData||this.#i.body instanceof URLSearchParams)&&!r&&this.#i.headers.delete(`content-type`),this.request=new globalThis.Request(this.#r,this.#i),Ne(this.#i.searchParams)){let t=`?`+(typeof this.#i.searchParams==`string`?this.#i.searchParams.replace(/^\?/,``):new URLSearchParams(e.#e(this.#i.searchParams)).toString()),n=this.request.url.replace(/(?:\?.*?)?(?=#|$)/,t);this.request=new globalThis.Request(n,this.#i)}if(this.#i.onUploadProgress){if(typeof this.#i.onUploadProgress!=`function`)throw TypeError("The `onUploadProgress` option must be a function");if(!ue)throw Error("Request streams are not supported in your environment. The `duplex` option for `Request` is not available.");this.request=this.#_(this.request,this.#i.body??void 0)}}#c(){let e=this.#i.retry.delay(this.#n),t=e;this.#i.retry.jitter===!0?t=Math.random()*e:typeof this.#i.retry.jitter==`function`&&(t=this.#i.retry.jitter(e),(!Number.isFinite(t)||t<0)&&(t=e));let n=this.#i.retry.backoffLimit??1/0;return Math.min(n,t)}async#l(e){if(this.#n++,this.#n>this.#i.retry.limit)throw e;let t=e instanceof Error?e:new M(e);if(t instanceof N)return t.customDelay??this.#c();if(!this.#i.retry.methods.includes(this.request.method.toLowerCase()))throw e;if(this.#i.retry.shouldRetry!==void 0){let n=await this.#i.retry.shouldRetry({error:t,retryCount:this.#n});if(n===!1)throw e;if(n===!0)return this.#c()}if(Fe(e)&&!this.#i.retry.retryOnTimeout)throw e;if(Pe(e)){if(!this.#i.retry.statusCodes.includes(e.response.status))throw e;let t=e.response.headers.get(`Retry-After`)??e.response.headers.get(`RateLimit-Reset`)??e.response.headers.get(`X-RateLimit-Retry-After`)??e.response.headers.get(`X-RateLimit-Reset`)??e.response.headers.get(`X-Rate-Limit-Reset`);if(t&&this.#i.retry.afterStatusCodes.includes(e.response.status)){let e=Number(t)*1e3;Number.isNaN(e)?e=Date.parse(t)-Date.now():e>=Date.parse(`2024-01-01`)&&(e-=Date.now());let n=this.#i.retry.maxRetryAfter??e;return e<n?e:n}if(e.response.status===413)throw e}return this.#c()}#u(e){return this.#i.parseJson&&(e.json=async()=>this.#i.parseJson(await e.text())),e}#d(e){e&&e.cancel().catch(()=>void 0)}#f(e){this.#d(e.body??void 0)}async#p(e){try{return await e()}catch(t){let n=Math.min(await this.#l(t),P);if(this.#n<1)throw t;if(await je(n,this.#o?{signal:this.#o}:{}),t instanceof N&&t.customRequest){let e=this.#i.signal?new globalThis.Request(t.customRequest,{signal:this.#i.signal}):new globalThis.Request(t.customRequest);this.#g(e)}for(let e of this.#i.hooks.beforeRetry){let n=await e({request:this.request,options:this.#h(),error:t,retryCount:this.#n});if(n instanceof globalThis.Request){this.#g(n);break}if(n instanceof globalThis.Response)return n;if(n===ve)return}return this.#p(e)}}async#m(){this.#t?.signal.aborted&&(this.#t=new globalThis.AbortController,this.#i.signal=this.#o?AbortSignal.any([this.#o,this.#t.signal]):this.#t.signal,this.request=new globalThis.Request(this.request,{signal:this.#i.signal}));for(let e of this.#i.hooks.beforeRequest){let t=await e(this.request,this.#h(),{retryCount:this.#n});if(t instanceof Response)return t;if(t instanceof globalThis.Request){this.#g(t);break}}let e=Me(this.request,this.#i);return this.#a=this.request,this.request=this.#a.clone(),this.#i.timeout===!1?this.#i.fetch(this.#a,e):Ae(this.#a,e,this.#t,this.#i)}#h(){if(!this.#s){let{hooks:e,...t}=this.#i;this.#s=Object.freeze(t)}return this.#s}#g(e){this.#s=void 0,this.request=this.#_(e)}#_(e,t){return!this.#i.onUploadProgress||!e.body?e:Ee(e,this.#i.onUploadProgress,t??this.#i.body??void 0)}};
2
+ /*! MIT License © Sindre Sorhus */
3
+ const W=e=>{let t=(t,n)=>Ie.create(t,L(e,n));for(let n of he)t[n]=(t,r)=>Ie.create(t,L(e,r,{method:n}));return t.create=e=>W(L(e)),t.extend=t=>(typeof t==`function`&&(t=t(e??{})),W(L(e,t))),t.stop=ve,t.retry=be,t},Le=W();var Re=e.t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.stringifySetCookie=s,e.serialize=s,e.parseSetCookie=c,e.stringifySetCookie=s,e.serialize=s;let t=/^[\u0021-\u003A\u003C\u003E-\u007E]+$/,n=/^[\u0021-\u003A\u003C-\u007E]*$/,r=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,i=/^[\u0020-\u003A\u003D-\u007E]*$/,a=/^-?\d+$/,o=Object.prototype.toString;function s(e,a,o){let s=typeof e==`object`?e:{...o,name:e,value:String(a)},c=(typeof a==`object`?a:o)?.encode||encodeURIComponent;if(!t.test(s.name))throw TypeError(`argument name is invalid: ${s.name}`);let l=s.value?c(s.value):``;if(!n.test(l))throw TypeError(`argument val is invalid: ${s.value}`);let u=s.name+`=`+l;if(s.maxAge!==void 0){if(!Number.isInteger(s.maxAge))throw TypeError(`option maxAge is invalid: ${s.maxAge}`);u+=`; Max-Age=`+s.maxAge}if(s.domain){if(!r.test(s.domain))throw TypeError(`option domain is invalid: ${s.domain}`);u+=`; Domain=`+s.domain}if(s.path){if(!i.test(s.path))throw TypeError(`option path is invalid: ${s.path}`);u+=`; Path=`+s.path}if(s.expires){if(!p(s.expires)||!Number.isFinite(s.expires.valueOf()))throw TypeError(`option expires is invalid: ${s.expires}`);u+=`; Expires=`+s.expires.toUTCString()}if(s.httpOnly&&(u+=`; HttpOnly`),s.secure&&(u+=`; Secure`),s.partitioned&&(u+=`; Partitioned`),s.priority)switch(typeof s.priority==`string`?s.priority.toLowerCase():void 0){case`low`:u+=`; Priority=Low`;break;case`medium`:u+=`; Priority=Medium`;break;case`high`:u+=`; Priority=High`;break;default:throw TypeError(`option priority is invalid: ${s.priority}`)}if(s.sameSite)switch(typeof s.sameSite==`string`?s.sameSite.toLowerCase():s.sameSite){case!0:case`strict`:u+=`; SameSite=Strict`;break;case`lax`:u+=`; SameSite=Lax`;break;case`none`:u+=`; SameSite=None`;break;default:throw TypeError(`option sameSite is invalid: ${s.sameSite}`)}return u}function c(e,t){let n=t?.decode||f,r=e.length,i=l(e,0,r),o=u(e,0,i),s=o===-1?{name:``,value:n(d(e,0,i))}:{name:d(e,0,o),value:n(d(e,o+1,i))},c=i+1;for(;c<r;){let t=l(e,c,r),n=u(e,c,t),i=n===-1?d(e,c,t):d(e,c,n),o=n===-1?void 0:d(e,n+1,t);switch(i.toLowerCase()){case`httponly`:s.httpOnly=!0;break;case`secure`:s.secure=!0;break;case`partitioned`:s.partitioned=!0;break;case`domain`:s.domain=o;break;case`path`:s.path=o;break;case`max-age`:o&&a.test(o)&&(s.maxAge=Number(o));break;case`expires`:if(!o)break;let e=new Date(o);Number.isFinite(e.valueOf())&&(s.expires=e);break;case`priority`:if(!o)break;let t=o.toLowerCase();(t===`low`||t===`medium`||t===`high`)&&(s.priority=t);break;case`samesite`:if(!o)break;let n=o.toLowerCase();(n===`lax`||n===`strict`||n===`none`)&&(s.sameSite=n);break}c=t+1}return s}function l(e,t,n){let r=e.indexOf(`;`,t);return r===-1?n:r}function u(e,t,n){let r=e.indexOf(`=`,t);return r<n?r:-1}function d(e,t,n){let r=t,i=n;do{let t=e.charCodeAt(r);if(t!==32&&t!==9)break}while(++r<i);for(;i>r;){let t=e.charCodeAt(i-1);if(t!==32&&t!==9)break;i--}return e.slice(r,i)}function f(e){if(e.indexOf(`%`)===-1)return e;try{return decodeURIComponent(e)}catch{return e}}function p(e){return o.call(e)===`[object Date]`}}))();const G=e=>{let t=[];for(let n of e)try{let e=(0,Re.parseSetCookie)(n),r={...e,expires:e.expires instanceof Date?e.expires.getTime():e.expires,sameSite:typeof e.sameSite==`boolean`?`strict`:e.sameSite};t.push(r)}catch(e){D.debug(e)}return t},ze=async e=>{let t=await(0,o.readFile)(e,`utf8`).catch(()=>``);if(!t)return[];let n=t.split(r.EOL).flatMap(e=>e.split(`
4
+ `)).filter(e=>!!e.trim()&&!e.startsWith(`# `)).map(e=>e.split(` `)),i=[];for(let e of n){let[t,n,r,a,o,s,c]=e;i.push({name:s,value:c,expires:Number(o),maxAge:void 0,domain:t.replace(`#HttpOnly_`,``),path:r,secure:a===`TRUE`,httpOnly:void 0,sameSite:void 0})}return i},Be=(e,t)=>{if(typeof e!=`string`)return e;if(t===void 0)throw TypeError(`CookieStore.set(name, value) requires a value argument`);return{name:e,value:t}};var Ve=class{#e={};#t;#n;#r=!1;static parse(e){return G(e)}constructor({storagePath:e}={}){this.#n=e,this.#t=[]}async import(e){(await(0,o.stat)(e).catch(()=>null))?.isFile()&&(D.debug(`Importing cookies from ${e}`),this.#t=await ze(e),await(0,o.rm)(e,{recursive:!0,force:!0}))}async#i(){if(!(!this.#n||this.#r)){if((await(0,o.stat)(this.#n).catch(()=>null))?.isFile()){let e=await(0,o.readFile)(this.#n,`utf8`);this.#e=e?JSON.parse(e):{},this.#t=`cookies`in this.#e?this.#e.cookies:[]}this.#r=!0}}async#a(){if(!this.#n)return;let e=JSON.stringify({...this.#e,cookies:this.#t},null,2);await(0,o.writeFile)(this.#n,e,`utf8`)}async get(e){await this.#i();let t=typeof e==`string`?e:e.name;return this.#t.find(e=>e.name===t)??null}async getAll(e){if(await this.#i(),!e)return this.#t;let t=typeof e==`string`?e:e.name;return this.#t.filter(e=>e.name===t)??null}async set(e,t){await this.#i();let n=Be(e,t);this.#t=this.#t.filter(e=>!(e.name===n.name&&e.domain===n.domain)),this.#t.push(n),await this.#a()}async delete(e){if(await this.#i(),!e)this.#t=[];else{let t=typeof e==`string`?e:e.name;this.#t=this.#t.filter(e=>e.name!==t)}await this.#a()}toString(){return this.#t.map(e=>`${e.name}=${e.value}`).join(`; `)}};const K=Le.default??Le,He=e=>e?e instanceof Headers?e.has(`User-Agent`):typeof e==`object`&&e?`User-Agent`in e||`user-agent`in e:!1:!1,Ue=e=>e instanceof URL?e:e instanceof Request?new URL(e.url):new URL(e);var We=class{cookieStore;headers;#e;#t;constructor(e={}){this.headers=new Headers,this.configure(e)}configure({maxRetries:e=3,proxyUrl:t,allowH2:n=!0,cookieStore:r}={}){this.cookieStore=r??this.cookieStore??new Ve;let i=t?new m.ProxyAgent({uri:t,allowH2:n}):new m.Agent({allowH2:n}),a={retry:e};this.#e=K.create({dispatcher:i,proxy:t,...a});let o=new p.Impit({browser:`chrome`,proxyUrl:t,ignoreTlsErrors:!0,followRedirects:!0});this.#t=K.create({fetch:o.fetch.bind(o),...a})}async fetch(e,t={}){let n=await this.#n(e,t?.headers),r=(He(t?.headers)?this.#e:this.#t)[t?.method?.toLowerCase()??`get`],i=await r(e,{...t,headers:n}),a=i.headers.getSetCookie();return a&&await this.setCookies(a),i}async#n(e,t){let n=this.appendHeaders(t),r=await this.cookieStore.getAll(),i=r.filter(t=>!t.domain||Ue(e).hostname.includes(t.domain));for(let e of r)i.find(t=>t.name===e.name)||e.domain||i.push(e);let a=i.map(e=>`${e.name}=${e.value}`).join(`; `);return n.has(`cookie`)?n.get(`cookie`)||n.delete(`cookie`):n.set(`cookie`,a),n}async setCookies(e){let t=[];if(typeof e==`string`){let[n]=G([e]);n&&t.push(n)}else if(Array.isArray(e)&&typeof e.at(0)==`string`){let n=G(e);t.push(...n)}else Array.isArray(e)&&typeof e[0]!=`string`&&t.push(...e);if(!(!t||!t?.length))for(let e of t)await this.cookieStore.set(e)}appendHeaders(e){let t=new Headers(this.headers);for(let[n,r]of Object.entries(e??{}))t.set(n,r);return t}setHeader(e,t){this.headers.set(e,t)}removeHeader(e){this.headers.delete(e)}};new We;const{COMMON_CONTEXT:Ge}=h.default,Ke=(e,t=`Eval`,n)=>{try{return h.default.createScript(t,e,n)}catch(t){return console.debug(t),console.debug(e),console.error(`Syntax Error: ${t.message}`),null}},qe=(e,t=1)=>{if(Array.isArray(e)||typeof e==`string`){let n=[];for(let r=1;r<=t;r++)n.push(e[Math.floor(Math.random()*e.length)]);return n}else return[]},Je=e=>new(`default`in g.default?g.default.default:g.default)(e);var Ye=class{#e;constructor(e){this.#e=Je({cwd:(0,n.dirname)(e),configName:(0,n.basename)(e,`.json`)})}get length(){return Object.keys(this.#e.store).length}clear(){this.#e.clear()}getItem(e){return this.#e.get(e)??null}key(e){return Object.keys(this.#e.store).at(e)??null}removeItem(e){this.#e.delete(e)}setItem(e,t){this.#e.set(e,t)}};const Xe=new d.default,q=e=>{if(!e||typeof e!=`object`)return!1;let t=`name`in e?String(e.name):``;return t===`ExitPromptError`||t===`AbortPromptError`},Ze=e=>e[0].toUpperCase()+e.slice(1),J=(e,t=!1)=>{if(typeof e==`boolean`)return e;if(typeof e!=`string`)return t;let n=e.trim().toLowerCase();return[`1`,`true`,`yes`,`y`,`on`].includes(n)?!0:[`0`,`false`,`no`,`n`,`off`].includes(n)?!1:t},Y=(e,t=0)=>{if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e!=`string`)return t;let n=Number(e);return Number.isFinite(n)?n:t},Qe=e=>{switch(e.type){case`checkbox`:return J(e.defaultValue,!1);case`number`:return Y(e.defaultValue,0);default:return e.defaultValue??``}},$e=(e,t)=>{switch(e.type){case`checkbox`:return J(t,J(e.defaultValue,!1));case`number`:return Y(t,Y(e.defaultValue,0));default:return typeof t==`string`?t:t==null?e.defaultValue??``:String(t)}},et=e=>{let t=Object.entries(e).map(([e,t])=>[e,Qe(t)]);return Object.fromEntries(t)},X=(e,t)=>{let n=Object.entries(e).map(([e,n])=>[e,$e(n,t[e])]);return Object.fromEntries(n)},Z=async e=>{e?.onAction&&await e.onAction()},tt=async e=>{{let{default:t}=await Promise.resolve().then(()=>require(`./open--CgxJiTk.cjs`));await t(e);return}let{shell:t}=await import(`electron`);await t.openExternal(e)},nt=(e,t,n)=>{let r=typeof e==`string`?e:e?.toString();return r?.trim()&&tt(r).catch(e=>{D.error(`Failed to open URL: ${r}`),D.debug(e instanceof Error?e.message:String(e))}),null},Q=async(e,t)=>{if(!t.length)return`dismiss`;try{return await(0,a.select)({message:e,loop:!1,choices:t.map(e=>({name:e.action.title,value:e.kind}))})}catch(e){if(q(e))return`dismiss`;throw e}},$=()=>{switch(r.default.type()){case`Darwin`:return`macOS`;case`Windows_NT`:return`Windows`;default:return`Linux`}};Object.defineProperties(Uint8Array.prototype,{toBase64:{value:function(){return Buffer.from(this).toString(`base64`)},writable:!0,configurable:!0},toHex:{value:function(){return Buffer.from(this).toString(`hex`)},writable:!0,configurable:!0}}),Object.defineProperties(Uint8Array,{fromBase64:{value:function(e){return new Uint8Array(Buffer.from(e,`base64`))},writable:!0,configurable:!0},fromHex:{value:function(e){return new Uint8Array(Buffer.from(e,`hex`))},writable:!0,configurable:!0}});const rt=new Map([[24,[`Sequoia`,`15`]],[23,[`Sonoma`,`14`]],[22,[`Ventura`,`13`]],[21,[`Monterey`,`12`]],[20,[`Big Sur`,`11`]],[19,[`Catalina`,`10.15`]],[18,[`Mojave`,`10.14`]],[17,[`High Sierra`,`10.13`]],[16,[`Sierra`,`10.12`]],[15,[`El Capitan`,`10.11`]],[14,[`Yosemite`,`10.10`]],[13,[`Mavericks`,`10.9`]],[12,[`Mountain Lion`,`10.8`]],[11,[`Lion`,`10.7`]],[10,[`Snow Leopard`,`10.6`]],[9,[`Leopard`,`10.5`]],[8,[`Tiger`,`10.4`]],[7,[`Panther`,`10.3`]],[6,[`Jaguar`,`10.2`]],[5,[`Puma`,`10.1`]]]),it=()=>{let e=Number(r.default.release().split(`.`)[0]),[t,n]=rt.get(e)||[`Unknown`,``];return{name:t,version:n}},at=()=>{switch($()){case`macOS`:return it().version;case`Windows`:return r.default.release();case`Linux`:return r.default.release()}},ot=()=>{let e=[{brand:`Azot`,version:b.version.split(`.`).slice(0,2).join(`.`)},{brand:`Node.js`,version:process.version.replace(`v`,``).split(`.`).slice(0,1).join(`.`)}];return{mobile:!1,platform:$(),brands:e,getHighEntropyValues:async t=>{let n={mobile:!1,platform:$(),brands:e};return t.includes(`architecture`)&&(n.architecture=r.default.arch()),t.includes(`platform`)&&(n.platform=$()),t.includes(`platformVersion`)&&(n.platformVersion=at()),t.includes(`fullVersionList`)&&(n.fullVersionList=[{brand:`Azot`,version:b.version},{brand:`Node.js`,version:process.version}]),n}}},st=({name:e=`extension`,dir:t=process.cwd(),title:r}={})=>{let o=S((0,n.join)(t,e)),s=new Ye((0,n.join)(o,`storage.json`)),c=new Ve({storagePath:(0,n.join)(o,`cookies.json`)}),l=new We({cookieStore:c}),u=(e,t,n)=>e.split(t)[1]?.split(n)[0]?.trim(),d={sanitizeString:oe,execUrlPatterns:k,extendEpisodes:se,between:u,getRandomElements:qe},f=r?Ze(r):void 0,p=e=>e||f,m=async e=>(e.title||=f,await A.ask(e)),h={defineExtension:e=>e,version:b.version,sleep:i.setTimeout,sanitizeString:oe,execUrlPatterns:k,extendEpisodes:se,between:u,getRandomElements:qe,utils:d,prompt:m,input:ce,notify:async(e,t={})=>{let n=p(t.title)??`Azot`,r=[t.primaryAction?{kind:`primary`,action:t.primaryAction}:null,t.secondaryAction?{kind:`secondary`,action:t.secondaryAction}:null].filter(Boolean);{if(!r.length)return D.info(e);let n=await Q(e,r);n===`primary`&&await Z(t.primaryAction),n===`secondary`&&await Z(t.secondaryAction);return}let i=(await O.ask({variant:`notify`,title:n,message:e,style:t.style,primaryAction:t.primaryAction?{title:t.primaryAction.title,style:t.primaryAction.style}:void 0,secondaryAction:t.secondaryAction?{title:t.secondaryAction.title,style:t.secondaryAction.style}:void 0})).action??`dismiss`;i===`primary`&&await Z(t.primaryAction),i===`secondary`&&await Z(t.secondaryAction)},confirm:async(e,t={})=>{let n=p(t.title)??`Azot`,r=!!t.primaryAction||!!t.secondaryAction,i=t.primaryAction??{title:`OK`},o=t.secondaryAction??{title:`Cancel`,style:`cancel`};if(r){let t=await Q(e,[{kind:`primary`,action:i},{kind:`secondary`,action:o}]);return t===`primary`?(await Z(i),!0):(t===`secondary`&&await Z(o),!1)}try{let n=await(0,a.confirm)({message:e,default:!0});return n?await Z(t.primaryAction):await Z(t.secondaryAction),n}catch(e){if(q(e))return!1;throw e}let s=await O.ask({variant:`confirm`,title:n,message:e,style:t.style,primaryAction:{title:i.title,style:i.style},secondaryAction:{title:o.title,style:o.style}}),c=s.action===`primary`;return c?await Z(i):s.action===`secondary`&&await Z(o),c},ask:async(e,t)=>{let n=et(t.form),r=Object.entries(t.form),i=!!t.primaryAction||!!t.secondaryAction,o=t.primaryAction??{title:`Submit`},s=t.secondaryAction??{title:`Cancel`,style:`cancel`};{let c={};try{for(let[e,t]of r){let n=[t.title||e,t.description].filter(Boolean).join(` - `);if(t.type===`checkbox`){c[e]=await(0,a.confirm)({message:n,default:J(t.defaultValue,!1)});continue}if(t.type===`number`){let r=Y(t.defaultValue,NaN);c[e]=await(0,a.number)({message:n,default:Number.isFinite(r)?r:void 0,validate:e=>(e===void 0||Number.isNaN(e))&&t.required?`This field is required`:!0});continue}if(t.type===`password`){c[e]=await(0,a.password)({message:n,validate:t.required?e=>String(e??``).trim()?!0:`This field is required`:void 0});continue}c[e]=await(0,a.input)({message:n,default:t.defaultValue,validate:t.required?e=>String(e??``).trim()?!0:`This field is required`:void 0})}}catch(e){if(q(e))return n;throw e}if(!i)return X(t.form,c);let l=await Q(e,[{kind:`primary`,action:o},{kind:`secondary`,action:s}]);return l===`primary`?(await Z(o),X(t.form,c)):(l===`secondary`&&await Z(s),n)}let c=Object.fromEntries(r.map(([e,t])=>[e,{type:t.type,label:t.title||e,description:t.description,placeholder:t.placeholder,defaultValue:t.defaultValue,value:t.defaultValue,required:t.required,autoFocus:t.autoFocus}])),l=await m({title:p(t.title),description:e,fields:c,actions:i?{primaryAction:{title:o.title,style:o.style},secondaryAction:{title:s.title,style:s.style}}:void 0}),u=l.__action??`primary`,d={...l};return delete d.__action,u===`primary`?(await Z(t.primaryAction),X(t.form,d)):(u===`secondary`&&await Z(t.secondaryAction),n)}};class g{get cookie(){return c.toString()}}let _={fetch:l.fetch.bind(l),Response,Request,Headers,AbortController,AbortSignal,URL,URLSearchParams,URLPattern,open:nt,Blob,structuredClone,btoa,atob,TextEncoder,TextDecoder,Uint8Array,crypto,console:{log:console.log,info:D.info.bind(D),warn:D.warn.bind(D),error:(...e)=>{let t=String(e[0]??`Unknown error`);Xe.emit(`error`,{message:t}),D.error(t)},trace:D.trace.bind(D),debug:D.debug.bind(D)},Event,EventTarget,localStorage:s,cookieStore:c,document:new g,eval:e=>Ke(e)?.exports,navigator:{appName:`Azot`,appVersion:b.version,platform:process.platform,userAgent:`Azot/${b.version}`,userAgentData:ot()}};return{http:l,question:A,common:d,Streamyx:h,Azot:h,window:_,..._}};Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return st}});
package/dist/context.cjs CHANGED
@@ -1,4 +1 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_context = require('./context-AYnteC1j.cjs');
3
-
4
- exports.createContext = require_context.createContext;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./context-CAiNH_h9.cjs`);exports.createContext=e.t;
package/dist/context.mjs CHANGED
@@ -1,3 +1 @@
1
- import { t as createContext } from "./context-BJuUj_Q4.mjs";
2
-
3
- export { createContext };
1
+ import{t as e}from"./context-BqAwWBiX.mjs";export{e as createContext};