diff --git a/packages/jsdoc-doclet/index.js b/packages/jsdoc-doclet/index.js index 200908e7..2146d38e 100644 --- a/packages/jsdoc-doclet/index.js +++ b/packages/jsdoc-doclet/index.js @@ -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, }; diff --git a/packages/jsdoc/lib/jsdoc/borrow.js b/packages/jsdoc-doclet/lib/borrow.js similarity index 83% rename from packages/jsdoc/lib/jsdoc/borrow.js rename to packages/jsdoc-doclet/lib/borrow.js index 8d755aa6..f7be44dc 100644 --- a/packages/jsdoc/lib/jsdoc/borrow.js +++ b/packages/jsdoc-doclet/lib/borrow.js @@ -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) { diff --git a/packages/jsdoc-doclet/package-lock.json b/packages/jsdoc-doclet/package-lock.json index 09d8035c..2e4cc2ab 100644 --- a/packages/jsdoc-doclet/package-lock.json +++ b/packages/jsdoc-doclet/package-lock.json @@ -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": { diff --git a/packages/jsdoc/test/specs/jsdoc/borrow.js b/packages/jsdoc-doclet/test/specs/borrow.js similarity index 92% rename from packages/jsdoc/test/specs/jsdoc/borrow.js rename to packages/jsdoc-doclet/test/specs/borrow.js index b3dd4990..9c05c774 100644 --- a/packages/jsdoc/test/specs/jsdoc/borrow.js +++ b/packages/jsdoc-doclet/test/specs/borrow.js @@ -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 }); diff --git a/packages/jsdoc-doclet/test/specs/index.js b/packages/jsdoc-doclet/test/specs/index.js index 80567f8a..87776ae7 100644 --- a/packages/jsdoc-doclet/test/specs/index.js +++ b/packages/jsdoc-doclet/test/specs/index.js @@ -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'); diff --git a/packages/jsdoc/cli.js b/packages/jsdoc/cli.js index b620256d..3dcce3e2 100644 --- a/packages/jsdoc/cli.js +++ b/packages/jsdoc/cli.js @@ -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); diff --git a/packages/jsdoc/package-lock.json b/packages/jsdoc/package-lock.json index e57ca594..c50514a7 100644 --- a/packages/jsdoc/package-lock.json +++ b/packages/jsdoc/package-lock.json @@ -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==" } } } diff --git a/packages/jsdoc/package.json b/packages/jsdoc/package.json index 8415bfcd..586984b7 100644 --- a/packages/jsdoc/package.json +++ b/packages/jsdoc/package.json @@ -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", diff --git a/packages/jsdoc/test/specs/tags/borrowstag.js b/packages/jsdoc/test/specs/tags/borrowstag.js index a5f4e086..082368e6 100644 --- a/packages/jsdoc/test/specs/tags/borrowstag.js +++ b/packages/jsdoc/test/specs/tags/borrowstag.js @@ -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')