- web/: Vue 3 + Vite + UnoCSS + Pinia, dark tactical theme (amber/#0d1117) - AppNav, ListingCard, SearchView with filters/sort, composables (useSnipeMode, useKonamiCode, useMotion), Pinia search store - Steal shimmer, auction countdown, Snipe Mode easter egg all native in Vue - docker/web/: nginx + multi-stage Dockerfile (node build → nginx serve) - compose.yml: api (8510) + web (8509) services - Dockerfile CMD updated to uvicorn for upcoming FastAPI layer - Clean build: 0 TS errors, 380 modules
30 lines
955 B
JavaScript
30 lines
955 B
JavaScript
const lib = require('./nopt-lib')
|
|
const defaultTypeDefs = require('./type-defs')
|
|
|
|
// This is the version of nopt's API that requires setting typeDefs and invalidHandler
|
|
// on the required `nopt` object since it is a singleton. To not do a breaking change
|
|
// an API that requires all options be passed in is located in `nopt-lib.js` and
|
|
// exported here as lib.
|
|
// TODO(breaking): make API only work in non-singleton mode
|
|
|
|
module.exports = exports = nopt
|
|
exports.clean = clean
|
|
exports.typeDefs = defaultTypeDefs
|
|
exports.lib = lib
|
|
|
|
function nopt (types, shorthands, args = process.argv, slice = 2) {
|
|
return lib.nopt(args.slice(slice), {
|
|
types: types || {},
|
|
shorthands: shorthands || {},
|
|
typeDefs: exports.typeDefs,
|
|
invalidHandler: exports.invalidHandler,
|
|
})
|
|
}
|
|
|
|
function clean (data, types, typeDefs = exports.typeDefs) {
|
|
return lib.clean(data, {
|
|
types: types || {},
|
|
typeDefs,
|
|
invalidHandler: exports.invalidHandler,
|
|
})
|
|
}
|