@freegamestore/compliance 0.3.1 → 0.4.0
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle-size.d.ts","sourceRoot":"","sources":["../../src/checks/bundle-size.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"bundle-size.d.ts","sourceRoot":"","sources":["../../src/checks/bundle-size.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAa/C;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CA6E9E"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { gzipByteLength } from '../lib/gzip.js';
|
|
2
|
-
const
|
|
2
|
+
const MAX_GZIP_BYTES_DEFAULT = 300 * 1024; // 300 KB for 2D / DOM games
|
|
3
|
+
const MAX_GZIP_BYTES_3D = 600 * 1024; // 600 KB for games shipping a 3D engine
|
|
4
|
+
// Heavy 3D engines that justify a larger budget. If any of these are a
|
|
5
|
+
// runtime dependency, the limit is raised — a Babylon-based bowling game
|
|
6
|
+
// can't realistically fit under 300KB and shouldn't have to.
|
|
7
|
+
const HEAVY_3D_DEPS = ['@babylonjs/core', 'three', '@react-three/fiber'];
|
|
3
8
|
const ASSETS_DIR = 'web/dist/assets';
|
|
9
|
+
const PACKAGE_JSON = 'web/package.json';
|
|
4
10
|
/**
|
|
5
11
|
* Checks the largest JS asset under web/dist/assets/ against the 300KB-gzip
|
|
6
12
|
* limit. Returns 'warn' if dist hasn't been built yet (we don't want to
|
|
@@ -62,12 +68,13 @@ export async function checkBundleSize(source) {
|
|
|
62
68
|
}
|
|
63
69
|
const gzipped = await gzipByteLength(content);
|
|
64
70
|
const kb = (gzipped / 1024).toFixed(1);
|
|
65
|
-
const
|
|
66
|
-
|
|
71
|
+
const { limit, reason } = await pickLimit(source);
|
|
72
|
+
const limitKb = (limit / 1024).toFixed(0);
|
|
73
|
+
if (gzipped > limit) {
|
|
67
74
|
return {
|
|
68
75
|
name: 'Bundle size',
|
|
69
76
|
status: 'fail',
|
|
70
|
-
detail: `${largest}: ${kb} KB gzipped (limit ${limitKb} KB)`,
|
|
77
|
+
detail: `${largest}: ${kb} KB gzipped (limit ${limitKb} KB${reason ? ` · ${reason}` : ''})`,
|
|
71
78
|
suggestions: [
|
|
72
79
|
'Find heavy dependencies: `pnpm dlx vite-bundle-visualizer`',
|
|
73
80
|
'Lazy-load non-critical screens with dynamic import().',
|
|
@@ -78,7 +85,24 @@ export async function checkBundleSize(source) {
|
|
|
78
85
|
return {
|
|
79
86
|
name: 'Bundle size',
|
|
80
87
|
status: 'pass',
|
|
81
|
-
detail: `${largest}: ${kb} KB gzipped (limit ${limitKb} KB)`,
|
|
88
|
+
detail: `${largest}: ${kb} KB gzipped (limit ${limitKb} KB${reason ? ` · ${reason}` : ''})`,
|
|
82
89
|
};
|
|
83
90
|
}
|
|
91
|
+
async function pickLimit(source) {
|
|
92
|
+
const pkgRaw = await source.read(PACKAGE_JSON);
|
|
93
|
+
if (pkgRaw) {
|
|
94
|
+
try {
|
|
95
|
+
const pkg = JSON.parse(pkgRaw);
|
|
96
|
+
const deps = pkg.dependencies ?? {};
|
|
97
|
+
const heavy = HEAVY_3D_DEPS.find((d) => Object.prototype.hasOwnProperty.call(deps, d));
|
|
98
|
+
if (heavy) {
|
|
99
|
+
return { limit: MAX_GZIP_BYTES_3D, reason: `3D engine: ${heavy}` };
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// fall through to default
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return { limit: MAX_GZIP_BYTES_DEFAULT, reason: '' };
|
|
107
|
+
}
|
|
84
108
|
//# sourceMappingURL=bundle-size.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle-size.js","sourceRoot":"","sources":["../../src/checks/bundle-size.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,MAAM,
|
|
1
|
+
{"version":3,"file":"bundle-size.js","sourceRoot":"","sources":["../../src/checks/bundle-size.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED