1.0.0 • Published 1 year ago

@lambrioanpm/pariatur-natus-voluptatem v1.0.0

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

@lambrioanpm/pariatur-natus-voluptatem Version Badge

github actions coverage dependency status dev dependency status License Downloads

npm badge

ES2020 spec-compliant shim for String.prototype.matchAll. Invoke its "shim" method to shim String.prototype.matchAll if it is unavailable or noncompliant.

This package implements the es-shim API interface. It works in an ES3-supported environment, and complies with the spec.

Most common usage:

const assert = require('assert');
const matchAll = require('@lambrioanpm/pariatur-natus-voluptatem');

const str = 'aabc';
const nonRegexStr = 'ab';
const globalRegex = /[ac]/g;
const nonGlobalRegex = /[bc]/i;

// non-regex arguments are coerced into a global regex
assert.deepEqual(
	[...matchAll(str, nonRegexStr)],
	[...matchAll(str, new RegExp(nonRegexStr, 'g'))]
);

assert.deepEqual([...matchAll(str, globalRegex)], [
	Object.assign(['a'], { index: 0, input: str, groups: undefined }),
	Object.assign(['a'], { index: 1, input: str, groups: undefined }),
	Object.assign(['c'], { index: 3, input: str, groups: undefined }),
]);

assert.throws(() => matchAll(str, nonGlobalRegex)); // non-global regexes throw

matchAll.shim(); // will be a no-op if not needed

// non-regex arguments are coerced into a global regex
assert.deepEqual(
	[...str.matchAll(nonRegexStr)],
	[...str.matchAll(new RegExp(nonRegexStr, 'g'))]
);

assert.deepEqual([...str.matchAll(globalRegex)], [
	Object.assign(['a'], { index: 0, input: str, groups: undefined }),
	Object.assign(['a'], { index: 1, input: str, groups: undefined }),
	Object.assign(['c'], { index: 3, input: str, groups: undefined }),
]);

assert.throws(() => matchAll(str, nonGlobalRegex)); // non-global regexes throw

Tests

Simply clone the repo, npm install, and run npm test

nodeprefixchromiumsharedargvnodejsRxArrayBufferformatiesimpledbiterationECMAScript 2015getintrinsicboundJSONdeeprmdirrapidinprunetoolskinesispackage managerWebSocketmkdirpstablechainameworkertddyupeventEmitterfoldereast-asian-widthUnderscoreECMAScript 2017installfast-deep-copydayjsemojiwaflanguagestringifyawsflagcloudsearchstatefixed-widthmatcheschromegdprurldeepcopyimportwrapmimesuperstructclitrimRightcryptoimmerYAMLvaluesinternal slotkeysregular expressionasyncworkspace:*fastcopybootstrap cssTypeScriptbddparseObject.keysweaksetES2022styled-componentsprettyloggingsearchvalidsymbolstc39ES5filtercallboundsettingsframeworkprophaspatchstringifiernativecorsfpsnumberuninstallstatelesscloudtrailserializationtypevisualparentsreadiambufferredux-toolkitWeakSetbrowserlistoncermjavascriptES2020functionbundlingconcurrencywatchingdeep-clonecommand-linedebuggerchinesesortedcloudformationdeleteInt8Arrayvpcbuffersgetoptlooksetio-tsweakmapstreamsstoragegatewayglobObject.assignexecrm -frSymbolgetterenvECMAScript 2023immutablereact-hook-formHyBisespostcssreducerinstallerroute53authenticationECMAScript 2019ES7jss3endpointcolortsMicrosoftvariablesoptimistrequireconfigurableeslint-plugintypeerrorinternall10nguidqueueMicrotaskFloat32ArrayencryptionbrowsersliststyleArrayBuffer.prototype.slicevest0util.inspectES2017syntaxwarningespreeargparsecensorES2019performantTypedArraylazyentriesfseventsidlearrayjasmineFunction.prototype.namerandomUint8ClampedArrayconcatdataViewcryptzodjoijQueryindicatorartmergemomentECMAScript 7IteratorES2015datastructureES3openpostcss-pluginless cssecmascriptclassnamestoArraycoreformattingflatMaphelpersspinnerinferenceesInt16ArrayECMAScript 2022inspectstreams2reduxcallbackRxJSdirectoryhttpstextjestexpressionbluebirdES2021nested cssObject.istrimLeftgroupUint8Arrayrm -rflimitedtestinges5typeofECMAScript 3typedarrayswatchFilepromisessqsclass-validatorhttpcommandjwtrequestsetterclasseses-shimseslintpluginstyleguidedependencieses2015optionfull-widthcolumnnpmautoscalingcjkhasOwnProperty256widthfromreact-testing-libraryequalityfindLastIndexgetPrototypeOfwebresolveArrayprivate datalook-upttynamesargsdataviewgradients css3wordbreakvalueflattenESmatchtslibtouchjsdomisConcatSpreadablehooksxtermxhrtapemitarraysparentformselectrones8byteOffseteventDispatchermimetypesconcatMapcopycompile lessperformanceworkflowfunctionsECMAScript 2021parsingbindquotefastcloneReactiveExtensionstrimcompilerregexkarmatypesroutetapehasOwnsymboltelephonemime-dbjsonECMAScript 2016a11ydefinePropertyschemelessmixinswgeteverystylesArray.prototype.flattenestreedotenvMapString.prototype.matchAllpersistentequalthroatmkdirsratetoStringTagspeedmakeefficientsuperagentfast-cloneStyleSheetbeanstalkhas-owncreateECMAScript 2020Streamawaitconfigpredictablecheckprototypefastenvironmentconnectdescriptionmapreducestarterdom-testing-libraryauthdescriptorcircularUint32ArraystructuredCloneBigUint64ArrayprogressinputajvextendescapepasswordserializePromiselinewrapcallutilitiesthrottlewaitES2023preserve-symlinksminimalreact-hooksObject.entriesreal-timebannermoveassert$.extendRegExp.prototype.flagstypanionlistenersECMAScript 6clientjsonpathcall-boundpropertiesmake dirreplaynegativeObservablebatchdeterministicpicomatchbcryptmkdircachelrufastifywalkingdebugwordwrapcurlfile systemeventsES2018AsyncIteratormatchAllstringsequencediffArray.prototype.flatMapsetPrototypeOfstylesheetapolloastnopeObject.definePropertybundlercoercibletypedremovesliceuuidpolyfill
1.0.0

1 year ago