forked from external-repos/squoosh
Compare commits
39 Commits
tiling-rus
...
v1.3.4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eaad0eaee0 | ||
|
|
db76d4417c | ||
|
|
7a6c6ec210 | ||
|
|
8e034f183b | ||
|
|
5a01b34cce | ||
|
|
1399a9bffe | ||
|
|
653c6ed85a | ||
|
|
ebbb7b58cb | ||
|
|
7164e4e315 | ||
|
|
23398d07f9 | ||
|
|
ec2bc3efa2 | ||
|
|
86d78763c1 | ||
|
|
fb5ae36d7e | ||
|
|
51f812625b | ||
|
|
479bfee647 | ||
|
|
a3501a56cd | ||
|
|
c353e286b0 | ||
|
|
8ed01e8a87 | ||
|
|
36ed21b9f4 | ||
|
|
cca41bb449 | ||
|
|
8f787ad0e6 | ||
|
|
9c1170f100 | ||
|
|
5432be4a3f | ||
|
|
7cae821db5 | ||
|
|
19ebb24f03 | ||
|
|
d07512566e | ||
|
|
61929666f3 | ||
|
|
792ffbfcd7 | ||
|
|
9685271bb4 | ||
|
|
5b1a6cc95e | ||
|
|
bf34075e6a | ||
|
|
f1859eeef2 | ||
|
|
fa12b37e53 | ||
|
|
520a5dc9f2 | ||
|
|
7af949b5a5 | ||
|
|
300612b09b | ||
|
|
6f00e9825c | ||
|
|
6ca9c5300e | ||
|
|
cdeb31051b |
@@ -22,6 +22,7 @@ function fetchTravisBuildInfo(user, repo, branch) {
|
|||||||
'branch.name': branch,
|
'branch.name': branch,
|
||||||
state: 'passed',
|
state: 'passed',
|
||||||
limit: 1,
|
limit: 1,
|
||||||
|
event_type: 'push',
|
||||||
}).then(r => r.json());
|
}).then(r => r.json());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,9 +33,7 @@ function fetchTravisText(path) {
|
|||||||
/**
|
/**
|
||||||
* Recursively-read a directory and turn it into an array of { name, size, gzipSize }
|
* Recursively-read a directory and turn it into an array of { name, size, gzipSize }
|
||||||
*/
|
*/
|
||||||
async function dirToInfoArray(startPath, {
|
async function dirToInfoArray(startPath) {
|
||||||
namePrefix = '',
|
|
||||||
} = {}) {
|
|
||||||
const results = await new Promise((resolve, reject) => {
|
const results = await new Promise((resolve, reject) => {
|
||||||
readdirp({ root: startPath }, (err, results) => {
|
readdirp({ root: startPath }, (err, results) => {
|
||||||
if (err) reject(err); else resolve(results);
|
if (err) reject(err); else resolve(results);
|
||||||
|
|||||||
959
package-lock.json
generated
959
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
22
package.json
22
package.json
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"private": true,
|
"private": true,
|
||||||
"name": "squoosh",
|
"name": "squoosh",
|
||||||
"version": "1.3.3",
|
"version": "1.3.4",
|
||||||
"license": "apache-2.0",
|
"license": "apache-2.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "webpack-dev-server --host 0.0.0.0 --hot",
|
"start": "webpack-dev-server --host 0.0.0.0 --hot",
|
||||||
@@ -16,12 +16,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "10.12.26",
|
"@types/node": "10.12.29",
|
||||||
"@types/pretty-bytes": "5.1.0",
|
"@types/pretty-bytes": "5.1.0",
|
||||||
"@types/webassembly-js-api": "0.0.2",
|
"@types/webassembly-js-api": "0.0.2",
|
||||||
"@webcomponents/custom-elements": "1.2.1",
|
"@webcomponents/custom-elements": "1.2.1",
|
||||||
"@webpack-cli/serve": "0.1.3",
|
"@webpack-cli/serve": "0.1.3",
|
||||||
"assets-webpack-plugin": "3.9.7",
|
"assets-webpack-plugin": "3.9.10",
|
||||||
"chokidar": "2.1.2",
|
"chokidar": "2.1.2",
|
||||||
"chalk": "2.4.2",
|
"chalk": "2.4.2",
|
||||||
"classnames": "2.2.6",
|
"classnames": "2.2.6",
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
"ejs": "2.6.1",
|
"ejs": "2.6.1",
|
||||||
"escape-string-regexp": "1.0.5",
|
"escape-string-regexp": "1.0.5",
|
||||||
"exports-loader": "0.7.0",
|
"exports-loader": "0.7.0",
|
||||||
"file-drop-element": "0.0.9",
|
"file-drop-element": "0.2.0",
|
||||||
"file-loader": "3.0.1",
|
"file-loader": "3.0.1",
|
||||||
"gzip-size": "5.0.0",
|
"gzip-size": "5.0.0",
|
||||||
"html-webpack-plugin": "3.2.0",
|
"html-webpack-plugin": "3.2.0",
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
"optimize-css-assets-webpack-plugin": "5.0.1",
|
"optimize-css-assets-webpack-plugin": "5.0.1",
|
||||||
"pointer-tracker": "2.0.3",
|
"pointer-tracker": "2.0.3",
|
||||||
"preact": "8.4.2",
|
"preact": "8.4.2",
|
||||||
"prerender-loader": "1.2.0",
|
"prerender-loader": "1.3.0",
|
||||||
"pretty-bytes": "5.1.0",
|
"pretty-bytes": "5.1.0",
|
||||||
"progress-bar-webpack-plugin": "1.12.1",
|
"progress-bar-webpack-plugin": "1.12.1",
|
||||||
"raw-loader": "1.0.0",
|
"raw-loader": "1.0.0",
|
||||||
@@ -57,19 +57,19 @@
|
|||||||
"script-ext-html-webpack-plugin": "2.1.3",
|
"script-ext-html-webpack-plugin": "2.1.3",
|
||||||
"source-map-loader": "0.2.4",
|
"source-map-loader": "0.2.4",
|
||||||
"style-loader": "0.23.1",
|
"style-loader": "0.23.1",
|
||||||
"terser-webpack-plugin": "1.2.2",
|
"terser-webpack-plugin": "1.2.3",
|
||||||
"ts-loader": "5.3.3",
|
"ts-loader": "5.3.3",
|
||||||
"tslint": "5.12.1",
|
"tslint": "5.13.1",
|
||||||
"tslint-config-airbnb": "5.11.1",
|
"tslint-config-airbnb": "5.11.1",
|
||||||
"tslint-config-semistandard": "7.0.0",
|
"tslint-config-semistandard": "7.0.0",
|
||||||
"tslint-react": "3.6.0",
|
"tslint-react": "3.6.0",
|
||||||
"typed-css-modules": "0.3.7",
|
"typed-css-modules": "0.4.1",
|
||||||
"typescript": "3.2.4",
|
"typescript": "3.3.3333",
|
||||||
"url-loader": "1.1.2",
|
"url-loader": "1.1.2",
|
||||||
"webpack": "4.28.0",
|
"webpack": "4.28.0",
|
||||||
"webpack-bundle-analyzer": "3.0.4",
|
"webpack-bundle-analyzer": "3.1.0",
|
||||||
"webpack-cli": "3.2.3",
|
"webpack-cli": "3.2.3",
|
||||||
"webpack-dev-server": "3.2.0",
|
"webpack-dev-server": "3.2.1",
|
||||||
"worker-plugin": "3.1.0"
|
"worker-plugin": "3.1.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,8 +5,7 @@ async function mozjpegEncode(
|
|||||||
): Promise<ArrayBuffer> {
|
): Promise<ArrayBuffer> {
|
||||||
const { encode } = await import(
|
const { encode } = await import(
|
||||||
/* webpackChunkName: "process-mozjpeg-enc" */
|
/* webpackChunkName: "process-mozjpeg-enc" */
|
||||||
'../mozjpeg/encoder',
|
'../mozjpeg/encoder');
|
||||||
);
|
|
||||||
return encode(data, options);
|
return encode(data, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -15,8 +14,7 @@ async function quantize(
|
|||||||
): Promise<ImageData> {
|
): Promise<ImageData> {
|
||||||
const { process } = await import(
|
const { process } = await import(
|
||||||
/* webpackChunkName: "process-imagequant" */
|
/* webpackChunkName: "process-imagequant" */
|
||||||
'../imagequant/processor',
|
'../imagequant/processor');
|
||||||
);
|
|
||||||
return process(data, opts);
|
return process(data, opts);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -25,8 +23,7 @@ async function rotate(
|
|||||||
): Promise<ImageData> {
|
): Promise<ImageData> {
|
||||||
const { rotate } = await import(
|
const { rotate } = await import(
|
||||||
/* webpackChunkName: "process-rotate" */
|
/* webpackChunkName: "process-rotate" */
|
||||||
'../rotate/processor',
|
'../rotate/processor');
|
||||||
);
|
|
||||||
|
|
||||||
return rotate(data, opts);
|
return rotate(data, opts);
|
||||||
}
|
}
|
||||||
@@ -36,8 +33,7 @@ async function optiPngEncode(
|
|||||||
): Promise<ArrayBuffer> {
|
): Promise<ArrayBuffer> {
|
||||||
const { compress } = await import(
|
const { compress } = await import(
|
||||||
/* webpackChunkName: "process-optipng" */
|
/* webpackChunkName: "process-optipng" */
|
||||||
'../optipng/encoder',
|
'../optipng/encoder');
|
||||||
);
|
|
||||||
return compress(data, options);
|
return compress(data, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,16 +42,14 @@ async function webpEncode(
|
|||||||
): Promise<ArrayBuffer> {
|
): Promise<ArrayBuffer> {
|
||||||
const { encode } = await import(
|
const { encode } = await import(
|
||||||
/* webpackChunkName: "process-webp-enc" */
|
/* webpackChunkName: "process-webp-enc" */
|
||||||
'../webp/encoder',
|
'../webp/encoder');
|
||||||
);
|
|
||||||
return encode(data, options);
|
return encode(data, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function webpDecode(data: ArrayBuffer): Promise<ImageData> {
|
async function webpDecode(data: ArrayBuffer): Promise<ImageData> {
|
||||||
const { decode } = await import(
|
const { decode } = await import(
|
||||||
/* webpackChunkName: "process-webp-dec" */
|
/* webpackChunkName: "process-webp-dec" */
|
||||||
'../webp/decoder',
|
'../webp/decoder');
|
||||||
);
|
|
||||||
return decode(data);
|
return decode(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,19 +1,29 @@
|
|||||||
import wasmUrl from '../../../codecs/rotate/rotate.wasm';
|
import wasmUrl from '../../../codecs/rotate/rotate.wasm';
|
||||||
import { RotateOptions, RotateModuleInstance } from './processor-meta';
|
import { RotateOptions, RotateModuleInstance } from './processor-meta';
|
||||||
|
|
||||||
const instancePromise = (WebAssembly as any).instantiateStreaming(fetch(wasmUrl));
|
// We are loading a 500B module here. Loading the code to feature-detect
|
||||||
|
// `instantiateStreaming` probably takes longer to load than the time we save by
|
||||||
|
// using `instantiateStreaming` in the first place. So let’s just use
|
||||||
|
// `ArrayBuffer`s here.
|
||||||
|
const instancePromise = fetch(wasmUrl)
|
||||||
|
.then(r => r.arrayBuffer())
|
||||||
|
.then(buf => WebAssembly.instantiate(buf));
|
||||||
|
|
||||||
export async function rotate(
|
export async function rotate(
|
||||||
data: ImageData,
|
data: ImageData,
|
||||||
opts: RotateOptions,
|
opts: RotateOptions,
|
||||||
): Promise<ImageData> {
|
): Promise<ImageData> {
|
||||||
const { instance } = (await instancePromise) as {instance: RotateModuleInstance};
|
const { instance } = (await instancePromise) as {
|
||||||
|
instance: RotateModuleInstance;
|
||||||
|
};
|
||||||
|
|
||||||
// Number of wasm memory pages (á 64KiB) needed to store the image twice.
|
// Number of wasm memory pages (á 64KiB) needed to store the image twice.
|
||||||
const bytesPerImage = data.width * data.height * 4;
|
const bytesPerImage = data.width * data.height * 4;
|
||||||
const numPagesNeeded = Math.ceil((bytesPerImage * 2 + 8) / (64 * 1024));
|
const numPagesNeeded = Math.ceil((bytesPerImage * 2 + 8) / (64 * 1024));
|
||||||
// Only count full pages, just to be safe.
|
// Only count full pages, just to be safe.
|
||||||
const numPagesAvailable = Math.floor(instance.exports.memory.buffer.byteLength / (64 * 1024));
|
const numPagesAvailable = Math.floor(
|
||||||
|
instance.exports.memory.buffer.byteLength / (64 * 1024),
|
||||||
|
);
|
||||||
const additionalPagesToAllocate = numPagesNeeded - numPagesAvailable;
|
const additionalPagesToAllocate = numPagesNeeded - numPagesAvailable;
|
||||||
|
|
||||||
if (additionalPagesToAllocate > 0) {
|
if (additionalPagesToAllocate > 0) {
|
||||||
|
|||||||
@@ -13,12 +13,10 @@ const ROUTE_EDITOR = '/editor';
|
|||||||
|
|
||||||
const compressPromise = import(
|
const compressPromise = import(
|
||||||
/* webpackChunkName: "main-app" */
|
/* webpackChunkName: "main-app" */
|
||||||
'../compress',
|
'../compress');
|
||||||
);
|
|
||||||
const offlinerPromise = import(
|
const offlinerPromise = import(
|
||||||
/* webpackChunkName: "offliner" */
|
/* webpackChunkName: "offliner" */
|
||||||
'../../lib/offliner',
|
'../../lib/offliner');
|
||||||
);
|
|
||||||
|
|
||||||
function back() {
|
function back() {
|
||||||
window.history.back();
|
window.history.back();
|
||||||
@@ -74,8 +72,9 @@ export default class App extends Component<Props, State> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@bind
|
@bind
|
||||||
private onFileDrop({ file }: FileDropEvent) {
|
private onFileDrop({ files }: FileDropEvent) {
|
||||||
if (!file) return;
|
if (!files || files.length === 0) return;
|
||||||
|
const file = files[0];
|
||||||
this.openEditor();
|
this.openEditor();
|
||||||
this.setState({ file });
|
this.setState({ file });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,7 @@ function init() {
|
|||||||
if (!('customElements' in self)) {
|
if (!('customElements' in self)) {
|
||||||
import(
|
import(
|
||||||
/* webpackChunkName: "wc-polyfill" */
|
/* webpackChunkName: "wc-polyfill" */
|
||||||
'@webcomponents/custom-elements',
|
'@webcomponents/custom-elements').then(init);
|
||||||
).then(init);
|
|
||||||
} else {
|
} else {
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user