refactor: move borrows resolver to @jsdoc/doclet package

This commit is contained in:
Jeff Williams 2023-01-21 22:56:33 -08:00
parent 9d5dcf9f9d
commit 69d1a0ad3e
No known key found for this signature in database
9 changed files with 167 additions and 51 deletions

View File

@ -15,11 +15,13 @@
*/
const { combine: combineDoclets, Doclet } = require('./lib/doclet');
const { Package } = require('./lib/package');
const { resolveBorrows } = require('./lib/borrow');
const schema = require('./lib/schema');
module.exports = {
combineDoclets,
Doclet,
Package,
resolveBorrows,
schema,
};

View File

@ -14,8 +14,7 @@
limitations under the License.
*/
/**
* A collection of functions relating to resolving @borrows tags in JSDoc symbols.
* @module jsdoc/borrow
* Functions that resolve `@borrows` tags in JSDoc comments.
*/
const _ = require('lodash');
const { SCOPE } = require('@jsdoc/core').name;
@ -51,10 +50,10 @@ function cloneBorrowedDoclets({ borrowed, longname }, doclets) {
}
/**
Take a copy of the docs for borrowed symbols and attach them to the
docs for the borrowing symbol. This process changes the symbols involved,
moving docs from the "borrowed" array and into the general docs, then
deleting the "borrowed" array.
Take a copy of the docs for borrowed symbols and attach them to the
docs for the borrowing symbol. This process changes the symbols involved,
moving docs from the "borrowed" array and into the general docs, then
deleting the "borrowed" array.
*/
exports.resolveBorrows = (doclets) => {
for (let doclet of doclets.index.borrowed) {

View File

@ -304,9 +304,11 @@
"version": "0.1.5",
"license": "Apache-2.0",
"dependencies": {
"@jsdoc/ast": "^0.1.0",
"@jsdoc/core": "^0.4.5",
"@jsdoc/util": "^0.2.8",
"catharsis": "^0.9.0",
"common-path-prefix": "^3.0.0",
"lodash": "^4.17.21"
},
"engines": {

View File

@ -13,6 +13,6 @@
See the License for the specific language governing permissions and
limitations under the License.
*/
xdescribe('jsdoc/borrow', () => {
xdescribe('@jsdoc/doclet/lib/borrow', () => {
// TODO
});

View File

@ -44,6 +44,14 @@ describe('@jsdoc/doclet', () => {
});
});
describe('resolveBorrows', () => {
it('is lib/borrow.resolveBorrows', () => {
const { resolveBorrows } = require('../../lib/borrow');
expect(doclet.resolveBorrows).toBe(resolveBorrows);
});
});
describe('schema', () => {
it('is lib/schema', () => {
const schema = require('../../lib/schema');

View File

@ -21,13 +21,12 @@ const Engine = require('@jsdoc/cli');
const { EventBus, log } = require('@jsdoc/util');
const { Filter } = require('jsdoc/src/filter');
const fs = require('fs');
const { Package } = require('@jsdoc/doclet');
const { Package, resolveBorrows } = require('@jsdoc/doclet');
const path = require('path');
const { Scanner } = require('jsdoc/src/scanner');
const stripBom = require('strip-bom');
const stripJsonComments = require('strip-json-comments');
const { taffy } = require('@jsdoc/salty');
const Promise = require('bluebird');
/**
* Helper methods for running JSDoc on the command line.
@ -340,7 +339,6 @@ module.exports = (() => {
cli.parseFiles = () => {
// Must be imported after the config is loaded.
const augment = require('jsdoc/augment');
const borrow = require('jsdoc/borrow');
let docs;
const env = dependencies.get('env');
@ -357,7 +355,7 @@ module.exports = (() => {
log.debug('Adding inherited symbols, mixins, and interface implementations...');
augment.augmentAll(docs);
log.debug('Adding borrowed doclets...');
borrow.resolveBorrows(docs);
resolveBorrows(docs);
log.debug('Post-processing complete.');
props.parser.fireProcessingComplete(docs);

View File

@ -10,7 +10,13 @@
"license": "Apache-2.0",
"dependencies": {
"@babel/parser": "^7.20.5",
"bluebird": "^3.7.2",
"@jsdoc/ast": "^0.1.0",
"@jsdoc/cli": "^0.2.10",
"@jsdoc/core": "^0.4.5",
"@jsdoc/doclet": "^0.1.1",
"@jsdoc/salty": "^0.2.3",
"@jsdoc/tag": "^0.1.5",
"@jsdoc/util": "^0.2.8",
"catharsis": "^0.9.0",
"code-prettify": "^0.1.0",
"color-themes-for-google-code-prettify": "^2.0.4",
@ -72,10 +78,40 @@
"node": ">=6.0.0"
}
},
"node_modules/@jsdoc/ast": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/@jsdoc/ast/-/ast-0.1.0.tgz",
"integrity": "sha512-p0ZNl+D0BjR7NiTlcTYSYjSykzSofWm7AHsEHjhZBpMNwNZLqra5NJn3jKXk1Z9aYbnnTsH4TRX+BqFYmjvSYA==",
"dependencies": {
"@babel/parser": "^7.20.5",
"@jsdoc/core": "^0.4.5",
"@jsdoc/util": "^0.2.8",
"lodash": "^4.17.21"
},
"engines": {
"node": ">=v18.12.0"
}
},
"node_modules/@jsdoc/cli": {
"version": "0.2.10",
"resolved": "https://registry.npmjs.org/@jsdoc/cli/-/cli-0.2.10.tgz",
"integrity": "sha512-msC71lexr72F4AdTfZfO3hW2s2KYckIhsw40s2j+q04cAEWOewWpDJduOWj7/G9kptW7O/Sl/DC4RipRiM71+w==",
"dependencies": {
"@jsdoc/core": "^0.4.5",
"@jsdoc/util": "^0.2.8",
"lodash": "^4.17.21",
"ow": "^0.28.2",
"strip-bom": "^4.0.0",
"yargs-parser": "^21.1.1"
},
"engines": {
"node": ">=v18.12.0"
}
},
"node_modules/@jsdoc/core": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/@jsdoc/core/-/core-0.4.4.tgz",
"integrity": "sha512-Ck9GQrjcuAy4RaJSzxnJOfY8fQBKHz+r3S1QtcUywG2+CwEMuiPHn+cTbfunSiwb9Wvs5RkmV0cTCMXI789fRQ==",
"version": "0.4.5",
"resolved": "https://registry.npmjs.org/@jsdoc/core/-/core-0.4.5.tgz",
"integrity": "sha512-KjdlFg0PCbbpI5RBjWV2Qv1mTswjrNoysAgHXSbG3f49qo/wfB3WMX5iTr0ljMClTBH6xQsc2ODp4Tmokg1DUA==",
"dependencies": {
"bottlejs": "^2.0.1",
"cosmiconfig": "^7.1.0",
@ -88,14 +124,38 @@
"node": ">=v18.12.0"
}
},
"node_modules/@jsdoc/parse": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/@jsdoc/parse/-/parse-0.1.6.tgz",
"integrity": "sha512-ydFd1JeWiad26tXIFWR46jcv6RZ7ckhH9AVvJr37F3O7dGnDSCddEWg2pULKyaa1HH8NjZIHTcLsWOD6qwkqew==",
"node_modules/@jsdoc/doclet": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/@jsdoc/doclet/-/doclet-0.1.1.tgz",
"integrity": "sha512-/EZIMqlmSJpT0bXukgSN9WmPMLbmfOo4YACHRf6kyLQIx0KNzqcP9j0m314HW9reyTIFztEcNh1jWllKd14Wpw==",
"dependencies": {
"@babel/parser": "^7.20.5",
"@jsdoc/core": "^0.4.4",
"@jsdoc/util": "^0.2.7",
"@jsdoc/ast": "^0.1.0",
"@jsdoc/core": "^0.4.5",
"@jsdoc/tag": "^0.1.5",
"@jsdoc/util": "^0.2.8",
"lodash": "^4.17.21",
"strip-bom": "^4.0.0"
}
},
"node_modules/@jsdoc/salty": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.3.tgz",
"integrity": "sha512-bbtCxCkxcnWhi50I+4Lj6mdz9w3pOXOgEQrID8TCZ/DF51fW7M9GCQW2y45SpBDdHd1Eirm1X/Cf6CkAAe8HPg==",
"dependencies": {
"lodash": "^4.17.21"
},
"engines": {
"node": ">=v12.0.0"
}
},
"node_modules/@jsdoc/tag": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/@jsdoc/tag/-/tag-0.1.5.tgz",
"integrity": "sha512-epvBtr+yYMnMfhcfvU8iyNiDrYxRR1+SGUnY/sY1JIGJfRNHi3PLWG72Le2pol/c86KwJZXYU7R6vM5deBWPsQ==",
"dependencies": {
"@jsdoc/core": "^0.4.5",
"@jsdoc/util": "^0.2.8",
"catharsis": "^0.9.0",
"lodash": "^4.17.21"
},
"engines": {
@ -103,9 +163,9 @@
}
},
"node_modules/@jsdoc/util": {
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/@jsdoc/util/-/util-0.2.7.tgz",
"integrity": "sha512-PHbdRflULw07QHals3iRqex/TSSQ+Uk5u3R5P3g3FJnpmXdp3NbPqYY+IaLDX2L5btvL87TfY8u0Hq7X/RpCtA==",
"version": "0.2.8",
"resolved": "https://registry.npmjs.org/@jsdoc/util/-/util-0.2.8.tgz",
"integrity": "sha512-Uqerf+cakeAbFC5JRA087v9ul+7Tu4xzTaSO9vW6i7b0+b8z6qT1rVmX/xrAfco9uyiQDSm68xm9ovR3C0HviA==",
"dependencies": {
"klaw-sync": "^6.0.0",
"lodash": "^4.17.21",
@ -142,11 +202,6 @@
"node": ">=4"
}
},
"node_modules/bluebird": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
},
"node_modules/bottlejs": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/bottlejs/-/bottlejs-2.0.1.tgz",
@ -465,6 +520,14 @@
"engines": {
"node": ">= 6"
}
},
"node_modules/yargs-parser": {
"version": "21.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"engines": {
"node": ">=12"
}
}
},
"dependencies": {
@ -496,10 +559,34 @@
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz",
"integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA=="
},
"@jsdoc/ast": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/@jsdoc/ast/-/ast-0.1.0.tgz",
"integrity": "sha512-p0ZNl+D0BjR7NiTlcTYSYjSykzSofWm7AHsEHjhZBpMNwNZLqra5NJn3jKXk1Z9aYbnnTsH4TRX+BqFYmjvSYA==",
"requires": {
"@babel/parser": "^7.20.5",
"@jsdoc/core": "^0.4.5",
"@jsdoc/util": "^0.2.8",
"lodash": "^4.17.21"
}
},
"@jsdoc/cli": {
"version": "0.2.10",
"resolved": "https://registry.npmjs.org/@jsdoc/cli/-/cli-0.2.10.tgz",
"integrity": "sha512-msC71lexr72F4AdTfZfO3hW2s2KYckIhsw40s2j+q04cAEWOewWpDJduOWj7/G9kptW7O/Sl/DC4RipRiM71+w==",
"requires": {
"@jsdoc/core": "^0.4.5",
"@jsdoc/util": "^0.2.8",
"lodash": "^4.17.21",
"ow": "^0.28.2",
"strip-bom": "^4.0.0",
"yargs-parser": "^21.1.1"
}
},
"@jsdoc/core": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/@jsdoc/core/-/core-0.4.4.tgz",
"integrity": "sha512-Ck9GQrjcuAy4RaJSzxnJOfY8fQBKHz+r3S1QtcUywG2+CwEMuiPHn+cTbfunSiwb9Wvs5RkmV0cTCMXI789fRQ==",
"version": "0.4.5",
"resolved": "https://registry.npmjs.org/@jsdoc/core/-/core-0.4.5.tgz",
"integrity": "sha512-KjdlFg0PCbbpI5RBjWV2Qv1mTswjrNoysAgHXSbG3f49qo/wfB3WMX5iTr0ljMClTBH6xQsc2ODp4Tmokg1DUA==",
"requires": {
"bottlejs": "^2.0.1",
"cosmiconfig": "^7.1.0",
@ -509,21 +596,42 @@
"strip-json-comments": "^3.1.1"
}
},
"@jsdoc/parse": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/@jsdoc/parse/-/parse-0.1.6.tgz",
"integrity": "sha512-ydFd1JeWiad26tXIFWR46jcv6RZ7ckhH9AVvJr37F3O7dGnDSCddEWg2pULKyaa1HH8NjZIHTcLsWOD6qwkqew==",
"@jsdoc/doclet": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/@jsdoc/doclet/-/doclet-0.1.1.tgz",
"integrity": "sha512-/EZIMqlmSJpT0bXukgSN9WmPMLbmfOo4YACHRf6kyLQIx0KNzqcP9j0m314HW9reyTIFztEcNh1jWllKd14Wpw==",
"requires": {
"@babel/parser": "^7.20.5",
"@jsdoc/core": "^0.4.4",
"@jsdoc/util": "^0.2.7",
"@jsdoc/ast": "^0.1.0",
"@jsdoc/core": "^0.4.5",
"@jsdoc/tag": "^0.1.5",
"@jsdoc/util": "^0.2.8",
"lodash": "^4.17.21",
"strip-bom": "^4.0.0"
}
},
"@jsdoc/salty": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.3.tgz",
"integrity": "sha512-bbtCxCkxcnWhi50I+4Lj6mdz9w3pOXOgEQrID8TCZ/DF51fW7M9GCQW2y45SpBDdHd1Eirm1X/Cf6CkAAe8HPg==",
"requires": {
"lodash": "^4.17.21"
}
},
"@jsdoc/tag": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/@jsdoc/tag/-/tag-0.1.5.tgz",
"integrity": "sha512-epvBtr+yYMnMfhcfvU8iyNiDrYxRR1+SGUnY/sY1JIGJfRNHi3PLWG72Le2pol/c86KwJZXYU7R6vM5deBWPsQ==",
"requires": {
"@jsdoc/core": "^0.4.5",
"@jsdoc/util": "^0.2.8",
"catharsis": "^0.9.0",
"lodash": "^4.17.21"
}
},
"@jsdoc/util": {
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/@jsdoc/util/-/util-0.2.7.tgz",
"integrity": "sha512-PHbdRflULw07QHals3iRqex/TSSQ+Uk5u3R5P3g3FJnpmXdp3NbPqYY+IaLDX2L5btvL87TfY8u0Hq7X/RpCtA==",
"version": "0.2.8",
"resolved": "https://registry.npmjs.org/@jsdoc/util/-/util-0.2.8.tgz",
"integrity": "sha512-Uqerf+cakeAbFC5JRA087v9ul+7Tu4xzTaSO9vW6i7b0+b8z6qT1rVmX/xrAfco9uyiQDSm68xm9ovR3C0HviA==",
"requires": {
"klaw-sync": "^6.0.0",
"lodash": "^4.17.21",
@ -548,11 +656,6 @@
"color-convert": "^1.9.0"
}
},
"bluebird": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
},
"bottlejs": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/bottlejs/-/bottlejs-2.0.1.tgz",
@ -792,6 +895,11 @@
"version": "1.10.2",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
},
"yargs-parser": {
"version": "21.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="
}
}
}

View File

@ -22,7 +22,6 @@
"@jsdoc/salty": "^0.2.3",
"@jsdoc/tag": "^0.1.5",
"@jsdoc/util": "^0.2.8",
"bluebird": "^3.7.2",
"catharsis": "^0.9.0",
"code-prettify": "^0.1.0",
"color-themes-for-google-code-prettify": "^2.0.4",

View File

@ -28,10 +28,10 @@ describe('@borrows tag', () => {
});
it('When a symbol has a @borrows tag, the borrowed symbol is added to the symbol.', () => {
const borrow = require('jsdoc/borrow');
const { resolveBorrows } = require('@jsdoc/doclet');
const docSet = jsdoc.getDocSetFromFile('test/fixtures/borrowstag2.js');
borrow.resolveBorrows(docSet.doclets);
resolveBorrows(docSet.doclets);
const strRtrim = docSet
.getByLongname('str.rtrim')