@automattic/jetpack-critical-css-gen 1.0.12 → 1.0.14
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/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,15 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.0.14] - 2025-06-23
|
|
9
|
+
### Fixed
|
|
10
|
+
- Playwright interface: Fix page redirects from breaking the generation process. [#43929]
|
|
11
|
+
|
|
12
|
+
## [1.0.13] - 2025-06-11
|
|
13
|
+
### Changed
|
|
14
|
+
- Update dependencies. [#43569]
|
|
15
|
+
- Update package dependencies. [#43734] [#43766]
|
|
16
|
+
|
|
8
17
|
## [1.0.12] - 2025-05-15
|
|
9
18
|
### Fixed
|
|
10
19
|
- Linting: Fix more Stylelint violations. [#43213]
|
|
@@ -87,6 +96,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
87
96
|
### Added
|
|
88
97
|
- Initial version. [#38429]
|
|
89
98
|
|
|
99
|
+
[1.0.14]: https://github.com/Automattic/jetpack-critical-css-gen/compare/v1.0.13...v1.0.14
|
|
100
|
+
[1.0.13]: https://github.com/Automattic/jetpack-critical-css-gen/compare/v1.0.12...v1.0.13
|
|
90
101
|
[1.0.12]: https://github.com/Automattic/jetpack-critical-css-gen/compare/v1.0.11...v1.0.12
|
|
91
102
|
[1.0.11]: https://github.com/Automattic/jetpack-critical-css-gen/compare/v1.0.10...v1.0.11
|
|
92
103
|
[1.0.10]: https://github.com/Automattic/jetpack-critical-css-gen/compare/v1.0.9...v1.0.10
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BrowserInterface } from "./browser-interface.js";
|
|
2
|
-
import { HttpError } from "./errors.js";
|
|
2
|
+
import { HttpError, RedirectError } from "./errors.js";
|
|
3
3
|
import { objectPromiseAll } from "./object-promise-all.js";
|
|
4
4
|
const PAGE_GOTO_TIMEOUT_MS = 5 * 60 * 1000;
|
|
5
5
|
export class BrowserInterfacePlaywright extends BrowserInterface {
|
|
@@ -74,12 +74,33 @@ export class BrowserInterfacePlaywright extends BrowserInterface {
|
|
|
74
74
|
if (!tab || !tab.page) {
|
|
75
75
|
throw new Error(`Playwright interface does not include URL ${pageUrl}`);
|
|
76
76
|
}
|
|
77
|
-
// Bail early if the page returned a non-200 status code.
|
|
77
|
+
// Bail early if the page returned a non-200 or non-300 status code.
|
|
78
78
|
if (!tab.statusCode || !this.isOkStatus(tab.statusCode)) {
|
|
79
79
|
const error = new HttpError({ url: pageUrl, code: tab.statusCode });
|
|
80
80
|
this.trackUrlError(pageUrl, error);
|
|
81
81
|
throw error;
|
|
82
82
|
}
|
|
83
|
+
if (!this.isSameOrigin(pageUrl, tab.page.url())) {
|
|
84
|
+
// If the origin isn't the same, that means that the page has been redirected.
|
|
85
|
+
const error = new RedirectError({
|
|
86
|
+
url: pageUrl,
|
|
87
|
+
redirectUrl: tab.page.url(),
|
|
88
|
+
});
|
|
89
|
+
this.trackUrlError(pageUrl, error);
|
|
90
|
+
throw error;
|
|
91
|
+
}
|
|
92
|
+
const originalPath = new URL(pageUrl).pathname;
|
|
93
|
+
const redirectedPath = new URL(tab.page.url()).pathname;
|
|
94
|
+
// Check if the paths match.
|
|
95
|
+
// Critical CSS should only be generated for the original page.
|
|
96
|
+
if (originalPath !== redirectedPath) {
|
|
97
|
+
const error = new RedirectError({
|
|
98
|
+
url: pageUrl,
|
|
99
|
+
redirectUrl: tab.page.url(),
|
|
100
|
+
});
|
|
101
|
+
this.trackUrlError(pageUrl, error);
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
83
104
|
if (viewport) {
|
|
84
105
|
await tab.page.setViewportSize(viewport);
|
|
85
106
|
}
|
|
@@ -101,7 +122,15 @@ export class BrowserInterfacePlaywright extends BrowserInterface {
|
|
|
101
122
|
return fetch(url, options);
|
|
102
123
|
}
|
|
103
124
|
isOkStatus(statusCode) {
|
|
104
|
-
return statusCode >= 200 && statusCode <
|
|
125
|
+
return statusCode >= 200 && statusCode < 400;
|
|
126
|
+
}
|
|
127
|
+
isSameOrigin(url, pageUrl) {
|
|
128
|
+
try {
|
|
129
|
+
return new URL(url).origin === new URL(pageUrl).origin;
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
105
134
|
}
|
|
106
135
|
}
|
|
107
136
|
//# sourceMappingURL=browser-interface-playwright.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-interface-playwright.js","sourceRoot":"","sources":["../src/browser-interface-playwright.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAiC,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-interface-playwright.js","sourceRoot":"","sources":["../src/browser-interface-playwright.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@automattic/jetpack-critical-css-gen",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.14",
|
|
5
5
|
"description": "A flexible Critical CSS Generator that supports multiple URLs and viewports, with both server-side and client-side generation capabilities.",
|
|
6
6
|
"homepage": "https://github.com/Automattic/jetpack/tree/HEAD/projects/js-packages/critical-css-gen/#readme",
|
|
7
7
|
"bugs": {
|
|
@@ -26,14 +26,14 @@
|
|
|
26
26
|
"main": "./build/browser.js",
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@automattic/jetpack-webpack-config": "workspace:*",
|
|
29
|
-
"@babel/core": "7.
|
|
30
|
-
"@babel/preset-env": "7.
|
|
31
|
-
"@babel/preset-typescript": "7.
|
|
29
|
+
"@babel/core": "7.27.4",
|
|
30
|
+
"@babel/preset-env": "7.27.2",
|
|
31
|
+
"@babel/preset-typescript": "7.27.1",
|
|
32
32
|
"@types/clean-css": "4.2.11",
|
|
33
33
|
"@types/css-tree": "2.3.10",
|
|
34
34
|
"@types/node": "^20.4.2",
|
|
35
35
|
"express": "4.21.2",
|
|
36
|
-
"jest": "
|
|
36
|
+
"jest": "30.0.0",
|
|
37
37
|
"path-browserify": "1.0.1",
|
|
38
38
|
"playwright": "1.51.1",
|
|
39
39
|
"playwright-core": "^1.45.1",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"source-map": "0.7.4",
|
|
42
42
|
"source-map-js": "1.2.0",
|
|
43
43
|
"tslib": "2.5.0",
|
|
44
|
-
"typescript": "5.8.
|
|
44
|
+
"typescript": "5.8.3",
|
|
45
45
|
"webpack": "5.94.0",
|
|
46
46
|
"webpack-cli": "6.0.1",
|
|
47
47
|
"webpack-dev-middleware": "5.3.4"
|