@adaptive-ds/assets-optimizer 0.5.0 → 0.6.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.
- package/bun.lock +215 -0
- package/changelogs/2026-04-20_v0.6.0.md +5 -0
- package/dist/AssetsOptimizeOptions.d.ts +5 -0
- package/dist/AssetsOptimizeOptions.d.ts.map +1 -1
- package/dist/AssetsOptimizeResult.d.ts +2 -0
- package/dist/AssetsOptimizeResult.d.ts.map +1 -1
- package/dist/assetsOptimize.d.ts.map +1 -1
- package/dist/assetsOptimize.js +31 -2
- package/dist/font/OptimizeFontsOptions.d.ts +9 -0
- package/dist/font/OptimizeFontsOptions.d.ts.map +1 -0
- package/dist/font/OptimizeFontsOptions.js +1 -0
- package/dist/font/ProcessFontsOptions.d.ts +13 -0
- package/dist/font/ProcessFontsOptions.d.ts.map +1 -0
- package/dist/font/ProcessFontsOptions.js +1 -0
- package/dist/font/optimizeFonts.d.ts +4 -0
- package/dist/font/optimizeFonts.d.ts.map +1 -0
- package/dist/font/optimizeFonts.js +65 -0
- package/dist/font/parseFontFilename.d.ts +17 -0
- package/dist/font/parseFontFilename.d.ts.map +1 -0
- package/dist/font/parseFontFilename.js +75 -0
- package/dist/font/supportedFontExtensions.d.ts +3 -0
- package/dist/font/supportedFontExtensions.d.ts.map +1 -0
- package/dist/font/supportedFontExtensions.js +2 -0
- package/dist/image/optimizeImages.d.ts.map +1 -1
- package/dist/image/optimizeImages.js +2 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/list/AssetListTypes.d.ts +7 -0
- package/dist/list/AssetListTypes.d.ts.map +1 -1
- package/dist/list/generateFontList.d.ts +3 -0
- package/dist/list/generateFontList.d.ts.map +1 -0
- package/dist/list/generateFontList.js +58 -0
- package/dist/process/ProcessAssetsOptions.d.ts +7 -0
- package/dist/process/ProcessAssetsOptions.d.ts.map +1 -1
- package/dist/process/processAssets.d.ts.map +1 -1
- package/dist/process/processAssets.js +21 -4
- package/dist/shared/printSummary.d.ts.map +1 -1
- package/dist/shared/printSummary.js +5 -0
- package/dist/video/optimizeVideos.d.ts.map +1 -1
- package/dist/video/optimizeVideos.js +2 -0
- package/package.json +3 -2
package/bun.lock
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"image-size": "^2.0.2",
|
|
9
9
|
"sharp": "^0.34.5",
|
|
10
|
+
"ttf2woff2": "^8.0.1",
|
|
10
11
|
},
|
|
11
12
|
"devDependencies": {
|
|
12
13
|
"@biomejs/biome": "^2.4.11",
|
|
@@ -87,24 +88,238 @@
|
|
|
87
88
|
|
|
88
89
|
"@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="],
|
|
89
90
|
|
|
91
|
+
"@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="],
|
|
92
|
+
|
|
93
|
+
"@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="],
|
|
94
|
+
|
|
95
|
+
"@npmcli/agent": ["@npmcli/agent@3.0.0", "", { "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", "socks-proxy-agent": "^8.0.3" } }, "sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q=="],
|
|
96
|
+
|
|
97
|
+
"@npmcli/fs": ["@npmcli/fs@4.0.0", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q=="],
|
|
98
|
+
|
|
99
|
+
"@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="],
|
|
100
|
+
|
|
90
101
|
"@types/bun": ["@types/bun@1.3.12", "", { "dependencies": { "bun-types": "1.3.12" } }, "sha512-DBv81elK+/VSwXHDlnH3Qduw+KxkTIWi7TXkAeh24zpi5l0B2kUg9Ga3tb4nJaPcOFswflgi/yAvMVBPrxMB+A=="],
|
|
91
102
|
|
|
92
103
|
"@types/node": ["@types/node@25.6.0", "", { "dependencies": { "undici-types": "~7.19.0" } }, "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ=="],
|
|
93
104
|
|
|
105
|
+
"abbrev": ["abbrev@3.0.1", "", {}, "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg=="],
|
|
106
|
+
|
|
107
|
+
"agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="],
|
|
108
|
+
|
|
109
|
+
"ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="],
|
|
110
|
+
|
|
111
|
+
"ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="],
|
|
112
|
+
|
|
113
|
+
"balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
|
|
114
|
+
|
|
115
|
+
"bindings": ["bindings@1.5.0", "", { "dependencies": { "file-uri-to-path": "1.0.0" } }, "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ=="],
|
|
116
|
+
|
|
117
|
+
"brace-expansion": ["brace-expansion@2.1.0", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w=="],
|
|
118
|
+
|
|
119
|
+
"bufferstreams": ["bufferstreams@4.0.0", "", { "dependencies": { "readable-stream": "^3.4.0", "yerror": "^8.0.0" } }, "sha512-azX778/2VQ9K2uiYprSUKLgK2K6lR1KtJycJDsMg7u0+Cc994A9HyGaUKb01e/T+M8jse057429iKXurCaT35g=="],
|
|
120
|
+
|
|
94
121
|
"bun-types": ["bun-types@1.3.12", "", { "dependencies": { "@types/node": "*" } }, "sha512-HqOLj5PoFajAQciOMRiIZGNoKxDJSr6qigAttOX40vJuSp6DN/CxWp9s3C1Xwm4oH7ybueITwiaOcWXoYVoRkA=="],
|
|
95
122
|
|
|
123
|
+
"cacache": ["cacache@19.0.1", "", { "dependencies": { "@npmcli/fs": "^4.0.0", "fs-minipass": "^3.0.0", "glob": "^10.2.2", "lru-cache": "^10.0.1", "minipass": "^7.0.3", "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^7.0.2", "ssri": "^12.0.0", "tar": "^7.4.3", "unique-filename": "^4.0.0" } }, "sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ=="],
|
|
124
|
+
|
|
125
|
+
"chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="],
|
|
126
|
+
|
|
127
|
+
"color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
|
|
128
|
+
|
|
129
|
+
"color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
|
|
130
|
+
|
|
131
|
+
"cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],
|
|
132
|
+
|
|
133
|
+
"debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
|
|
134
|
+
|
|
96
135
|
"detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="],
|
|
97
136
|
|
|
137
|
+
"eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="],
|
|
138
|
+
|
|
139
|
+
"emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="],
|
|
140
|
+
|
|
141
|
+
"encoding": ["encoding@0.1.13", "", { "dependencies": { "iconv-lite": "^0.6.2" } }, "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A=="],
|
|
142
|
+
|
|
143
|
+
"env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="],
|
|
144
|
+
|
|
145
|
+
"err-code": ["err-code@2.0.3", "", {}, "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA=="],
|
|
146
|
+
|
|
147
|
+
"exponential-backoff": ["exponential-backoff@3.1.3", "", {}, "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA=="],
|
|
148
|
+
|
|
149
|
+
"fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="],
|
|
150
|
+
|
|
151
|
+
"file-uri-to-path": ["file-uri-to-path@1.0.0", "", {}, "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="],
|
|
152
|
+
|
|
153
|
+
"foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="],
|
|
154
|
+
|
|
155
|
+
"fs-minipass": ["fs-minipass@3.0.3", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw=="],
|
|
156
|
+
|
|
157
|
+
"glob": ["glob@10.5.0", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg=="],
|
|
158
|
+
|
|
159
|
+
"graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="],
|
|
160
|
+
|
|
161
|
+
"http-cache-semantics": ["http-cache-semantics@4.2.0", "", {}, "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ=="],
|
|
162
|
+
|
|
163
|
+
"http-proxy-agent": ["http-proxy-agent@7.0.2", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="],
|
|
164
|
+
|
|
165
|
+
"https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="],
|
|
166
|
+
|
|
167
|
+
"iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="],
|
|
168
|
+
|
|
98
169
|
"image-size": ["image-size@2.0.2", "", { "bin": { "image-size": "bin/image-size.js" } }, "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w=="],
|
|
99
170
|
|
|
171
|
+
"imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="],
|
|
172
|
+
|
|
173
|
+
"inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
|
|
174
|
+
|
|
175
|
+
"ip-address": ["ip-address@10.1.0", "", {}, "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q=="],
|
|
176
|
+
|
|
177
|
+
"is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],
|
|
178
|
+
|
|
179
|
+
"isexe": ["isexe@3.1.5", "", {}, "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w=="],
|
|
180
|
+
|
|
181
|
+
"jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="],
|
|
182
|
+
|
|
183
|
+
"lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
|
|
184
|
+
|
|
185
|
+
"make-fetch-happen": ["make-fetch-happen@14.0.3", "", { "dependencies": { "@npmcli/agent": "^3.0.0", "cacache": "^19.0.1", "http-cache-semantics": "^4.1.1", "minipass": "^7.0.2", "minipass-fetch": "^4.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^1.0.0", "proc-log": "^5.0.0", "promise-retry": "^2.0.1", "ssri": "^12.0.0" } }, "sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ=="],
|
|
186
|
+
|
|
187
|
+
"minimatch": ["minimatch@9.0.9", "", { "dependencies": { "brace-expansion": "^2.0.2" } }, "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg=="],
|
|
188
|
+
|
|
189
|
+
"minipass": ["minipass@7.1.3", "", {}, "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A=="],
|
|
190
|
+
|
|
191
|
+
"minipass-collect": ["minipass-collect@2.0.1", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw=="],
|
|
192
|
+
|
|
193
|
+
"minipass-fetch": ["minipass-fetch@4.0.1", "", { "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", "minizlib": "^3.0.1" }, "optionalDependencies": { "encoding": "^0.1.13" } }, "sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ=="],
|
|
194
|
+
|
|
195
|
+
"minipass-flush": ["minipass-flush@1.0.7", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA=="],
|
|
196
|
+
|
|
197
|
+
"minipass-pipeline": ["minipass-pipeline@1.2.4", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A=="],
|
|
198
|
+
|
|
199
|
+
"minipass-sized": ["minipass-sized@1.0.3", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g=="],
|
|
200
|
+
|
|
201
|
+
"minizlib": ["minizlib@3.1.0", "", { "dependencies": { "minipass": "^7.1.2" } }, "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw=="],
|
|
202
|
+
|
|
203
|
+
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
|
|
204
|
+
|
|
205
|
+
"nan": ["nan@2.26.2", "", {}, "sha512-0tTvBTYkt3tdGw22nrAy50x7gpbGCCFH3AFcyS5WiUu7Eu4vWlri1woE6qHBSfy11vksDqkiwjOnlR7WV8G1Hw=="],
|
|
206
|
+
|
|
207
|
+
"negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="],
|
|
208
|
+
|
|
209
|
+
"node-gyp": ["node-gyp@11.5.0", "", { "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", "graceful-fs": "^4.2.6", "make-fetch-happen": "^14.0.3", "nopt": "^8.0.0", "proc-log": "^5.0.0", "semver": "^7.3.5", "tar": "^7.4.3", "tinyglobby": "^0.2.12", "which": "^5.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" } }, "sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ=="],
|
|
210
|
+
|
|
211
|
+
"nopt": ["nopt@8.1.0", "", { "dependencies": { "abbrev": "^3.0.0" }, "bin": { "nopt": "bin/nopt.js" } }, "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A=="],
|
|
212
|
+
|
|
213
|
+
"p-map": ["p-map@7.0.4", "", {}, "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ=="],
|
|
214
|
+
|
|
215
|
+
"package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="],
|
|
216
|
+
|
|
217
|
+
"path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],
|
|
218
|
+
|
|
219
|
+
"path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="],
|
|
220
|
+
|
|
221
|
+
"picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="],
|
|
222
|
+
|
|
223
|
+
"proc-log": ["proc-log@5.0.0", "", {}, "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ=="],
|
|
224
|
+
|
|
225
|
+
"promise-retry": ["promise-retry@2.0.1", "", { "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" } }, "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g=="],
|
|
226
|
+
|
|
227
|
+
"readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="],
|
|
228
|
+
|
|
229
|
+
"retry": ["retry@0.12.0", "", {}, "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow=="],
|
|
230
|
+
|
|
231
|
+
"safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="],
|
|
232
|
+
|
|
233
|
+
"safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="],
|
|
234
|
+
|
|
100
235
|
"semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="],
|
|
101
236
|
|
|
102
237
|
"sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="],
|
|
103
238
|
|
|
239
|
+
"shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="],
|
|
240
|
+
|
|
241
|
+
"shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="],
|
|
242
|
+
|
|
243
|
+
"signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="],
|
|
244
|
+
|
|
245
|
+
"smart-buffer": ["smart-buffer@4.2.0", "", {}, "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="],
|
|
246
|
+
|
|
247
|
+
"socks": ["socks@2.8.7", "", { "dependencies": { "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" } }, "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A=="],
|
|
248
|
+
|
|
249
|
+
"socks-proxy-agent": ["socks-proxy-agent@8.0.5", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" } }, "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw=="],
|
|
250
|
+
|
|
251
|
+
"ssri": ["ssri@12.0.0", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ=="],
|
|
252
|
+
|
|
253
|
+
"string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="],
|
|
254
|
+
|
|
255
|
+
"string-width-cjs": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
|
|
256
|
+
|
|
257
|
+
"string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="],
|
|
258
|
+
|
|
259
|
+
"strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="],
|
|
260
|
+
|
|
261
|
+
"strip-ansi-cjs": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
|
|
262
|
+
|
|
263
|
+
"tar": ["tar@7.5.13", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng=="],
|
|
264
|
+
|
|
265
|
+
"tinyglobby": ["tinyglobby@0.2.16", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg=="],
|
|
266
|
+
|
|
104
267
|
"tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
|
105
268
|
|
|
269
|
+
"ttf2woff2": ["ttf2woff2@8.0.1", "", { "dependencies": { "bindings": "^1.5.0", "bufferstreams": "^4.0.0", "debug": "^4.4.1", "nan": "^2.22.2", "node-gyp": "^11.2.0", "yerror": "^8.0.0" }, "bin": { "ttf2woff2": "bin/ttf2woff2.js" } }, "sha512-nWSZLaXOgYtvgY6G0SFI8dVHsGWIchlnNMNRglT3Amp2WGy0GSPd9kLAkFd+HvEOzZ/aY6EUrpOF66QaPbipgg=="],
|
|
270
|
+
|
|
106
271
|
"typescript": ["typescript@6.0.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw=="],
|
|
107
272
|
|
|
108
273
|
"undici-types": ["undici-types@7.19.2", "", {}, "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg=="],
|
|
274
|
+
|
|
275
|
+
"unique-filename": ["unique-filename@4.0.0", "", { "dependencies": { "unique-slug": "^5.0.0" } }, "sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ=="],
|
|
276
|
+
|
|
277
|
+
"unique-slug": ["unique-slug@5.0.0", "", { "dependencies": { "imurmurhash": "^0.1.4" } }, "sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg=="],
|
|
278
|
+
|
|
279
|
+
"util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="],
|
|
280
|
+
|
|
281
|
+
"which": ["which@5.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ=="],
|
|
282
|
+
|
|
283
|
+
"wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="],
|
|
284
|
+
|
|
285
|
+
"wrap-ansi-cjs": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
|
|
286
|
+
|
|
287
|
+
"yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="],
|
|
288
|
+
|
|
289
|
+
"yerror": ["yerror@8.0.0", "", {}, "sha512-FemWD5/UqNm8ffj8oZIbjWXIF2KE0mZssggYpdaQkWDDgXBQ/35PNIxEuz6/YLn9o0kOxDBNJe8x8k9ljD7k/g=="],
|
|
290
|
+
|
|
291
|
+
"cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
|
|
292
|
+
|
|
293
|
+
"minipass-flush/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
|
|
294
|
+
|
|
295
|
+
"minipass-pipeline/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
|
|
296
|
+
|
|
297
|
+
"minipass-sized/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
|
|
298
|
+
|
|
299
|
+
"string-width-cjs/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
|
|
300
|
+
|
|
301
|
+
"string-width-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
|
|
302
|
+
|
|
303
|
+
"strip-ansi-cjs/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
|
|
304
|
+
|
|
305
|
+
"wrap-ansi-cjs/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
|
|
306
|
+
|
|
307
|
+
"wrap-ansi-cjs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
|
|
308
|
+
|
|
309
|
+
"wrap-ansi-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
|
|
310
|
+
|
|
311
|
+
"cross-spawn/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
|
|
312
|
+
|
|
313
|
+
"minipass-flush/minipass/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="],
|
|
314
|
+
|
|
315
|
+
"minipass-pipeline/minipass/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="],
|
|
316
|
+
|
|
317
|
+
"minipass-sized/minipass/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="],
|
|
318
|
+
|
|
319
|
+
"string-width-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
|
|
320
|
+
|
|
321
|
+
"wrap-ansi-cjs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
|
|
322
|
+
|
|
323
|
+
"wrap-ansi-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
|
|
109
324
|
}
|
|
110
325
|
}
|
|
@@ -13,5 +13,10 @@ export interface AssetsOptimizeOptions {
|
|
|
13
13
|
videoListOutputPath?: string;
|
|
14
14
|
generateVideoList?: boolean;
|
|
15
15
|
videoPreviewQuality?: number;
|
|
16
|
+
processFonts?: boolean;
|
|
17
|
+
fontOriginalsDir?: string;
|
|
18
|
+
fontOptimizedDir?: string;
|
|
19
|
+
fontListOutputPath?: string;
|
|
20
|
+
generateFontList?: boolean;
|
|
16
21
|
}
|
|
17
22
|
//# sourceMappingURL=AssetsOptimizeOptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetsOptimizeOptions.d.ts","sourceRoot":"","sources":["../src/AssetsOptimizeOptions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACxB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"AssetsOptimizeOptions.d.ts","sourceRoot":"","sources":["../src/AssetsOptimizeOptions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACxB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B"}
|
|
@@ -4,6 +4,8 @@ export interface AssetsOptimizeResult {
|
|
|
4
4
|
skippedRootFiles: string[];
|
|
5
5
|
warnings: string[];
|
|
6
6
|
deletedLocal: string[];
|
|
7
|
+
processedFonts: string[];
|
|
8
|
+
skippedExistingFonts: string[];
|
|
7
9
|
processedVideos: string[];
|
|
8
10
|
skippedExistingVideos: string[];
|
|
9
11
|
processedVideoPreviews: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetsOptimizeResult.d.ts","sourceRoot":"","sources":["../src/AssetsOptimizeResult.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,qBAAqB,EAAE,MAAM,EAAE,CAAA;IAC/B,sBAAsB,EAAE,MAAM,EAAE,CAAA;IAChC,4BAA4B,EAAE,MAAM,EAAE,CAAA;CACvC"}
|
|
1
|
+
{"version":3,"file":"AssetsOptimizeResult.d.ts","sourceRoot":"","sources":["../src/AssetsOptimizeResult.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAC9B,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,qBAAqB,EAAE,MAAM,EAAE,CAAA;IAC/B,sBAAsB,EAAE,MAAM,EAAE,CAAA;IAChC,4BAA4B,EAAE,MAAM,EAAE,CAAA;CACvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assetsOptimize.d.ts","sourceRoot":"","sources":["../src/assetsOptimize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"assetsOptimize.d.ts","sourceRoot":"","sources":["../src/assetsOptimize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAKrE,wBAAsB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAuFvG"}
|
package/dist/assetsOptimize.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { optimizeImages } from "./image/optimizeImages.js";
|
|
2
2
|
import { optimizeVideos } from "./video/optimizeVideos.js";
|
|
3
|
+
import { optimizeFonts } from "./font/optimizeFonts.js";
|
|
3
4
|
export async function assetsOptimize(options = {}) {
|
|
4
|
-
const [imageResult, videoResult] = await Promise.all([
|
|
5
|
+
const [imageResult, videoResult, fontResult] = await Promise.all([
|
|
5
6
|
options.processImages !== false
|
|
6
7
|
? optimizeImages({
|
|
7
8
|
cwd: options.cwd,
|
|
@@ -18,6 +19,8 @@ export async function assetsOptimize(options = {}) {
|
|
|
18
19
|
skippedRootFiles: [],
|
|
19
20
|
warnings: [],
|
|
20
21
|
deletedLocal: [],
|
|
22
|
+
processedFonts: [],
|
|
23
|
+
skippedExistingFonts: [],
|
|
21
24
|
processedVideos: [],
|
|
22
25
|
skippedExistingVideos: [],
|
|
23
26
|
processedVideoPreviews: [],
|
|
@@ -39,6 +42,30 @@ export async function assetsOptimize(options = {}) {
|
|
|
39
42
|
skippedRootFiles: [],
|
|
40
43
|
warnings: [],
|
|
41
44
|
deletedLocal: [],
|
|
45
|
+
processedFonts: [],
|
|
46
|
+
skippedExistingFonts: [],
|
|
47
|
+
processedVideos: [],
|
|
48
|
+
skippedExistingVideos: [],
|
|
49
|
+
processedVideoPreviews: [],
|
|
50
|
+
skippedExistingVideoPreviews: [],
|
|
51
|
+
}),
|
|
52
|
+
options.processFonts !== false
|
|
53
|
+
? optimizeFonts({
|
|
54
|
+
cwd: options.cwd,
|
|
55
|
+
logLevel: options.logLevel,
|
|
56
|
+
fontOriginalsDir: options.fontOriginalsDir,
|
|
57
|
+
fontOptimizedDir: options.fontOptimizedDir,
|
|
58
|
+
fontListOutputPath: options.fontListOutputPath,
|
|
59
|
+
generateFontList: options.generateFontList,
|
|
60
|
+
})
|
|
61
|
+
: Promise.resolve({
|
|
62
|
+
processed: [],
|
|
63
|
+
skippedExisting: [],
|
|
64
|
+
skippedRootFiles: [],
|
|
65
|
+
warnings: [],
|
|
66
|
+
deletedLocal: [],
|
|
67
|
+
processedFonts: [],
|
|
68
|
+
skippedExistingFonts: [],
|
|
42
69
|
processedVideos: [],
|
|
43
70
|
skippedExistingVideos: [],
|
|
44
71
|
processedVideoPreviews: [],
|
|
@@ -49,8 +76,10 @@ export async function assetsOptimize(options = {}) {
|
|
|
49
76
|
processed: imageResult.processed,
|
|
50
77
|
skippedExisting: imageResult.skippedExisting,
|
|
51
78
|
skippedRootFiles: imageResult.skippedRootFiles,
|
|
52
|
-
warnings: [...imageResult.warnings, ...videoResult.warnings],
|
|
79
|
+
warnings: [...imageResult.warnings, ...videoResult.warnings, ...fontResult.warnings],
|
|
53
80
|
deletedLocal: imageResult.deletedLocal,
|
|
81
|
+
processedFonts: fontResult.processedFonts,
|
|
82
|
+
skippedExistingFonts: fontResult.skippedExistingFonts,
|
|
54
83
|
processedVideos: videoResult.processedVideos,
|
|
55
84
|
skippedExistingVideos: videoResult.skippedExistingVideos,
|
|
56
85
|
processedVideoPreviews: videoResult.processedVideoPreviews,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OptimizeFontsOptions.d.ts","sourceRoot":"","sources":["../../src/font/OptimizeFontsOptions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface ProcessFontsOptions {
|
|
2
|
+
cwd?: string;
|
|
3
|
+
logLevel?: 0 | 1 | 2 | 3;
|
|
4
|
+
sourceFontsRemotePath: string;
|
|
5
|
+
destFontsRemotePath: string;
|
|
6
|
+
fontOriginalsDir?: string;
|
|
7
|
+
fontOptimizedDir?: string;
|
|
8
|
+
fontListOutputPath?: string;
|
|
9
|
+
fontCacheControl?: string;
|
|
10
|
+
resync?: boolean;
|
|
11
|
+
processFonts?: boolean;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=ProcessFontsOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProcessFontsOptions.d.ts","sourceRoot":"","sources":["../../src/font/ProcessFontsOptions.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACxB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,mBAAmB,EAAE,MAAM,CAAA;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AssetsOptimizeResult } from "../AssetsOptimizeResult.js";
|
|
2
|
+
import type { OptimizeFontsOptions } from "./OptimizeFontsOptions.js";
|
|
3
|
+
export declare function optimizeFonts(options?: OptimizeFontsOptions): Promise<AssetsOptimizeResult>;
|
|
4
|
+
//# sourceMappingURL=optimizeFonts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optimizeFonts.d.ts","sourceRoot":"","sources":["../../src/font/optimizeFonts.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAsCrE,wBAAsB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAwCrG"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import ttf2woff2 from "ttf2woff2";
|
|
4
|
+
import { dirExists } from "../shared/dirExists.js";
|
|
5
|
+
import { createLogger } from "../shared/logger.js";
|
|
6
|
+
import { printSummary } from "../shared/printSummary.js";
|
|
7
|
+
import { walkFiles } from "../shared/walkFiles.js";
|
|
8
|
+
import { supportedFontSourceExtensions } from "./supportedFontExtensions.js";
|
|
9
|
+
import { generateFontList } from "../list/generateFontList.js";
|
|
10
|
+
import { parseFontFilename } from "./parseFontFilename.js";
|
|
11
|
+
async function processFontFile(sourcePath, originalsDir, optimizedDir, result, logger) {
|
|
12
|
+
const extension = path.extname(sourcePath).toLowerCase();
|
|
13
|
+
const relativePath = path.relative(originalsDir, sourcePath);
|
|
14
|
+
const relativePathWithoutExt = relativePath.replace(/\.[^.]+$/, "");
|
|
15
|
+
const outputPath = path.join(optimizedDir, relativePathWithoutExt + ".woff2");
|
|
16
|
+
parseFontFilename(path.basename(sourcePath));
|
|
17
|
+
try {
|
|
18
|
+
await fs.access(outputPath);
|
|
19
|
+
result.skippedExistingFonts.push(relativePath);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
catch { }
|
|
23
|
+
await fs.mkdir(path.dirname(outputPath), { recursive: true });
|
|
24
|
+
if (supportedFontSourceExtensions.has(extension)) {
|
|
25
|
+
const inputBuffer = await fs.readFile(sourcePath);
|
|
26
|
+
const woff2Buffer = ttf2woff2(inputBuffer);
|
|
27
|
+
await fs.writeFile(outputPath, woff2Buffer);
|
|
28
|
+
result.processedFonts.push(relativePath);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export async function optimizeFonts(options = {}) {
|
|
32
|
+
const cwd = path.resolve(options.cwd ?? process.cwd());
|
|
33
|
+
const fontOriginalsDir = path.resolve(cwd, options.fontOriginalsDir ?? "fonts");
|
|
34
|
+
const fontOptimizedDir = path.resolve(cwd, options.fontOptimizedDir ?? "public/fonts");
|
|
35
|
+
const fontListOutputPath = path.resolve(cwd, options.fontListOutputPath ?? "src/app/assets/fontList.ts");
|
|
36
|
+
const logger = createLogger(options.logLevel);
|
|
37
|
+
const result = {
|
|
38
|
+
processed: [],
|
|
39
|
+
skippedExisting: [],
|
|
40
|
+
skippedRootFiles: [],
|
|
41
|
+
warnings: [],
|
|
42
|
+
deletedLocal: [],
|
|
43
|
+
processedFonts: [],
|
|
44
|
+
skippedExistingFonts: [],
|
|
45
|
+
processedVideos: [],
|
|
46
|
+
skippedExistingVideos: [],
|
|
47
|
+
processedVideoPreviews: [],
|
|
48
|
+
skippedExistingVideoPreviews: [],
|
|
49
|
+
};
|
|
50
|
+
if (await dirExists(fontOriginalsDir)) {
|
|
51
|
+
for (const sourceFile of await walkFiles(fontOriginalsDir)) {
|
|
52
|
+
const extension = path.extname(sourceFile).toLowerCase();
|
|
53
|
+
if (!supportedFontSourceExtensions.has(extension)) {
|
|
54
|
+
result.warnings.push(`Skipped unsupported font source file: ${sourceFile}`);
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
await processFontFile(sourceFile, fontOriginalsDir, fontOptimizedDir, result, logger);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (options.generateFontList !== false) {
|
|
61
|
+
await generateFontList(fontOptimizedDir, fontListOutputPath, undefined, logger);
|
|
62
|
+
}
|
|
63
|
+
printSummary(result, logger);
|
|
64
|
+
return result;
|
|
65
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse font metadata from filename.
|
|
3
|
+
* Expected format: {family}[-{style}][-{weight}].{ext}
|
|
4
|
+
*
|
|
5
|
+
* Examples:
|
|
6
|
+
* - Roboto-Regular.ttf → { fontFamily: "Roboto", fontStyle: "normal", fontWeight: 400 }
|
|
7
|
+
* - OpenSans-BoldItalic.ttf → { fontFamily: "Open Sans", fontStyle: "italic", fontWeight: 700 }
|
|
8
|
+
* - Inter-Medium.ttf → { fontFamily: "Inter", fontStyle: "normal", fontWeight: 500 }
|
|
9
|
+
* - Nunito.ttf → { fontFamily: "Nunito", fontStyle: "normal", fontWeight: 400 }
|
|
10
|
+
* - Lato-Black.ttf → { fontFamily: "Lato", fontStyle: "normal", fontWeight: 900 }
|
|
11
|
+
*/
|
|
12
|
+
export declare function parseFontFilename(filename: string): {
|
|
13
|
+
fontFamily: string;
|
|
14
|
+
fontStyle: "normal" | "italic";
|
|
15
|
+
fontWeight: number;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=parseFontFilename.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseFontFilename.d.ts","sourceRoot":"","sources":["../../src/font/parseFontFilename.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACnD,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;CACnB,CAkEA"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
/**
|
|
3
|
+
* Parse font metadata from filename.
|
|
4
|
+
* Expected format: {family}[-{style}][-{weight}].{ext}
|
|
5
|
+
*
|
|
6
|
+
* Examples:
|
|
7
|
+
* - Roboto-Regular.ttf → { fontFamily: "Roboto", fontStyle: "normal", fontWeight: 400 }
|
|
8
|
+
* - OpenSans-BoldItalic.ttf → { fontFamily: "Open Sans", fontStyle: "italic", fontWeight: 700 }
|
|
9
|
+
* - Inter-Medium.ttf → { fontFamily: "Inter", fontStyle: "normal", fontWeight: 500 }
|
|
10
|
+
* - Nunito.ttf → { fontFamily: "Nunito", fontStyle: "normal", fontWeight: 400 }
|
|
11
|
+
* - Lato-Black.ttf → { fontFamily: "Lato", fontStyle: "normal", fontWeight: 900 }
|
|
12
|
+
*/
|
|
13
|
+
export function parseFontFilename(filename) {
|
|
14
|
+
const basename = path.basename(filename);
|
|
15
|
+
const extension = path.extname(basename);
|
|
16
|
+
const nameWithoutExt = basename.replace(new RegExp(`\\${extension}$`), "");
|
|
17
|
+
const parts = nameWithoutExt.split("-");
|
|
18
|
+
let fontFamily = "";
|
|
19
|
+
let fontStyle = "normal";
|
|
20
|
+
let fontWeight = 400;
|
|
21
|
+
const weightMap = {
|
|
22
|
+
Thin: 100,
|
|
23
|
+
ExtraLight: 200,
|
|
24
|
+
Light: 300,
|
|
25
|
+
Regular: 400,
|
|
26
|
+
Medium: 500,
|
|
27
|
+
SemiBold: 600,
|
|
28
|
+
Bold: 700,
|
|
29
|
+
ExtraBold: 800,
|
|
30
|
+
Black: 900,
|
|
31
|
+
};
|
|
32
|
+
if (parts.length === 1) {
|
|
33
|
+
fontFamily = parts[0] ?? nameWithoutExt;
|
|
34
|
+
}
|
|
35
|
+
else if (parts.length === 2) {
|
|
36
|
+
const first = parts[0] ?? "";
|
|
37
|
+
const second = parts[1] ?? "";
|
|
38
|
+
if (second in weightMap) {
|
|
39
|
+
fontFamily = first;
|
|
40
|
+
fontWeight = weightMap[second];
|
|
41
|
+
}
|
|
42
|
+
else if (second.match(/^\d{3}$/)) {
|
|
43
|
+
fontFamily = first;
|
|
44
|
+
fontWeight = parseInt(second, 10);
|
|
45
|
+
}
|
|
46
|
+
else if (second === "Italic") {
|
|
47
|
+
fontFamily = first;
|
|
48
|
+
fontStyle = "italic";
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
fontFamily = `${first} ${second}`;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
const first = parts[0] ?? "";
|
|
56
|
+
let last = parts[parts.length - 1] ?? "";
|
|
57
|
+
const second = parts[1] ?? "";
|
|
58
|
+
if (last === "Italic") {
|
|
59
|
+
fontStyle = "italic";
|
|
60
|
+
parts.pop();
|
|
61
|
+
last = parts[parts.length - 1] ?? "";
|
|
62
|
+
}
|
|
63
|
+
if (last.match(/^\d{3}$/)) {
|
|
64
|
+
fontWeight = parseInt(last, 10);
|
|
65
|
+
parts.pop();
|
|
66
|
+
}
|
|
67
|
+
else if (last in weightMap) {
|
|
68
|
+
fontWeight = weightMap[last];
|
|
69
|
+
parts.pop();
|
|
70
|
+
}
|
|
71
|
+
fontFamily = parts.join(" ");
|
|
72
|
+
}
|
|
73
|
+
fontFamily = fontFamily.replace(/([a-z])([A-Z])/g, "$1 $2");
|
|
74
|
+
return { fontFamily, fontStyle, fontWeight };
|
|
75
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supportedFontExtensions.d.ts","sourceRoot":"","sources":["../../src/font/supportedFontExtensions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B,aAA4B,CAAA;AAEtE,eAAO,MAAM,6BAA6B,aAAsB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimizeImages.d.ts","sourceRoot":"","sources":["../../src/image/optimizeImages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAMvE,wBAAsB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"optimizeImages.d.ts","sourceRoot":"","sources":["../../src/image/optimizeImages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAMvE,wBAAsB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAmCvG"}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,7 +14,13 @@ export * from "./image/processImages.js";
|
|
|
14
14
|
export * from "./image/ProcessImagesOptions.js";
|
|
15
15
|
export * from "./image/supportedSourceExtensions.js";
|
|
16
16
|
export * from "./image/TransformSpec.js";
|
|
17
|
+
export * from "./font/OptimizeFontsOptions.js";
|
|
18
|
+
export * from "./font/optimizeFonts.js";
|
|
19
|
+
export * from "./font/parseFontFilename.js";
|
|
20
|
+
export * from "./font/ProcessFontsOptions.js";
|
|
21
|
+
export * from "./font/supportedFontExtensions.js";
|
|
17
22
|
export * from "./list/AssetListTypes.js";
|
|
23
|
+
export * from "./list/generateFontList.js";
|
|
18
24
|
export * from "./list/generateImageList.js";
|
|
19
25
|
export * from "./list/generateVideoList.js";
|
|
20
26
|
export * from "./process/processAssets.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,2BAA2B,CAAA;AACzC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,kCAAkC,CAAA;AAChD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sCAAsC,CAAA;AACpD,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,2BAA2B,CAAA;AACzC,cAAc,kCAAkC,CAAA;AAChD,cAAc,0BAA0B,CAAA;AACxC,cAAc,iCAAiC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,2BAA2B,CAAA;AACzC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,kCAAkC,CAAA;AAChD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sCAAsC,CAAA;AACpD,cAAc,0BAA0B,CAAA;AACxC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mCAAmC,CAAA;AACjD,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,2BAA2B,CAAA;AACzC,cAAc,kCAAkC,CAAA;AAChD,cAAc,0BAA0B,CAAA;AACxC,cAAc,iCAAiC,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,13 @@ export * from "./image/processImages.js";
|
|
|
14
14
|
export * from "./image/ProcessImagesOptions.js";
|
|
15
15
|
export * from "./image/supportedSourceExtensions.js";
|
|
16
16
|
export * from "./image/TransformSpec.js";
|
|
17
|
+
export * from "./font/OptimizeFontsOptions.js";
|
|
18
|
+
export * from "./font/optimizeFonts.js";
|
|
19
|
+
export * from "./font/parseFontFilename.js";
|
|
20
|
+
export * from "./font/ProcessFontsOptions.js";
|
|
21
|
+
export * from "./font/supportedFontExtensions.js";
|
|
17
22
|
export * from "./list/AssetListTypes.js";
|
|
23
|
+
export * from "./list/generateFontList.js";
|
|
18
24
|
export * from "./list/generateImageList.js";
|
|
19
25
|
export * from "./list/generateVideoList.js";
|
|
20
26
|
export * from "./process/processAssets.js";
|
|
@@ -10,4 +10,11 @@ export interface VideoType {
|
|
|
10
10
|
mimeType?: string;
|
|
11
11
|
image: ImageType;
|
|
12
12
|
}
|
|
13
|
+
export interface FontType {
|
|
14
|
+
path: string;
|
|
15
|
+
fontFamily: string;
|
|
16
|
+
fontStyle: "normal" | "italic";
|
|
17
|
+
fontWeight: number;
|
|
18
|
+
mimeType?: string;
|
|
19
|
+
}
|
|
13
20
|
//# sourceMappingURL=AssetListTypes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetListTypes.d.ts","sourceRoot":"","sources":["../../src/list/AssetListTypes.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,SAAS,CAAA;CACjB"}
|
|
1
|
+
{"version":3,"file":"AssetListTypes.d.ts","sourceRoot":"","sources":["../../src/list/AssetListTypes.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,SAAS,CAAA;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateFontList.d.ts","sourceRoot":"","sources":["../../src/list/generateFontList.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAUjD,wBAAsB,gBAAgB,CACpC,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAUf"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { getOwnPackageName } from "../shared/getOwnPackageName.js";
|
|
4
|
+
import { isMissingDirError } from "../shared/isMissingDirError.js";
|
|
5
|
+
import { walkFiles } from "../shared/walkFiles.js";
|
|
6
|
+
import { supportedFontOutputExtensions } from "../font/supportedFontExtensions.js";
|
|
7
|
+
import { formatGeneratedCodeFile } from "./formatGeneratedCodeFile.js";
|
|
8
|
+
import { getAssetKey } from "./getAssetKey.js";
|
|
9
|
+
import { loadExistingAssetList } from "./loadExistingAssetList.js";
|
|
10
|
+
import { sortAssetMap } from "./sortAssetMap.js";
|
|
11
|
+
import { parseFontFilename } from "../font/parseFontFilename.js";
|
|
12
|
+
export async function generateFontList(fontsDirectory, outputPath, fontTypeImportPath, logger) {
|
|
13
|
+
const resolvedFontTypeImportPath = fontTypeImportPath ?? (await getOwnPackageName(import.meta.url));
|
|
14
|
+
const existingFonts = await loadExistingAssetList(outputPath, "fontList");
|
|
15
|
+
const fontMap = sortAssetMap(await processFontFiles(fontsDirectory, existingFonts));
|
|
16
|
+
await fs.mkdir(path.dirname(outputPath), { recursive: true });
|
|
17
|
+
await Bun.write(outputPath, createGeneratedFontListContent(fontMap, resolvedFontTypeImportPath));
|
|
18
|
+
await formatGeneratedCodeFile(outputPath, logger);
|
|
19
|
+
logger?.files(`generated font list: ${outputPath}`);
|
|
20
|
+
logger?.summary(`Generated ${Object.keys(fontMap).length} fonts to ${outputPath}`);
|
|
21
|
+
}
|
|
22
|
+
async function processFontFiles(directory, existingFonts) {
|
|
23
|
+
const fontMap = {};
|
|
24
|
+
let filePaths;
|
|
25
|
+
try {
|
|
26
|
+
filePaths = await walkFiles(directory);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
if (isMissingDirError(error)) {
|
|
30
|
+
return fontMap;
|
|
31
|
+
}
|
|
32
|
+
throw error;
|
|
33
|
+
}
|
|
34
|
+
for (const filePath of filePaths) {
|
|
35
|
+
const extension = path.extname(filePath).toLowerCase();
|
|
36
|
+
if (!supportedFontOutputExtensions.has(extension)) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
const relativePath = path.relative(directory, filePath);
|
|
40
|
+
const key = getAssetKey(filePath);
|
|
41
|
+
const fontMeta = parseFontFilename(filePath);
|
|
42
|
+
fontMap[key] = {
|
|
43
|
+
path: relativePath,
|
|
44
|
+
fontFamily: fontMeta.fontFamily,
|
|
45
|
+
fontStyle: fontMeta.fontStyle,
|
|
46
|
+
fontWeight: fontMeta.fontWeight,
|
|
47
|
+
mimeType: "font/woff2",
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return fontMap;
|
|
51
|
+
}
|
|
52
|
+
function createGeneratedFontListContent(fontMap, fontTypeImportPath) {
|
|
53
|
+
return `import type { FontType } from "${fontTypeImportPath}"
|
|
54
|
+
|
|
55
|
+
// Auto-generated, manual changes will be lost, generated by optimizeAssets from @adaptive-ds/assets-optimizer
|
|
56
|
+
export const fontList = ${JSON.stringify(fontMap, null, 2)} as const satisfies Record<string, FontType>
|
|
57
|
+
`;
|
|
58
|
+
}
|
|
@@ -2,20 +2,27 @@ import type { AssetsOptimizeOptions } from "../AssetsOptimizeOptions.js";
|
|
|
2
2
|
export interface ProcessAssetsOptions extends AssetsOptimizeOptions {
|
|
3
3
|
sourceImagesRemotePath: string;
|
|
4
4
|
sourceVideosRemotePath: string;
|
|
5
|
+
sourceFontsRemotePath: string;
|
|
5
6
|
destImagesRemotePath: string;
|
|
6
7
|
destVideosRemotePath: string;
|
|
8
|
+
destFontsRemotePath: string;
|
|
7
9
|
cwd?: string;
|
|
8
10
|
resync?: boolean;
|
|
9
11
|
processImages?: boolean;
|
|
10
12
|
processVideos?: boolean;
|
|
13
|
+
processFonts?: boolean;
|
|
11
14
|
imageOriginalsDir?: string;
|
|
12
15
|
imageOptimizedDir?: string;
|
|
13
16
|
videoOriginalsDir?: string;
|
|
14
17
|
videoOptimizedDir?: string;
|
|
18
|
+
fontOriginalsDir?: string;
|
|
19
|
+
fontOptimizedDir?: string;
|
|
15
20
|
imageListOutputPath?: string;
|
|
16
21
|
videoListOutputPath?: string;
|
|
22
|
+
fontListOutputPath?: string;
|
|
17
23
|
assetsOptimizeLocallyFn?: () => Promise<void>;
|
|
18
24
|
imageCacheControl?: string;
|
|
19
25
|
videoCacheControl?: string;
|
|
26
|
+
fontCacheControl?: string;
|
|
20
27
|
}
|
|
21
28
|
//# sourceMappingURL=ProcessAssetsOptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProcessAssetsOptions.d.ts","sourceRoot":"","sources":["../../src/process/ProcessAssetsOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAExE,MAAM,WAAW,oBAAqB,SAAQ,qBAAqB;IACjE,sBAAsB,EAAE,MAAM,CAAA;IAC9B,sBAAsB,EAAE,MAAM,CAAA;IAC9B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,uBAAuB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"ProcessAssetsOptions.d.ts","sourceRoot":"","sources":["../../src/process/ProcessAssetsOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAExE,MAAM,WAAW,oBAAqB,SAAQ,qBAAqB;IACjE,sBAAsB,EAAE,MAAM,CAAA;IAC9B,sBAAsB,EAAE,MAAM,CAAA;IAC9B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,mBAAmB,EAAE,MAAM,CAAA;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,uBAAuB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processAssets.d.ts","sourceRoot":"","sources":["../../src/process/processAssets.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAGrE,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"processAssets.d.ts","sourceRoot":"","sources":["../../src/process/processAssets.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAGrE,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwGhF"}
|
|
@@ -3,19 +3,22 @@ import { bisync } from "../rclone/bisync.js";
|
|
|
3
3
|
import { runRclone } from "../rclone/runRclone.js";
|
|
4
4
|
import { shouldBisync } from "./utils/shouldBisync.js";
|
|
5
5
|
export async function processAssets(options) {
|
|
6
|
-
const { sourceImagesRemotePath, sourceVideosRemotePath, destImagesRemotePath, destVideosRemotePath, cwd = process.cwd(), resync = false, processImages = true, processVideos = true, imageOriginalsDir = "./images", imageOptimizedDir = "./public/images", videoOriginalsDir = "./videos", videoOptimizedDir = "./public/videos", imageListOutputPath = "./src/app/assets/imageList.ts", videoListOutputPath = "./src/app/assets/videoList.ts", assetsOptimizeLocallyFn, imageCacheControl = "Cache-Control:public, max-age=31536000, immutable", videoCacheControl = "Cache-Control:public, max-age=259200, immutable", logLevel, ...assetsOptimizeOptions } = options;
|
|
7
|
-
if (!processImages && !processVideos) {
|
|
6
|
+
const { sourceImagesRemotePath, sourceVideosRemotePath, sourceFontsRemotePath, destImagesRemotePath, destVideosRemotePath, destFontsRemotePath, cwd = process.cwd(), resync = false, processImages = true, processVideos = true, processFonts = true, imageOriginalsDir = "./images", imageOptimizedDir = "./public/images", videoOriginalsDir = "./videos", videoOptimizedDir = "./public/videos", fontOriginalsDir = "./fonts", fontOptimizedDir = "./public/fonts", imageListOutputPath = "./src/app/assets/imageList.ts", videoListOutputPath = "./src/app/assets/videoList.ts", fontListOutputPath = "./src/app/assets/fontList.ts", assetsOptimizeLocallyFn, imageCacheControl = "Cache-Control:public, max-age=31536000, immutable", videoCacheControl = "Cache-Control:public, max-age=259200, immutable", fontCacheControl = "Cache-Control:public, max-age=31536000, immutable", logLevel, ...assetsOptimizeOptions } = options;
|
|
7
|
+
if (!processImages && !processVideos && !processFonts) {
|
|
8
8
|
if ((logLevel ?? 3) >= 2)
|
|
9
|
-
console.log("Nothing to process (
|
|
9
|
+
console.log("Nothing to process (images, videos, and fonts disabled)");
|
|
10
10
|
return;
|
|
11
11
|
}
|
|
12
12
|
const sourceImages = sourceImagesRemotePath;
|
|
13
13
|
const sourceVideos = sourceVideosRemotePath;
|
|
14
|
+
const sourceFonts = sourceFontsRemotePath;
|
|
14
15
|
const destImages = destImagesRemotePath;
|
|
15
16
|
const destVideos = destVideosRemotePath;
|
|
17
|
+
const destFonts = destFontsRemotePath;
|
|
16
18
|
const syncImages = processImages ? await shouldBisync(imageOriginalsDir, sourceImages) : false;
|
|
17
19
|
const syncVideos = processVideos ? await shouldBisync(videoOriginalsDir, sourceVideos) : false;
|
|
18
|
-
|
|
20
|
+
const syncFonts = processFonts ? await shouldBisync(fontOriginalsDir, sourceFonts) : false;
|
|
21
|
+
if (!syncImages && !syncVideos && !syncFonts) {
|
|
19
22
|
if ((logLevel ?? 3) >= 2)
|
|
20
23
|
console.log("No sync needed (local and remote both empty)");
|
|
21
24
|
return;
|
|
@@ -30,6 +33,11 @@ export async function processAssets(options) {
|
|
|
30
33
|
console.log(`Syncing videos: ${videoOriginalsDir} <-> ${sourceVideos}`);
|
|
31
34
|
await bisync(videoOriginalsDir, sourceVideos, { cwd, resync });
|
|
32
35
|
}
|
|
36
|
+
if (syncFonts) {
|
|
37
|
+
if ((logLevel ?? 3) >= 2)
|
|
38
|
+
console.log(`Syncing fonts: ${fontOriginalsDir} <-> ${sourceFonts}`);
|
|
39
|
+
await bisync(fontOriginalsDir, sourceFonts, { cwd, resync });
|
|
40
|
+
}
|
|
33
41
|
if (assetsOptimizeLocallyFn) {
|
|
34
42
|
if ((logLevel ?? 3) >= 2)
|
|
35
43
|
console.log("Running custom assetsOptimizeLocallyFn");
|
|
@@ -43,12 +51,16 @@ export async function processAssets(options) {
|
|
|
43
51
|
logLevel: logLevel ?? 3,
|
|
44
52
|
processImages,
|
|
45
53
|
processVideos,
|
|
54
|
+
processFonts,
|
|
46
55
|
imageOriginalsDir,
|
|
47
56
|
imageOptimizedDir,
|
|
48
57
|
imageListOutputPath,
|
|
49
58
|
videoOriginalsDir,
|
|
50
59
|
videoOptimizedDir,
|
|
51
60
|
videoListOutputPath,
|
|
61
|
+
fontOriginalsDir,
|
|
62
|
+
fontOptimizedDir,
|
|
63
|
+
fontListOutputPath,
|
|
52
64
|
...assetsOptimizeOptions,
|
|
53
65
|
});
|
|
54
66
|
}
|
|
@@ -62,4 +74,9 @@ export async function processAssets(options) {
|
|
|
62
74
|
console.log(`Uploading optimized videos: ${videoOptimizedDir} -> ${destVideos}`);
|
|
63
75
|
await runRclone(["sync", videoOptimizedDir, destVideos, "--header-upload", videoCacheControl], cwd);
|
|
64
76
|
}
|
|
77
|
+
if (syncFonts) {
|
|
78
|
+
if ((logLevel ?? 3) >= 2)
|
|
79
|
+
console.log(`Uploading optimized fonts: ${fontOptimizedDir} -> ${destFonts}`);
|
|
80
|
+
await runRclone(["sync", fontOptimizedDir, destFonts, "--header-upload", fontCacheControl], cwd);
|
|
81
|
+
}
|
|
65
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printSummary.d.ts","sourceRoot":"","sources":["../../src/shared/printSummary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,wBAAgB,YAAY,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"printSummary.d.ts","sourceRoot":"","sources":["../../src/shared/printSummary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,wBAAgB,YAAY,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAmC/E"}
|
|
@@ -3,6 +3,8 @@ export function printSummary(result, logger) {
|
|
|
3
3
|
logger.summary(`Skipped ${result.skippedExisting.length} existing optimized images`);
|
|
4
4
|
logger.summary(`Skipped ${result.skippedRootFiles.length} root original files`);
|
|
5
5
|
logger.summary(`Deleted ${result.deletedLocal.length} stale local optimized images`);
|
|
6
|
+
logger.summary(`Processed ${result.processedFonts.length} new optimized fonts`);
|
|
7
|
+
logger.summary(`Skipped ${result.skippedExistingFonts.length} existing optimized fonts`);
|
|
6
8
|
logger.summary(`Processed ${result.processedVideos.length} new optimized videos`);
|
|
7
9
|
logger.summary(`Skipped ${result.skippedExistingVideos.length} existing processed videos`);
|
|
8
10
|
logger.summary(`Generated ${result.processedVideoPreviews.length} new video previews`);
|
|
@@ -13,6 +15,9 @@ export function printSummary(result, logger) {
|
|
|
13
15
|
for (const fileName of result.deletedLocal) {
|
|
14
16
|
logger.files(`deleted local image: ${fileName}`);
|
|
15
17
|
}
|
|
18
|
+
for (const fileName of result.processedFonts) {
|
|
19
|
+
logger.files(`processed font: ${fileName}`);
|
|
20
|
+
}
|
|
16
21
|
for (const fileName of result.processedVideos) {
|
|
17
22
|
logger.files(`processed video: ${fileName}`);
|
|
18
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimizeVideos.d.ts","sourceRoot":"","sources":["../../src/video/optimizeVideos.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAEtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAyEvE,wBAAsB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"optimizeVideos.d.ts","sourceRoot":"","sources":["../../src/video/optimizeVideos.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAEtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAyEvE,wBAAsB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAiCvG"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adaptive-ds/assets-optimizer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"image-size": "^2.0.2",
|
|
7
|
-
"sharp": "^0.34.5"
|
|
7
|
+
"sharp": "^0.34.5",
|
|
8
|
+
"ttf2woff2": "^8.0.1"
|
|
8
9
|
},
|
|
9
10
|
"devDependencies": {
|
|
10
11
|
"@biomejs/biome": "^2.4.11",
|