@antora/content-aggregator 3.2.0-alpha.4 → 3.2.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/aggregate-content.js +81 -81
- package/lib/compute-origin.js +1 -1
- package/lib/constants.js +2 -2
- package/lib/decode-uint8-array.js +1 -1
- package/lib/git-credential-manager-store.js +3 -3
- package/lib/git.js +8 -1
- package/lib/matcher.js +1 -6
- package/lib/posixify.js +1 -1
- package/lib/resolve-path-globs.js +1 -1
- package/package.json +6 -6
package/lib/aggregate-content.js
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const computeOrigin = require('./compute-origin')
|
|
4
|
-
const { createHash } = require('crypto')
|
|
4
|
+
const { createHash } = require('node:crypto')
|
|
5
5
|
const createGitHttpPlugin = require('./git-plugin-http')
|
|
6
6
|
const decodeUint8Array = require('./decode-uint8-array')
|
|
7
7
|
const deepClone = require('./deep-clone')
|
|
8
|
-
const EventEmitter = require('events')
|
|
8
|
+
const EventEmitter = require('node:events')
|
|
9
9
|
const expandPath = require('@antora/expand-path-helper')
|
|
10
10
|
const File = require('./file')
|
|
11
11
|
const filterRefs = require('./filter-refs')
|
|
12
|
-
const fs = require('fs')
|
|
12
|
+
const fs = require('node:fs')
|
|
13
13
|
const { promises: fsp } = fs
|
|
14
14
|
const getCacheDir = require('cache-directory')
|
|
15
15
|
const GitCredentialManagerStore = require('./git-credential-manager-store')
|
|
16
16
|
const git = require('./git')
|
|
17
17
|
const { NotFoundError, ObjectTypeError, UnknownTransportError, UrlParseError } = git.Errors
|
|
18
|
-
const globStream = require('glob
|
|
19
|
-
const { inspect } = require('util')
|
|
18
|
+
const { globStream } = require('fast-glob')
|
|
19
|
+
const { inspect } = require('node:util')
|
|
20
20
|
const invariably = require('./invariably')
|
|
21
21
|
const logger = require('./logger')
|
|
22
22
|
const { makeMatcherRx, versionMatcherOpts: VERSION_MATCHER_OPTS } = require('./matcher')
|
|
23
23
|
const MultiProgress = require('multi-progress') // calls require('progress') as a peer dependencies
|
|
24
|
-
const ospath = require('path')
|
|
24
|
+
const ospath = require('node:path')
|
|
25
25
|
const { posix: path } = ospath
|
|
26
26
|
const posixify = require('./posixify')
|
|
27
27
|
const removeGitSuffix = require('./remove-git-suffix')
|
|
28
28
|
const { fs: resolvePathGlobsFs, git: resolvePathGlobsGit } = require('./resolve-path-globs')
|
|
29
|
-
const { pipeline, Writable } = require('stream')
|
|
29
|
+
const { pipeline, Writable } = require('node:stream')
|
|
30
30
|
const forEach = (write) => new Writable({ objectMode: true, write })
|
|
31
31
|
const userRequire = require('@antora/user-require-helper')
|
|
32
32
|
const yaml = require('js-yaml')
|
|
@@ -102,7 +102,8 @@ function aggregateContent (playbook) {
|
|
|
102
102
|
}, new Map())
|
|
103
103
|
const progress = !quiet && createProgress(sourcesByUrl.keys(), process.stdout)
|
|
104
104
|
const refPatternCache = Object.assign(new Map(), { braces: new Map() })
|
|
105
|
-
const
|
|
105
|
+
const fetchConfig = { always: fetch, depth: Math.max(0, gitConfig.fetchDepth ?? 1) }
|
|
106
|
+
const loadOpts = { cacheDir, fetch: fetchConfig, gitPlugins, progress, startDir, refPatternCache }
|
|
106
107
|
return collectFiles(sourcesByUrl, loadOpts, concurrency).then(buildAggregate, (err) => {
|
|
107
108
|
progress && progress.terminate()
|
|
108
109
|
throw err
|
|
@@ -110,11 +111,11 @@ function aggregateContent (playbook) {
|
|
|
110
111
|
})
|
|
111
112
|
}
|
|
112
113
|
|
|
113
|
-
async function collectFiles (sourcesByUrl, loadOpts, concurrency, fetchedUrls) {
|
|
114
|
+
async function collectFiles (sourcesByUrl, loadOpts, concurrency, fetchedUrls = []) {
|
|
114
115
|
const loadTasks = [...sourcesByUrl.entries()].map(([url, sources]) => {
|
|
115
116
|
const loadOptsForUrl = Object.assign({}, loadOpts)
|
|
116
|
-
if (loadOpts.fetch && fetchedUrls
|
|
117
|
-
if (tagsSpecified(sources)) loadOptsForUrl.
|
|
117
|
+
if (loadOpts.fetch.always && fetchedUrls.length && fetchedUrls.includes(url)) loadOptsForUrl.fetch.always = false
|
|
118
|
+
if (tagsSpecified(sources)) loadOptsForUrl.fetch.tags = true
|
|
118
119
|
return loadRepository.bind(null, url, loadOptsForUrl, { url, sources })
|
|
119
120
|
})
|
|
120
121
|
return gracefulPromiseAllWithLimit(loadTasks, concurrency.fetch).then(([results, rejections]) => {
|
|
@@ -163,7 +164,7 @@ async function loadRepository (url, opts, result = {}) {
|
|
|
163
164
|
if (~url.indexOf(':') && GIT_URI_DETECTOR_RX.test(url)) {
|
|
164
165
|
let credentials, displayUrl
|
|
165
166
|
;({ displayUrl, url, credentials } = extractCredentials(url))
|
|
166
|
-
const { cacheDir, fetch,
|
|
167
|
+
const { cacheDir, fetch, gitPlugins, progress } = opts
|
|
167
168
|
dir = ospath.join(cacheDir, generateCloneFolderName(displayUrl))
|
|
168
169
|
// NOTE the presence of the url property on the repo object implies the repository is remote
|
|
169
170
|
repo = { cache, dir, fs, gitdir: dir, noCheckout: true, url }
|
|
@@ -171,9 +172,9 @@ async function loadRepository (url, opts, result = {}) {
|
|
|
171
172
|
const validStateFile = ospath.join(dir, VALID_STATE_FILENAME)
|
|
172
173
|
try {
|
|
173
174
|
await fsp.access(validStateFile)
|
|
174
|
-
if (fetch) {
|
|
175
|
+
if (fetch.always) {
|
|
175
176
|
await fsp.unlink(validStateFile)
|
|
176
|
-
const fetchOpts = buildFetchOptions(repo, progress, displayUrl, credentials, gitPlugins,
|
|
177
|
+
const fetchOpts = buildFetchOptions(repo, progress, displayUrl, credentials, gitPlugins, fetch, 'fetch')
|
|
177
178
|
await git
|
|
178
179
|
.fetch(fetchOpts)
|
|
179
180
|
.then(() => {
|
|
@@ -193,7 +194,7 @@ async function loadRepository (url, opts, result = {}) {
|
|
|
193
194
|
} catch (gitErr) {
|
|
194
195
|
await fsp['rm' in fsp ? 'rm' : 'rmdir'](dir, { recursive: true, force: true })
|
|
195
196
|
if (gitErr.rethrow) throw transformGitCloneError(gitErr, displayUrl)
|
|
196
|
-
const fetchOpts = buildFetchOptions(repo, progress, displayUrl, credentials, gitPlugins,
|
|
197
|
+
const fetchOpts = buildFetchOptions(repo, progress, displayUrl, credentials, gitPlugins, fetch, 'clone')
|
|
197
198
|
await git
|
|
198
199
|
.clone(fetchOpts)
|
|
199
200
|
.then(() => git.resolveRef(Object.assign({ ref: 'HEAD', depth: 1 }, repo)))
|
|
@@ -325,9 +326,9 @@ async function selectReferences (source, repo, remote) {
|
|
|
325
326
|
} else {
|
|
326
327
|
worktreePatterns = worktreePatterns === undefined ? [worktreeName || '.'] : []
|
|
327
328
|
}
|
|
329
|
+
let currentBranch
|
|
328
330
|
if (branchPatterns.length === 1 && (branchPatterns[0] === 'HEAD' || branchPatterns[0] === '.')) {
|
|
329
|
-
|
|
330
|
-
if (currentBranch) {
|
|
331
|
+
if ((currentBranch = await getCurrentBranchName(repo, remote).then((branch) => branch ?? false))) {
|
|
331
332
|
branchPatterns = [currentBranch]
|
|
332
333
|
} else if (isBare) {
|
|
333
334
|
return [...refs.values()]
|
|
@@ -341,9 +342,7 @@ async function selectReferences (source, repo, remote) {
|
|
|
341
342
|
let headBranchIdx
|
|
342
343
|
// NOTE we can assume at least two entries if HEAD or . are present
|
|
343
344
|
if (~(headBranchIdx = branchPatterns.indexOf('HEAD')) || ~(headBranchIdx = branchPatterns.indexOf('.'))) {
|
|
344
|
-
|
|
345
|
-
if (currentBranch) {
|
|
346
|
-
// NOTE ignore if current branch is already in list
|
|
345
|
+
if ((currentBranch = await getCurrentBranchName(repo, remote).then((branch) => branch ?? false))) {
|
|
347
346
|
if (~branchPatterns.indexOf(currentBranch)) {
|
|
348
347
|
branchPatterns.splice(headBranchIdx, 1)
|
|
349
348
|
} else {
|
|
@@ -373,7 +372,11 @@ async function selectReferences (source, repo, remote) {
|
|
|
373
372
|
}
|
|
374
373
|
// NOTE only consider local branches if repo has a worktree or there are no remote tracking branches
|
|
375
374
|
if (!isBare) {
|
|
376
|
-
const localBranches = await git.listBranches(repo)
|
|
375
|
+
const localBranches = await git.listBranches(repo).then((branches) => {
|
|
376
|
+
if (branches.length) return branches
|
|
377
|
+
if (currentBranch == null) return getCurrentBranchName(repo).then((branch) => (branch ? [branch] : []))
|
|
378
|
+
return currentBranch ? [currentBranch] : []
|
|
379
|
+
})
|
|
377
380
|
if (localBranches.length) {
|
|
378
381
|
const worktrees = await findWorktrees(repo, worktreePatterns)
|
|
379
382
|
let onMatch
|
|
@@ -406,11 +409,11 @@ async function selectReferences (source, repo, remote) {
|
|
|
406
409
|
}
|
|
407
410
|
|
|
408
411
|
/**
|
|
409
|
-
* Returns the current branch name
|
|
412
|
+
* Returns the current branch name or undefined if the HEAD is detached.
|
|
410
413
|
*/
|
|
411
414
|
function getCurrentBranchName (repo, remote) {
|
|
412
415
|
return (
|
|
413
|
-
repo.noCheckout
|
|
416
|
+
remote && repo.noCheckout
|
|
414
417
|
? git
|
|
415
418
|
.resolveRef(Object.assign({ ref: 'refs/remotes/' + remote + '/HEAD', depth: 2 }, repo))
|
|
416
419
|
.catch(() => git.resolveRef(Object.assign({ ref: 'HEAD', depth: 2 }, repo)))
|
|
@@ -458,12 +461,13 @@ function collectFilesFromStartPath (startPath, repo, authStatus, ref, originUrl,
|
|
|
458
461
|
const worktreePath = ref.head
|
|
459
462
|
const origin = computeOrigin(originUrl, authStatus, repo.gitdir, ref, startPath, worktreePath, editUrl)
|
|
460
463
|
return (worktreePath ? readFilesFromWorktree(origin) : readFilesFromGitTree(repo, ref.oid, startPath))
|
|
461
|
-
.then((files) =>
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
464
|
+
.then((files) => {
|
|
465
|
+
const batch = deepClone((origin.descriptor = loadComponentDescriptor(files, ref, version)))
|
|
466
|
+
if ('nav' in batch) batch.nav.origin = origin
|
|
467
|
+
batch.files = files.map((file) => assignFileProperties(file, origin))
|
|
468
|
+
batch.origins = [origin]
|
|
469
|
+
return batch
|
|
470
|
+
})
|
|
467
471
|
.catch((err) => {
|
|
468
472
|
const where = worktreePath || (worktreePath === false ? repo.gitdir : repo.url || repo.dir)
|
|
469
473
|
const flag = worktreePath ? ' <worktree>' : ref.remote && worktreePath === false ? ` <remotes/${ref.remote}>` : ''
|
|
@@ -488,19 +492,18 @@ function readFilesFromWorktree (origin) {
|
|
|
488
492
|
}
|
|
489
493
|
|
|
490
494
|
function srcFs (cwd, origin) {
|
|
491
|
-
return new Promise((resolve, reject,
|
|
495
|
+
return new Promise((resolve, reject, files = []) =>
|
|
492
496
|
pipeline(
|
|
493
|
-
globStream(CONTENT_SRC_GLOB, Object.assign({
|
|
494
|
-
forEach(({ path:
|
|
495
|
-
if ((
|
|
496
|
-
const
|
|
497
|
-
const relpath =
|
|
498
|
-
|
|
499
|
-
(stat) =>
|
|
500
|
-
if (stat.isDirectory()) return done() // detects directories that slipped through cache check
|
|
497
|
+
globStream(CONTENT_SRC_GLOB, Object.assign({ cwd }, CONTENT_SRC_OPTS)),
|
|
498
|
+
forEach(({ path: relpath, dirent }, _, done) => {
|
|
499
|
+
if (dirent.isDirectory()) return done()
|
|
500
|
+
const relpathPosix = relpath
|
|
501
|
+
const abspath = posixify ? ospath.join(cwd, (relpath = ospath.normalize(relpath))) : cwd + '/' + relpath
|
|
502
|
+
fsp.stat(abspath).then(
|
|
503
|
+
(stat) =>
|
|
501
504
|
fsp.readFile(abspath).then(
|
|
502
505
|
(contents) => {
|
|
503
|
-
files.push(new File({ path:
|
|
506
|
+
files.push(new File({ path: relpathPosix, contents, stat, src: { abspath } }))
|
|
504
507
|
done()
|
|
505
508
|
},
|
|
506
509
|
(readErr) => {
|
|
@@ -510,22 +513,28 @@ function srcFs (cwd, origin) {
|
|
|
510
513
|
: logger.error(logObject, readErr.message.replace(`'${abspath}'`, relpath))
|
|
511
514
|
done()
|
|
512
515
|
}
|
|
513
|
-
)
|
|
514
|
-
},
|
|
516
|
+
),
|
|
515
517
|
(statErr) => {
|
|
516
518
|
const logObject = { file: { abspath, origin } }
|
|
517
|
-
if (
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
(
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
519
|
+
if (dirent.isSymbolicLink()) {
|
|
520
|
+
fsp
|
|
521
|
+
.readlink(abspath)
|
|
522
|
+
.then(
|
|
523
|
+
(symlink) =>
|
|
524
|
+
(statErr.code === 'ELOOP' ? 'ELOOP: symbolic link cycle, ' : 'ENOENT: broken symbolic link, ') +
|
|
525
|
+
`${relpath} -> ${symlink}`,
|
|
526
|
+
() => statErr.message.replace(`'${abspath}'`, relpath)
|
|
527
|
+
)
|
|
528
|
+
.then((message) => {
|
|
529
|
+
logger.error(logObject, message)
|
|
530
|
+
done()
|
|
531
|
+
})
|
|
525
532
|
} else {
|
|
526
|
-
|
|
533
|
+
statErr.code === 'ENOENT'
|
|
534
|
+
? logger.warn(logObject, `ENOENT: file or directory disappeared, ${statErr.syscall} ${relpath}`)
|
|
535
|
+
: logger.error(logObject, statErr.message.replace(`'${abspath}'`, relpath))
|
|
536
|
+
done()
|
|
527
537
|
}
|
|
528
|
-
done()
|
|
529
538
|
}
|
|
530
539
|
)
|
|
531
540
|
}),
|
|
@@ -695,8 +704,13 @@ function filterGitEntry (entry) {
|
|
|
695
704
|
|
|
696
705
|
function gitEntryToFile (entry) {
|
|
697
706
|
return git.readBlob(entry).then(({ blob: contents }) => {
|
|
698
|
-
|
|
699
|
-
|
|
707
|
+
const stat = {
|
|
708
|
+
mode: entry.mode,
|
|
709
|
+
size: (contents = Buffer.from(contents.buffer)).byteLength,
|
|
710
|
+
isDirectory: invariably.false,
|
|
711
|
+
isFile: invariably.true,
|
|
712
|
+
isSymbolicLink: invariably.false,
|
|
713
|
+
}
|
|
700
714
|
return new File({ path: entry.path, contents, stat })
|
|
701
715
|
})
|
|
702
716
|
}
|
|
@@ -708,7 +722,7 @@ function loadComponentDescriptor (files, ref, version) {
|
|
|
708
722
|
files.splice(descriptorFileIdx, 1)
|
|
709
723
|
let data
|
|
710
724
|
try {
|
|
711
|
-
data = yaml.load(descriptorFile.contents.toString(), { schema: yaml.CORE_SCHEMA })
|
|
725
|
+
data = Object(yaml.load(descriptorFile.contents.toString(), { schema: yaml.CORE_SCHEMA }))
|
|
712
726
|
} catch (err) {
|
|
713
727
|
throw Object.assign(err, { message: `${COMPONENT_DESC_FILENAME} has invalid syntax; ${err.message}` })
|
|
714
728
|
}
|
|
@@ -764,18 +778,20 @@ function assignFileProperties (file, origin) {
|
|
|
764
778
|
return file
|
|
765
779
|
}
|
|
766
780
|
|
|
767
|
-
function buildFetchOptions (repo, progress, displayUrl, credentialsFromUrl, gitPlugins,
|
|
781
|
+
function buildFetchOptions (repo, progress, displayUrl, credentialsFromUrl, gitPlugins, fetch, operation) {
|
|
768
782
|
const { credentialManager, http, urlRouter } = gitPlugins
|
|
783
|
+
const corsProxy = false
|
|
784
|
+
const depth = fetch.depth || undefined
|
|
769
785
|
const onAuth = resolveCredentials.bind(credentialManager, new Map().set(undefined, credentialsFromUrl))
|
|
770
786
|
const onAuthFailure = onAuth
|
|
771
787
|
const onAuthSuccess = (url) => credentialManager.approved({ url })
|
|
772
|
-
const opts = Object.assign({ corsProxy
|
|
788
|
+
const opts = Object.assign({ corsProxy, depth, http, onAuth, onAuthFailure, onAuthSuccess }, repo)
|
|
773
789
|
if (urlRouter) opts.url = urlRouter.ensureGitSuffix(opts.url)
|
|
774
790
|
if (progress) opts.onProgress = createProgressListener(progress, displayUrl, operation)
|
|
775
791
|
if (operation === 'fetch') {
|
|
776
792
|
opts.prune = true
|
|
777
|
-
if (
|
|
778
|
-
} else if (!
|
|
793
|
+
if (fetch.tags) opts.tags = opts.pruneTags = true
|
|
794
|
+
} else if (!fetch.tags) {
|
|
779
795
|
opts.noTags = true
|
|
780
796
|
}
|
|
781
797
|
return opts
|
|
@@ -884,7 +900,7 @@ function identifyAuthStatus (credentialManager, credentials, url) {
|
|
|
884
900
|
* The purpose of this function is generate a safe, unique folder name for the cloned
|
|
885
901
|
* repository that gets stored in the cache directory.
|
|
886
902
|
*
|
|
887
|
-
* The generated folder name follows the pattern: <basename>-<sha1
|
|
903
|
+
* The generated folder name follows the pattern: <basename>-<sha1-of-normalized-url>.git
|
|
888
904
|
*
|
|
889
905
|
* @param {String} url - The repository URL to convert.
|
|
890
906
|
* @returns {String} The generated folder name.
|
|
@@ -928,20 +944,6 @@ function isDirectory (url) {
|
|
|
928
944
|
return fsp.stat(url).then((stat) => stat.isDirectory(), invariably.false)
|
|
929
945
|
}
|
|
930
946
|
|
|
931
|
-
function symlinkAwareStat (path_) {
|
|
932
|
-
return fsp.lstat(path_).then((lstat) => {
|
|
933
|
-
if (!lstat.isSymbolicLink()) return lstat
|
|
934
|
-
return fsp.stat(path_).catch((statErr) =>
|
|
935
|
-
fsp
|
|
936
|
-
.readlink(path_)
|
|
937
|
-
.catch(invariably.void)
|
|
938
|
-
.then((symlink) => {
|
|
939
|
-
throw Object.assign(statErr, { symlink })
|
|
940
|
-
})
|
|
941
|
-
)
|
|
942
|
-
})
|
|
943
|
-
}
|
|
944
|
-
|
|
945
947
|
function tagsSpecified (sources) {
|
|
946
948
|
return sources.some(({ tags }) => tags && (Array.isArray(tags) ? tags.length : true))
|
|
947
949
|
}
|
|
@@ -1066,7 +1068,7 @@ function findWorktrees (repo, patterns) {
|
|
|
1066
1068
|
if (!patterns.length) return new Map()
|
|
1067
1069
|
const mainWorktree =
|
|
1068
1070
|
patterns[0] === '.' && (patterns = patterns.slice(1))
|
|
1069
|
-
? getCurrentBranchName(repo).then((branch) =>
|
|
1071
|
+
? getCurrentBranchName(repo).then((branch) => branch && [branch, { head: repo.dir, name: '.' }])
|
|
1070
1072
|
: Promise.resolve()
|
|
1071
1073
|
const worktreesDir = patterns.length ? ospath.join(repo.dir, '.git', 'worktrees') : undefined
|
|
1072
1074
|
const patternCache = repo.cache[REF_PATTERN_CACHE_KEY]
|
|
@@ -1080,13 +1082,11 @@ function findWorktrees (repo, patterns) {
|
|
|
1080
1082
|
worktreeNames.map((worktreeName) => {
|
|
1081
1083
|
const gitdir = ospath.resolve(worktreesDir, worktreeName)
|
|
1082
1084
|
// NOTE branch name defaults to worktree name if HEAD is detached
|
|
1083
|
-
return
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
.then((contents) => [branch, { head: ospath.dirname(contents.trimEnd()), name: worktreeName }])
|
|
1089
|
-
)
|
|
1085
|
+
return getCurrentBranchName(Object.assign({}, repo, { gitdir })).then((branch = worktreeName) =>
|
|
1086
|
+
fsp
|
|
1087
|
+
.readFile(ospath.join(gitdir, 'gitdir'), 'utf8')
|
|
1088
|
+
.then((contents) => [branch, { head: ospath.dirname(contents.trimEnd()), name: worktreeName }])
|
|
1089
|
+
)
|
|
1090
1090
|
})
|
|
1091
1091
|
)
|
|
1092
1092
|
)
|
package/lib/compute-origin.js
CHANGED
package/lib/constants.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
module.exports = Object.freeze({
|
|
4
4
|
COMPONENT_DESC_FILENAME: 'antora.yml',
|
|
5
5
|
CONTENT_CACHE_FOLDER: 'content',
|
|
6
|
-
CONTENT_SRC_GLOB: '
|
|
7
|
-
CONTENT_SRC_OPTS: {
|
|
6
|
+
CONTENT_SRC_GLOB: '**/!(*~)',
|
|
7
|
+
CONTENT_SRC_OPTS: { dot: true, ignore: ['**/.*{,/**}'], objectMode: true, onlyFiles: false, unique: false },
|
|
8
8
|
FILE_MODES: { 100644: 0o100666 & ~process.umask(), 100755: 0o100777 & ~process.umask() },
|
|
9
9
|
GIT_CORE: 'antora',
|
|
10
10
|
GIT_OPERATION_LABEL_LENGTH: 8,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const { homedir } = require('os')
|
|
3
|
+
const { homedir } = require('node:os')
|
|
4
4
|
const expandPath = require('@antora/expand-path-helper')
|
|
5
|
-
const { promises: fsp } = require('fs')
|
|
5
|
+
const { promises: fsp } = require('node:fs')
|
|
6
6
|
const invariably = require('./invariably')
|
|
7
|
-
const ospath = require('path')
|
|
7
|
+
const ospath = require('node:path')
|
|
8
8
|
|
|
9
9
|
class GitCredentialManagerStore {
|
|
10
10
|
configure ({ config, startDir }) {
|
package/lib/git.js
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const zlib = require('node:zlib')
|
|
4
|
+
const { promisify } = require('node:util')
|
|
5
|
+
|
|
6
|
+
module.exports = ((pakoModuleId) => {
|
|
7
|
+
const git = require('isomorphic-git')
|
|
8
|
+
require(pakoModuleId).inflate = promisify(zlib.inflate)
|
|
9
|
+
return git
|
|
10
|
+
})('pako')
|
package/lib/matcher.js
CHANGED
|
@@ -16,15 +16,10 @@ const BASE_OPTS = {
|
|
|
16
16
|
strictSlashes: true,
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
function makeMatcherRx (input, opts) {
|
|
20
|
-
if (input && ~input.indexOf('{')) input = input.replace(/^([^({]+)\./, '$1(?:.)')
|
|
21
|
-
return makeRe(input, opts)
|
|
22
|
-
}
|
|
23
|
-
|
|
24
19
|
module.exports = {
|
|
25
20
|
MATCH_ALL_RX: Object.defineProperty({ test: () => true }, 'pattern', { value: '*' }),
|
|
26
21
|
expandBraces,
|
|
27
|
-
makeMatcherRx,
|
|
22
|
+
makeMatcherRx: makeRe,
|
|
28
23
|
pathMatcherOpts: Object.assign({}, BASE_OPTS, { dot: false }),
|
|
29
24
|
refMatcherOpts: (cache) =>
|
|
30
25
|
Object.assign({}, BASE_OPTS, {
|
package/lib/posixify.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const deepFlatten = require('./deep-flatten')
|
|
4
|
-
const { promises: fsp } = require('fs')
|
|
4
|
+
const { promises: fsp } = require('node:fs')
|
|
5
5
|
const git = require('./git')
|
|
6
6
|
const invariably = require('./invariably')
|
|
7
7
|
const { expandBraces, makeMatcherRx, pathMatcherOpts: MATCHER_OPTS } = require('./matcher')
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antora/content-aggregator",
|
|
3
|
-
"version": "3.2.0-alpha.
|
|
3
|
+
"version": "3.2.0-alpha.6",
|
|
4
4
|
"description": "Fetches and aggregates content from distributed sources for use in an Antora documentation pipeline.",
|
|
5
5
|
"license": "MPL-2.0",
|
|
6
6
|
"author": "OpenDevise Inc. (https://opendevise.com)",
|
|
@@ -29,23 +29,23 @@
|
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@antora/expand-path-helper": "~2.0",
|
|
32
|
-
"@antora/logger": "3.2.0-alpha.
|
|
32
|
+
"@antora/logger": "3.2.0-alpha.6",
|
|
33
33
|
"@antora/user-require-helper": "~2.0",
|
|
34
34
|
"braces": "~3.0",
|
|
35
35
|
"cache-directory": "~2.0",
|
|
36
|
-
"glob
|
|
36
|
+
"fast-glob": "~3.3",
|
|
37
37
|
"hpagent": "~1.2",
|
|
38
38
|
"isomorphic-git": "~1.25",
|
|
39
39
|
"js-yaml": "~4.1",
|
|
40
40
|
"multi-progress": "~4.0",
|
|
41
|
-
"picomatch": "~
|
|
41
|
+
"picomatch": "~4.0",
|
|
42
42
|
"progress": "~2.0",
|
|
43
43
|
"should-proxy": "~1.0",
|
|
44
44
|
"simple-get": "~4.0",
|
|
45
|
-
"vinyl": "~
|
|
45
|
+
"vinyl": "~3.0"
|
|
46
46
|
},
|
|
47
47
|
"engines": {
|
|
48
|
-
"node": ">=
|
|
48
|
+
"node": ">=18.0.0"
|
|
49
49
|
},
|
|
50
50
|
"files": [
|
|
51
51
|
"lib/"
|