mirror of
https://github.com/zen-browser/pdf.js.git
synced 2025-07-08 01:10:08 +02:00
Fix Viewer API definitions and include in CI
The Viewer API definitions do not compile because of missing imports and anonymous objects are typed as `Object`. These issues were not caught during CI because the test project was not compiling anything from the Viewer API. As an example of the first problem: ``` /** * @implements MyInterface */ export class MyClass { ... } ``` will generate a broken definition that doesn’t import MyInterface: ``` /** * @implements MyInterface */ export class MyClass implements MyInterface { ... } ``` This can be fixed by adding a typedef jsdoc to specify the import: ``` /** @typedef {import("./otherFile").MyInterface} MyInterface */ ``` See https://github.com/jsdoc/jsdoc/issues/1537 and https://github.com/microsoft/TypeScript/issues/22160 for more details. As an example of the second problem: ``` /** * Gets the size of the specified page, converted from PDF units to inches. * @param {Object} An Object containing the properties: {Array} `view`, * {number} `userUnit`, and {number} `rotate`. */ function getPageSizeInches({ view, userUnit, rotate }) { ... } ``` generates the broken definition: ``` function getPageSizeInches({ view, userUnit, rotate }: Object) { ... } ``` The jsdoc should specify the type of each nested property: ``` /** * Gets the size of the specified page, converted from PDF units to inches. * @param {Object} options An object containing the properties: {Array} `view`, * {number} `userUnit`, and {number} `rotate`. * @param {number[]} options.view * @param {number} options.userUnit * @param {number} options.rotate */ ```
This commit is contained in:
parent
ada283cc35
commit
c08b4ea30d
15 changed files with 47 additions and 11 deletions
|
@ -284,12 +284,23 @@ function roundToDivide(x, div) {
|
|||
return r === 0 ? x : Math.round(x - r + div);
|
||||
}
|
||||
|
||||
/**
|
||||
* @typedef {Object} GetPageSizeInchesParameters
|
||||
* @property {number[]} view
|
||||
* @property {number} userUnit
|
||||
* @property {number} rotate
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {Object} PageSize
|
||||
* @property {number} width - In inches.
|
||||
* @property {number} height - In inches.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Gets the size of the specified page, converted from PDF units to inches.
|
||||
* @param {Object} An Object containing the properties: {Array} `view`,
|
||||
* {number} `userUnit`, and {number} `rotate`.
|
||||
* @returns {Object} An Object containing the properties: {number} `width`
|
||||
* and {number} `height`, given in inches.
|
||||
* @param {GetPageSizeInchesParameters} params
|
||||
* @returns {PageSize}
|
||||
*/
|
||||
function getPageSizeInches({ view, userUnit, rotate }) {
|
||||
const [x1, y1, x2, y2] = view;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue