Skip to content

Commit

Permalink
Merge 8550057 into 70d9fb3
Browse files Browse the repository at this point in the history
  • Loading branch information
fisker committed Jan 12, 2020
2 parents 70d9fb3 + 8550057 commit 128040f
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 88 deletions.
48 changes: 5 additions & 43 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
const modules = require('./internal/modules');
const lrCache = {}
const lazyRequire = (path, subkey) => {
const module = lrCache[path] || (lrCache[path] = require(path))
return subkey ? module[subkey] : module
}

const lazyExport = (key, path, subkey) => {
const lazyExport = (exports, key, path, subkey) => {
Object.defineProperty(exports, key, {
get: () => {
const res = lazyRequire(path, subkey)
Expand All @@ -20,45 +21,6 @@ const lazyExport = (key, path, subkey) => {
})
}

lazyExport('re', './internal/re', 're')
lazyExport('src', './internal/re', 'src')
lazyExport('tokens', './internal/re', 't')
lazyExport('SEMVER_SPEC_VERSION', './internal/constants', 'SEMVER_SPEC_VERSION')
lazyExport('SemVer', './classes/semver')
lazyExport('compareIdentifiers', './internal/identifiers', 'compareIdentifiers')
lazyExport('rcompareIdentifiers', './internal/identifiers', 'rcompareIdentifiers')
lazyExport('parse', './functions/parse')
lazyExport('valid', './functions/valid')
lazyExport('clean', './functions/clean')
lazyExport('inc', './functions/inc')
lazyExport('diff', './functions/diff')
lazyExport('major', './functions/major')
lazyExport('minor', './functions/minor')
lazyExport('patch', './functions/patch')
lazyExport('prerelease', './functions/prerelease')
lazyExport('compare', './functions/compare')
lazyExport('rcompare', './functions/rcompare')
lazyExport('compareLoose', './functions/compare-loose')
lazyExport('compareBuild', './functions/compare-build')
lazyExport('sort', './functions/sort')
lazyExport('rsort', './functions/rsort')
lazyExport('gt', './functions/gt')
lazyExport('lt', './functions/lt')
lazyExport('eq', './functions/eq')
lazyExport('neq', './functions/neq')
lazyExport('gte', './functions/gte')
lazyExport('lte', './functions/lte')
lazyExport('cmp', './functions/cmp')
lazyExport('coerce', './functions/coerce')
lazyExport('Comparator', './classes/comparator')
lazyExport('Range', './classes/range')
lazyExport('satisfies', './functions/satisfies')
lazyExport('toComparators', './ranges/to-comparators')
lazyExport('maxSatisfying', './ranges/max-satisfying')
lazyExport('minSatisfying', './ranges/min-satisfying')
lazyExport('minVersion', './ranges/min-version')
lazyExport('validRange', './ranges/valid')
lazyExport('outside', './ranges/outside')
lazyExport('gtr', './ranges/gtr')
lazyExport('ltr', './ranges/ltr')
lazyExport('intersects', './ranges/intersects')
for (const [key, path, subkey] of modules) {
lazyExport(exports, key, `./${path}`, subkey)
}
44 changes: 44 additions & 0 deletions internal/modules.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
module.exports = [
['re', 'internal/re', 're'],
['src', 'internal/re', 'src'],
['tokens', 'internal/re', 't'],
['SEMVER_SPEC_VERSION', 'internal/constants', 'SEMVER_SPEC_VERSION'],
['SemVer', 'classes/semver'],
['compareIdentifiers', 'internal/identifiers', 'compareIdentifiers'],
['rcompareIdentifiers', 'internal/identifiers', 'rcompareIdentifiers'],
['parse', 'functions/parse'],
['valid', 'functions/valid'],
['clean', 'functions/clean'],
['inc', 'functions/inc'],
['diff', 'functions/diff'],
['major', 'functions/major'],
['minor', 'functions/minor'],
['patch', 'functions/patch'],
['prerelease', 'functions/prerelease'],
['compare', 'functions/compare'],
['rcompare', 'functions/rcompare'],
['compareLoose', 'functions/compare-loose'],
['compareBuild', 'functions/compare-build'],
['sort', 'functions/sort'],
['rsort', 'functions/rsort'],
['gt', 'functions/gt'],
['lt', 'functions/lt'],
['eq', 'functions/eq'],
['neq', 'functions/neq'],
['gte', 'functions/gte'],
['lte', 'functions/lte'],
['cmp', 'functions/cmp'],
['coerce', 'functions/coerce'],
['Comparator', 'classes/comparator'],
['Range', 'classes/range'],
['satisfies', 'functions/satisfies'],
['toComparators', 'ranges/to-comparators'],
['maxSatisfying', 'ranges/max-satisfying'],
['minSatisfying', 'ranges/min-satisfying'],
['minVersion', 'ranges/min-version'],
['validRange', 'ranges/valid'],
['outside', 'ranges/outside'],
['gtr', 'ranges/gtr'],
['ltr', 'ranges/ltr'],
['intersects', 'ranges/intersects'],
]
49 changes: 4 additions & 45 deletions preload.js
Original file line number Diff line number Diff line change
@@ -1,46 +1,5 @@
// just pre-load all the stuff that index.js lazily exports
const internalRe = require('./internal/re')
module.exports = {
re: internalRe.re,
src: internalRe.src,
tokens: internalRe.t,
SEMVER_SPEC_VERSION: require('./internal/constants').SEMVER_SPEC_VERSION,
SemVer: require('./classes/semver'),
compareIdentifiers: require('./internal/identifiers').compareIdentifiers,
rcompareIdentifiers: require('./internal/identifiers').rcompareIdentifiers,
parse: require('./functions/parse'),
valid: require('./functions/valid'),
clean: require('./functions/clean'),
inc: require('./functions/inc'),
diff: require('./functions/diff'),
major: require('./functions/major'),
minor: require('./functions/minor'),
patch: require('./functions/patch'),
prerelease: require('./functions/prerelease'),
compare: require('./functions/compare'),
rcompare: require('./functions/rcompare'),
compareLoose: require('./functions/compare-loose'),
compareBuild: require('./functions/compare-build'),
sort: require('./functions/sort'),
rsort: require('./functions/rsort'),
gt: require('./functions/gt'),
lt: require('./functions/lt'),
eq: require('./functions/eq'),
neq: require('./functions/neq'),
gte: require('./functions/gte'),
lte: require('./functions/lte'),
cmp: require('./functions/cmp'),
coerce: require('./functions/coerce'),
Comparator: require('./classes/comparator'),
Range: require('./classes/range'),
satisfies: require('./functions/satisfies'),
toComparators: require('./ranges/to-comparators'),
maxSatisfying: require('./ranges/max-satisfying'),
minSatisfying: require('./ranges/min-satisfying'),
minVersion: require('./ranges/min-version'),
validRange: require('./ranges/valid'),
outside: require('./ranges/outside'),
gtr: require('./ranges/gtr'),
ltr: require('./ranges/ltr'),
intersects: require('./ranges/intersects'),
const modules = require('./internal/modules');
for (const [key, path, subkey] of modules) {
const module = require(`./${path}`)
exports[key] = subkey ? module[subkey] : module
}

0 comments on commit 128040f

Please sign in to comment.