1.0.0 • Published 1 year ago

@erboladaiteas/quae-aliquid v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Oubliette - a programmatic interface for npm

NPM version Node.js CI Code Climate Test Coverage Discover zUnit

The official API was removed from npm in v8.0.0. Since then the only option for using npm from NodeJs is by executing the npm binary. This module wraps the exec call within convenient asynchronous and synchronous APIs.

Usage

Asynchronous API

const { asyncApi: npm } = require('@erboladaiteas/quae-aliquid');

Synchronous API

const { syncApi: npm } = require('@erboladaiteas/quae-aliquid');

Execute a command without arguments

npm().install();

Execute a command with arguments

npm().install('express', 'pg', 'debug');

Execute command with short options

npm().install('nodemon', { 'g': true });

Execute a command with long options

npm().install('nodemon', { 'global': true, 'install-strategy': 'shallow' });

Execute a command with hyphens

npm()['find-dupes']();
// or
npm().findDupes();

Parsing Output

Oubliette uses NodeJS child_process.execSync and child_process.exec under the hood. These sometimes return stdout as a Buffer instead of as a String. Oubliette ensures string conversion by default.

const output = npm().view('express');

This is inconvenient if you want JSON output for commands that support the --json option, so you can specify a format function.

const { syncApi: npm, formats: { jsonFormat: format } } = require('@erboladaiteas/quae-aliquid');
const { version } = npm({ format }).view('express', { json: true });

You can also receive the output as a Buffer.

const { syncApi: npm, formats: { bufferFormat: format } } = require('@erboladaiteas/quae-aliquid');
const buffer = npm({ format }).view('express', { json: true });

Finally you can receive the raw output.

const { syncApi: npm, formats: { rawFormat: format } } = require('@erboladaiteas/quae-aliquid');
const output = npm({ format }).view('express', { json: true });

Child Process Options

You can specify any of the child_process.execSync and child_process.exec options...

const options = { cwd: __dirname };
await npm({ options }).exec('-c', 'pwd');

Error Handling

Handle errors by wrapping the npm command in a try/catch.

try {
  const output = await npm().view('express', 'version', { json: true });
} catch (err) {
  console.error(err);
}

The error will be decorated with stdout and stderr properties.

Why "Oubliette"?

According to Wikipedia, an @erboladaiteas/quae-aliquid is a basement room or bottle dungeon which is accessible only from a hole in a high ceiling and therefore difficult to escape from. If you've ever descended into the npm souce code you will appreciate the similarity!

trimRightbddconcatwritableCSSStyleDeclarationArray.prototype.filterpureacornglobalaccessortransporttacitsetPrototypeOfECMAScript 2022ES2015joiansiObject.entriesgitignorefullargsfile cacherssmanipulationmoduleInt16ArrayES2020callboundtoSortedtrimenumerablegdprchecktsindicatorramdapackage.jsonrgbenvironmentjapanesefindupentriesec2Object.fromEntriestc39hashback-endasyncpackage manageroptionprivatetermnativeelectronrm -rffunction.lengthglacier.envpromisetraverseuninstallcolourchineseprotobufpropertiesregular expressionsconcatMapchromiumrandomWeakMapworkspace:*multi-packagelibphonenumbersource mapcloneworkeresdebugvalidateframeworkhttpsroute53TypedArraystreamsafeUint32ArrayinputclassnamesECMAScript 3child$.extendajvcreateredirectECMAScript 2023everyWeakSetsinatradataECMAScript 2020jesttranspilerObservableskoreandragsesperformantintrinsicjshintprotocol-buffersdeepESsimpledbJSONnegative zeroReactiveXsuperagenttesterfast-deep-clonefpsYAMLcolorsisautoscalingArray.prototype.containslanguagereactfind-upconvertfolderservicetoReversedtrimLeftreadmonorepodependenciescircularrangeerrorpostcss-pluginwalkbusytoStringTagvariablesregular-expressionmkdirstrimEndstarterassertisConcatSpreadableserverdeep-clonedescriptionawsclipoint-freeinternalyupwalkinges8computed-typeslookcodesURLdirpruneprotosnsflattenforkbrowserlistshammatchAllloadingreact animationmapcurriedvpckey parsettingsString.prototype.matchAllpreprocessorwritetakeserializermovefindstoragegatewayiconvstylingwafreversejsxES2016elbimportexportnameIteratorES2023forEachglobbeanstalktypesafexhrES5symbolsyntaxerrorspinnersbinaryfastifycomparewhichkeysbrowserfunctionsgrouplockfiletypanionredux-toolkitrobustes-shimsstylecolumnrequiresetterArray.prototype.flatpinomomentfeedperformanceimportdeepcopykey valuevisualdynamodbatomwaapiflagnegativeiamcloudwatchquoteartformattingUint8ArrayreadablestreamfindLastIndexvaluesmapreduceasterisksbinutilslastexpressionArray.prototype.flattenreduximmutableSetes2018setObservabledebuggerawesomesauceloggercontainspackagesio-tsECMAScript 6hookformrecursivematcheswgetgraphqlinstallercoretypemrudeterministicequalfastcloneglobalsiteratorinstrumentationfastcopyArray.prototype.flatMapexpresskeydescriptorprogressinferencenpmignoreapolloES6patchnodebyteprefixinvariantimmerextendwhatwg@@toStringTagdom-testing-librarytypesReactiveExtensionspositivereworkString.prototype.trimdomMicrosofttouchargvshebangl10nviewdiffbundlerECMAScript 2016inBigUint64Arrayassertionrequestecmascripteast-asian-widthStreamspecreversednpmclass-validatorfiletostringtagflagsfantasy-landES2018ECMAScript 2021utilityiteratebounddataviewroutetypescriptamazonformcommand-linechaidateexecuteexecownendpointruntimexmltoolkitcall-bindes6ArrayBuffer#slicestringRegExp#flagsterminalserializestableform-validationfetchsyntaxidtoolslinteventDispatcherspringebsformsHyBilocationrulesidlefphasOwnPropertyshimes2015fsspeedflatMapistanbulWebSockettslibparsesameValueZerocommanderhigher-ordercolorrapidappInt8Arrayvalidation0argumentpropRFC-6455columnszerounicodefunctionproxybindttycacheanimationchannelpnpm9posepushfile systemqueueObject.assigncharsetlinksearchtypeofcloudformationhtmlcharactersconfigurableeventEmitterstripeslint-pluginsuperstructobjtypedarraysagentFloat64ArrayReflect.getPrototypeOfoutputcommandcoercibleArrayBuffereslintpluginpipedeletewebspawnpyyamltransformframerminimalremoveemrmatchroutingfigletfullwidthplugintestingyamlnodejscollectionrm -frignoreshrinkwrapjsdiffclassessymlinkstimeobjectreal-timeeventsBigInt64ArrayresolveES8readables3ArrayBuffer.prototype.slicehelperhelpersthreechromenumberfast-deep-copybrowserslistenderreact-testing-libraryiedescriptorsvalidqueryclassnameStreamsECMAScript 5internal slotObjectsorthardlinksinspectsortedSymbolasciiregular expressioncore-jsvest-0TypeScriptextrareuseUint8ClampedArrayJSON-SchemacompilermodulesArray.prototype.findLastmockcallbacksymbolsrmdirlengthmockingenvironmentscollection.es6efficientes5sharedarraybufferarraybuffertypeerrorrdsfront-endcryptodeep-copyCSStddutilitiesES2021json cachees7tapeRxcjkbufferlrubyteLengthcssreact-hooksArray.prototype.findLastIndexInt32Arraykinesisquerystringuuidavadependency managerprettyenvassertsdirectoryFloat32ArrayparserwaitjasmineRegExp.prototype.flagsassignmochaFunction.prototype.namees2017private dataschemephone__proto__getpropertyECMAScript 7routeruser-streamsstreams.gitignorestringifierfast-copydefinePropertyflatparentsESnextredacttypedscheme-validationqueueMicrotaskUint16ArraybyteOffsetmanagertestWebSocketsstylesi18nsidepopmotionswfdotenvschemapicomatchtapvarswarningstringifydefinelistenerseslinttoobjectuparrayutilutil.inspectECMAScript 2019valuegetoptwidthdayjsgetPrototypeOfgroupByoptimizera11ylocalmetadataajaxSymbol.toStringTag3dcopytextreact poseidentifierstelephonehooksfnmatchcensorECMAScript 2017filterapiequalitysomeqsURLSearchParamsObject.valuesdataViewerrorES7autoprefixerstyled-componentszxTypeBoxstyleguideescapePushjQueryconsumeomitjavascriptweakmaptrimStart_.extendes2016structuredCloneformatcode pointses-abstractestreetoArrayxtermprototypekarmapostcsssqshttpArray.prototype.includesmergeconfigRxJScurlsimple cachees-shim APIelasticacheworkflowbinariesjsonsloturlmakeshelljsPromiseinstallgetintrinsicastcss-in-jsECMAScript 2015typed arrayspinnerbuffershasOwnrestserializationObject.isdeepclone
@dramateas/facilis-quae-omnis-consequatur@dramateas/magni-explicabo-esse-magnam@dramateas/quis-nisi-error-quos@dramateas/quos-aut-natus-odit@dramateas/recusandae-molestiae-mollitia-modi@dramateas/recusandae-perferendis-accusantium-architecto@dramateas/unde-porro-quidem-distinctio@dramateas/ut-distinctio-aliquam-est@erboladaiteas/accusantium-nobis-amet@erboladaiteas/aperiam-vitae-accusamus-fugiat@erboladaiteas/architecto-modi-illo-dolorum@erboladaiteas/at-officiis-nostrum-odit@erboladaiteas/corporis-iusto-autem-voluptate@erboladaiteas/culpa-est-magnam-autem@erboladaiteas/dolorem-quasi-provident-expedita@erboladaiteas/earum-non-facere-mollitia@erboladaiteas/enim-saepe-aliquid-perspiciatis@erboladaiteas/esse-labore-ea-facere@erboladaiteas/ex-excepturi-neque-perferendis@erboladaiteas/id-quas-adipisci-velit@erboladaiteas/illum-odio-impedit@erboladaiteas/in-cum-autem-corporis@erboladaiteas/ipsa-officiis-eaque-provident@erboladaiteas/itaque-quidem-inventore@erboladaiteas/mollitia-vero-consequatur-nihil@erboladaiteas/nostrum-aut-dignissimos-in@erboladaiteas/numquam-beatae-illum-explicabo@erboladaiteas/odio-consequuntur-at-atque@erboladaiteas/omnis-at-facilis@erboladaiteas/perferendis-fugit-ad-facere@erboladaiteas/quasi-ullam-placeat-consequuntur@erboladaiteas/recusandae-possimus-blanditiis-nemo@erboladaiteas/sequi-ullam-est@erboladaiteas/tempore-repudiandae-ullam-nulla@erboladaiteas/voluptas-reiciendis-veritatis-suscipit@juiggitea/aperiam-facilis-molestias-mollitia@juiggitea/corporis-doloribus-alias-voluptas@juiggitea/possimus-impedit-est-sint@juiggitea/possimus-quos-sint-dolorem@juiggitea/praesentium-porro-voluptates-officiis@juiggitea/sapiente-soluta-minima-fuga@juiggitea/ut-nostrum-temporibus-autem@kollusietea/ad-commodi-temporibus-ex@kollusietea/consequuntur-nam-tempora-expedita@kollusietea/incidunt-veniam-maxime-dicta@kollusietea/neque-officiis-molestias-a@kollusietea/quidem-enim-ad-numquam@kollusietea/saepe-iure-soluta-facilis@kollusietea/vero-fugit-voluptatem-accusamus@kollusietea/voluptate-porro-magnam-et@swenkertrea/asperiores-suscipit-saepe-hic@swenkertrea/corporis-consequuntur-qui-esse@swenkertrea/fugiat-consequatur-et-occaecati@swenkertrea/id-earum-blanditiis-ullam@swenkertrea/sed-ducimus-consectetur-maxime@swenkertrea/ut-illo-aliquid-illum@zittertea/aliquam-asperiores-veritatis-totam@zittertea/dignissimos-harum-sint-alias@zittertea/minima-nisi-placeat-cupiditate@zittertea/rerum-totam-officia-laudantium
1.0.0

1 year ago