mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-26 10:08:06 +02:00
Enable auto-formatting of the entire code-base using Prettier (issue 11444)
Note that Prettier, purposely, has only limited [configuration options](https://prettier.io/docs/en/options.html). The configuration file is based on [the one in `mozilla central`](https://searchfox.org/mozilla-central/source/.prettierrc) with just a few additions (to avoid future breakage if the defaults ever changes). Prettier is being used for a couple of reasons: - To be consistent with `mozilla-central`, where Prettier is already in use across the tree. - To ensure a *consistent* coding style everywhere, which is automatically enforced during linting (since Prettier is used as an ESLint plugin). This thus ends "all" formatting disussions once and for all, removing the need for review comments on most stylistic matters. Many ESLint options are now redundant, and I've tried my best to remove all the now unnecessary options (but I may have missed some). Note also that since Prettier considers the `printWidth` option as a guide, rather than a hard rule, this patch resorts to a small hack in the ESLint config to ensure that *comments* won't become too long. *Please note:* This patch is generated automatically, by appending the `--fix` argument to the ESLint call used in the `gulp lint` task. It will thus require some additional clean-up, which will be done in a *separate* commit. (On a more personal note, I'll readily admit that some of the changes Prettier makes are *extremely* ugly. However, in the name of consistency we'll probably have to live with that.)
This commit is contained in:
parent
8ec1dfde49
commit
de36b2aaba
205 changed files with 40024 additions and 31859 deletions
|
@ -15,13 +15,16 @@
|
|||
/* eslint no-var: error */
|
||||
|
||||
import {
|
||||
DOMCanvasFactory, DOMSVGFactory, getFilenameFromUrl, isValidFetchUrl,
|
||||
PDFDateString
|
||||
} from '../../src/display/display_utils';
|
||||
import { isNodeJS } from '../../src/shared/is_node';
|
||||
DOMCanvasFactory,
|
||||
DOMSVGFactory,
|
||||
getFilenameFromUrl,
|
||||
isValidFetchUrl,
|
||||
PDFDateString,
|
||||
} from "../../src/display/display_utils";
|
||||
import { isNodeJS } from "../../src/shared/is_node";
|
||||
|
||||
describe('display_utils', function() {
|
||||
describe('DOMCanvasFactory', function() {
|
||||
describe("display_utils", function() {
|
||||
describe("DOMCanvasFactory", function() {
|
||||
let canvasFactory;
|
||||
|
||||
beforeAll(function(done) {
|
||||
|
@ -33,92 +36,88 @@ describe('display_utils', function() {
|
|||
canvasFactory = null;
|
||||
});
|
||||
|
||||
it('`create` should throw an error if the dimensions are invalid',
|
||||
function() {
|
||||
it("`create` should throw an error if the dimensions are invalid", function() {
|
||||
// Invalid width.
|
||||
expect(function() {
|
||||
return canvasFactory.create(-1, 1);
|
||||
}).toThrow(new Error('Invalid canvas size'));
|
||||
}).toThrow(new Error("Invalid canvas size"));
|
||||
|
||||
// Invalid height.
|
||||
expect(function() {
|
||||
return canvasFactory.create(1, -1);
|
||||
}).toThrow(new Error('Invalid canvas size'));
|
||||
}).toThrow(new Error("Invalid canvas size"));
|
||||
});
|
||||
|
||||
it('`create` should return a canvas if the dimensions are valid',
|
||||
function() {
|
||||
it("`create` should return a canvas if the dimensions are valid", function() {
|
||||
if (isNodeJS) {
|
||||
pending('Document is not supported in Node.js.');
|
||||
pending("Document is not supported in Node.js.");
|
||||
}
|
||||
|
||||
const { canvas, context, } = canvasFactory.create(20, 40);
|
||||
const { canvas, context } = canvasFactory.create(20, 40);
|
||||
expect(canvas instanceof HTMLCanvasElement).toBe(true);
|
||||
expect(context instanceof CanvasRenderingContext2D).toBe(true);
|
||||
expect(canvas.width).toBe(20);
|
||||
expect(canvas.height).toBe(40);
|
||||
});
|
||||
|
||||
it('`reset` should throw an error if no canvas is provided', function() {
|
||||
const canvasAndContext = { canvas: null, context: null, };
|
||||
it("`reset` should throw an error if no canvas is provided", function() {
|
||||
const canvasAndContext = { canvas: null, context: null };
|
||||
|
||||
expect(function() {
|
||||
return canvasFactory.reset(canvasAndContext, 20, 40);
|
||||
}).toThrow(new Error('Canvas is not specified'));
|
||||
}).toThrow(new Error("Canvas is not specified"));
|
||||
});
|
||||
|
||||
it('`reset` should throw an error if the dimensions are invalid',
|
||||
function() {
|
||||
const canvasAndContext = { canvas: 'foo', context: 'bar', };
|
||||
it("`reset` should throw an error if the dimensions are invalid", function() {
|
||||
const canvasAndContext = { canvas: "foo", context: "bar" };
|
||||
|
||||
// Invalid width.
|
||||
expect(function() {
|
||||
return canvasFactory.reset(canvasAndContext, -1, 1);
|
||||
}).toThrow(new Error('Invalid canvas size'));
|
||||
}).toThrow(new Error("Invalid canvas size"));
|
||||
|
||||
// Invalid height.
|
||||
expect(function() {
|
||||
return canvasFactory.reset(canvasAndContext, 1, -1);
|
||||
}).toThrow(new Error('Invalid canvas size'));
|
||||
}).toThrow(new Error("Invalid canvas size"));
|
||||
});
|
||||
|
||||
it('`reset` should alter the canvas/context if the dimensions are valid',
|
||||
function() {
|
||||
it("`reset` should alter the canvas/context if the dimensions are valid", function() {
|
||||
if (isNodeJS) {
|
||||
pending('Document is not supported in Node.js.');
|
||||
pending("Document is not supported in Node.js.");
|
||||
}
|
||||
|
||||
const canvasAndContext = canvasFactory.create(20, 40);
|
||||
canvasFactory.reset(canvasAndContext, 60, 80);
|
||||
|
||||
const { canvas, context, } = canvasAndContext;
|
||||
const { canvas, context } = canvasAndContext;
|
||||
expect(canvas instanceof HTMLCanvasElement).toBe(true);
|
||||
expect(context instanceof CanvasRenderingContext2D).toBe(true);
|
||||
expect(canvas.width).toBe(60);
|
||||
expect(canvas.height).toBe(80);
|
||||
});
|
||||
|
||||
it('`destroy` should throw an error if no canvas is provided', function() {
|
||||
it("`destroy` should throw an error if no canvas is provided", function() {
|
||||
expect(function() {
|
||||
return canvasFactory.destroy({});
|
||||
}).toThrow(new Error('Canvas is not specified'));
|
||||
}).toThrow(new Error("Canvas is not specified"));
|
||||
});
|
||||
|
||||
it('`destroy` should clear the canvas/context', function() {
|
||||
it("`destroy` should clear the canvas/context", function() {
|
||||
if (isNodeJS) {
|
||||
pending('Document is not supported in Node.js.');
|
||||
pending("Document is not supported in Node.js.");
|
||||
}
|
||||
|
||||
const canvasAndContext = canvasFactory.create(20, 40);
|
||||
canvasFactory.destroy(canvasAndContext);
|
||||
|
||||
const { canvas, context, } = canvasAndContext;
|
||||
const { canvas, context } = canvasAndContext;
|
||||
expect(canvas).toBe(null);
|
||||
expect(context).toBe(null);
|
||||
});
|
||||
});
|
||||
|
||||
describe('DOMSVGFactory', function() {
|
||||
describe("DOMSVGFactory", function() {
|
||||
let svgFactory;
|
||||
|
||||
beforeAll(function(done) {
|
||||
|
@ -130,150 +129,146 @@ describe('display_utils', function() {
|
|||
svgFactory = null;
|
||||
});
|
||||
|
||||
it('`create` should throw an error if the dimensions are invalid',
|
||||
function() {
|
||||
it("`create` should throw an error if the dimensions are invalid", function() {
|
||||
// Invalid width.
|
||||
expect(function() {
|
||||
return svgFactory.create(-1, 0);
|
||||
}).toThrow(new Error('Invalid SVG dimensions'));
|
||||
}).toThrow(new Error("Invalid SVG dimensions"));
|
||||
|
||||
// Invalid height.
|
||||
expect(function() {
|
||||
return svgFactory.create(0, -1);
|
||||
}).toThrow(new Error('Invalid SVG dimensions'));
|
||||
}).toThrow(new Error("Invalid SVG dimensions"));
|
||||
});
|
||||
|
||||
it('`create` should return an SVG element if the dimensions are valid',
|
||||
function() {
|
||||
it("`create` should return an SVG element if the dimensions are valid", function() {
|
||||
if (isNodeJS) {
|
||||
pending('Document is not supported in Node.js.');
|
||||
pending("Document is not supported in Node.js.");
|
||||
}
|
||||
|
||||
const svg = svgFactory.create(20, 40);
|
||||
expect(svg instanceof SVGSVGElement).toBe(true);
|
||||
expect(svg.getAttribute('version')).toBe('1.1');
|
||||
expect(svg.getAttribute('width')).toBe('20px');
|
||||
expect(svg.getAttribute('height')).toBe('40px');
|
||||
expect(svg.getAttribute('preserveAspectRatio')).toBe('none');
|
||||
expect(svg.getAttribute('viewBox')).toBe('0 0 20 40');
|
||||
expect(svg.getAttribute("version")).toBe("1.1");
|
||||
expect(svg.getAttribute("width")).toBe("20px");
|
||||
expect(svg.getAttribute("height")).toBe("40px");
|
||||
expect(svg.getAttribute("preserveAspectRatio")).toBe("none");
|
||||
expect(svg.getAttribute("viewBox")).toBe("0 0 20 40");
|
||||
});
|
||||
|
||||
it('`createElement` should throw an error if the type is not a string',
|
||||
function() {
|
||||
it("`createElement` should throw an error if the type is not a string", function() {
|
||||
expect(function() {
|
||||
return svgFactory.createElement(true);
|
||||
}).toThrow(new Error('Invalid SVG element type'));
|
||||
}).toThrow(new Error("Invalid SVG element type"));
|
||||
});
|
||||
|
||||
it('`createElement` should return an SVG element if the type is valid',
|
||||
function() {
|
||||
it("`createElement` should return an SVG element if the type is valid", function() {
|
||||
if (isNodeJS) {
|
||||
pending('Document is not supported in Node.js.');
|
||||
pending("Document is not supported in Node.js.");
|
||||
}
|
||||
|
||||
const svg = svgFactory.createElement('svg:rect');
|
||||
const svg = svgFactory.createElement("svg:rect");
|
||||
expect(svg instanceof SVGRectElement).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getFilenameFromUrl', function() {
|
||||
it('should get the filename from an absolute URL', function() {
|
||||
const url = 'https://server.org/filename.pdf';
|
||||
expect(getFilenameFromUrl(url)).toEqual('filename.pdf');
|
||||
describe("getFilenameFromUrl", function() {
|
||||
it("should get the filename from an absolute URL", function() {
|
||||
const url = "https://server.org/filename.pdf";
|
||||
expect(getFilenameFromUrl(url)).toEqual("filename.pdf");
|
||||
});
|
||||
|
||||
it('should get the filename from a relative URL', function() {
|
||||
const url = '../../filename.pdf';
|
||||
expect(getFilenameFromUrl(url)).toEqual('filename.pdf');
|
||||
it("should get the filename from a relative URL", function() {
|
||||
const url = "../../filename.pdf";
|
||||
expect(getFilenameFromUrl(url)).toEqual("filename.pdf");
|
||||
});
|
||||
|
||||
it('should get the filename from a URL with an anchor', function() {
|
||||
const url = 'https://server.org/filename.pdf#foo';
|
||||
expect(getFilenameFromUrl(url)).toEqual('filename.pdf');
|
||||
it("should get the filename from a URL with an anchor", function() {
|
||||
const url = "https://server.org/filename.pdf#foo";
|
||||
expect(getFilenameFromUrl(url)).toEqual("filename.pdf");
|
||||
});
|
||||
|
||||
it('should get the filename from a URL with query parameters', function() {
|
||||
const url = 'https://server.org/filename.pdf?foo=bar';
|
||||
expect(getFilenameFromUrl(url)).toEqual('filename.pdf');
|
||||
it("should get the filename from a URL with query parameters", function() {
|
||||
const url = "https://server.org/filename.pdf?foo=bar";
|
||||
expect(getFilenameFromUrl(url)).toEqual("filename.pdf");
|
||||
});
|
||||
});
|
||||
|
||||
describe('isValidFetchUrl', function() {
|
||||
it('handles invalid Fetch URLs', function() {
|
||||
describe("isValidFetchUrl", function() {
|
||||
it("handles invalid Fetch URLs", function() {
|
||||
expect(isValidFetchUrl(null)).toEqual(false);
|
||||
expect(isValidFetchUrl(100)).toEqual(false);
|
||||
expect(isValidFetchUrl('foo')).toEqual(false);
|
||||
expect(isValidFetchUrl('/foo', 100)).toEqual(false);
|
||||
expect(isValidFetchUrl("foo")).toEqual(false);
|
||||
expect(isValidFetchUrl("/foo", 100)).toEqual(false);
|
||||
});
|
||||
|
||||
it('handles relative Fetch URLs', function() {
|
||||
expect(isValidFetchUrl('/foo', 'file://www.example.com')).toEqual(false);
|
||||
expect(isValidFetchUrl('/foo', 'http://www.example.com')).toEqual(true);
|
||||
it("handles relative Fetch URLs", function() {
|
||||
expect(isValidFetchUrl("/foo", "file://www.example.com")).toEqual(false);
|
||||
expect(isValidFetchUrl("/foo", "http://www.example.com")).toEqual(true);
|
||||
});
|
||||
|
||||
it('handles unsupported Fetch protocols', function() {
|
||||
expect(isValidFetchUrl('file://www.example.com')).toEqual(false);
|
||||
expect(isValidFetchUrl('ftp://www.example.com')).toEqual(false);
|
||||
it("handles unsupported Fetch protocols", function() {
|
||||
expect(isValidFetchUrl("file://www.example.com")).toEqual(false);
|
||||
expect(isValidFetchUrl("ftp://www.example.com")).toEqual(false);
|
||||
});
|
||||
|
||||
it('handles supported Fetch protocols', function() {
|
||||
expect(isValidFetchUrl('http://www.example.com')).toEqual(true);
|
||||
expect(isValidFetchUrl('https://www.example.com')).toEqual(true);
|
||||
it("handles supported Fetch protocols", function() {
|
||||
expect(isValidFetchUrl("http://www.example.com")).toEqual(true);
|
||||
expect(isValidFetchUrl("https://www.example.com")).toEqual(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe('PDFDateString', function() {
|
||||
describe('toDateObject', function() {
|
||||
it('converts PDF date strings to JavaScript `Date` objects', function() {
|
||||
describe("PDFDateString", function() {
|
||||
describe("toDateObject", function() {
|
||||
it("converts PDF date strings to JavaScript `Date` objects", function() {
|
||||
const expectations = {
|
||||
undefined: null,
|
||||
null: null,
|
||||
42: null,
|
||||
'2019': null,
|
||||
'D2019': null,
|
||||
'D:': null,
|
||||
'D:201': null,
|
||||
'D:2019': new Date(Date.UTC(2019, 0, 1, 0, 0, 0)),
|
||||
'D:20190': new Date(Date.UTC(2019, 0, 1, 0, 0, 0)),
|
||||
'D:201900': new Date(Date.UTC(2019, 0, 1, 0, 0, 0)),
|
||||
'D:201913': new Date(Date.UTC(2019, 0, 1, 0, 0, 0)),
|
||||
'D:201902': new Date(Date.UTC(2019, 1, 1, 0, 0, 0)),
|
||||
'D:2019020': new Date(Date.UTC(2019, 1, 1, 0, 0, 0)),
|
||||
'D:20190200': new Date(Date.UTC(2019, 1, 1, 0, 0, 0)),
|
||||
'D:20190232': new Date(Date.UTC(2019, 1, 1, 0, 0, 0)),
|
||||
'D:20190203': new Date(Date.UTC(2019, 1, 3, 0, 0, 0)),
|
||||
"2019": null,
|
||||
D2019: null,
|
||||
"D:": null,
|
||||
"D:201": null,
|
||||
"D:2019": new Date(Date.UTC(2019, 0, 1, 0, 0, 0)),
|
||||
"D:20190": new Date(Date.UTC(2019, 0, 1, 0, 0, 0)),
|
||||
"D:201900": new Date(Date.UTC(2019, 0, 1, 0, 0, 0)),
|
||||
"D:201913": new Date(Date.UTC(2019, 0, 1, 0, 0, 0)),
|
||||
"D:201902": new Date(Date.UTC(2019, 1, 1, 0, 0, 0)),
|
||||
"D:2019020": new Date(Date.UTC(2019, 1, 1, 0, 0, 0)),
|
||||
"D:20190200": new Date(Date.UTC(2019, 1, 1, 0, 0, 0)),
|
||||
"D:20190232": new Date(Date.UTC(2019, 1, 1, 0, 0, 0)),
|
||||
"D:20190203": new Date(Date.UTC(2019, 1, 3, 0, 0, 0)),
|
||||
// Invalid dates like the 31th of April are handled by JavaScript:
|
||||
'D:20190431': new Date(Date.UTC(2019, 4, 1, 0, 0, 0)),
|
||||
'D:201902030': new Date(Date.UTC(2019, 1, 3, 0, 0, 0)),
|
||||
'D:2019020300': new Date(Date.UTC(2019, 1, 3, 0, 0, 0)),
|
||||
'D:2019020324': new Date(Date.UTC(2019, 1, 3, 0, 0, 0)),
|
||||
'D:2019020304': new Date(Date.UTC(2019, 1, 3, 4, 0, 0)),
|
||||
'D:20190203040': new Date(Date.UTC(2019, 1, 3, 4, 0, 0)),
|
||||
'D:201902030400': new Date(Date.UTC(2019, 1, 3, 4, 0, 0)),
|
||||
'D:201902030460': new Date(Date.UTC(2019, 1, 3, 4, 0, 0)),
|
||||
'D:201902030405': new Date(Date.UTC(2019, 1, 3, 4, 5, 0)),
|
||||
'D:2019020304050': new Date(Date.UTC(2019, 1, 3, 4, 5, 0)),
|
||||
'D:20190203040500': new Date(Date.UTC(2019, 1, 3, 4, 5, 0)),
|
||||
'D:20190203040560': new Date(Date.UTC(2019, 1, 3, 4, 5, 0)),
|
||||
'D:20190203040506': new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
|
||||
'D:20190203040506F': new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
|
||||
'D:20190203040506Z': new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
|
||||
'D:20190203040506-': new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
|
||||
'D:20190203040506+': new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
|
||||
'D:20190203040506+\'': new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
|
||||
'D:20190203040506+0': new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
|
||||
'D:20190203040506+01': new Date(Date.UTC(2019, 1, 3, 3, 5, 6)),
|
||||
'D:20190203040506+00\'': new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
|
||||
'D:20190203040506+24\'': new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
|
||||
'D:20190203040506+01\'': new Date(Date.UTC(2019, 1, 3, 3, 5, 6)),
|
||||
'D:20190203040506+01\'0': new Date(Date.UTC(2019, 1, 3, 3, 5, 6)),
|
||||
'D:20190203040506+01\'00': new Date(Date.UTC(2019, 1, 3, 3, 5, 6)),
|
||||
'D:20190203040506+01\'60': new Date(Date.UTC(2019, 1, 3, 3, 5, 6)),
|
||||
'D:20190203040506+0102': new Date(Date.UTC(2019, 1, 3, 3, 3, 6)),
|
||||
'D:20190203040506+01\'02': new Date(Date.UTC(2019, 1, 3, 3, 3, 6)),
|
||||
'D:20190203040506+01\'02\'': new Date(Date.UTC(2019, 1, 3, 3, 3, 6)),
|
||||
"D:20190431": new Date(Date.UTC(2019, 4, 1, 0, 0, 0)),
|
||||
"D:201902030": new Date(Date.UTC(2019, 1, 3, 0, 0, 0)),
|
||||
"D:2019020300": new Date(Date.UTC(2019, 1, 3, 0, 0, 0)),
|
||||
"D:2019020324": new Date(Date.UTC(2019, 1, 3, 0, 0, 0)),
|
||||
"D:2019020304": new Date(Date.UTC(2019, 1, 3, 4, 0, 0)),
|
||||
"D:20190203040": new Date(Date.UTC(2019, 1, 3, 4, 0, 0)),
|
||||
"D:201902030400": new Date(Date.UTC(2019, 1, 3, 4, 0, 0)),
|
||||
"D:201902030460": new Date(Date.UTC(2019, 1, 3, 4, 0, 0)),
|
||||
"D:201902030405": new Date(Date.UTC(2019, 1, 3, 4, 5, 0)),
|
||||
"D:2019020304050": new Date(Date.UTC(2019, 1, 3, 4, 5, 0)),
|
||||
"D:20190203040500": new Date(Date.UTC(2019, 1, 3, 4, 5, 0)),
|
||||
"D:20190203040560": new Date(Date.UTC(2019, 1, 3, 4, 5, 0)),
|
||||
"D:20190203040506": new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
|
||||
"D:20190203040506F": new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
|
||||
"D:20190203040506Z": new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
|
||||
"D:20190203040506-": new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
|
||||
"D:20190203040506+": new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
|
||||
"D:20190203040506+'": new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
|
||||
"D:20190203040506+0": new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
|
||||
"D:20190203040506+01": new Date(Date.UTC(2019, 1, 3, 3, 5, 6)),
|
||||
"D:20190203040506+00'": new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
|
||||
"D:20190203040506+24'": new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
|
||||
"D:20190203040506+01'": new Date(Date.UTC(2019, 1, 3, 3, 5, 6)),
|
||||
"D:20190203040506+01'0": new Date(Date.UTC(2019, 1, 3, 3, 5, 6)),
|
||||
"D:20190203040506+01'00": new Date(Date.UTC(2019, 1, 3, 3, 5, 6)),
|
||||
"D:20190203040506+01'60": new Date(Date.UTC(2019, 1, 3, 3, 5, 6)),
|
||||
"D:20190203040506+0102": new Date(Date.UTC(2019, 1, 3, 3, 3, 6)),
|
||||
"D:20190203040506+01'02": new Date(Date.UTC(2019, 1, 3, 3, 3, 6)),
|
||||
"D:20190203040506+01'02'": new Date(Date.UTC(2019, 1, 3, 3, 3, 6)),
|
||||
// Offset hour and minute that result in a day change:
|
||||
'D:20190203040506+05\'07': new Date(Date.UTC(2019, 1, 2, 22, 58, 6)),
|
||||
"D:20190203040506+05'07": new Date(Date.UTC(2019, 1, 2, 22, 58, 6)),
|
||||
};
|
||||
|
||||
for (const [input, expectation] of Object.entries(expectations)) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue