pagespeed-quest 0.1.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/package.json +24 -21
  3. package/build/main/adhoc.d.ts +0 -2
  4. package/build/main/adhoc.js +0 -48
  5. package/build/main/command.d.ts +0 -2
  6. package/build/main/command.js +0 -103
  7. package/build/main/common-types.d.ts +0 -41
  8. package/build/main/common-types.js +0 -3
  9. package/build/main/content-encoding.d.ts +0 -11
  10. package/build/main/content-encoding.js +0 -51
  11. package/build/main/encoding.d.ts +0 -11
  12. package/build/main/encoding.js +0 -51
  13. package/build/main/formatting.d.ts +0 -8
  14. package/build/main/formatting.js +0 -64
  15. package/build/main/http.d.ts +0 -27
  16. package/build/main/http.js +0 -106
  17. package/build/main/index.d.ts +0 -9
  18. package/build/main/index.js +0 -26
  19. package/build/main/inventory.d.ts +0 -39
  20. package/build/main/inventory.js +0 -171
  21. package/build/main/logger.d.ts +0 -20
  22. package/build/main/logger.js +0 -22
  23. package/build/main/playback/inventory.d.ts +0 -0
  24. package/build/main/playback/inventory.js +0 -47
  25. package/build/main/playback.d.ts +0 -22
  26. package/build/main/playback.js +0 -111
  27. package/build/main/proxy.d.ts +0 -40
  28. package/build/main/proxy.js +0 -111
  29. package/build/main/recording/proxy.d.ts +0 -28
  30. package/build/main/recording/proxy.js +0 -90
  31. package/build/main/recording.d.ts +0 -28
  32. package/build/main/recording.js +0 -95
  33. package/build/main/throttling.d.ts +0 -34
  34. package/build/main/throttling.js +0 -88
  35. package/build/main/url.d.ts +0 -3
  36. package/build/main/url.js +0 -67
  37. package/build/module/adhoc.d.ts +0 -2
  38. package/build/module/adhoc.js +0 -40
  39. package/build/module/command.d.ts +0 -2
  40. package/build/module/command.js +0 -98
  41. package/build/module/common-types.d.ts +0 -41
  42. package/build/module/common-types.js +0 -2
  43. package/build/module/content-encoding.d.ts +0 -11
  44. package/build/module/content-encoding.js +0 -43
  45. package/build/module/encoding.d.ts +0 -11
  46. package/build/module/encoding.js +0 -43
  47. package/build/module/formatting.d.ts +0 -8
  48. package/build/module/formatting.js +0 -55
  49. package/build/module/http.d.ts +0 -27
  50. package/build/module/http.js +0 -96
  51. package/build/module/index.d.ts +0 -9
  52. package/build/module/index.js +0 -10
  53. package/build/module/inventory.d.ts +0 -39
  54. package/build/module/inventory.js +0 -165
  55. package/build/module/logger.d.ts +0 -20
  56. package/build/module/logger.js +0 -15
  57. package/build/module/playback/inventory.d.ts +0 -0
  58. package/build/module/playback/inventory.js +0 -47
  59. package/build/module/playback.d.ts +0 -22
  60. package/build/module/playback.js +0 -102
  61. package/build/module/proxy.d.ts +0 -40
  62. package/build/module/proxy.js +0 -111
  63. package/build/module/recording/proxy.d.ts +0 -28
  64. package/build/module/recording/proxy.js +0 -85
  65. package/build/module/recording.d.ts +0 -28
  66. package/build/module/recording.js +0 -92
  67. package/build/module/throttling.d.ts +0 -34
  68. package/build/module/throttling.js +0 -89
  69. package/build/module/url.d.ts +0 -3
  70. package/build/module/url.js +0 -59
package/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
+
5
+ ### 0.2.1 (2024-09-11)
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "pagespeed-quest",
3
- "version": "0.1.2",
3
+ "version": "0.2.1",
4
+ "type": "module",
4
5
  "description": "A framework for efficient web front-end speed improvement",
5
- "main": "build/main/index.js",
6
- "typings": "build/main/index.d.ts",
7
- "module": "build/module/index.js",
6
+ "main": "build/index.js",
7
+ "typings": "build/index.d.ts",
8
+ "module": "build/index.js",
8
9
  "repository": "https://github.com/ideamans/pagespeed-quest",
9
10
  "license": "GPL-3.0-or-later",
10
11
  "keywords": [
@@ -13,12 +14,11 @@
13
14
  "Lighthouse"
14
15
  ],
15
16
  "bin": {
16
- "psq": "build/main/command.js"
17
+ "psq": "build/command.js"
17
18
  },
18
19
  "scripts": {
19
20
  "build": "run-p build:*",
20
- "build:main": "tsc -p tsconfig.json",
21
- "build:module": "tsc -p tsconfig.module.json",
21
+ "build:module": "tsc -p tsconfig.json",
22
22
  "fix": "run-s fix:*",
23
23
  "fix:prettier": "prettier \"src/**/*.ts\" --write",
24
24
  "fix:lint": "eslint src --ext .ts --fix",
@@ -26,7 +26,7 @@
26
26
  "test:lint": "eslint src --ext .ts",
27
27
  "test:prettier": "prettier \"src/**/*.ts\" --list-different",
28
28
  "test:spelling": "cspell \"{README.md,.github/*.md,src/**/*.ts}\"",
29
- "test:unit": "LOG_LEVEL=error nyc --silent ava",
29
+ "test:unit": "nyc --silent ava",
30
30
  "check-cli": "run-s test diff-integration-tests check-integration-tests",
31
31
  "check-integration-tests": "run-s check-integration-test:*",
32
32
  "diff-integration-tests": "mkdir -p diff && rm -rf diff/test && cp -r test diff/test && rm -rf diff/test/test-*/.git && cd diff && git init --quiet && git add -A && git commit --quiet --no-verify --allow-empty -m 'WIP' && echo '\\n\\nCommitted most recent integration test output in the \"diff\" directory. Review the changes with \"cd diff && git diff HEAD\" or your preferred git diff viewer.'",
@@ -44,8 +44,8 @@
44
44
  "version": "standard-version",
45
45
  "reset-hard": "git clean -dfx && git reset --hard && yarn",
46
46
  "prepare-release": "run-s reset-hard test cov:check doc:html version doc:publish",
47
- "adhoc": "yarn build && node build/main/adhoc.js",
48
- "command": "yarn build && node build/main/command.js"
47
+ "adhoc": "yarn build && node build/adhoc.js",
48
+ "command": "yarn build && node build/command.js"
49
49
  },
50
50
  "engines": {
51
51
  "node": ">=18"
@@ -53,25 +53,25 @@
53
53
  "dependencies": {
54
54
  "@bitauth/libauth": "^1.17.1",
55
55
  "commander": "^11.1.0",
56
- "execa": "^5.0.0",
57
- "get-port": "^5.0.0",
56
+ "execa": "^9.3.1",
57
+ "get-port": "^7.1.0",
58
58
  "http-mitm-proxy": "^0.9.0",
59
59
  "iconv-lite": "^0.6.3",
60
60
  "jschardet": "^3.0.0",
61
- "lighthouse": "^11.2.0",
61
+ "lighthouse": "^12.2.1",
62
62
  "node-watch": "^0.7.4",
63
- "pino": "^8.16.1",
64
- "pino-pretty": "^10.2.3",
63
+ "pino": "^9.4.0",
64
+ "pino-pretty": "^11.2.2",
65
65
  "prettier": "^2.1.1",
66
66
  "tmp-promise": "^3.0.3"
67
67
  },
68
68
  "devDependencies": {
69
- "@ava/typescript": "^1.1.1",
69
+ "@ava/typescript": "^5.0.0",
70
70
  "@istanbuljs/nyc-config-typescript": "^1.0.1",
71
71
  "@types/node": "^20.8.9",
72
72
  "@typescript-eslint/eslint-plugin": "^4.0.1",
73
73
  "@typescript-eslint/parser": "^4.0.1",
74
- "ava": "^3.12.1",
74
+ "ava": "^6.1.3",
75
75
  "axios": "^1.5.1",
76
76
  "codecov": "^3.5.0",
77
77
  "cspell": "^4.1.0",
@@ -90,8 +90,7 @@
90
90
  "typescript": "^4.0.2"
91
91
  },
92
92
  "files": [
93
- "build/main",
94
- "build/module",
93
+ "build",
95
94
  "!**/*.spec.*",
96
95
  "!**/*.json",
97
96
  "CHANGELOG.md",
@@ -102,12 +101,16 @@
102
101
  "failFast": true,
103
102
  "timeout": "60s",
104
103
  "typescript": {
104
+ "compile": false,
105
105
  "rewritePaths": {
106
- "src/": "build/main/"
106
+ "src/": "build/"
107
107
  }
108
108
  },
109
+ "environmentVariables": {
110
+ "LOG_LEVEL": "error"
111
+ },
109
112
  "files": [
110
- "!build/module/**"
113
+ "!build/**"
111
114
  ]
112
115
  },
113
116
  "config": {
@@ -1,2 +0,0 @@
1
- export declare function recording(): Promise<void>;
2
- export declare function playback(): Promise<void>;
@@ -1,48 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.playback = exports.recording = void 0;
7
- const promises_1 = __importDefault(require("fs/promises"));
8
- const execa_1 = __importDefault(require("execa"));
9
- const playback_1 = require("./playback");
10
- const recording_1 = require("./recording");
11
- async function runLighthouse(url, port) {
12
- await (0, execa_1.default)('./node_modules/.bin/lighthouse', [
13
- '--output=html',
14
- '--output-path=tmp/lighthouse.html',
15
- '--only-categories=performance',
16
- '--form-factor=mobile',
17
- `--chrome-flags="--ignore-certificate-errors --proxy-server=http://localhost:${port}"`,
18
- '--view',
19
- url,
20
- ]);
21
- }
22
- async function recording() {
23
- const sampleUrl = 'https://www.gov-online.go.jp/';
24
- // const sampleUrl = 'https://blog.ideamans.com/'
25
- await promises_1.default.mkdir('./tmp', { recursive: true });
26
- await (0, recording_1.withRecordingProxy)(async (proxy) => {
27
- proxy.entryUrl = sampleUrl;
28
- await runLighthouse(sampleUrl, proxy.port);
29
- }, {
30
- dirPath: './tmp',
31
- });
32
- }
33
- exports.recording = recording;
34
- async function playback() {
35
- await (0, playback_1.withPlaybackProxy)(async (proxy) => {
36
- if (!proxy.entryUrl)
37
- throw new Error('proxy.entryUrl is empty');
38
- await runLighthouse(proxy.entryUrl, proxy.port);
39
- }, {
40
- dirPath: './tmp',
41
- throttling: {
42
- mbps: 1.6,
43
- },
44
- });
45
- }
46
- exports.playback = playback;
47
- playback();
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRob2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRob2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMkRBQTZCO0FBRTdCLGtEQUF5QjtBQUV6Qix5Q0FBOEM7QUFDOUMsMkNBQWdEO0FBRWhELEtBQUssVUFBVSxhQUFhLENBQUMsR0FBVyxFQUFFLElBQVk7SUFDcEQsTUFBTSxJQUFBLGVBQUssRUFBQyxnQ0FBZ0MsRUFBRTtRQUM1QyxlQUFlO1FBQ2YsbUNBQW1DO1FBQ25DLCtCQUErQjtRQUMvQixzQkFBc0I7UUFDdEIsK0VBQStFLElBQUksR0FBRztRQUN0RixRQUFRO1FBQ1IsR0FBRztLQUNKLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFTSxLQUFLLFVBQVUsU0FBUztJQUM3QixNQUFNLFNBQVMsR0FBRywrQkFBK0IsQ0FBQTtJQUNqRCxpREFBaUQ7SUFFakQsTUFBTSxrQkFBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUM3QyxNQUFNLElBQUEsOEJBQWtCLEVBQ3RCLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNkLEtBQUssQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFBO1FBQzFCLE1BQU0sYUFBYSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDNUMsQ0FBQyxFQUNEO1FBQ0UsT0FBTyxFQUFFLE9BQU87S0FDakIsQ0FDRixDQUFBO0FBQ0gsQ0FBQztBQWRELDhCQWNDO0FBRU0sS0FBSyxVQUFVLFFBQVE7SUFDNUIsTUFBTSxJQUFBLDRCQUFpQixFQUNyQixLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUE7UUFDL0QsTUFBTSxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDakQsQ0FBQyxFQUNEO1FBQ0UsT0FBTyxFQUFFLE9BQU87UUFDaEIsVUFBVSxFQUFFO1lBQ1YsSUFBSSxFQUFFLEdBQUc7U0FDVjtLQUNGLENBQ0YsQ0FBQTtBQUNILENBQUM7QUFiRCw0QkFhQztBQUVELFFBQVEsRUFBRSxDQUFBIn0=
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
@@ -1,103 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const promises_1 = __importDefault(require("fs/promises"));
8
- const commander_1 = require("commander");
9
- const execa_1 = __importDefault(require("execa"));
10
- const node_watch_1 = __importDefault(require("node-watch"));
11
- const index_1 = require("./index");
12
- async function runLighthouse(opts) {
13
- await promises_1.default.mkdir('./artifacts', { recursive: true });
14
- const formFactor = opts.formFactor || 'mobile';
15
- const args = [
16
- opts.url,
17
- '--save-assets',
18
- '--output=html,json',
19
- '--output-path=./artifacts/lighthouse',
20
- '--only-categories=performance',
21
- `--form-factor=${formFactor}`,
22
- ];
23
- if (opts.noThrottling) {
24
- args.push('--throttling.rttMs=0', '--throttling.throughputKbps=0', '--throttling.downloadThroughputKbps=0', '--throttling.uploadThroughputKbps=0', '--throttling.cpuSlowdownMultiplier=1');
25
- }
26
- else if (opts.cpuMultiplier)
27
- args.push(`--throttling.cpuSlowdownMultiplier=${opts.cpuMultiplier}`);
28
- const chromeFlags = ['--ignore-certificate-errors', `--proxy-server=http://localhost:${opts.proxyPort}`];
29
- args.push(`--chrome-flags="${chromeFlags.join(' ')}"`);
30
- if (opts.view)
31
- args.push('--view');
32
- await (0, execa_1.default)('./node_modules/.bin/lighthouse', args);
33
- }
34
- const main = new commander_1.Command();
35
- function lighthouseCommands() {
36
- const lighthouse = main.command('lighthouse');
37
- lighthouse.description('Run Lighthouse (performance category) via a proxy');
38
- lighthouse.option('-f, --form-factor <mobile|desktop>', 'Lighthouse form factor', 'mobile');
39
- const recording = lighthouse.command('recording');
40
- recording.description('Record contents by lighthouse');
41
- recording.argument('<url>', 'Url to measure performance');
42
- recording.action(async (url) => {
43
- await (0, index_1.withRecordingProxy)(async (proxy) => {
44
- const formFactor = lighthouse.opts().formFactor;
45
- await runLighthouse({ url, proxyPort: proxy.port, formFactor, noThrottling: true, view: false });
46
- (0, index_1.logger)().info('Lighthouse completed. Saving inventory...');
47
- }, {
48
- entryUrl: url,
49
- });
50
- });
51
- const playback = lighthouse.command('playback');
52
- playback.description('Playback contents for lighthouse');
53
- playback.option('-c, --cpu-multiplier <number>', 'Lighthouse CPU multiplier', '4');
54
- playback.action(async () => {
55
- const cpuMultiplier = playback.opts().cpuMultiplier;
56
- await (0, index_1.withPlaybackProxy)(async (proxy) => {
57
- const url = proxy.entryUrl;
58
- await runLighthouse({ url, proxyPort: proxy.port, cpuMultiplier, view: true });
59
- (0, index_1.logger)().info('Lighthouse completed');
60
- }, {
61
- throttling: {
62
- mbps: 1.6,
63
- },
64
- });
65
- });
66
- }
67
- function proxyCommands() {
68
- const proxy = main.command('proxy');
69
- proxy.option('-d, --inventory-dir <path>', 'Inventory directory');
70
- proxy.option('-p, --port <number>', 'Proxy port', '8080');
71
- proxy.option('-t, --throughput <number>', 'Throttle network throughput (Mbps)');
72
- proxy.action(async () => {
73
- const proxyOptions = {};
74
- if (proxy.opts().inventoryDir) {
75
- proxyOptions.dirPath = proxy.opts().inventoryDir;
76
- }
77
- if (proxy.opts().port) {
78
- proxyOptions.port = Number(proxy.opts().port);
79
- }
80
- if (proxy.opts().throughput) {
81
- proxyOptions.throttling = {
82
- mbps: Number(proxy.opts().throughput),
83
- };
84
- }
85
- // eslint-disable-next-line no-constant-condition
86
- while (true) {
87
- await (0, index_1.withPlaybackProxy)(async (proxy) => {
88
- const watcher = (0, node_watch_1.default)(proxy.inventoryDirPath, { recursive: true });
89
- return new Promise((ok) => {
90
- watcher.on('change', () => {
91
- watcher.close();
92
- (0, index_1.logger)().info('Inventory changed. Restarting proxy...');
93
- ok();
94
- });
95
- });
96
- }, proxyOptions);
97
- }
98
- });
99
- }
100
- lighthouseCommands();
101
- proxyCommands();
102
- main.parse(process.argv);
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLDJEQUE2QjtBQUU3Qix5Q0FBbUM7QUFDbkMsa0RBQXlCO0FBQ3pCLDREQUE4QjtBQUU5QixtQ0FBeUY7QUFhekYsS0FBSyxVQUFVLGFBQWEsQ0FBQyxJQUF1QjtJQUNsRCxNQUFNLGtCQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRW5ELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFBO0lBQzlDLE1BQU0sSUFBSSxHQUFhO1FBQ3JCLElBQUksQ0FBQyxHQUFHO1FBQ1IsZUFBZTtRQUNmLG9CQUFvQjtRQUNwQixzQ0FBc0M7UUFDdEMsK0JBQStCO1FBQy9CLGlCQUFpQixVQUFVLEVBQUU7S0FDOUIsQ0FBQTtJQUVELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUNQLHNCQUFzQixFQUN0QiwrQkFBK0IsRUFDL0IsdUNBQXVDLEVBQ3ZDLHFDQUFxQyxFQUNyQyxzQ0FBc0MsQ0FDdkMsQ0FBQTtLQUNGO1NBQU0sSUFBSSxJQUFJLENBQUMsYUFBYTtRQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsc0NBQXNDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFBO0lBRXBHLE1BQU0sV0FBVyxHQUFhLENBQUMsNkJBQTZCLEVBQUUsbUNBQW1DLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQ2xILElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRXRELElBQUksSUFBSSxDQUFDLElBQUk7UUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lB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
@@ -1,41 +0,0 @@
1
- /// <reference types="node" />
2
- export type ContentEncodingType = 'gzip' | 'compress' | 'deflate' | 'br' | 'identity';
3
- export type HttpHeaders = {
4
- [key: string]: string;
5
- };
6
- export interface ResourceMeta {
7
- method: string;
8
- url: string;
9
- ttfbMs?: number;
10
- mbps?: number;
11
- statusCode?: number;
12
- contentType?: string;
13
- contentEncoding?: ContentEncodingType;
14
- headers?: HttpHeaders;
15
- minify?: boolean;
16
- }
17
- export interface InventoryResource extends ResourceMeta {
18
- contentFilePath: string;
19
- }
20
- export interface RecordingResource extends ResourceMeta {
21
- contentChunks: Buffer[];
22
- requestStartedAtMs: number;
23
- responseStartedAtMs?: number;
24
- responseEndedAtMs?: number;
25
- transferBytes?: number;
26
- error?: string;
27
- }
28
- export interface PlaybackResource extends ResourceMeta {
29
- contentChunks: Buffer[];
30
- contentLength: number;
31
- durationMs: number;
32
- }
33
- export interface ContentChunks {
34
- contentFilePath: string;
35
- contentEncoding: ContentEncodingType;
36
- chunks: Buffer[];
37
- durationMs: number;
38
- }
39
- export interface Inventory {
40
- resources: InventoryResource[];
41
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -1,11 +0,0 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- import Zlib from 'zlib';
4
- import { ContentEncodingType } from './common-types';
5
- export interface ContentEncodingPair {
6
- compress: typeof Zlib.gzip;
7
- decompress: typeof Zlib.gunzip;
8
- }
9
- export declare const ContentEncodingMap: Map<ContentEncodingType, ContentEncodingPair>;
10
- export declare function compress(type: ContentEncodingType, buffer: Buffer): Promise<Buffer>;
11
- export declare function decompress(type: ContentEncodingType, buffer: Buffer): Promise<Buffer>;
@@ -1,51 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.decompress = exports.compress = exports.ContentEncodingMap = void 0;
7
- const zlib_1 = __importDefault(require("zlib"));
8
- exports.ContentEncodingMap = new Map();
9
- exports.ContentEncodingMap.set('gzip', {
10
- compress: zlib_1.default.gzip,
11
- decompress: zlib_1.default.gunzip,
12
- });
13
- exports.ContentEncodingMap.set('compress', {
14
- compress: zlib_1.default.gzip,
15
- decompress: zlib_1.default.gunzip,
16
- });
17
- exports.ContentEncodingMap.set('deflate', {
18
- compress: zlib_1.default.deflate,
19
- decompress: zlib_1.default.inflate,
20
- });
21
- exports.ContentEncodingMap.set('br', {
22
- compress: zlib_1.default.brotliCompress,
23
- decompress: zlib_1.default.brotliDecompress,
24
- });
25
- async function compress(type, buffer) {
26
- const pair = exports.ContentEncodingMap.get(type);
27
- if (!pair)
28
- return Buffer.from(buffer);
29
- return new Promise((resolve, reject) => {
30
- pair.compress(buffer, (err, result) => {
31
- if (err)
32
- return reject(err);
33
- resolve(result);
34
- });
35
- });
36
- }
37
- exports.compress = compress;
38
- async function decompress(type, buffer) {
39
- const pair = exports.ContentEncodingMap.get(type);
40
- if (!pair)
41
- return Buffer.from(buffer);
42
- return new Promise((resolve, reject) => {
43
- pair.decompress(buffer, (err, result) => {
44
- if (err)
45
- return reject(err);
46
- resolve(result);
47
- });
48
- });
49
- }
50
- exports.decompress = decompress;
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1lbmNvZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZW50LWVuY29kaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdEQUF3QjtBQVNYLFFBQUEsa0JBQWtCLEdBQUcsSUFBSSxHQUFHLEVBR3RDLENBQUM7QUFFSiwwQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFO0lBQzdCLFFBQVEsRUFBRSxjQUFJLENBQUMsSUFBSTtJQUNuQixVQUFVLEVBQUUsY0FBSSxDQUFDLE1BQU07Q0FDeEIsQ0FBQyxDQUFDO0FBRUgsMEJBQWtCLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRTtJQUNqQyxRQUFRLEVBQUUsY0FBSSxDQUFDLElBQUk7SUFDbkIsVUFBVSxFQUFFLGNBQUksQ0FBQyxNQUFNO0NBQ3hCLENBQUMsQ0FBQztBQUVILDBCQUFrQixDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUU7SUFDaEMsUUFBUSxFQUFFLGNBQUksQ0FBQyxPQUFPO0lBQ3RCLFVBQVUsRUFBRSxjQUFJLENBQUMsT0FBTztDQUN6QixDQUFDLENBQUM7QUFFSCwwQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFO0lBQzNCLFFBQVEsRUFBRSxjQUFJLENBQUMsY0FBYztJQUM3QixVQUFVLEVBQUUsY0FBSSxDQUFDLGdCQUFnQjtDQUNsQyxDQUFDLENBQUM7QUFFSSxLQUFLLFVBQVUsUUFBUSxDQUM1QixJQUF5QixFQUN6QixNQUFjO0lBRWQsTUFBTSxJQUFJLEdBQUcsMEJBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXRDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDcEMsSUFBSSxHQUFHO2dCQUFFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQWJELDRCQWFDO0FBRU0sS0FBSyxVQUFVLFVBQVUsQ0FDOUIsSUFBeUIsRUFDekIsTUFBYztJQUVkLE1BQU0sSUFBSSxHQUFHLDBCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxJQUFJLENBQUMsSUFBSTtRQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV0QyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3RDLElBQUksR0FBRztnQkFBRSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1QixPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFiRCxnQ0FhQyJ9
@@ -1,11 +0,0 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- import Zlib from 'zlib';
4
- export type ContentEncodingType = 'gzip' | 'compress' | 'deflate' | 'br' | 'identity';
5
- export interface ContentEncodingPair {
6
- compress: typeof Zlib.gzip;
7
- decompress: typeof Zlib.gunzip;
8
- }
9
- export declare const ContentEncodingMap: Map<ContentEncodingType, ContentEncodingPair>;
10
- export declare function compress(type: ContentEncodingType, buffer: Buffer): Promise<Buffer>;
11
- export declare function decompress(type: ContentEncodingType, buffer: Buffer): Promise<Buffer>;
@@ -1,51 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.decompress = exports.compress = exports.ContentEncodingMap = void 0;
7
- const zlib_1 = __importDefault(require("zlib"));
8
- exports.ContentEncodingMap = new Map();
9
- exports.ContentEncodingMap.set('gzip', {
10
- compress: zlib_1.default.gzip,
11
- decompress: zlib_1.default.gunzip,
12
- });
13
- exports.ContentEncodingMap.set('compress', {
14
- compress: zlib_1.default.gzip,
15
- decompress: zlib_1.default.gunzip,
16
- });
17
- exports.ContentEncodingMap.set('deflate', {
18
- compress: zlib_1.default.deflate,
19
- decompress: zlib_1.default.inflate,
20
- });
21
- exports.ContentEncodingMap.set('br', {
22
- compress: zlib_1.default.brotliCompress,
23
- decompress: zlib_1.default.brotliDecompress,
24
- });
25
- async function compress(type, buffer) {
26
- const pair = exports.ContentEncodingMap.get(type);
27
- if (!pair)
28
- return Buffer.from(buffer);
29
- return new Promise((resolve, reject) => {
30
- pair.compress(buffer, (err, result) => {
31
- if (err)
32
- return reject(err);
33
- resolve(result);
34
- });
35
- });
36
- }
37
- exports.compress = compress;
38
- async function decompress(type, buffer) {
39
- const pair = exports.ContentEncodingMap.get(type);
40
- if (!pair)
41
- return Buffer.from(buffer);
42
- return new Promise((resolve, reject) => {
43
- pair.decompress(buffer, (err, result) => {
44
- if (err)
45
- return reject(err);
46
- resolve(result);
47
- });
48
- });
49
- }
50
- exports.decompress = decompress;
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZW5jb2RpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0RBQXVCO0FBU1YsUUFBQSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBNEMsQ0FBQTtBQUVyRiwwQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFO0lBQzdCLFFBQVEsRUFBRSxjQUFJLENBQUMsSUFBSTtJQUNuQixVQUFVLEVBQUUsY0FBSSxDQUFDLE1BQU07Q0FDeEIsQ0FBQyxDQUFBO0FBRUYsMEJBQWtCLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRTtJQUNqQyxRQUFRLEVBQUUsY0FBSSxDQUFDLElBQUk7SUFDbkIsVUFBVSxFQUFFLGNBQUksQ0FBQyxNQUFNO0NBQ3hCLENBQUMsQ0FBQTtBQUVGLDBCQUFrQixDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUU7SUFDaEMsUUFBUSxFQUFFLGNBQUksQ0FBQyxPQUFPO0lBQ3RCLFVBQVUsRUFBRSxjQUFJLENBQUMsT0FBTztDQUN6QixDQUFDLENBQUE7QUFFRiwwQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFO0lBQzNCLFFBQVEsRUFBRSxjQUFJLENBQUMsY0FBYztJQUM3QixVQUFVLEVBQUUsY0FBSSxDQUFDLGdCQUFnQjtDQUNsQyxDQUFDLENBQUE7QUFFSyxLQUFLLFVBQVUsUUFBUSxDQUFDLElBQXlCLEVBQUUsTUFBYztJQUN0RSxNQUFNLElBQUksR0FBRywwQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDekMsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFckMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNwQyxJQUFJLEdBQUc7Z0JBQUUsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDM0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2pCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBVkQsNEJBVUM7QUFFTSxLQUFLLFVBQVUsVUFBVSxDQUFDLElBQXlCLEVBQUUsTUFBYztJQUN4RSxNQUFNLElBQUksR0FBRywwQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDekMsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFckMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN0QyxJQUFJLEdBQUc7Z0JBQUUsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDM0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2pCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBVkQsZ0NBVUMifQ==
@@ -1,8 +0,0 @@
1
- /// <reference types="node" />
2
- export declare function ensureUtf8String(buffer: Buffer, charset: string): string;
3
- export declare function isText(mimeType: string): boolean;
4
- export interface BeautifyResult {
5
- content: Buffer;
6
- charset?: string;
7
- }
8
- export declare function convertEditableText(content: Buffer, contentTypeMime: string, contentTypeCharset?: string): Promise<Buffer>;
@@ -1,64 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.convertEditableText = exports.isText = exports.ensureUtf8String = void 0;
7
- const iconv_lite_1 = __importDefault(require("iconv-lite"));
8
- const prettier_1 = __importDefault(require("prettier"));
9
- const PrettierDefaultOptions = { printWidth: 120 };
10
- function ensureUtf8String(buffer, charset) {
11
- if (charset.match(/utf-?8/i) || charset.match(/ascii/i))
12
- return buffer.toString('utf8');
13
- const converted = iconv_lite_1.default.decode(buffer, charset);
14
- return converted;
15
- }
16
- exports.ensureUtf8String = ensureUtf8String;
17
- function isHtml(mimeType) {
18
- if (!mimeType)
19
- return false;
20
- return mimeType === 'text/html';
21
- }
22
- function isCss(mimeType) {
23
- if (!mimeType)
24
- return false;
25
- return mimeType === 'text/css';
26
- }
27
- function isJs(mimeType) {
28
- if (!mimeType)
29
- return false;
30
- return (mimeType === 'text/javascript' || mimeType === 'application/javascript' || mimeType === 'application/x-javascript');
31
- }
32
- function isText(mimeType) {
33
- return isHtml(mimeType) || isCss(mimeType) || isJs(mimeType);
34
- }
35
- exports.isText = isText;
36
- async function convertEditableText(content, contentTypeMime, contentTypeCharset) {
37
- const charset = contentTypeCharset || 'utf-8';
38
- if (isHtml(contentTypeMime)) {
39
- const utf8 = ensureUtf8String(content, charset);
40
- const withoutCharsetMeta = utf8.replace(/<meta charset="[^"]*">/, '');
41
- const withoutScriptCharsetAttr = withoutCharsetMeta.replace(/<script(?:.*)>/gi, (scriptTag) => {
42
- return scriptTag.replace(/\s*charset\s*=\s*(?:"[^"]*"|'[^']*'|[^ ]+)/i, '');
43
- });
44
- // TODO: consider charset attribute in link[rel=stylesheet]
45
- const html = await prettier_1.default.format(withoutScriptCharsetAttr, Object.assign(Object.assign({}, PrettierDefaultOptions), { parser: 'html' }));
46
- return html;
47
- }
48
- else if (isCss(contentTypeMime)) {
49
- const utf8 = ensureUtf8String(content, charset);
50
- const withoutCharsetDirective = utf8.replace(/@charset "[^"]*";/, '');
51
- const css = await prettier_1.default.format(withoutCharsetDirective, Object.assign(Object.assign({}, PrettierDefaultOptions), { parser: 'css' }));
52
- return css;
53
- }
54
- else if (isJs(contentTypeMime)) {
55
- const utf8 = ensureUtf8String(content, charset);
56
- const js = await prettier_1.default.format(utf8, Object.assign(Object.assign({}, PrettierDefaultOptions), { parser: 'babel' }));
57
- return js;
58
- }
59
- else {
60
- throw new Error(`${contentTypeMime} is not supported text content type`);
61
- }
62
- }
63
- exports.convertEditableText = convertEditableText;
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mb3JtYXR0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDREQUFrQztBQUNsQyx3REFBK0I7QUFFL0IsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQTtBQUVsRCxTQUFnQixnQkFBZ0IsQ0FBQyxNQUFjLEVBQUUsT0FBZTtJQUM5RCxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDdkYsTUFBTSxTQUFTLEdBQUcsb0JBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ25ELE9BQU8sU0FBUyxDQUFBO0FBQ2xCLENBQUM7QUFKRCw0Q0FJQztBQUVELFNBQVMsTUFBTSxDQUFDLFFBQWdCO0lBQzlCLElBQUksQ0FBQyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUE7SUFDM0IsT0FBTyxRQUFRLEtBQUssV0FBVyxDQUFBO0FBQ2pDLENBQUM7QUFFRCxTQUFTLEtBQUssQ0FBQyxRQUFnQjtJQUM3QixJQUFJLENBQUMsUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQzNCLE9BQU8sUUFBUSxLQUFLLFVBQVUsQ0FBQTtBQUNoQyxDQUFDO0FBRUQsU0FBUyxJQUFJLENBQUMsUUFBZ0I7SUFDNUIsSUFBSSxDQUFDLFFBQVE7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUMzQixPQUFPLENBQ0wsUUFBUSxLQUFLLGlCQUFpQixJQUFJLFFBQVEsS0FBSyx3QkFBd0IsSUFBSSxRQUFRLEtBQUssMEJBQTBCLENBQ25ILENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsTUFBTSxDQUFDLFFBQWdCO0lBQ3JDLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7QUFDOUQsQ0FBQztBQUZELHdCQUVDO0FBT00sS0FBSyxVQUFVLG1CQUFtQixDQUN2QyxPQUFlLEVBQ2YsZUFBdUIsRUFDdkIsa0JBQTJCO0lBRTNCLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixJQUFJLE9BQU8sQ0FBQTtJQUM3QyxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFBRTtRQUMzQixNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDL0MsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ3JFLE1BQU0sd0JBQXdCLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDNUYsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLDZDQUE2QyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQzdFLENBQUMsQ0FBQyxDQUFBO1FBQ0YsMkRBQTJEO1FBQzNELE1BQU0sSUFBSSxHQUFHLE1BQU0sa0JBQVEsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLGtDQUFPLHNCQUFzQixLQUFFLE1BQU0sRUFBRSxNQUFNLElBQUcsQ0FBQTtRQUMzRyxPQUFPLElBQUksQ0FBQTtLQUNaO1NBQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUU7UUFDakMsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQy9DLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNyRSxNQUFNLEdBQUcsR0FBRyxNQUFNLGtCQUFRLENBQUMsTUFBTSxDQUFDLHVCQUF1QixrQ0FBTyxzQkFBc0IsS0FBRSxNQUFNLEVBQUUsS0FBSyxJQUFHLENBQUE7UUFDeEcsT0FBTyxHQUFHLENBQUE7S0FDWDtTQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUMvQyxNQUFNLEVBQUUsR0FBRyxNQUFNLGtCQUFRLENBQUMsTUFBTSxDQUFDLElBQUksa0NBQU8sc0JBQXNCLEtBQUUsTUFBTSxFQUFFLE9BQU8sSUFBRyxDQUFBO1FBQ3RGLE9BQU8sRUFBRSxDQUFBO0tBQ1Y7U0FBTTtRQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxlQUFlLHFDQUFxQyxDQUFDLENBQUE7S0FDekU7QUFDSCxDQUFDO0FBM0JELGtEQTJCQyJ9
@@ -1,27 +0,0 @@
1
- /// <reference types="node" />
2
- export type HttpHeaders = {
3
- [key: string]: string;
4
- };
5
- /**
6
- * Remove IgnoreParams from URL
7
- * Default: ts (timestamp) assumed different for each request
8
- * @param url
9
- * @returns
10
- */
11
- export declare function normalizeUrl(url: string | URL): URL;
12
- /**
13
- * Convert URL to content file path
14
- * For example:
15
- * https://example.com/foo/bar.html?hoge=123 -> example.com/foo/bar~hoge=123.html
16
- * - Add directory index (index.html) if URL ends with slash
17
- * - Shorten too long basename with short hash
18
- * - Ignore dynamic params for example: ts=123
19
- * @param url
20
- * @returns
21
- */
22
- export declare function requestContentFilePath(method: string, url: string | URL): string;
23
- export declare function parseContentTypeHeader(contentType: string): {
24
- mime: string;
25
- charset: string;
26
- };
27
- export declare function stringifyContentTypeHeader(mime?: string, charset?: string, original?: string): string;