├── README.md ├── index.js ├── node_modules ├── chalk │ ├── index.js │ ├── license │ ├── node_modules │ │ ├── ansi-styles │ │ │ ├── index.js │ │ │ ├── license │ │ │ ├── package.json │ │ │ └── readme.md │ │ ├── escape-string-regexp │ │ │ ├── index.js │ │ │ ├── license │ │ │ ├── package.json │ │ │ └── readme.md │ │ ├── has-ansi │ │ │ ├── index.js │ │ │ ├── license │ │ │ ├── node_modules │ │ │ │ └── ansi-regex │ │ │ │ │ ├── index.js │ │ │ │ │ ├── license │ │ │ │ │ ├── package.json │ │ │ │ │ └── readme.md │ │ │ ├── package.json │ │ │ └── readme.md │ │ ├── strip-ansi │ │ │ ├── index.js │ │ │ ├── license │ │ │ ├── node_modules │ │ │ │ └── ansi-regex │ │ │ │ │ ├── index.js │ │ │ │ │ ├── license │ │ │ │ │ ├── package.json │ │ │ │ │ └── readme.md │ │ │ ├── package.json │ │ │ └── readme.md │ │ └── supports-color │ │ │ ├── index.js │ │ │ ├── license │ │ │ ├── package.json │ │ │ └── readme.md │ ├── package.json │ └── readme.md ├── progress │ ├── .npmignore │ ├── History.md │ ├── LICENSE │ ├── Makefile │ ├── Readme.md │ ├── index.js │ ├── lib │ │ └── node-progress.js │ └── package.json └── speedtest-net │ ├── .npmignore │ ├── LICENSE │ ├── README.md │ ├── index.js │ ├── node_modules │ ├── progress │ │ ├── .npmignore │ │ ├── History.md │ │ ├── LICENSE │ │ ├── Makefile │ │ ├── Readme.md │ │ ├── index.js │ │ ├── lib │ │ │ └── node-progress.js │ │ └── package.json │ └── xml2js │ │ ├── .npmignore │ │ ├── .psci_modules │ │ └── index.js │ │ ├── .travis.yml │ │ ├── 83.coffee │ │ ├── CONTRIBUTING.md │ │ ├── Config.xml │ │ ├── Depp.js │ │ ├── LICENSE │ │ ├── README.md │ │ ├── att.js │ │ ├── bork.xml │ │ ├── borker.coffee │ │ ├── canon.xml │ │ ├── incompat.coffee │ │ ├── incompat2.js │ │ ├── lib │ │ ├── bom.js │ │ ├── processors.js │ │ └── xml2js.js │ │ ├── node_modules │ │ ├── sax │ │ │ ├── AUTHORS │ │ │ ├── CONTRIBUTING.md │ │ │ ├── LICENSE │ │ │ ├── LICENSE-W3C.html │ │ │ ├── README.md │ │ │ ├── examples │ │ │ │ ├── big-not-pretty.xml │ │ │ │ ├── example.js │ │ │ │ ├── get-products.js │ │ │ │ ├── hello-world.js │ │ │ │ ├── not-pretty.xml │ │ │ │ ├── pretty-print.js │ │ │ │ ├── shopping.xml │ │ │ │ ├── strict.dtd │ │ │ │ ├── test.html │ │ │ │ └── test.xml │ │ │ ├── lib │ │ │ │ └── sax.js │ │ │ ├── package.json │ │ │ └── test │ │ │ │ ├── attribute-name.js │ │ │ │ ├── attribute-no-space.js │ │ │ │ ├── bom.js │ │ │ │ ├── buffer-overrun.js │ │ │ │ ├── case.js │ │ │ │ ├── cdata-chunked.js │ │ │ │ ├── cdata-end-split.js │ │ │ │ ├── cdata-fake-end.js │ │ │ │ ├── cdata-multiple.js │ │ │ │ ├── cdata.js │ │ │ │ ├── cyrillic.js │ │ │ │ ├── duplicate-attribute.js │ │ │ │ ├── emoji.js │ │ │ │ ├── end_empty_stream.js │ │ │ │ ├── entities.js │ │ │ │ ├── entity-mega.js │ │ │ │ ├── flush.js │ │ │ │ ├── index.js │ │ │ │ ├── issue-23.js │ │ │ │ ├── issue-30.js │ │ │ │ ├── issue-35.js │ │ │ │ ├── issue-47.js │ │ │ │ ├── issue-49.js │ │ │ │ ├── issue-84.js │ │ │ │ ├── issue-86.js │ │ │ │ ├── parser-position.js │ │ │ │ ├── script-close-better.js │ │ │ │ ├── script.js │ │ │ │ ├── self-closing-child-strict.js │ │ │ │ ├── self-closing-child.js │ │ │ │ ├── self-closing-tag.js │ │ │ │ ├── stand-alone-comment.js │ │ │ │ ├── stray-ending.js │ │ │ │ ├── trailing-attribute-no-value.js │ │ │ │ ├── trailing-non-whitespace.js │ │ │ │ ├── unclosed-root.js │ │ │ │ ├── unquoted.js │ │ │ │ ├── utf8-split.js │ │ │ │ ├── xml_entities.js │ │ │ │ ├── xmlns-as-tag-name.js │ │ │ │ ├── xmlns-issue-41.js │ │ │ │ ├── xmlns-rebinding.js │ │ │ │ ├── xmlns-strict.js │ │ │ │ ├── xmlns-unbound-element.js │ │ │ │ ├── xmlns-unbound.js │ │ │ │ ├── xmlns-xml-default-ns.js │ │ │ │ ├── xmlns-xml-default-prefix-attribute.js │ │ │ │ ├── xmlns-xml-default-prefix.js │ │ │ │ └── xmlns-xml-default-redefine.js │ │ └── xmlbuilder │ │ │ ├── .npmignore │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── lib │ │ │ ├── XMLAttribute.js │ │ │ ├── XMLBuilder.js │ │ │ ├── XMLCData.js │ │ │ ├── XMLComment.js │ │ │ ├── XMLDTDAttList.js │ │ │ ├── XMLDTDElement.js │ │ │ ├── XMLDTDEntity.js │ │ │ ├── XMLDTDNotation.js │ │ │ ├── XMLDeclaration.js │ │ │ ├── XMLDocType.js │ │ │ ├── XMLElement.js │ │ │ ├── XMLNode.js │ │ │ ├── XMLProcessingInstruction.js │ │ │ ├── XMLRaw.js │ │ │ ├── XMLStringifier.js │ │ │ ├── XMLText.js │ │ │ └── index.js │ │ │ ├── node_modules │ │ │ └── lodash │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── array.js │ │ │ │ ├── array │ │ │ │ ├── chunk.js │ │ │ │ ├── compact.js │ │ │ │ ├── difference.js │ │ │ │ ├── drop.js │ │ │ │ ├── dropRight.js │ │ │ │ ├── dropRightWhile.js │ │ │ │ ├── dropWhile.js │ │ │ │ ├── fill.js │ │ │ │ ├── findIndex.js │ │ │ │ ├── findLastIndex.js │ │ │ │ ├── first.js │ │ │ │ ├── flatten.js │ │ │ │ ├── flattenDeep.js │ │ │ │ ├── head.js │ │ │ │ ├── indexOf.js │ │ │ │ ├── initial.js │ │ │ │ ├── intersection.js │ │ │ │ ├── last.js │ │ │ │ ├── lastIndexOf.js │ │ │ │ ├── object.js │ │ │ │ ├── pull.js │ │ │ │ ├── pullAt.js │ │ │ │ ├── remove.js │ │ │ │ ├── rest.js │ │ │ │ ├── slice.js │ │ │ │ ├── sortedIndex.js │ │ │ │ ├── sortedLastIndex.js │ │ │ │ ├── tail.js │ │ │ │ ├── take.js │ │ │ │ ├── takeRight.js │ │ │ │ ├── takeRightWhile.js │ │ │ │ ├── takeWhile.js │ │ │ │ ├── union.js │ │ │ │ ├── uniq.js │ │ │ │ ├── unique.js │ │ │ │ ├── unzip.js │ │ │ │ ├── unzipWith.js │ │ │ │ ├── without.js │ │ │ │ ├── xor.js │ │ │ │ ├── zip.js │ │ │ │ ├── zipObject.js │ │ │ │ └── zipWith.js │ │ │ │ ├── chain.js │ │ │ │ ├── chain │ │ │ │ ├── chain.js │ │ │ │ ├── commit.js │ │ │ │ ├── concat.js │ │ │ │ ├── lodash.js │ │ │ │ ├── plant.js │ │ │ │ ├── reverse.js │ │ │ │ ├── run.js │ │ │ │ ├── tap.js │ │ │ │ ├── thru.js │ │ │ │ ├── toJSON.js │ │ │ │ ├── toString.js │ │ │ │ ├── value.js │ │ │ │ ├── valueOf.js │ │ │ │ ├── wrapperChain.js │ │ │ │ ├── wrapperCommit.js │ │ │ │ ├── wrapperConcat.js │ │ │ │ ├── wrapperPlant.js │ │ │ │ ├── wrapperReverse.js │ │ │ │ ├── wrapperToString.js │ │ │ │ └── wrapperValue.js │ │ │ │ ├── collection.js │ │ │ │ ├── collection │ │ │ │ ├── all.js │ │ │ │ ├── any.js │ │ │ │ ├── at.js │ │ │ │ ├── collect.js │ │ │ │ ├── contains.js │ │ │ │ ├── countBy.js │ │ │ │ ├── detect.js │ │ │ │ ├── each.js │ │ │ │ ├── eachRight.js │ │ │ │ ├── every.js │ │ │ │ ├── filter.js │ │ │ │ ├── find.js │ │ │ │ ├── findLast.js │ │ │ │ ├── findWhere.js │ │ │ │ ├── foldl.js │ │ │ │ ├── foldr.js │ │ │ │ ├── forEach.js │ │ │ │ ├── forEachRight.js │ │ │ │ ├── groupBy.js │ │ │ │ ├── include.js │ │ │ │ ├── includes.js │ │ │ │ ├── indexBy.js │ │ │ │ ├── inject.js │ │ │ │ ├── invoke.js │ │ │ │ ├── map.js │ │ │ │ ├── max.js │ │ │ │ ├── min.js │ │ │ │ ├── partition.js │ │ │ │ ├── pluck.js │ │ │ │ ├── reduce.js │ │ │ │ ├── reduceRight.js │ │ │ │ ├── reject.js │ │ │ │ ├── sample.js │ │ │ │ ├── select.js │ │ │ │ ├── shuffle.js │ │ │ │ ├── size.js │ │ │ │ ├── some.js │ │ │ │ ├── sortBy.js │ │ │ │ ├── sortByAll.js │ │ │ │ ├── sortByOrder.js │ │ │ │ ├── sum.js │ │ │ │ └── where.js │ │ │ │ ├── date.js │ │ │ │ ├── date │ │ │ │ └── now.js │ │ │ │ ├── function.js │ │ │ │ ├── function │ │ │ │ ├── after.js │ │ │ │ ├── ary.js │ │ │ │ ├── backflow.js │ │ │ │ ├── before.js │ │ │ │ ├── bind.js │ │ │ │ ├── bindAll.js │ │ │ │ ├── bindKey.js │ │ │ │ ├── compose.js │ │ │ │ ├── curry.js │ │ │ │ ├── curryRight.js │ │ │ │ ├── debounce.js │ │ │ │ ├── defer.js │ │ │ │ ├── delay.js │ │ │ │ ├── flow.js │ │ │ │ ├── flowRight.js │ │ │ │ ├── memoize.js │ │ │ │ ├── modArgs.js │ │ │ │ ├── negate.js │ │ │ │ ├── once.js │ │ │ │ ├── partial.js │ │ │ │ ├── partialRight.js │ │ │ │ ├── rearg.js │ │ │ │ ├── restParam.js │ │ │ │ ├── spread.js │ │ │ │ ├── throttle.js │ │ │ │ └── wrap.js │ │ │ │ ├── index.js │ │ │ │ ├── internal │ │ │ │ ├── LazyWrapper.js │ │ │ │ ├── LodashWrapper.js │ │ │ │ ├── MapCache.js │ │ │ │ ├── SetCache.js │ │ │ │ ├── arrayConcat.js │ │ │ │ ├── arrayCopy.js │ │ │ │ ├── arrayEach.js │ │ │ │ ├── arrayEachRight.js │ │ │ │ ├── arrayEvery.js │ │ │ │ ├── arrayExtremum.js │ │ │ │ ├── arrayFilter.js │ │ │ │ ├── arrayMap.js │ │ │ │ ├── arrayPush.js │ │ │ │ ├── arrayReduce.js │ │ │ │ ├── arrayReduceRight.js │ │ │ │ ├── arraySome.js │ │ │ │ ├── arraySum.js │ │ │ │ ├── assignDefaults.js │ │ │ │ ├── assignOwnDefaults.js │ │ │ │ ├── assignWith.js │ │ │ │ ├── baseAssign.js │ │ │ │ ├── baseAt.js │ │ │ │ ├── baseCallback.js │ │ │ │ ├── baseClone.js │ │ │ │ ├── baseCompareAscending.js │ │ │ │ ├── baseCopy.js │ │ │ │ ├── baseCreate.js │ │ │ │ ├── baseDelay.js │ │ │ │ ├── baseDifference.js │ │ │ │ ├── baseEach.js │ │ │ │ ├── baseEachRight.js │ │ │ │ ├── baseEvery.js │ │ │ │ ├── baseExtremum.js │ │ │ │ ├── baseFill.js │ │ │ │ ├── baseFilter.js │ │ │ │ ├── baseFind.js │ │ │ │ ├── baseFindIndex.js │ │ │ │ ├── baseFlatten.js │ │ │ │ ├── baseFor.js │ │ │ │ ├── baseForIn.js │ │ │ │ ├── baseForOwn.js │ │ │ │ ├── baseForOwnRight.js │ │ │ │ ├── baseForRight.js │ │ │ │ ├── baseFunctions.js │ │ │ │ ├── baseGet.js │ │ │ │ ├── baseIndexOf.js │ │ │ │ ├── baseIsEqual.js │ │ │ │ ├── baseIsEqualDeep.js │ │ │ │ ├── baseIsFunction.js │ │ │ │ ├── baseIsMatch.js │ │ │ │ ├── baseLodash.js │ │ │ │ ├── baseMap.js │ │ │ │ ├── baseMatches.js │ │ │ │ ├── baseMatchesProperty.js │ │ │ │ ├── baseMerge.js │ │ │ │ ├── baseMergeDeep.js │ │ │ │ ├── baseProperty.js │ │ │ │ ├── basePropertyDeep.js │ │ │ │ ├── basePullAt.js │ │ │ │ ├── baseRandom.js │ │ │ │ ├── baseReduce.js │ │ │ │ ├── baseSetData.js │ │ │ │ ├── baseSlice.js │ │ │ │ ├── baseSome.js │ │ │ │ ├── baseSortBy.js │ │ │ │ ├── baseSortByOrder.js │ │ │ │ ├── baseSum.js │ │ │ │ ├── baseToString.js │ │ │ │ ├── baseUniq.js │ │ │ │ ├── baseValues.js │ │ │ │ ├── baseWhile.js │ │ │ │ ├── baseWrapperValue.js │ │ │ │ ├── binaryIndex.js │ │ │ │ ├── binaryIndexBy.js │ │ │ │ ├── bindCallback.js │ │ │ │ ├── bufferClone.js │ │ │ │ ├── cacheIndexOf.js │ │ │ │ ├── cachePush.js │ │ │ │ ├── charsLeftIndex.js │ │ │ │ ├── charsRightIndex.js │ │ │ │ ├── compareAscending.js │ │ │ │ ├── compareMultiple.js │ │ │ │ ├── composeArgs.js │ │ │ │ ├── composeArgsRight.js │ │ │ │ ├── createAggregator.js │ │ │ │ ├── createAssigner.js │ │ │ │ ├── createBaseEach.js │ │ │ │ ├── createBaseFor.js │ │ │ │ ├── createBindWrapper.js │ │ │ │ ├── createCache.js │ │ │ │ ├── createCompounder.js │ │ │ │ ├── createCtorWrapper.js │ │ │ │ ├── createCurry.js │ │ │ │ ├── createDefaults.js │ │ │ │ ├── createExtremum.js │ │ │ │ ├── createFind.js │ │ │ │ ├── createFindIndex.js │ │ │ │ ├── createFindKey.js │ │ │ │ ├── createFlow.js │ │ │ │ ├── createForEach.js │ │ │ │ ├── createForIn.js │ │ │ │ ├── createForOwn.js │ │ │ │ ├── createHybridWrapper.js │ │ │ │ ├── createObjectMapper.js │ │ │ │ ├── createPadDir.js │ │ │ │ ├── createPadding.js │ │ │ │ ├── createPartial.js │ │ │ │ ├── createPartialWrapper.js │ │ │ │ ├── createReduce.js │ │ │ │ ├── createRound.js │ │ │ │ ├── createSortedIndex.js │ │ │ │ ├── createWrapper.js │ │ │ │ ├── deburrLetter.js │ │ │ │ ├── equalArrays.js │ │ │ │ ├── equalByTag.js │ │ │ │ ├── equalObjects.js │ │ │ │ ├── escapeHtmlChar.js │ │ │ │ ├── escapeRegExpChar.js │ │ │ │ ├── escapeStringChar.js │ │ │ │ ├── getData.js │ │ │ │ ├── getFuncName.js │ │ │ │ ├── getLength.js │ │ │ │ ├── getMatchData.js │ │ │ │ ├── getNative.js │ │ │ │ ├── getView.js │ │ │ │ ├── indexOfNaN.js │ │ │ │ ├── initCloneArray.js │ │ │ │ ├── initCloneByTag.js │ │ │ │ ├── initCloneObject.js │ │ │ │ ├── invokePath.js │ │ │ │ ├── isArrayLike.js │ │ │ │ ├── isIndex.js │ │ │ │ ├── isIterateeCall.js │ │ │ │ ├── isKey.js │ │ │ │ ├── isLaziable.js │ │ │ │ ├── isLength.js │ │ │ │ ├── isObjectLike.js │ │ │ │ ├── isSpace.js │ │ │ │ ├── isStrictComparable.js │ │ │ │ ├── lazyClone.js │ │ │ │ ├── lazyReverse.js │ │ │ │ ├── lazyValue.js │ │ │ │ ├── mapDelete.js │ │ │ │ ├── mapGet.js │ │ │ │ ├── mapHas.js │ │ │ │ ├── mapSet.js │ │ │ │ ├── mergeData.js │ │ │ │ ├── mergeDefaults.js │ │ │ │ ├── metaMap.js │ │ │ │ ├── pickByArray.js │ │ │ │ ├── pickByCallback.js │ │ │ │ ├── reEscape.js │ │ │ │ ├── reEvaluate.js │ │ │ │ ├── reInterpolate.js │ │ │ │ ├── realNames.js │ │ │ │ ├── reorder.js │ │ │ │ ├── replaceHolders.js │ │ │ │ ├── setData.js │ │ │ │ ├── shimKeys.js │ │ │ │ ├── sortedUniq.js │ │ │ │ ├── toIterable.js │ │ │ │ ├── toObject.js │ │ │ │ ├── toPath.js │ │ │ │ ├── trimmedLeftIndex.js │ │ │ │ ├── trimmedRightIndex.js │ │ │ │ ├── unescapeHtmlChar.js │ │ │ │ └── wrapperClone.js │ │ │ │ ├── lang.js │ │ │ │ ├── lang │ │ │ │ ├── clone.js │ │ │ │ ├── cloneDeep.js │ │ │ │ ├── eq.js │ │ │ │ ├── gt.js │ │ │ │ ├── gte.js │ │ │ │ ├── isArguments.js │ │ │ │ ├── isArray.js │ │ │ │ ├── isBoolean.js │ │ │ │ ├── isDate.js │ │ │ │ ├── isElement.js │ │ │ │ ├── isEmpty.js │ │ │ │ ├── isEqual.js │ │ │ │ ├── isError.js │ │ │ │ ├── isFinite.js │ │ │ │ ├── isFunction.js │ │ │ │ ├── isMatch.js │ │ │ │ ├── isNaN.js │ │ │ │ ├── isNative.js │ │ │ │ ├── isNull.js │ │ │ │ ├── isNumber.js │ │ │ │ ├── isObject.js │ │ │ │ ├── isPlainObject.js │ │ │ │ ├── isRegExp.js │ │ │ │ ├── isString.js │ │ │ │ ├── isTypedArray.js │ │ │ │ ├── isUndefined.js │ │ │ │ ├── lt.js │ │ │ │ ├── lte.js │ │ │ │ ├── toArray.js │ │ │ │ └── toPlainObject.js │ │ │ │ ├── math.js │ │ │ │ ├── math │ │ │ │ ├── add.js │ │ │ │ ├── ceil.js │ │ │ │ ├── floor.js │ │ │ │ ├── max.js │ │ │ │ ├── min.js │ │ │ │ ├── round.js │ │ │ │ └── sum.js │ │ │ │ ├── number.js │ │ │ │ ├── number │ │ │ │ ├── inRange.js │ │ │ │ └── random.js │ │ │ │ ├── object.js │ │ │ │ ├── object │ │ │ │ ├── assign.js │ │ │ │ ├── create.js │ │ │ │ ├── defaults.js │ │ │ │ ├── defaultsDeep.js │ │ │ │ ├── extend.js │ │ │ │ ├── findKey.js │ │ │ │ ├── findLastKey.js │ │ │ │ ├── forIn.js │ │ │ │ ├── forInRight.js │ │ │ │ ├── forOwn.js │ │ │ │ ├── forOwnRight.js │ │ │ │ ├── functions.js │ │ │ │ ├── get.js │ │ │ │ ├── has.js │ │ │ │ ├── invert.js │ │ │ │ ├── keys.js │ │ │ │ ├── keysIn.js │ │ │ │ ├── mapKeys.js │ │ │ │ ├── mapValues.js │ │ │ │ ├── merge.js │ │ │ │ ├── methods.js │ │ │ │ ├── omit.js │ │ │ │ ├── pairs.js │ │ │ │ ├── pick.js │ │ │ │ ├── result.js │ │ │ │ ├── set.js │ │ │ │ ├── transform.js │ │ │ │ ├── values.js │ │ │ │ └── valuesIn.js │ │ │ │ ├── package.json │ │ │ │ ├── string.js │ │ │ │ ├── string │ │ │ │ ├── camelCase.js │ │ │ │ ├── capitalize.js │ │ │ │ ├── deburr.js │ │ │ │ ├── endsWith.js │ │ │ │ ├── escape.js │ │ │ │ ├── escapeRegExp.js │ │ │ │ ├── kebabCase.js │ │ │ │ ├── pad.js │ │ │ │ ├── padLeft.js │ │ │ │ ├── padRight.js │ │ │ │ ├── parseInt.js │ │ │ │ ├── repeat.js │ │ │ │ ├── snakeCase.js │ │ │ │ ├── startCase.js │ │ │ │ ├── startsWith.js │ │ │ │ ├── template.js │ │ │ │ ├── templateSettings.js │ │ │ │ ├── trim.js │ │ │ │ ├── trimLeft.js │ │ │ │ ├── trimRight.js │ │ │ │ ├── trunc.js │ │ │ │ ├── unescape.js │ │ │ │ └── words.js │ │ │ │ ├── support.js │ │ │ │ ├── utility.js │ │ │ │ └── utility │ │ │ │ ├── attempt.js │ │ │ │ ├── callback.js │ │ │ │ ├── constant.js │ │ │ │ ├── identity.js │ │ │ │ ├── iteratee.js │ │ │ │ ├── matches.js │ │ │ │ ├── matchesProperty.js │ │ │ │ ├── method.js │ │ │ │ ├── methodOf.js │ │ │ │ ├── mixin.js │ │ │ │ ├── noop.js │ │ │ │ ├── property.js │ │ │ │ ├── propertyOf.js │ │ │ │ ├── range.js │ │ │ │ ├── times.js │ │ │ │ └── uniqueId.js │ │ │ └── package.json │ │ ├── package.json │ │ ├── text.coffee │ │ ├── text.xml │ │ └── x.js │ └── package.json ├── package.json └── speedtest.gif /README.md: -------------------------------------------------------------------------------- 1 | # Speed test CLI tool 2 | 3 | ![speedtest](speedtest.gif) 4 | 5 | ## Install 6 | 7 | ```npm install speedtestcli -g``` 8 | -------------------------------------------------------------------------------- /node_modules/chalk/node_modules/escape-string-regexp/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; 4 | 5 | module.exports = function (str) { 6 | if (typeof str !== 'string') { 7 | throw new TypeError('Expected a string'); 8 | } 9 | 10 | return str.replace(matchOperatorsRe, '\\$&'); 11 | }; 12 | -------------------------------------------------------------------------------- /node_modules/chalk/node_modules/escape-string-regexp/readme.md: -------------------------------------------------------------------------------- 1 | # escape-string-regexp [![Build Status](https://travis-ci.org/sindresorhus/escape-string-regexp.svg?branch=master)](https://travis-ci.org/sindresorhus/escape-string-regexp) 2 | 3 | > Escape RegExp special characters 4 | 5 | 6 | ## Install 7 | 8 | ```sh 9 | $ npm install --save escape-string-regexp 10 | ``` 11 | 12 | 13 | ## Usage 14 | 15 | ```js 16 | var escapeStringRegexp = require('escape-string-regexp'); 17 | 18 | var escapedString = escapeStringRegexp('how much $ for a unicorn?'); 19 | //=> how much \$ for a unicorn\? 20 | 21 | new RegExp(escapedString); 22 | ``` 23 | 24 | 25 | ## License 26 | 27 | MIT © [Sindre Sorhus](http://sindresorhus.com) 28 | -------------------------------------------------------------------------------- /node_modules/chalk/node_modules/has-ansi/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | var ansiRegex = require('ansi-regex'); 3 | var re = new RegExp(ansiRegex().source); // remove the `g` flag 4 | module.exports = re.test.bind(re); 5 | -------------------------------------------------------------------------------- /node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = function () { 3 | return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g; 4 | }; 5 | -------------------------------------------------------------------------------- /node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md: -------------------------------------------------------------------------------- 1 | # ansi-regex [![Build Status](https://travis-ci.org/sindresorhus/ansi-regex.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-regex) 2 | 3 | > Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) 4 | 5 | 6 | ## Install 7 | 8 | ``` 9 | $ npm install --save ansi-regex 10 | ``` 11 | 12 | 13 | ## Usage 14 | 15 | ```js 16 | var ansiRegex = require('ansi-regex'); 17 | 18 | ansiRegex().test('\u001b[4mcake\u001b[0m'); 19 | //=> true 20 | 21 | ansiRegex().test('cake'); 22 | //=> false 23 | 24 | '\u001b[4mcake\u001b[0m'.match(ansiRegex()); 25 | //=> ['\u001b[4m', '\u001b[0m'] 26 | ``` 27 | 28 | 29 | ## License 30 | 31 | MIT © [Sindre Sorhus](http://sindresorhus.com) 32 | -------------------------------------------------------------------------------- /node_modules/chalk/node_modules/has-ansi/readme.md: -------------------------------------------------------------------------------- 1 | # has-ansi [![Build Status](https://travis-ci.org/sindresorhus/has-ansi.svg?branch=master)](https://travis-ci.org/sindresorhus/has-ansi) 2 | 3 | > Check if a string has [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) 4 | 5 | 6 | ## Install 7 | 8 | ``` 9 | $ npm install --save has-ansi 10 | ``` 11 | 12 | 13 | ## Usage 14 | 15 | ```js 16 | var hasAnsi = require('has-ansi'); 17 | 18 | hasAnsi('\u001b[4mcake\u001b[0m'); 19 | //=> true 20 | 21 | hasAnsi('cake'); 22 | //=> false 23 | ``` 24 | 25 | 26 | ## Related 27 | 28 | - [has-ansi-cli](https://github.com/sindresorhus/has-ansi-cli) - CLI for this module 29 | - [strip-ansi](https://github.com/sindresorhus/strip-ansi) - Strip ANSI escape codes 30 | - [ansi-regex](https://github.com/sindresorhus/ansi-regex) - Regular expression for matching ANSI escape codes 31 | - [chalk](https://github.com/sindresorhus/chalk) - Terminal string styling done right 32 | 33 | 34 | ## License 35 | 36 | MIT © [Sindre Sorhus](http://sindresorhus.com) 37 | -------------------------------------------------------------------------------- /node_modules/chalk/node_modules/strip-ansi/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | var ansiRegex = require('ansi-regex')(); 3 | 4 | module.exports = function (str) { 5 | return typeof str === 'string' ? str.replace(ansiRegex, '') : str; 6 | }; 7 | -------------------------------------------------------------------------------- /node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = function () { 3 | return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g; 4 | }; 5 | -------------------------------------------------------------------------------- /node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md: -------------------------------------------------------------------------------- 1 | # ansi-regex [![Build Status](https://travis-ci.org/sindresorhus/ansi-regex.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-regex) 2 | 3 | > Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) 4 | 5 | 6 | ## Install 7 | 8 | ``` 9 | $ npm install --save ansi-regex 10 | ``` 11 | 12 | 13 | ## Usage 14 | 15 | ```js 16 | var ansiRegex = require('ansi-regex'); 17 | 18 | ansiRegex().test('\u001b[4mcake\u001b[0m'); 19 | //=> true 20 | 21 | ansiRegex().test('cake'); 22 | //=> false 23 | 24 | '\u001b[4mcake\u001b[0m'.match(ansiRegex()); 25 | //=> ['\u001b[4m', '\u001b[0m'] 26 | ``` 27 | 28 | 29 | ## License 30 | 31 | MIT © [Sindre Sorhus](http://sindresorhus.com) 32 | -------------------------------------------------------------------------------- /node_modules/chalk/node_modules/strip-ansi/readme.md: -------------------------------------------------------------------------------- 1 | # strip-ansi [![Build Status](https://travis-ci.org/sindresorhus/strip-ansi.svg?branch=master)](https://travis-ci.org/sindresorhus/strip-ansi) 2 | 3 | > Strip [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) 4 | 5 | 6 | ## Install 7 | 8 | ``` 9 | $ npm install --save strip-ansi 10 | ``` 11 | 12 | 13 | ## Usage 14 | 15 | ```js 16 | var stripAnsi = require('strip-ansi'); 17 | 18 | stripAnsi('\u001b[4mcake\u001b[0m'); 19 | //=> 'cake' 20 | ``` 21 | 22 | 23 | ## Related 24 | 25 | - [strip-ansi-cli](https://github.com/sindresorhus/strip-ansi-cli) - CLI for this module 26 | - [has-ansi](https://github.com/sindresorhus/has-ansi) - Check if a string has ANSI escape codes 27 | - [ansi-regex](https://github.com/sindresorhus/ansi-regex) - Regular expression for matching ANSI escape codes 28 | - [chalk](https://github.com/sindresorhus/chalk) - Terminal string styling done right 29 | 30 | 31 | ## License 32 | 33 | MIT © [Sindre Sorhus](http://sindresorhus.com) 34 | -------------------------------------------------------------------------------- /node_modules/chalk/node_modules/supports-color/readme.md: -------------------------------------------------------------------------------- 1 | # supports-color [![Build Status](https://travis-ci.org/chalk/supports-color.svg?branch=master)](https://travis-ci.org/chalk/supports-color) 2 | 3 | > Detect whether a terminal supports color 4 | 5 | 6 | ## Install 7 | 8 | ``` 9 | $ npm install --save supports-color 10 | ``` 11 | 12 | 13 | ## Usage 14 | 15 | ```js 16 | var supportsColor = require('supports-color'); 17 | 18 | if (supportsColor) { 19 | console.log('Terminal supports color'); 20 | } 21 | ``` 22 | 23 | It obeys the `--color` and `--no-color` CLI flags. 24 | 25 | For situations where using `--color` is not possible, add an environment variable `FORCE_COLOR` with any value to force color. Trumps `--no-color`. 26 | 27 | 28 | ## Related 29 | 30 | - [supports-color-cli](https://github.com/chalk/supports-color-cli) - CLI for this module 31 | - [chalk](https://github.com/chalk/chalk) - Terminal string styling done right 32 | 33 | 34 | ## License 35 | 36 | MIT © [Sindre Sorhus](http://sindresorhus.com) 37 | -------------------------------------------------------------------------------- /node_modules/progress/.npmignore: -------------------------------------------------------------------------------- 1 | support 2 | test 3 | examples 4 | *.sock 5 | -------------------------------------------------------------------------------- /node_modules/progress/Makefile: -------------------------------------------------------------------------------- 1 | 2 | EXAMPLES = $(foreach EXAMPLE, $(wildcard examples/*.js), $(EXAMPLE)) 3 | 4 | .PHONY: test 5 | test: $(EXAMPLES) 6 | 7 | .PHONY: $(EXAMPLES) 8 | $(EXAMPLES): ; node $@ && echo 9 | -------------------------------------------------------------------------------- /node_modules/progress/index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/node-progress'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/.npmignore: -------------------------------------------------------------------------------- 1 | .gitignore 2 | test 3 | *.swp 4 | ._* 5 | .DS_Store 6 | .git 7 | .hg 8 | .lock-wscript 9 | .svn 10 | .wafpickle-* 11 | CVS 12 | npm-debug.log 13 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/progress/.npmignore: -------------------------------------------------------------------------------- 1 | support 2 | test 3 | examples 4 | *.sock 5 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/progress/Makefile: -------------------------------------------------------------------------------- 1 | 2 | EXAMPLES = $(foreach EXAMPLE, $(wildcard examples/*.js), $(EXAMPLE)) 3 | 4 | .PHONY: test 5 | test: $(EXAMPLES) 6 | 7 | .PHONY: $(EXAMPLES) 8 | $(EXAMPLES): ; node $@ && echo 9 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/progress/index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/node-progress'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/.npmignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | .idea 3 | node_modules 4 | src 5 | test 6 | Cakefile -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/.psci_modules/index.js: -------------------------------------------------------------------------------- 1 | require('$PSCI').main(); -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | 3 | node_js: 4 | - "0.10" 5 | - "0.12" 6 | - iojs 7 | 8 | after_success: npm run coveralls 9 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/83.coffee: -------------------------------------------------------------------------------- 1 | xml2js = require 'xml2js' 2 | util = require 'util' 3 | 4 | body = 'Character data here!' 5 | xml2js.parseString body, (err, result) -> 6 | console.log util.inspect result, false, null 7 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/Config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | LP1721 4 | DB1 5 | cam 6 | password 7 | 1433 8 | 9 | 10 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/Depp.js: -------------------------------------------------------------------------------- 1 | var util = require('util'); 2 | var fs = require('fs'); 3 | var xml2js = require('xml2js'); 4 | 5 | fs.readFile(__dirname + '/Config.xml', function(err, data) { 6 | xml2js.parseString(data, function (err, globalConfig) { 7 | console.log(util.inspect(globalConfig, false, null)); 8 | var config = { 9 | user: globalConfig.config.db[0].user[0], 10 | password: globalConfig.config.db[0].password[0], 11 | server: globalConfig.config.db[0].server[0], 12 | port: globalConfig.config.db[0].port[0], 13 | database: globalConfig.config.db[0].database[0] 14 | }; 15 | console.log(config); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/att.js: -------------------------------------------------------------------------------- 1 | var xml2js = require('xml2js'); 2 | 3 | var uppercasing = function (name) { 4 | console.log("called this function"); 5 | return name.toUpperCase(); 6 | }; 7 | 8 | var parser = new xml2js.Parser({attrNameProcessors: [uppercasing]}); 9 | 10 | parser.parseString('content', 11 | function(err, jsonResult){ 12 | console.log(jsonResult); 13 | }); 14 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/borker.coffee: -------------------------------------------------------------------------------- 1 | xml2js = require 'xml2js' 2 | fs = require 'fs' 3 | 4 | fs.readFile 'bork.xml', (err, data) -> 5 | xml2js.parseString data, (err, parsed) -> 6 | console.log(parsed) 7 | console.log(err) 8 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/incompat.coffee: -------------------------------------------------------------------------------- 1 | {parseString} = require './lib/xml2js' 2 | xml = '' 3 | parseString xml, (err, result) -> 4 | console.dir result 5 | 6 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/incompat2.js: -------------------------------------------------------------------------------- 1 | var xml2js = require('xml2js'); 2 | var parser = new xml2js.Parser({ 3 | mergeAttrs: true 4 | }); 5 | parser.parseString('', function (err, result) { 6 | console.dir(result); 7 | }); 8 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/lib/bom.js: -------------------------------------------------------------------------------- 1 | // Generated by CoffeeScript 1.9.3 2 | (function() { 3 | "use strict"; 4 | var xml2js; 5 | 6 | xml2js = require('../lib/xml2js'); 7 | 8 | exports.stripBOM = function(str) { 9 | if (str[0] === '\uFEFF') { 10 | return str.substring(1); 11 | } else { 12 | return str; 13 | } 14 | }; 15 | 16 | }).call(this); 17 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/lib/processors.js: -------------------------------------------------------------------------------- 1 | // Generated by CoffeeScript 1.9.3 2 | (function() { 3 | "use strict"; 4 | var prefixMatch; 5 | 6 | prefixMatch = new RegExp(/(?!xmlns)^.*:/); 7 | 8 | exports.normalize = function(str) { 9 | return str.toLowerCase(); 10 | }; 11 | 12 | exports.firstCharLowerCase = function(str) { 13 | return str.charAt(0).toLowerCase() + str.slice(1); 14 | }; 15 | 16 | exports.stripPrefix = function(str) { 17 | return str.replace(prefixMatch, ''); 18 | }; 19 | 20 | exports.parseNumbers = function(str) { 21 | if (!isNaN(str)) { 22 | str = str % 1 === 0 ? parseInt(str, 10) : parseFloat(str); 23 | } 24 | return str; 25 | }; 26 | 27 | exports.parseBooleans = function(str) { 28 | if (/^(?:true|false)$/i.test(str)) { 29 | str = str.toLowerCase() === 'true'; 30 | } 31 | return str; 32 | }; 33 | 34 | }).call(this); 35 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/AUTHORS: -------------------------------------------------------------------------------- 1 | # contributors sorted by whether or not they're me. 2 | Isaac Z. Schlueter 3 | Stein Martin Hustad 4 | Mikeal Rogers 5 | Laurie Harper 6 | Jann Horn 7 | Elijah Insua 8 | Henry Rawas 9 | Justin Makeig 10 | Mike Schilling 11 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | **NO PATCHES WITHOUT A TEST** 2 | 3 | **TEST MUST PASS WITH THE PATCH.** 4 | 5 | **TEST MUST FAIL WITHOUT THE PATCH.** 6 | 7 | **NO EXCEPTIONS.** 8 | 9 | # EVERY PULL REQUEST MUST HAVE A TEST. 10 | 11 | Seriously. This is a very strict rule, and I will not bend it for any 12 | patch, no matter how minor. 13 | 14 | Write a test. 15 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/LICENSE: -------------------------------------------------------------------------------- 1 | The ISC License 2 | 3 | Copyright (c) Isaac Z. Schlueter and Contributors 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any 6 | purpose with or without fee is hereby granted, provided that the above 7 | copyright notice and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR 15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/examples/example.js: -------------------------------------------------------------------------------- 1 | 2 | var fs = require("fs"), 3 | util = require("util"), 4 | path = require("path"), 5 | xml = fs.readFileSync(path.join(__dirname, "test.xml"), "utf8"), 6 | sax = require("../lib/sax"), 7 | strict = sax.parser(true), 8 | loose = sax.parser(false, {trim:true}), 9 | inspector = function (ev) { return function (data) { 10 | console.error("%s %s %j", this.line+":"+this.column, ev, data); 11 | }}; 12 | 13 | sax.EVENTS.forEach(function (ev) { 14 | loose["on"+ev] = inspector(ev); 15 | }); 16 | loose.onend = function () { 17 | console.error("end"); 18 | console.error(loose); 19 | }; 20 | 21 | // do this in random bits at a time to verify that it works. 22 | (function () { 23 | if (xml) { 24 | var c = Math.ceil(Math.random() * 1000) 25 | loose.write(xml.substr(0,c)); 26 | xml = xml.substr(c); 27 | process.nextTick(arguments.callee); 28 | } else loose.close(); 29 | })(); 30 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/examples/hello-world.js: -------------------------------------------------------------------------------- 1 | require("http").createServer(function (req, res) { 2 | res.writeHead(200, {"content-type":"application/json"}) 3 | res.end(JSON.stringify({ok: true})) 4 | }).listen(1337) 5 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/examples/not-pretty.xml: -------------------------------------------------------------------------------- 1 | 2 | something blerm a bit down here 9 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/examples/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | testing the parser 6 | 7 | 8 | 9 |

hello 10 | 11 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/attribute-name.js: -------------------------------------------------------------------------------- 1 | require(__dirname).test( 2 | { xml: "" 3 | , expect: [ 4 | ["attribute", { 5 | name: "length" 6 | , value: "12345" 7 | , prefix: "" 8 | , local: "length" 9 | , uri: "" 10 | }] 11 | , ["opentag", { 12 | name: "root" 13 | , prefix: "" 14 | , local: "root" 15 | , uri: "" 16 | , attributes: { 17 | length: { 18 | name: "length" 19 | , value: "12345" 20 | , prefix: "" 21 | , local: "length" 22 | , uri: "" 23 | } 24 | } 25 | , ns: {} 26 | , isSelfClosing: false 27 | }] 28 | , ["closetag", "root"] 29 | ] 30 | , strict: true 31 | , opt: { xmlns: true } 32 | } 33 | ) 34 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/cdata-chunked.js: -------------------------------------------------------------------------------- 1 | 2 | require(__dirname).test({ 3 | expect : [ 4 | ["opentag", {"name": "R","attributes": {}, "isSelfClosing": false}], 5 | ["opencdata", undefined], 6 | ["cdata", " this is character data  "], 7 | ["closecdata", undefined], 8 | ["closetag", "R"] 9 | ] 10 | }).write("").close(); 11 | 12 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/cdata-end-split.js: -------------------------------------------------------------------------------- 1 | 2 | require(__dirname).test({ 3 | expect : [ 4 | ["opentag", {"name": "R","attributes": {}, "isSelfClosing": false}], 5 | ["opencdata", undefined], 6 | ["cdata", " this is "], 7 | ["closecdata", undefined], 8 | ["closetag", "R"] 9 | ] 10 | }) 11 | .write("") 13 | .write("") 14 | .close(); 15 | 16 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/cdata-fake-end.js: -------------------------------------------------------------------------------- 1 | 2 | var p = require(__dirname).test({ 3 | expect : [ 4 | ["opentag", {"name": "R","attributes": {}, "isSelfClosing": false}], 5 | ["opencdata", undefined], 6 | ["cdata", "[[[[[[[[]]]]]]]]"], 7 | ["closecdata", undefined], 8 | ["closetag", "R"] 9 | ] 10 | }) 11 | var x = "" 12 | for (var i = 0; i < x.length ; i ++) { 13 | p.write(x.charAt(i)) 14 | } 15 | p.close(); 16 | 17 | 18 | var p2 = require(__dirname).test({ 19 | expect : [ 20 | ["opentag", {"name": "R","attributes": {}, "isSelfClosing": false}], 21 | ["opencdata", undefined], 22 | ["cdata", "[[[[[[[[]]]]]]]]"], 23 | ["closecdata", undefined], 24 | ["closetag", "R"] 25 | ] 26 | }) 27 | var x = "" 28 | p2.write(x).close(); 29 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/cdata-multiple.js: -------------------------------------------------------------------------------- 1 | 2 | require(__dirname).test({ 3 | expect : [ 4 | ["opentag", {"name": "R","attributes": {}, "isSelfClosing": false}], 5 | ["opencdata", undefined], 6 | ["cdata", " this is "], 7 | ["closecdata", undefined], 8 | ["opencdata", undefined], 9 | ["cdata", "character data  "], 10 | ["closecdata", undefined], 11 | ["closetag", "R"] 12 | ] 13 | }).write("").write("").close(); 15 | 16 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/cdata.js: -------------------------------------------------------------------------------- 1 | require(__dirname).test({ 2 | xml : "", 3 | expect : [ 4 | ["opentag", {"name": "R","attributes": {}, "isSelfClosing": false}], 5 | ["opencdata", undefined], 6 | ["cdata", " this is character data  "], 7 | ["closecdata", undefined], 8 | ["closetag", "R"] 9 | ] 10 | }); 11 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/cyrillic.js: -------------------------------------------------------------------------------- 1 | require(__dirname).test({ 2 | xml: '<Р>тест', 3 | expect: [ 4 | ['opentag', {'name':'Р', attributes:{}, isSelfClosing: false}], 5 | ['text', 'тест'], 6 | ['closetag', 'Р'] 7 | ] 8 | }); 9 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/duplicate-attribute.js: -------------------------------------------------------------------------------- 1 | require(__dirname).test 2 | ( { xml : 3 | "" 4 | , expect : 5 | [ [ "attribute", { name: "ID", value: "hello" } ] 6 | , [ "opentag", { name: "SPAN", 7 | attributes: { ID: "hello" }, isSelfClosing: false } ] 8 | , [ "closetag", "SPAN" ] 9 | ] 10 | , strict : false 11 | , opt : {} 12 | } 13 | ) 14 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/emoji.js: -------------------------------------------------------------------------------- 1 | // split high-order numeric attributes into surrogate pairs 2 | require(__dirname).test 3 | ( { xml : '🔥' 4 | , expect : 5 | [ [ 'opentag', { name: 'A', attributes: {}, isSelfClosing: false } ] 6 | , [ 'text', '\ud83d\udd25' ] 7 | , [ 'closetag', 'A' ] 8 | ] 9 | , strict : false 10 | , opt : {} 11 | } 12 | ) 13 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/end_empty_stream.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | var saxStream = require('../lib/sax').createStream(); 3 | assert.doesNotThrow(function() { 4 | saxStream.end(); 5 | }); 6 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/entities.js: -------------------------------------------------------------------------------- 1 | require(__dirname).test({ 2 | xml: '⌋ ' + 3 | '♠ © → & ' + 4 | '< < < < < > ℜ ℘ €', 5 | expect: [ 6 | ['opentag', {'name':'R', attributes:{}, isSelfClosing: false}], 7 | ['text', '⌋ ♠ © → & < < < < < > ℜ ℘ €'], 8 | ['closetag', 'R'] 9 | ] 10 | }); 11 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/entity-mega.js: -------------------------------------------------------------------------------- 1 | var sax = require('../'); 2 | var xml = ''; 3 | var text = ''; 4 | for (var i in sax.ENTITIES) { 5 | xml += '&' + i + ';' 6 | text += sax.ENTITIES[i] 7 | } 8 | xml += '' 9 | require(__dirname).test({ 10 | xml: xml, 11 | expect: [ 12 | ['opentag', {'name':'R', attributes:{}, isSelfClosing: false}], 13 | ['text', text], 14 | ['closetag', 'R'] 15 | ] 16 | }); 17 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/flush.js: -------------------------------------------------------------------------------- 1 | var parser = require(__dirname).test({ 2 | expect: [ 3 | ['opentag', {'name':'T', attributes:{}, isSelfClosing: false}], 4 | ['text', 'flush'], 5 | ['text', 'rest'], 6 | ['closetag', 'T'], 7 | ] 8 | }); 9 | 10 | parser.write('flush'); 11 | parser.flush(); 12 | parser.write('rest'); 13 | parser.close(); 14 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/issue-30.js: -------------------------------------------------------------------------------- 1 | // https://github.com/isaacs/sax-js/issues/33 2 | require(__dirname).test 3 | ( { xml : "\n"+ 4 | "\n"+ 7 | "\n"+ 8 | "" 9 | 10 | , expect : 11 | [ [ "opentag", { name: "xml", attributes: {}, isSelfClosing: false } ] 12 | , [ "text", "\n" ] 13 | , [ "comment", " \n comment with a single dash- in it\n" ] 14 | , [ "text", "\n" ] 15 | , [ "opentag", { name: "data", attributes: {}, isSelfClosing: true } ] 16 | , [ "closetag", "data" ] 17 | , [ "text", "\n" ] 18 | , [ "closetag", "xml" ] 19 | ] 20 | , strict : true 21 | , opt : {} 22 | } 23 | ) 24 | 25 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/issue-35.js: -------------------------------------------------------------------------------- 1 | // https://github.com/isaacs/sax-js/issues/35 2 | require(__dirname).test 3 | ( { xml : " \n"+ 4 | "" 5 | 6 | , expect : 7 | [ [ "opentag", { name: "xml", attributes: {}, isSelfClosing: false } ] 8 | , [ "text", "\r\r\n" ] 9 | , [ "closetag", "xml" ] 10 | ] 11 | , strict : true 12 | , opt : {} 13 | } 14 | ) 15 | 16 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/issue-47.js: -------------------------------------------------------------------------------- 1 | // https://github.com/isaacs/sax-js/issues/47 2 | require(__dirname).test 3 | ( { xml : '' 4 | , expect : [ 5 | [ "attribute", { name:'HREF', value:"query.svc?x=1&y=2&z=3"} ], 6 | [ "opentag", { name: "A", attributes: { HREF:"query.svc?x=1&y=2&z=3"}, isSelfClosing: true } ], 7 | [ "closetag", "A" ] 8 | ] 9 | , opt : {} 10 | } 11 | ) 12 | 13 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/issue-84.js: -------------------------------------------------------------------------------- 1 | // https://github.com/isaacs/sax-js/issues/49 2 | require(__dirname).test 3 | ( { xml : "body" 4 | , expect : 5 | [ [ "processinginstruction", { name: "has", body: "unbalanced \"quotes" } ], 6 | [ "opentag", { name: "xml", attributes: {}, isSelfClosing: false } ] 7 | , [ "text", "body" ] 8 | , [ "closetag", "xml" ] 9 | ] 10 | , strict : false 11 | , opt : { lowercasetags: true, noscript: true } 12 | } 13 | ) 14 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/issue-86.js: -------------------------------------------------------------------------------- 1 | require(__dirname).test 2 | ( { xml : "abcdeabcde", 3 | expect : [ 4 | ["opentag", {"name": "HTML","attributes": {}, isSelfClosing: false}], 5 | ["opentag", {"name": "HEAD","attributes": {}, isSelfClosing: false}], 6 | ["opentag", {"name": "SCRIPT","attributes": {}, isSelfClosing: false}], 7 | ["script", "'

", 3 | expect : [ 4 | ["opentag", {"name": "HTML","attributes": {}, "isSelfClosing": false}], 5 | ["opentag", {"name": "HEAD","attributes": {}, "isSelfClosing": false}], 6 | ["opentag", {"name": "SCRIPT","attributes": {}, "isSelfClosing": false}], 7 | ["script", "if (1 < 0) { console.log('elo there'); }"], 8 | ["closetag", "SCRIPT"], 9 | ["closetag", "HEAD"], 10 | ["closetag", "HTML"] 11 | ] 12 | }); 13 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/self-closing-child-strict.js: -------------------------------------------------------------------------------- 1 | 2 | require(__dirname).test({ 3 | xml : 4 | ""+ 5 | "" + 6 | "" + 7 | "" + 8 | "" + 9 | "=(|)" + 10 | "" + 11 | "", 12 | expect : [ 13 | ["opentag", { 14 | "name": "root", 15 | "attributes": {}, 16 | "isSelfClosing": false 17 | }], 18 | ["opentag", { 19 | "name": "child", 20 | "attributes": {}, 21 | "isSelfClosing": false 22 | }], 23 | ["opentag", { 24 | "name": "haha", 25 | "attributes": {}, 26 | "isSelfClosing": true 27 | }], 28 | ["closetag", "haha"], 29 | ["closetag", "child"], 30 | ["opentag", { 31 | "name": "monkey", 32 | "attributes": {}, 33 | "isSelfClosing": false 34 | }], 35 | ["text", "=(|)"], 36 | ["closetag", "monkey"], 37 | ["closetag", "root"], 38 | ["end"], 39 | ["ready"] 40 | ], 41 | strict : true, 42 | opt : {} 43 | }); 44 | 45 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/self-closing-child.js: -------------------------------------------------------------------------------- 1 | 2 | require(__dirname).test({ 3 | xml : 4 | ""+ 5 | "" + 6 | "" + 7 | "" + 8 | "" + 9 | "=(|)" + 10 | "" + 11 | "", 12 | expect : [ 13 | ["opentag", { 14 | "name": "ROOT", 15 | "attributes": {}, 16 | "isSelfClosing": false 17 | }], 18 | ["opentag", { 19 | "name": "CHILD", 20 | "attributes": {}, 21 | "isSelfClosing": false 22 | }], 23 | ["opentag", { 24 | "name": "HAHA", 25 | "attributes": {}, 26 | "isSelfClosing": true 27 | }], 28 | ["closetag", "HAHA"], 29 | ["closetag", "CHILD"], 30 | ["opentag", { 31 | "name": "MONKEY", 32 | "attributes": {}, 33 | "isSelfClosing": false 34 | }], 35 | ["text", "=(|)"], 36 | ["closetag", "MONKEY"], 37 | ["closetag", "ROOT"], 38 | ["end"], 39 | ["ready"] 40 | ], 41 | strict : false, 42 | opt : {} 43 | }); 44 | 45 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/self-closing-tag.js: -------------------------------------------------------------------------------- 1 | 2 | require(__dirname).test({ 3 | xml : 4 | " "+ 5 | " "+ 6 | " "+ 7 | " "+ 8 | "=(|) "+ 9 | ""+ 10 | " ", 11 | expect : [ 12 | ["opentag", {name:"ROOT", attributes:{}, isSelfClosing: false}], 13 | ["opentag", {name:"HAHA", attributes:{}, isSelfClosing: true}], 14 | ["closetag", "HAHA"], 15 | ["opentag", {name:"HAHA", attributes:{}, isSelfClosing: true}], 16 | ["closetag", "HAHA"], 17 | // ["opentag", {name:"HAHA", attributes:{}}], 18 | // ["closetag", "HAHA"], 19 | ["opentag", {name:"MONKEY", attributes:{}, isSelfClosing: false}], 20 | ["text", "=(|)"], 21 | ["closetag", "MONKEY"], 22 | ["closetag", "ROOT"] 23 | ], 24 | opt : { trim : true } 25 | }); -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/stand-alone-comment.js: -------------------------------------------------------------------------------- 1 | // https://github.com/isaacs/sax-js/issues/124 2 | require(__dirname).test 3 | ( { xml : "" 4 | 5 | , expect : 6 | [ [ "comment", " stand alone comment " ] ] 7 | , strict : true 8 | , opt : {} 9 | } 10 | ) 11 | 12 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/stray-ending.js: -------------------------------------------------------------------------------- 1 | // stray ending tags should just be ignored in non-strict mode. 2 | // https://github.com/isaacs/sax-js/issues/32 3 | require(__dirname).test 4 | ( { xml : 5 | "" 6 | , expect : 7 | [ [ "opentag", { name: "A", attributes: {}, isSelfClosing: false } ] 8 | , [ "opentag", { name: "B", attributes: {}, isSelfClosing: false } ] 9 | , [ "text", "" ] 10 | , [ "closetag", "B" ] 11 | , [ "closetag", "A" ] 12 | ] 13 | , strict : false 14 | , opt : {} 15 | } 16 | ) 17 | 18 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/trailing-attribute-no-value.js: -------------------------------------------------------------------------------- 1 | 2 | require(__dirname).test({ 3 | xml : 4 | "", 5 | expect : [ 6 | ["attribute", {name:"ATTRIB", value:"attrib"}], 7 | ["opentag", {name:"ROOT", attributes:{"ATTRIB":"attrib"}, isSelfClosing: false}] 8 | ], 9 | opt : { trim : true } 10 | }); 11 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/trailing-non-whitespace.js: -------------------------------------------------------------------------------- 1 | 2 | require(__dirname).test({ 3 | xml : "Welcome, to monkey land", 4 | expect : [ 5 | ["opentag", { 6 | "name": "SPAN", 7 | "attributes": {}, 8 | isSelfClosing: false 9 | }], 10 | ["text", "Welcome,"], 11 | ["closetag", "SPAN"], 12 | ["text", " to monkey land"], 13 | ["end"], 14 | ["ready"] 15 | ], 16 | strict : false, 17 | opt : {} 18 | }); 19 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/unclosed-root.js: -------------------------------------------------------------------------------- 1 | require(__dirname).test 2 | ( { xml : "" 3 | 4 | , expect : 5 | [ [ "opentag", { name: "root", attributes: {}, isSelfClosing: false } ] 6 | , [ "error", "Unclosed root tag\nLine: 0\nColumn: 6\nChar: " ] 7 | ] 8 | , strict : true 9 | , opt : {} 10 | } 11 | ) 12 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/unquoted.js: -------------------------------------------------------------------------------- 1 | // unquoted attributes should be ok in non-strict mode 2 | // https://github.com/isaacs/sax-js/issues/31 3 | require(__dirname).test 4 | ( { xml : 5 | "" 6 | , expect : 7 | [ [ "attribute", { name: "CLASS", value: "test" } ] 8 | , [ "attribute", { name: "HELLO", value: "world" } ] 9 | , [ "opentag", { name: "SPAN", 10 | attributes: { CLASS: "test", HELLO: "world" }, 11 | isSelfClosing: false } ] 12 | , [ "closetag", "SPAN" ] 13 | ] 14 | , strict : false 15 | , opt : {} 16 | } 17 | ) 18 | 19 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/xml_entities.js: -------------------------------------------------------------------------------- 1 | require(__dirname).test({ 2 | opt: { strictEntities: true }, 3 | xml: '⌋ ' + 4 | '♠ © → & ' + 5 | '< < < < < > ℜ ℘ €', 6 | expect: [ 7 | ['opentag', {'name':'R', attributes:{}, isSelfClosing: false}], 8 | ['text', '⌋ ♠ © → & < < < < < > ℜ ℘ €'], 9 | ['closetag', 'R'] 10 | ] 11 | }); 12 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/xmlns-as-tag-name.js: -------------------------------------------------------------------------------- 1 | 2 | require(__dirname).test 3 | ( { xml : 4 | "" 5 | , expect : 6 | [ [ "opentag", { name: "xmlns", uri: "", prefix: "", local: "xmlns", 7 | attributes: {}, ns: {}, 8 | isSelfClosing: true} 9 | ], 10 | ["closetag", "xmlns"] 11 | ] 12 | , strict : true 13 | , opt : { xmlns: true } 14 | } 15 | ); 16 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/xmlns-unbound.js: -------------------------------------------------------------------------------- 1 | 2 | require(__dirname).test( 3 | { strict : true 4 | , opt : { xmlns: true } 5 | , expect : 6 | [ ["error", "Unbound namespace prefix: \"unbound\"\nLine: 0\nColumn: 28\nChar: >"] 7 | 8 | , [ "attribute", { name: "unbound:attr", value: "value", uri: "unbound", prefix: "unbound", local: "attr" } ] 9 | , [ "opentag", { name: "root", uri: "", prefix: "", local: "root", 10 | attributes: { "unbound:attr": { name: "unbound:attr", value: "value", uri: "unbound", prefix: "unbound", local: "attr" } }, 11 | ns: {}, isSelfClosing: true } ] 12 | , [ "closetag", "root" ] 13 | ] 14 | } 15 | ).write("") 16 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/xmlns-xml-default-prefix-attribute.js: -------------------------------------------------------------------------------- 1 | require(__dirname).test( 2 | { xml : "" 3 | , expect : 4 | [ [ "attribute" 5 | , { name: "xml:lang" 6 | , local: "lang" 7 | , prefix: "xml" 8 | , uri: "http://www.w3.org/XML/1998/namespace" 9 | , value: "en" 10 | } 11 | ] 12 | , [ "opentag" 13 | , { name: "root" 14 | , uri: "" 15 | , prefix: "" 16 | , local: "root" 17 | , attributes: 18 | { "xml:lang": 19 | { name: "xml:lang" 20 | , local: "lang" 21 | , prefix: "xml" 22 | , uri: "http://www.w3.org/XML/1998/namespace" 23 | , value: "en" 24 | } 25 | } 26 | , ns: {} 27 | , isSelfClosing: true 28 | } 29 | ] 30 | , ["closetag", "root"] 31 | ] 32 | , strict : true 33 | , opt : { xmlns: true } 34 | } 35 | ) 36 | 37 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/sax/test/xmlns-xml-default-prefix.js: -------------------------------------------------------------------------------- 1 | require(__dirname).test( 2 | { xml : "" 3 | , expect : 4 | [ 5 | [ "opentag" 6 | , { name: "xml:root" 7 | , uri: "http://www.w3.org/XML/1998/namespace" 8 | , prefix: "xml" 9 | , local: "root" 10 | , attributes: {} 11 | , ns: {} 12 | , isSelfClosing: true 13 | } 14 | ] 15 | , ["closetag", "xml:root"] 16 | ] 17 | , strict : true 18 | , opt : { xmlns: true } 19 | } 20 | ) 21 | 22 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/.npmignore: -------------------------------------------------------------------------------- 1 | .travis.yml 2 | src 3 | test 4 | perf 5 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/lib/index.js: -------------------------------------------------------------------------------- 1 | // Generated by CoffeeScript 1.9.1 2 | (function() { 3 | var XMLBuilder, assign; 4 | 5 | assign = require('lodash/object/assign'); 6 | 7 | XMLBuilder = require('./XMLBuilder'); 8 | 9 | module.exports.create = function(name, xmldec, doctype, options) { 10 | options = assign({}, xmldec, doctype, options); 11 | return new XMLBuilder(name, options).root(); 12 | }; 13 | 14 | }).call(this); 15 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/array/compact.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Creates an array with all falsey values removed. The values `false`, `null`, 3 | * `0`, `""`, `undefined`, and `NaN` are falsey. 4 | * 5 | * @static 6 | * @memberOf _ 7 | * @category Array 8 | * @param {Array} array The array to compact. 9 | * @returns {Array} Returns the new array of filtered values. 10 | * @example 11 | * 12 | * _.compact([0, 1, false, 2, '', 3]); 13 | * // => [1, 2, 3] 14 | */ 15 | function compact(array) { 16 | var index = -1, 17 | length = array ? array.length : 0, 18 | resIndex = -1, 19 | result = []; 20 | 21 | while (++index < length) { 22 | var value = array[index]; 23 | if (value) { 24 | result[++resIndex] = value; 25 | } 26 | } 27 | return result; 28 | } 29 | 30 | module.exports = compact; 31 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/array/first.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Gets the first element of `array`. 3 | * 4 | * @static 5 | * @memberOf _ 6 | * @alias head 7 | * @category Array 8 | * @param {Array} array The array to query. 9 | * @returns {*} Returns the first element of `array`. 10 | * @example 11 | * 12 | * _.first([1, 2, 3]); 13 | * // => 1 14 | * 15 | * _.first([]); 16 | * // => undefined 17 | */ 18 | function first(array) { 19 | return array ? array[0] : undefined; 20 | } 21 | 22 | module.exports = first; 23 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/array/flattenDeep.js: -------------------------------------------------------------------------------- 1 | var baseFlatten = require('../internal/baseFlatten'); 2 | 3 | /** 4 | * Recursively flattens a nested array. 5 | * 6 | * @static 7 | * @memberOf _ 8 | * @category Array 9 | * @param {Array} array The array to recursively flatten. 10 | * @returns {Array} Returns the new flattened array. 11 | * @example 12 | * 13 | * _.flattenDeep([1, [2, 3, [4]]]); 14 | * // => [1, 2, 3, 4] 15 | */ 16 | function flattenDeep(array) { 17 | var length = array ? array.length : 0; 18 | return length ? baseFlatten(array, true) : []; 19 | } 20 | 21 | module.exports = flattenDeep; 22 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/array/head.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./first'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/array/initial.js: -------------------------------------------------------------------------------- 1 | var dropRight = require('./dropRight'); 2 | 3 | /** 4 | * Gets all but the last element of `array`. 5 | * 6 | * @static 7 | * @memberOf _ 8 | * @category Array 9 | * @param {Array} array The array to query. 10 | * @returns {Array} Returns the slice of `array`. 11 | * @example 12 | * 13 | * _.initial([1, 2, 3]); 14 | * // => [1, 2] 15 | */ 16 | function initial(array) { 17 | return dropRight(array, 1); 18 | } 19 | 20 | module.exports = initial; 21 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/array/last.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Gets the last element of `array`. 3 | * 4 | * @static 5 | * @memberOf _ 6 | * @category Array 7 | * @param {Array} array The array to query. 8 | * @returns {*} Returns the last element of `array`. 9 | * @example 10 | * 11 | * _.last([1, 2, 3]); 12 | * // => 3 13 | */ 14 | function last(array) { 15 | var length = array ? array.length : 0; 16 | return length ? array[length - 1] : undefined; 17 | } 18 | 19 | module.exports = last; 20 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/array/object.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./zipObject'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/array/rest.js: -------------------------------------------------------------------------------- 1 | var drop = require('./drop'); 2 | 3 | /** 4 | * Gets all but the first element of `array`. 5 | * 6 | * @static 7 | * @memberOf _ 8 | * @alias tail 9 | * @category Array 10 | * @param {Array} array The array to query. 11 | * @returns {Array} Returns the slice of `array`. 12 | * @example 13 | * 14 | * _.rest([1, 2, 3]); 15 | * // => [2, 3] 16 | */ 17 | function rest(array) { 18 | return drop(array, 1); 19 | } 20 | 21 | module.exports = rest; 22 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/array/sortedLastIndex.js: -------------------------------------------------------------------------------- 1 | var createSortedIndex = require('../internal/createSortedIndex'); 2 | 3 | /** 4 | * This method is like `_.sortedIndex` except that it returns the highest 5 | * index at which `value` should be inserted into `array` in order to 6 | * maintain its sort order. 7 | * 8 | * @static 9 | * @memberOf _ 10 | * @category Array 11 | * @param {Array} array The sorted array to inspect. 12 | * @param {*} value The value to evaluate. 13 | * @param {Function|Object|string} [iteratee=_.identity] The function invoked 14 | * per iteration. 15 | * @param {*} [thisArg] The `this` binding of `iteratee`. 16 | * @returns {number} Returns the index at which `value` should be inserted 17 | * into `array`. 18 | * @example 19 | * 20 | * _.sortedLastIndex([4, 4, 5, 5], 5); 21 | * // => 4 22 | */ 23 | var sortedLastIndex = createSortedIndex(true); 24 | 25 | module.exports = sortedLastIndex; 26 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/array/tail.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./rest'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/array/union.js: -------------------------------------------------------------------------------- 1 | var baseFlatten = require('../internal/baseFlatten'), 2 | baseUniq = require('../internal/baseUniq'), 3 | restParam = require('../function/restParam'); 4 | 5 | /** 6 | * Creates an array of unique values, in order, from all of the provided arrays 7 | * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) 8 | * for equality comparisons. 9 | * 10 | * @static 11 | * @memberOf _ 12 | * @category Array 13 | * @param {...Array} [arrays] The arrays to inspect. 14 | * @returns {Array} Returns the new array of combined values. 15 | * @example 16 | * 17 | * _.union([1, 2], [4, 2], [2, 1]); 18 | * // => [1, 2, 4] 19 | */ 20 | var union = restParam(function(arrays) { 21 | return baseUniq(baseFlatten(arrays, false, true)); 22 | }); 23 | 24 | module.exports = union; 25 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/array/unique.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./uniq'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/array/without.js: -------------------------------------------------------------------------------- 1 | var baseDifference = require('../internal/baseDifference'), 2 | isArrayLike = require('../internal/isArrayLike'), 3 | restParam = require('../function/restParam'); 4 | 5 | /** 6 | * Creates an array excluding all provided values using 7 | * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) 8 | * for equality comparisons. 9 | * 10 | * @static 11 | * @memberOf _ 12 | * @category Array 13 | * @param {Array} array The array to filter. 14 | * @param {...*} [values] The values to exclude. 15 | * @returns {Array} Returns the new array of filtered values. 16 | * @example 17 | * 18 | * _.without([1, 2, 1, 3], 1, 2); 19 | * // => [3] 20 | */ 21 | var without = restParam(function(array, values) { 22 | return isArrayLike(array) 23 | ? baseDifference(array, values) 24 | : []; 25 | }); 26 | 27 | module.exports = without; 28 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/array/zip.js: -------------------------------------------------------------------------------- 1 | var restParam = require('../function/restParam'), 2 | unzip = require('./unzip'); 3 | 4 | /** 5 | * Creates an array of grouped elements, the first of which contains the first 6 | * elements of the given arrays, the second of which contains the second elements 7 | * of the given arrays, and so on. 8 | * 9 | * @static 10 | * @memberOf _ 11 | * @category Array 12 | * @param {...Array} [arrays] The arrays to process. 13 | * @returns {Array} Returns the new array of grouped elements. 14 | * @example 15 | * 16 | * _.zip(['fred', 'barney'], [30, 40], [true, false]); 17 | * // => [['fred', 30, true], ['barney', 40, false]] 18 | */ 19 | var zip = restParam(unzip); 20 | 21 | module.exports = zip; 22 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/chain.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'chain': require('./chain/chain'), 3 | 'commit': require('./chain/commit'), 4 | 'concat': require('./chain/concat'), 5 | 'lodash': require('./chain/lodash'), 6 | 'plant': require('./chain/plant'), 7 | 'reverse': require('./chain/reverse'), 8 | 'run': require('./chain/run'), 9 | 'tap': require('./chain/tap'), 10 | 'thru': require('./chain/thru'), 11 | 'toJSON': require('./chain/toJSON'), 12 | 'toString': require('./chain/toString'), 13 | 'value': require('./chain/value'), 14 | 'valueOf': require('./chain/valueOf'), 15 | 'wrapperChain': require('./chain/wrapperChain') 16 | }; 17 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/chain/chain.js: -------------------------------------------------------------------------------- 1 | var lodash = require('./lodash'); 2 | 3 | /** 4 | * Creates a `lodash` object that wraps `value` with explicit method 5 | * chaining enabled. 6 | * 7 | * @static 8 | * @memberOf _ 9 | * @category Chain 10 | * @param {*} value The value to wrap. 11 | * @returns {Object} Returns the new `lodash` wrapper instance. 12 | * @example 13 | * 14 | * var users = [ 15 | * { 'user': 'barney', 'age': 36 }, 16 | * { 'user': 'fred', 'age': 40 }, 17 | * { 'user': 'pebbles', 'age': 1 } 18 | * ]; 19 | * 20 | * var youngest = _.chain(users) 21 | * .sortBy('age') 22 | * .map(function(chr) { 23 | * return chr.user + ' is ' + chr.age; 24 | * }) 25 | * .first() 26 | * .value(); 27 | * // => 'pebbles is 1' 28 | */ 29 | function chain(value) { 30 | var result = lodash(value); 31 | result.__chain__ = true; 32 | return result; 33 | } 34 | 35 | module.exports = chain; 36 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/chain/commit.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./wrapperCommit'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/chain/concat.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./wrapperConcat'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/chain/plant.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./wrapperPlant'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/chain/reverse.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./wrapperReverse'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/chain/run.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./wrapperValue'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/chain/tap.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This method invokes `interceptor` and returns `value`. The interceptor is 3 | * bound to `thisArg` and invoked with one argument; (value). The purpose of 4 | * this method is to "tap into" a method chain in order to perform operations 5 | * on intermediate results within the chain. 6 | * 7 | * @static 8 | * @memberOf _ 9 | * @category Chain 10 | * @param {*} value The value to provide to `interceptor`. 11 | * @param {Function} interceptor The function to invoke. 12 | * @param {*} [thisArg] The `this` binding of `interceptor`. 13 | * @returns {*} Returns `value`. 14 | * @example 15 | * 16 | * _([1, 2, 3]) 17 | * .tap(function(array) { 18 | * array.pop(); 19 | * }) 20 | * .reverse() 21 | * .value(); 22 | * // => [2, 1] 23 | */ 24 | function tap(value, interceptor, thisArg) { 25 | interceptor.call(thisArg, value); 26 | return value; 27 | } 28 | 29 | module.exports = tap; 30 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/chain/thru.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This method is like `_.tap` except that it returns the result of `interceptor`. 3 | * 4 | * @static 5 | * @memberOf _ 6 | * @category Chain 7 | * @param {*} value The value to provide to `interceptor`. 8 | * @param {Function} interceptor The function to invoke. 9 | * @param {*} [thisArg] The `this` binding of `interceptor`. 10 | * @returns {*} Returns the result of `interceptor`. 11 | * @example 12 | * 13 | * _(' abc ') 14 | * .chain() 15 | * .trim() 16 | * .thru(function(value) { 17 | * return [value]; 18 | * }) 19 | * .value(); 20 | * // => ['abc'] 21 | */ 22 | function thru(value, interceptor, thisArg) { 23 | return interceptor.call(thisArg, value); 24 | } 25 | 26 | module.exports = thru; 27 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/chain/toJSON.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./wrapperValue'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/chain/toString.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./wrapperToString'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/chain/value.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./wrapperValue'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/chain/valueOf.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./wrapperValue'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperChain.js: -------------------------------------------------------------------------------- 1 | var chain = require('./chain'); 2 | 3 | /** 4 | * Enables explicit method chaining on the wrapper object. 5 | * 6 | * @name chain 7 | * @memberOf _ 8 | * @category Chain 9 | * @returns {Object} Returns the new `lodash` wrapper instance. 10 | * @example 11 | * 12 | * var users = [ 13 | * { 'user': 'barney', 'age': 36 }, 14 | * { 'user': 'fred', 'age': 40 } 15 | * ]; 16 | * 17 | * // without explicit chaining 18 | * _(users).first(); 19 | * // => { 'user': 'barney', 'age': 36 } 20 | * 21 | * // with explicit chaining 22 | * _(users).chain() 23 | * .first() 24 | * .pick('user') 25 | * .value(); 26 | * // => { 'user': 'barney' } 27 | */ 28 | function wrapperChain() { 29 | return chain(this); 30 | } 31 | 32 | module.exports = wrapperChain; 33 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperCommit.js: -------------------------------------------------------------------------------- 1 | var LodashWrapper = require('../internal/LodashWrapper'); 2 | 3 | /** 4 | * Executes the chained sequence and returns the wrapped result. 5 | * 6 | * @name commit 7 | * @memberOf _ 8 | * @category Chain 9 | * @returns {Object} Returns the new `lodash` wrapper instance. 10 | * @example 11 | * 12 | * var array = [1, 2]; 13 | * var wrapped = _(array).push(3); 14 | * 15 | * console.log(array); 16 | * // => [1, 2] 17 | * 18 | * wrapped = wrapped.commit(); 19 | * console.log(array); 20 | * // => [1, 2, 3] 21 | * 22 | * wrapped.last(); 23 | * // => 3 24 | * 25 | * console.log(array); 26 | * // => [1, 2, 3] 27 | */ 28 | function wrapperCommit() { 29 | return new LodashWrapper(this.value(), this.__chain__); 30 | } 31 | 32 | module.exports = wrapperCommit; 33 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperToString.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Produces the result of coercing the unwrapped value to a string. 3 | * 4 | * @name toString 5 | * @memberOf _ 6 | * @category Chain 7 | * @returns {string} Returns the coerced string value. 8 | * @example 9 | * 10 | * _([1, 2, 3]).toString(); 11 | * // => '1,2,3' 12 | */ 13 | function wrapperToString() { 14 | return (this.value() + ''); 15 | } 16 | 17 | module.exports = wrapperToString; 18 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperValue.js: -------------------------------------------------------------------------------- 1 | var baseWrapperValue = require('../internal/baseWrapperValue'); 2 | 3 | /** 4 | * Executes the chained sequence to extract the unwrapped value. 5 | * 6 | * @name value 7 | * @memberOf _ 8 | * @alias run, toJSON, valueOf 9 | * @category Chain 10 | * @returns {*} Returns the resolved unwrapped value. 11 | * @example 12 | * 13 | * _([1, 2, 3]).value(); 14 | * // => [1, 2, 3] 15 | */ 16 | function wrapperValue() { 17 | return baseWrapperValue(this.__wrapped__, this.__actions__); 18 | } 19 | 20 | module.exports = wrapperValue; 21 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/collection/all.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./every'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/collection/any.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./some'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/collection/collect.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./map'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/collection/contains.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./includes'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/collection/detect.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./find'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/collection/each.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./forEach'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/collection/eachRight.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./forEachRight'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/collection/findLast.js: -------------------------------------------------------------------------------- 1 | var baseEachRight = require('../internal/baseEachRight'), 2 | createFind = require('../internal/createFind'); 3 | 4 | /** 5 | * This method is like `_.find` except that it iterates over elements of 6 | * `collection` from right to left. 7 | * 8 | * @static 9 | * @memberOf _ 10 | * @category Collection 11 | * @param {Array|Object|string} collection The collection to search. 12 | * @param {Function|Object|string} [predicate=_.identity] The function invoked 13 | * per iteration. 14 | * @param {*} [thisArg] The `this` binding of `predicate`. 15 | * @returns {*} Returns the matched element, else `undefined`. 16 | * @example 17 | * 18 | * _.findLast([1, 2, 3, 4], function(n) { 19 | * return n % 2 == 1; 20 | * }); 21 | * // => 3 22 | */ 23 | var findLast = createFind(baseEachRight, true); 24 | 25 | module.exports = findLast; 26 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/collection/foldl.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./reduce'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/collection/foldr.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./reduceRight'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/collection/include.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./includes'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/collection/inject.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./reduce'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/collection/max.js: -------------------------------------------------------------------------------- 1 | module.exports = require('../math/max'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/collection/min.js: -------------------------------------------------------------------------------- 1 | module.exports = require('../math/min'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/collection/pluck.js: -------------------------------------------------------------------------------- 1 | var map = require('./map'), 2 | property = require('../utility/property'); 3 | 4 | /** 5 | * Gets the property value of `path` from all elements in `collection`. 6 | * 7 | * @static 8 | * @memberOf _ 9 | * @category Collection 10 | * @param {Array|Object|string} collection The collection to iterate over. 11 | * @param {Array|string} path The path of the property to pluck. 12 | * @returns {Array} Returns the property values. 13 | * @example 14 | * 15 | * var users = [ 16 | * { 'user': 'barney', 'age': 36 }, 17 | * { 'user': 'fred', 'age': 40 } 18 | * ]; 19 | * 20 | * _.pluck(users, 'user'); 21 | * // => ['barney', 'fred'] 22 | * 23 | * var userIndex = _.indexBy(users, 'user'); 24 | * _.pluck(userIndex, 'age'); 25 | * // => [36, 40] (iteration order is not guaranteed) 26 | */ 27 | function pluck(collection, path) { 28 | return map(collection, property(path)); 29 | } 30 | 31 | module.exports = pluck; 32 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/collection/select.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./filter'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/collection/shuffle.js: -------------------------------------------------------------------------------- 1 | var sample = require('./sample'); 2 | 3 | /** Used as references for `-Infinity` and `Infinity`. */ 4 | var POSITIVE_INFINITY = Number.POSITIVE_INFINITY; 5 | 6 | /** 7 | * Creates an array of shuffled values, using a version of the 8 | * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). 9 | * 10 | * @static 11 | * @memberOf _ 12 | * @category Collection 13 | * @param {Array|Object|string} collection The collection to shuffle. 14 | * @returns {Array} Returns the new shuffled array. 15 | * @example 16 | * 17 | * _.shuffle([1, 2, 3, 4]); 18 | * // => [4, 1, 3, 2] 19 | */ 20 | function shuffle(collection) { 21 | return sample(collection, POSITIVE_INFINITY); 22 | } 23 | 24 | module.exports = shuffle; 25 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/collection/size.js: -------------------------------------------------------------------------------- 1 | var getLength = require('../internal/getLength'), 2 | isLength = require('../internal/isLength'), 3 | keys = require('../object/keys'); 4 | 5 | /** 6 | * Gets the size of `collection` by returning its length for array-like 7 | * values or the number of own enumerable properties for objects. 8 | * 9 | * @static 10 | * @memberOf _ 11 | * @category Collection 12 | * @param {Array|Object|string} collection The collection to inspect. 13 | * @returns {number} Returns the size of `collection`. 14 | * @example 15 | * 16 | * _.size([1, 2, 3]); 17 | * // => 3 18 | * 19 | * _.size({ 'a': 1, 'b': 2 }); 20 | * // => 2 21 | * 22 | * _.size('pebbles'); 23 | * // => 7 24 | */ 25 | function size(collection) { 26 | var length = collection ? getLength(collection) : 0; 27 | return isLength(length) ? length : keys(collection).length; 28 | } 29 | 30 | module.exports = size; 31 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/collection/sum.js: -------------------------------------------------------------------------------- 1 | module.exports = require('../math/sum'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/date.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'now': require('./date/now') 3 | }; 4 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/date/now.js: -------------------------------------------------------------------------------- 1 | var getNative = require('../internal/getNative'); 2 | 3 | /* Native method references for those with the same name as other `lodash` methods. */ 4 | var nativeNow = getNative(Date, 'now'); 5 | 6 | /** 7 | * Gets the number of milliseconds that have elapsed since the Unix epoch 8 | * (1 January 1970 00:00:00 UTC). 9 | * 10 | * @static 11 | * @memberOf _ 12 | * @category Date 13 | * @example 14 | * 15 | * _.defer(function(stamp) { 16 | * console.log(_.now() - stamp); 17 | * }, _.now()); 18 | * // => logs the number of milliseconds it took for the deferred function to be invoked 19 | */ 20 | var now = nativeNow || function() { 21 | return new Date().getTime(); 22 | }; 23 | 24 | module.exports = now; 25 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/function/backflow.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./flowRight'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/function/compose.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./flowRight'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/function/defer.js: -------------------------------------------------------------------------------- 1 | var baseDelay = require('../internal/baseDelay'), 2 | restParam = require('./restParam'); 3 | 4 | /** 5 | * Defers invoking the `func` until the current call stack has cleared. Any 6 | * additional arguments are provided to `func` when it's invoked. 7 | * 8 | * @static 9 | * @memberOf _ 10 | * @category Function 11 | * @param {Function} func The function to defer. 12 | * @param {...*} [args] The arguments to invoke the function with. 13 | * @returns {number} Returns the timer id. 14 | * @example 15 | * 16 | * _.defer(function(text) { 17 | * console.log(text); 18 | * }, 'deferred'); 19 | * // logs 'deferred' after one or more milliseconds 20 | */ 21 | var defer = restParam(function(func, args) { 22 | return baseDelay(func, 1, args); 23 | }); 24 | 25 | module.exports = defer; 26 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/function/delay.js: -------------------------------------------------------------------------------- 1 | var baseDelay = require('../internal/baseDelay'), 2 | restParam = require('./restParam'); 3 | 4 | /** 5 | * Invokes `func` after `wait` milliseconds. Any additional arguments are 6 | * provided to `func` when it's invoked. 7 | * 8 | * @static 9 | * @memberOf _ 10 | * @category Function 11 | * @param {Function} func The function to delay. 12 | * @param {number} wait The number of milliseconds to delay invocation. 13 | * @param {...*} [args] The arguments to invoke the function with. 14 | * @returns {number} Returns the timer id. 15 | * @example 16 | * 17 | * _.delay(function(text) { 18 | * console.log(text); 19 | * }, 1000, 'later'); 20 | * // => logs 'later' after one second 21 | */ 22 | var delay = restParam(function(func, wait, args) { 23 | return baseDelay(func, wait, args); 24 | }); 25 | 26 | module.exports = delay; 27 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/function/flow.js: -------------------------------------------------------------------------------- 1 | var createFlow = require('../internal/createFlow'); 2 | 3 | /** 4 | * Creates a function that returns the result of invoking the provided 5 | * functions with the `this` binding of the created function, where each 6 | * successive invocation is supplied the return value of the previous. 7 | * 8 | * @static 9 | * @memberOf _ 10 | * @category Function 11 | * @param {...Function} [funcs] Functions to invoke. 12 | * @returns {Function} Returns the new function. 13 | * @example 14 | * 15 | * function square(n) { 16 | * return n * n; 17 | * } 18 | * 19 | * var addSquare = _.flow(_.add, square); 20 | * addSquare(1, 2); 21 | * // => 9 22 | */ 23 | var flow = createFlow(); 24 | 25 | module.exports = flow; 26 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/function/flowRight.js: -------------------------------------------------------------------------------- 1 | var createFlow = require('../internal/createFlow'); 2 | 3 | /** 4 | * This method is like `_.flow` except that it creates a function that 5 | * invokes the provided functions from right to left. 6 | * 7 | * @static 8 | * @memberOf _ 9 | * @alias backflow, compose 10 | * @category Function 11 | * @param {...Function} [funcs] Functions to invoke. 12 | * @returns {Function} Returns the new function. 13 | * @example 14 | * 15 | * function square(n) { 16 | * return n * n; 17 | * } 18 | * 19 | * var addSquare = _.flowRight(square, _.add); 20 | * addSquare(1, 2); 21 | * // => 9 22 | */ 23 | var flowRight = createFlow(true); 24 | 25 | module.exports = flowRight; 26 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/function/negate.js: -------------------------------------------------------------------------------- 1 | /** Used as the `TypeError` message for "Functions" methods. */ 2 | var FUNC_ERROR_TEXT = 'Expected a function'; 3 | 4 | /** 5 | * Creates a function that negates the result of the predicate `func`. The 6 | * `func` predicate is invoked with the `this` binding and arguments of the 7 | * created function. 8 | * 9 | * @static 10 | * @memberOf _ 11 | * @category Function 12 | * @param {Function} predicate The predicate to negate. 13 | * @returns {Function} Returns the new function. 14 | * @example 15 | * 16 | * function isEven(n) { 17 | * return n % 2 == 0; 18 | * } 19 | * 20 | * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); 21 | * // => [1, 3, 5] 22 | */ 23 | function negate(predicate) { 24 | if (typeof predicate != 'function') { 25 | throw new TypeError(FUNC_ERROR_TEXT); 26 | } 27 | return function() { 28 | return !predicate.apply(this, arguments); 29 | }; 30 | } 31 | 32 | module.exports = negate; 33 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/function/once.js: -------------------------------------------------------------------------------- 1 | var before = require('./before'); 2 | 3 | /** 4 | * Creates a function that is restricted to invoking `func` once. Repeat calls 5 | * to the function return the value of the first call. The `func` is invoked 6 | * with the `this` binding and arguments of the created function. 7 | * 8 | * @static 9 | * @memberOf _ 10 | * @category Function 11 | * @param {Function} func The function to restrict. 12 | * @returns {Function} Returns the new restricted function. 13 | * @example 14 | * 15 | * var initialize = _.once(createApplication); 16 | * initialize(); 17 | * initialize(); 18 | * // `initialize` invokes `createApplication` once 19 | */ 20 | function once(func) { 21 | return before(2, func); 22 | } 23 | 24 | module.exports = once; 25 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/LazyWrapper.js: -------------------------------------------------------------------------------- 1 | var baseCreate = require('./baseCreate'), 2 | baseLodash = require('./baseLodash'); 3 | 4 | /** Used as references for `-Infinity` and `Infinity`. */ 5 | var POSITIVE_INFINITY = Number.POSITIVE_INFINITY; 6 | 7 | /** 8 | * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. 9 | * 10 | * @private 11 | * @param {*} value The value to wrap. 12 | */ 13 | function LazyWrapper(value) { 14 | this.__wrapped__ = value; 15 | this.__actions__ = []; 16 | this.__dir__ = 1; 17 | this.__filtered__ = false; 18 | this.__iteratees__ = []; 19 | this.__takeCount__ = POSITIVE_INFINITY; 20 | this.__views__ = []; 21 | } 22 | 23 | LazyWrapper.prototype = baseCreate(baseLodash.prototype); 24 | LazyWrapper.prototype.constructor = LazyWrapper; 25 | 26 | module.exports = LazyWrapper; 27 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/LodashWrapper.js: -------------------------------------------------------------------------------- 1 | var baseCreate = require('./baseCreate'), 2 | baseLodash = require('./baseLodash'); 3 | 4 | /** 5 | * The base constructor for creating `lodash` wrapper objects. 6 | * 7 | * @private 8 | * @param {*} value The value to wrap. 9 | * @param {boolean} [chainAll] Enable chaining for all wrapper methods. 10 | * @param {Array} [actions=[]] Actions to peform to resolve the unwrapped value. 11 | */ 12 | function LodashWrapper(value, chainAll, actions) { 13 | this.__wrapped__ = value; 14 | this.__actions__ = actions || []; 15 | this.__chain__ = !!chainAll; 16 | } 17 | 18 | LodashWrapper.prototype = baseCreate(baseLodash.prototype); 19 | LodashWrapper.prototype.constructor = LodashWrapper; 20 | 21 | module.exports = LodashWrapper; 22 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/MapCache.js: -------------------------------------------------------------------------------- 1 | var mapDelete = require('./mapDelete'), 2 | mapGet = require('./mapGet'), 3 | mapHas = require('./mapHas'), 4 | mapSet = require('./mapSet'); 5 | 6 | /** 7 | * Creates a cache object to store key/value pairs. 8 | * 9 | * @private 10 | * @static 11 | * @name Cache 12 | * @memberOf _.memoize 13 | */ 14 | function MapCache() { 15 | this.__data__ = {}; 16 | } 17 | 18 | // Add functions to the `Map` cache. 19 | MapCache.prototype['delete'] = mapDelete; 20 | MapCache.prototype.get = mapGet; 21 | MapCache.prototype.has = mapHas; 22 | MapCache.prototype.set = mapSet; 23 | 24 | module.exports = MapCache; 25 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/SetCache.js: -------------------------------------------------------------------------------- 1 | var cachePush = require('./cachePush'), 2 | getNative = require('./getNative'); 3 | 4 | /** Native method references. */ 5 | var Set = getNative(global, 'Set'); 6 | 7 | /* Native method references for those with the same name as other `lodash` methods. */ 8 | var nativeCreate = getNative(Object, 'create'); 9 | 10 | /** 11 | * 12 | * Creates a cache object to store unique values. 13 | * 14 | * @private 15 | * @param {Array} [values] The values to cache. 16 | */ 17 | function SetCache(values) { 18 | var length = values ? values.length : 0; 19 | 20 | this.data = { 'hash': nativeCreate(null), 'set': new Set }; 21 | while (length--) { 22 | this.push(values[length]); 23 | } 24 | } 25 | 26 | // Add functions to the `Set` cache. 27 | SetCache.prototype.push = cachePush; 28 | 29 | module.exports = SetCache; 30 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/arrayConcat.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Creates a new array joining `array` with `other`. 3 | * 4 | * @private 5 | * @param {Array} array The array to join. 6 | * @param {Array} other The other array to join. 7 | * @returns {Array} Returns the new concatenated array. 8 | */ 9 | function arrayConcat(array, other) { 10 | var index = -1, 11 | length = array.length, 12 | othIndex = -1, 13 | othLength = other.length, 14 | result = Array(length + othLength); 15 | 16 | while (++index < length) { 17 | result[index] = array[index]; 18 | } 19 | while (++othIndex < othLength) { 20 | result[index++] = other[othIndex]; 21 | } 22 | return result; 23 | } 24 | 25 | module.exports = arrayConcat; 26 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/arrayCopy.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copies the values of `source` to `array`. 3 | * 4 | * @private 5 | * @param {Array} source The array to copy values from. 6 | * @param {Array} [array=[]] The array to copy values to. 7 | * @returns {Array} Returns `array`. 8 | */ 9 | function arrayCopy(source, array) { 10 | var index = -1, 11 | length = source.length; 12 | 13 | array || (array = Array(length)); 14 | while (++index < length) { 15 | array[index] = source[index]; 16 | } 17 | return array; 18 | } 19 | 20 | module.exports = arrayCopy; 21 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/arrayEach.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A specialized version of `_.forEach` for arrays without support for callback 3 | * shorthands and `this` binding. 4 | * 5 | * @private 6 | * @param {Array} array The array to iterate over. 7 | * @param {Function} iteratee The function invoked per iteration. 8 | * @returns {Array} Returns `array`. 9 | */ 10 | function arrayEach(array, iteratee) { 11 | var index = -1, 12 | length = array.length; 13 | 14 | while (++index < length) { 15 | if (iteratee(array[index], index, array) === false) { 16 | break; 17 | } 18 | } 19 | return array; 20 | } 21 | 22 | module.exports = arrayEach; 23 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/arrayEachRight.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A specialized version of `_.forEachRight` for arrays without support for 3 | * callback shorthands and `this` binding. 4 | * 5 | * @private 6 | * @param {Array} array The array to iterate over. 7 | * @param {Function} iteratee The function invoked per iteration. 8 | * @returns {Array} Returns `array`. 9 | */ 10 | function arrayEachRight(array, iteratee) { 11 | var length = array.length; 12 | 13 | while (length--) { 14 | if (iteratee(array[length], length, array) === false) { 15 | break; 16 | } 17 | } 18 | return array; 19 | } 20 | 21 | module.exports = arrayEachRight; 22 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/arrayEvery.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A specialized version of `_.every` for arrays without support for callback 3 | * shorthands and `this` binding. 4 | * 5 | * @private 6 | * @param {Array} array The array to iterate over. 7 | * @param {Function} predicate The function invoked per iteration. 8 | * @returns {boolean} Returns `true` if all elements pass the predicate check, 9 | * else `false`. 10 | */ 11 | function arrayEvery(array, predicate) { 12 | var index = -1, 13 | length = array.length; 14 | 15 | while (++index < length) { 16 | if (!predicate(array[index], index, array)) { 17 | return false; 18 | } 19 | } 20 | return true; 21 | } 22 | 23 | module.exports = arrayEvery; 24 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/arrayExtremum.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A specialized version of `baseExtremum` for arrays which invokes `iteratee` 3 | * with one argument: (value). 4 | * 5 | * @private 6 | * @param {Array} array The array to iterate over. 7 | * @param {Function} iteratee The function invoked per iteration. 8 | * @param {Function} comparator The function used to compare values. 9 | * @param {*} exValue The initial extremum value. 10 | * @returns {*} Returns the extremum value. 11 | */ 12 | function arrayExtremum(array, iteratee, comparator, exValue) { 13 | var index = -1, 14 | length = array.length, 15 | computed = exValue, 16 | result = computed; 17 | 18 | while (++index < length) { 19 | var value = array[index], 20 | current = +iteratee(value); 21 | 22 | if (comparator(current, computed)) { 23 | computed = current; 24 | result = value; 25 | } 26 | } 27 | return result; 28 | } 29 | 30 | module.exports = arrayExtremum; 31 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/arrayFilter.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A specialized version of `_.filter` for arrays without support for callback 3 | * shorthands and `this` binding. 4 | * 5 | * @private 6 | * @param {Array} array The array to iterate over. 7 | * @param {Function} predicate The function invoked per iteration. 8 | * @returns {Array} Returns the new filtered array. 9 | */ 10 | function arrayFilter(array, predicate) { 11 | var index = -1, 12 | length = array.length, 13 | resIndex = -1, 14 | result = []; 15 | 16 | while (++index < length) { 17 | var value = array[index]; 18 | if (predicate(value, index, array)) { 19 | result[++resIndex] = value; 20 | } 21 | } 22 | return result; 23 | } 24 | 25 | module.exports = arrayFilter; 26 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/arrayMap.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A specialized version of `_.map` for arrays without support for callback 3 | * shorthands and `this` binding. 4 | * 5 | * @private 6 | * @param {Array} array The array to iterate over. 7 | * @param {Function} iteratee The function invoked per iteration. 8 | * @returns {Array} Returns the new mapped array. 9 | */ 10 | function arrayMap(array, iteratee) { 11 | var index = -1, 12 | length = array.length, 13 | result = Array(length); 14 | 15 | while (++index < length) { 16 | result[index] = iteratee(array[index], index, array); 17 | } 18 | return result; 19 | } 20 | 21 | module.exports = arrayMap; 22 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/arrayPush.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Appends the elements of `values` to `array`. 3 | * 4 | * @private 5 | * @param {Array} array The array to modify. 6 | * @param {Array} values The values to append. 7 | * @returns {Array} Returns `array`. 8 | */ 9 | function arrayPush(array, values) { 10 | var index = -1, 11 | length = values.length, 12 | offset = array.length; 13 | 14 | while (++index < length) { 15 | array[offset + index] = values[index]; 16 | } 17 | return array; 18 | } 19 | 20 | module.exports = arrayPush; 21 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/arrayReduce.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A specialized version of `_.reduce` for arrays without support for callback 3 | * shorthands and `this` binding. 4 | * 5 | * @private 6 | * @param {Array} array The array to iterate over. 7 | * @param {Function} iteratee The function invoked per iteration. 8 | * @param {*} [accumulator] The initial value. 9 | * @param {boolean} [initFromArray] Specify using the first element of `array` 10 | * as the initial value. 11 | * @returns {*} Returns the accumulated value. 12 | */ 13 | function arrayReduce(array, iteratee, accumulator, initFromArray) { 14 | var index = -1, 15 | length = array.length; 16 | 17 | if (initFromArray && length) { 18 | accumulator = array[++index]; 19 | } 20 | while (++index < length) { 21 | accumulator = iteratee(accumulator, array[index], index, array); 22 | } 23 | return accumulator; 24 | } 25 | 26 | module.exports = arrayReduce; 27 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/arrayReduceRight.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A specialized version of `_.reduceRight` for arrays without support for 3 | * callback shorthands and `this` binding. 4 | * 5 | * @private 6 | * @param {Array} array The array to iterate over. 7 | * @param {Function} iteratee The function invoked per iteration. 8 | * @param {*} [accumulator] The initial value. 9 | * @param {boolean} [initFromArray] Specify using the last element of `array` 10 | * as the initial value. 11 | * @returns {*} Returns the accumulated value. 12 | */ 13 | function arrayReduceRight(array, iteratee, accumulator, initFromArray) { 14 | var length = array.length; 15 | if (initFromArray && length) { 16 | accumulator = array[--length]; 17 | } 18 | while (length--) { 19 | accumulator = iteratee(accumulator, array[length], length, array); 20 | } 21 | return accumulator; 22 | } 23 | 24 | module.exports = arrayReduceRight; 25 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/arraySome.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A specialized version of `_.some` for arrays without support for callback 3 | * shorthands and `this` binding. 4 | * 5 | * @private 6 | * @param {Array} array The array to iterate over. 7 | * @param {Function} predicate The function invoked per iteration. 8 | * @returns {boolean} Returns `true` if any element passes the predicate check, 9 | * else `false`. 10 | */ 11 | function arraySome(array, predicate) { 12 | var index = -1, 13 | length = array.length; 14 | 15 | while (++index < length) { 16 | if (predicate(array[index], index, array)) { 17 | return true; 18 | } 19 | } 20 | return false; 21 | } 22 | 23 | module.exports = arraySome; 24 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/arraySum.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A specialized version of `_.sum` for arrays without support for callback 3 | * shorthands and `this` binding.. 4 | * 5 | * @private 6 | * @param {Array} array The array to iterate over. 7 | * @param {Function} iteratee The function invoked per iteration. 8 | * @returns {number} Returns the sum. 9 | */ 10 | function arraySum(array, iteratee) { 11 | var length = array.length, 12 | result = 0; 13 | 14 | while (length--) { 15 | result += +iteratee(array[length]) || 0; 16 | } 17 | return result; 18 | } 19 | 20 | module.exports = arraySum; 21 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/assignDefaults.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Used by `_.defaults` to customize its `_.assign` use. 3 | * 4 | * @private 5 | * @param {*} objectValue The destination object property value. 6 | * @param {*} sourceValue The source object property value. 7 | * @returns {*} Returns the value to assign to the destination object. 8 | */ 9 | function assignDefaults(objectValue, sourceValue) { 10 | return objectValue === undefined ? sourceValue : objectValue; 11 | } 12 | 13 | module.exports = assignDefaults; 14 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseAssign.js: -------------------------------------------------------------------------------- 1 | var baseCopy = require('./baseCopy'), 2 | keys = require('../object/keys'); 3 | 4 | /** 5 | * The base implementation of `_.assign` without support for argument juggling, 6 | * multiple sources, and `customizer` functions. 7 | * 8 | * @private 9 | * @param {Object} object The destination object. 10 | * @param {Object} source The source object. 11 | * @returns {Object} Returns `object`. 12 | */ 13 | function baseAssign(object, source) { 14 | return source == null 15 | ? object 16 | : baseCopy(source, keys(source), object); 17 | } 18 | 19 | module.exports = baseAssign; 20 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseCopy.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copies properties of `source` to `object`. 3 | * 4 | * @private 5 | * @param {Object} source The object to copy properties from. 6 | * @param {Array} props The property names to copy. 7 | * @param {Object} [object={}] The object to copy properties to. 8 | * @returns {Object} Returns `object`. 9 | */ 10 | function baseCopy(source, props, object) { 11 | object || (object = {}); 12 | 13 | var index = -1, 14 | length = props.length; 15 | 16 | while (++index < length) { 17 | var key = props[index]; 18 | object[key] = source[key]; 19 | } 20 | return object; 21 | } 22 | 23 | module.exports = baseCopy; 24 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseCreate.js: -------------------------------------------------------------------------------- 1 | var isObject = require('../lang/isObject'); 2 | 3 | /** 4 | * The base implementation of `_.create` without support for assigning 5 | * properties to the created object. 6 | * 7 | * @private 8 | * @param {Object} prototype The object to inherit from. 9 | * @returns {Object} Returns the new object. 10 | */ 11 | var baseCreate = (function() { 12 | function object() {} 13 | return function(prototype) { 14 | if (isObject(prototype)) { 15 | object.prototype = prototype; 16 | var result = new object; 17 | object.prototype = undefined; 18 | } 19 | return result || {}; 20 | }; 21 | }()); 22 | 23 | module.exports = baseCreate; 24 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseDelay.js: -------------------------------------------------------------------------------- 1 | /** Used as the `TypeError` message for "Functions" methods. */ 2 | var FUNC_ERROR_TEXT = 'Expected a function'; 3 | 4 | /** 5 | * The base implementation of `_.delay` and `_.defer` which accepts an index 6 | * of where to slice the arguments to provide to `func`. 7 | * 8 | * @private 9 | * @param {Function} func The function to delay. 10 | * @param {number} wait The number of milliseconds to delay invocation. 11 | * @param {Object} args The arguments provide to `func`. 12 | * @returns {number} Returns the timer id. 13 | */ 14 | function baseDelay(func, wait, args) { 15 | if (typeof func != 'function') { 16 | throw new TypeError(FUNC_ERROR_TEXT); 17 | } 18 | return setTimeout(function() { func.apply(undefined, args); }, wait); 19 | } 20 | 21 | module.exports = baseDelay; 22 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseEach.js: -------------------------------------------------------------------------------- 1 | var baseForOwn = require('./baseForOwn'), 2 | createBaseEach = require('./createBaseEach'); 3 | 4 | /** 5 | * The base implementation of `_.forEach` without support for callback 6 | * shorthands and `this` binding. 7 | * 8 | * @private 9 | * @param {Array|Object|string} collection The collection to iterate over. 10 | * @param {Function} iteratee The function invoked per iteration. 11 | * @returns {Array|Object|string} Returns `collection`. 12 | */ 13 | var baseEach = createBaseEach(baseForOwn); 14 | 15 | module.exports = baseEach; 16 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseEachRight.js: -------------------------------------------------------------------------------- 1 | var baseForOwnRight = require('./baseForOwnRight'), 2 | createBaseEach = require('./createBaseEach'); 3 | 4 | /** 5 | * The base implementation of `_.forEachRight` without support for callback 6 | * shorthands and `this` binding. 7 | * 8 | * @private 9 | * @param {Array|Object|string} collection The collection to iterate over. 10 | * @param {Function} iteratee The function invoked per iteration. 11 | * @returns {Array|Object|string} Returns `collection`. 12 | */ 13 | var baseEachRight = createBaseEach(baseForOwnRight, true); 14 | 15 | module.exports = baseEachRight; 16 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseEvery.js: -------------------------------------------------------------------------------- 1 | var baseEach = require('./baseEach'); 2 | 3 | /** 4 | * The base implementation of `_.every` without support for callback 5 | * shorthands and `this` binding. 6 | * 7 | * @private 8 | * @param {Array|Object|string} collection The collection to iterate over. 9 | * @param {Function} predicate The function invoked per iteration. 10 | * @returns {boolean} Returns `true` if all elements pass the predicate check, 11 | * else `false` 12 | */ 13 | function baseEvery(collection, predicate) { 14 | var result = true; 15 | baseEach(collection, function(value, index, collection) { 16 | result = !!predicate(value, index, collection); 17 | return result; 18 | }); 19 | return result; 20 | } 21 | 22 | module.exports = baseEvery; 23 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseFill.js: -------------------------------------------------------------------------------- 1 | /** 2 | * The base implementation of `_.fill` without an iteratee call guard. 3 | * 4 | * @private 5 | * @param {Array} array The array to fill. 6 | * @param {*} value The value to fill `array` with. 7 | * @param {number} [start=0] The start position. 8 | * @param {number} [end=array.length] The end position. 9 | * @returns {Array} Returns `array`. 10 | */ 11 | function baseFill(array, value, start, end) { 12 | var length = array.length; 13 | 14 | start = start == null ? 0 : (+start || 0); 15 | if (start < 0) { 16 | start = -start > length ? 0 : (length + start); 17 | } 18 | end = (end === undefined || end > length) ? length : (+end || 0); 19 | if (end < 0) { 20 | end += length; 21 | } 22 | length = start > end ? 0 : (end >>> 0); 23 | start >>>= 0; 24 | 25 | while (start < length) { 26 | array[start++] = value; 27 | } 28 | return array; 29 | } 30 | 31 | module.exports = baseFill; 32 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseFilter.js: -------------------------------------------------------------------------------- 1 | var baseEach = require('./baseEach'); 2 | 3 | /** 4 | * The base implementation of `_.filter` without support for callback 5 | * shorthands and `this` binding. 6 | * 7 | * @private 8 | * @param {Array|Object|string} collection The collection to iterate over. 9 | * @param {Function} predicate The function invoked per iteration. 10 | * @returns {Array} Returns the new filtered array. 11 | */ 12 | function baseFilter(collection, predicate) { 13 | var result = []; 14 | baseEach(collection, function(value, index, collection) { 15 | if (predicate(value, index, collection)) { 16 | result.push(value); 17 | } 18 | }); 19 | return result; 20 | } 21 | 22 | module.exports = baseFilter; 23 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseFindIndex.js: -------------------------------------------------------------------------------- 1 | /** 2 | * The base implementation of `_.findIndex` and `_.findLastIndex` without 3 | * support for callback shorthands and `this` binding. 4 | * 5 | * @private 6 | * @param {Array} array The array to search. 7 | * @param {Function} predicate The function invoked per iteration. 8 | * @param {boolean} [fromRight] Specify iterating from right to left. 9 | * @returns {number} Returns the index of the matched value, else `-1`. 10 | */ 11 | function baseFindIndex(array, predicate, fromRight) { 12 | var length = array.length, 13 | index = fromRight ? length : -1; 14 | 15 | while ((fromRight ? index-- : ++index < length)) { 16 | if (predicate(array[index], index, array)) { 17 | return index; 18 | } 19 | } 20 | return -1; 21 | } 22 | 23 | module.exports = baseFindIndex; 24 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseFor.js: -------------------------------------------------------------------------------- 1 | var createBaseFor = require('./createBaseFor'); 2 | 3 | /** 4 | * The base implementation of `baseForIn` and `baseForOwn` which iterates 5 | * over `object` properties returned by `keysFunc` invoking `iteratee` for 6 | * each property. Iteratee functions may exit iteration early by explicitly 7 | * returning `false`. 8 | * 9 | * @private 10 | * @param {Object} object The object to iterate over. 11 | * @param {Function} iteratee The function invoked per iteration. 12 | * @param {Function} keysFunc The function to get the keys of `object`. 13 | * @returns {Object} Returns `object`. 14 | */ 15 | var baseFor = createBaseFor(); 16 | 17 | module.exports = baseFor; 18 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseForIn.js: -------------------------------------------------------------------------------- 1 | var baseFor = require('./baseFor'), 2 | keysIn = require('../object/keysIn'); 3 | 4 | /** 5 | * The base implementation of `_.forIn` without support for callback 6 | * shorthands and `this` binding. 7 | * 8 | * @private 9 | * @param {Object} object The object to iterate over. 10 | * @param {Function} iteratee The function invoked per iteration. 11 | * @returns {Object} Returns `object`. 12 | */ 13 | function baseForIn(object, iteratee) { 14 | return baseFor(object, iteratee, keysIn); 15 | } 16 | 17 | module.exports = baseForIn; 18 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseForOwn.js: -------------------------------------------------------------------------------- 1 | var baseFor = require('./baseFor'), 2 | keys = require('../object/keys'); 3 | 4 | /** 5 | * The base implementation of `_.forOwn` without support for callback 6 | * shorthands and `this` binding. 7 | * 8 | * @private 9 | * @param {Object} object The object to iterate over. 10 | * @param {Function} iteratee The function invoked per iteration. 11 | * @returns {Object} Returns `object`. 12 | */ 13 | function baseForOwn(object, iteratee) { 14 | return baseFor(object, iteratee, keys); 15 | } 16 | 17 | module.exports = baseForOwn; 18 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseForOwnRight.js: -------------------------------------------------------------------------------- 1 | var baseForRight = require('./baseForRight'), 2 | keys = require('../object/keys'); 3 | 4 | /** 5 | * The base implementation of `_.forOwnRight` without support for callback 6 | * shorthands and `this` binding. 7 | * 8 | * @private 9 | * @param {Object} object The object to iterate over. 10 | * @param {Function} iteratee The function invoked per iteration. 11 | * @returns {Object} Returns `object`. 12 | */ 13 | function baseForOwnRight(object, iteratee) { 14 | return baseForRight(object, iteratee, keys); 15 | } 16 | 17 | module.exports = baseForOwnRight; 18 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseForRight.js: -------------------------------------------------------------------------------- 1 | var createBaseFor = require('./createBaseFor'); 2 | 3 | /** 4 | * This function is like `baseFor` except that it iterates over properties 5 | * in the opposite order. 6 | * 7 | * @private 8 | * @param {Object} object The object to iterate over. 9 | * @param {Function} iteratee The function invoked per iteration. 10 | * @param {Function} keysFunc The function to get the keys of `object`. 11 | * @returns {Object} Returns `object`. 12 | */ 13 | var baseForRight = createBaseFor(true); 14 | 15 | module.exports = baseForRight; 16 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseFunctions.js: -------------------------------------------------------------------------------- 1 | var isFunction = require('../lang/isFunction'); 2 | 3 | /** 4 | * The base implementation of `_.functions` which creates an array of 5 | * `object` function property names filtered from those provided. 6 | * 7 | * @private 8 | * @param {Object} object The object to inspect. 9 | * @param {Array} props The property names to filter. 10 | * @returns {Array} Returns the new array of filtered property names. 11 | */ 12 | function baseFunctions(object, props) { 13 | var index = -1, 14 | length = props.length, 15 | resIndex = -1, 16 | result = []; 17 | 18 | while (++index < length) { 19 | var key = props[index]; 20 | if (isFunction(object[key])) { 21 | result[++resIndex] = key; 22 | } 23 | } 24 | return result; 25 | } 26 | 27 | module.exports = baseFunctions; 28 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseGet.js: -------------------------------------------------------------------------------- 1 | var toObject = require('./toObject'); 2 | 3 | /** 4 | * The base implementation of `get` without support for string paths 5 | * and default values. 6 | * 7 | * @private 8 | * @param {Object} object The object to query. 9 | * @param {Array} path The path of the property to get. 10 | * @param {string} [pathKey] The key representation of path. 11 | * @returns {*} Returns the resolved value. 12 | */ 13 | function baseGet(object, path, pathKey) { 14 | if (object == null) { 15 | return; 16 | } 17 | if (pathKey !== undefined && pathKey in toObject(object)) { 18 | path = [pathKey]; 19 | } 20 | var index = 0, 21 | length = path.length; 22 | 23 | while (object != null && index < length) { 24 | object = object[path[index++]]; 25 | } 26 | return (index && index == length) ? object : undefined; 27 | } 28 | 29 | module.exports = baseGet; 30 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseIndexOf.js: -------------------------------------------------------------------------------- 1 | var indexOfNaN = require('./indexOfNaN'); 2 | 3 | /** 4 | * The base implementation of `_.indexOf` without support for binary searches. 5 | * 6 | * @private 7 | * @param {Array} array The array to search. 8 | * @param {*} value The value to search for. 9 | * @param {number} fromIndex The index to search from. 10 | * @returns {number} Returns the index of the matched value, else `-1`. 11 | */ 12 | function baseIndexOf(array, value, fromIndex) { 13 | if (value !== value) { 14 | return indexOfNaN(array, fromIndex); 15 | } 16 | var index = fromIndex - 1, 17 | length = array.length; 18 | 19 | while (++index < length) { 20 | if (array[index] === value) { 21 | return index; 22 | } 23 | } 24 | return -1; 25 | } 26 | 27 | module.exports = baseIndexOf; 28 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseIsFunction.js: -------------------------------------------------------------------------------- 1 | /** 2 | * The base implementation of `_.isFunction` without support for environments 3 | * with incorrect `typeof` results. 4 | * 5 | * @private 6 | * @param {*} value The value to check. 7 | * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. 8 | */ 9 | function baseIsFunction(value) { 10 | // Avoid a Chakra JIT bug in compatibility modes of IE 11. 11 | // See https://github.com/jashkenas/underscore/issues/1621 for more details. 12 | return typeof value == 'function' || false; 13 | } 14 | 15 | module.exports = baseIsFunction; 16 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseLodash.js: -------------------------------------------------------------------------------- 1 | /** 2 | * The function whose prototype all chaining wrappers inherit from. 3 | * 4 | * @private 5 | */ 6 | function baseLodash() { 7 | // No operation performed. 8 | } 9 | 10 | module.exports = baseLodash; 11 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseMap.js: -------------------------------------------------------------------------------- 1 | var baseEach = require('./baseEach'), 2 | isArrayLike = require('./isArrayLike'); 3 | 4 | /** 5 | * The base implementation of `_.map` without support for callback shorthands 6 | * and `this` binding. 7 | * 8 | * @private 9 | * @param {Array|Object|string} collection The collection to iterate over. 10 | * @param {Function} iteratee The function invoked per iteration. 11 | * @returns {Array} Returns the new mapped array. 12 | */ 13 | function baseMap(collection, iteratee) { 14 | var index = -1, 15 | result = isArrayLike(collection) ? Array(collection.length) : []; 16 | 17 | baseEach(collection, function(value, key, collection) { 18 | result[++index] = iteratee(value, key, collection); 19 | }); 20 | return result; 21 | } 22 | 23 | module.exports = baseMap; 24 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseMatches.js: -------------------------------------------------------------------------------- 1 | var baseIsMatch = require('./baseIsMatch'), 2 | getMatchData = require('./getMatchData'), 3 | toObject = require('./toObject'); 4 | 5 | /** 6 | * The base implementation of `_.matches` which does not clone `source`. 7 | * 8 | * @private 9 | * @param {Object} source The object of property values to match. 10 | * @returns {Function} Returns the new function. 11 | */ 12 | function baseMatches(source) { 13 | var matchData = getMatchData(source); 14 | if (matchData.length == 1 && matchData[0][2]) { 15 | var key = matchData[0][0], 16 | value = matchData[0][1]; 17 | 18 | return function(object) { 19 | if (object == null) { 20 | return false; 21 | } 22 | return object[key] === value && (value !== undefined || (key in toObject(object))); 23 | }; 24 | } 25 | return function(object) { 26 | return baseIsMatch(object, matchData); 27 | }; 28 | } 29 | 30 | module.exports = baseMatches; 31 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseProperty.js: -------------------------------------------------------------------------------- 1 | /** 2 | * The base implementation of `_.property` without support for deep paths. 3 | * 4 | * @private 5 | * @param {string} key The key of the property to get. 6 | * @returns {Function} Returns the new function. 7 | */ 8 | function baseProperty(key) { 9 | return function(object) { 10 | return object == null ? undefined : object[key]; 11 | }; 12 | } 13 | 14 | module.exports = baseProperty; 15 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/basePropertyDeep.js: -------------------------------------------------------------------------------- 1 | var baseGet = require('./baseGet'), 2 | toPath = require('./toPath'); 3 | 4 | /** 5 | * A specialized version of `baseProperty` which supports deep paths. 6 | * 7 | * @private 8 | * @param {Array|string} path The path of the property to get. 9 | * @returns {Function} Returns the new function. 10 | */ 11 | function basePropertyDeep(path) { 12 | var pathKey = (path + ''); 13 | path = toPath(path); 14 | return function(object) { 15 | return baseGet(object, path, pathKey); 16 | }; 17 | } 18 | 19 | module.exports = basePropertyDeep; 20 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/basePullAt.js: -------------------------------------------------------------------------------- 1 | var isIndex = require('./isIndex'); 2 | 3 | /** Used for native method references. */ 4 | var arrayProto = Array.prototype; 5 | 6 | /** Native method references. */ 7 | var splice = arrayProto.splice; 8 | 9 | /** 10 | * The base implementation of `_.pullAt` without support for individual 11 | * index arguments and capturing the removed elements. 12 | * 13 | * @private 14 | * @param {Array} array The array to modify. 15 | * @param {number[]} indexes The indexes of elements to remove. 16 | * @returns {Array} Returns `array`. 17 | */ 18 | function basePullAt(array, indexes) { 19 | var length = array ? indexes.length : 0; 20 | while (length--) { 21 | var index = indexes[length]; 22 | if (index != previous && isIndex(index)) { 23 | var previous = index; 24 | splice.call(array, index, 1); 25 | } 26 | } 27 | return array; 28 | } 29 | 30 | module.exports = basePullAt; 31 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseRandom.js: -------------------------------------------------------------------------------- 1 | /* Native method references for those with the same name as other `lodash` methods. */ 2 | var nativeFloor = Math.floor, 3 | nativeRandom = Math.random; 4 | 5 | /** 6 | * The base implementation of `_.random` without support for argument juggling 7 | * and returning floating-point numbers. 8 | * 9 | * @private 10 | * @param {number} min The minimum possible value. 11 | * @param {number} max The maximum possible value. 12 | * @returns {number} Returns the random number. 13 | */ 14 | function baseRandom(min, max) { 15 | return min + nativeFloor(nativeRandom() * (max - min + 1)); 16 | } 17 | 18 | module.exports = baseRandom; 19 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseSetData.js: -------------------------------------------------------------------------------- 1 | var identity = require('../utility/identity'), 2 | metaMap = require('./metaMap'); 3 | 4 | /** 5 | * The base implementation of `setData` without support for hot loop detection. 6 | * 7 | * @private 8 | * @param {Function} func The function to associate metadata with. 9 | * @param {*} data The metadata. 10 | * @returns {Function} Returns `func`. 11 | */ 12 | var baseSetData = !metaMap ? identity : function(func, data) { 13 | metaMap.set(func, data); 14 | return func; 15 | }; 16 | 17 | module.exports = baseSetData; 18 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseSlice.js: -------------------------------------------------------------------------------- 1 | /** 2 | * The base implementation of `_.slice` without an iteratee call guard. 3 | * 4 | * @private 5 | * @param {Array} array The array to slice. 6 | * @param {number} [start=0] The start position. 7 | * @param {number} [end=array.length] The end position. 8 | * @returns {Array} Returns the slice of `array`. 9 | */ 10 | function baseSlice(array, start, end) { 11 | var index = -1, 12 | length = array.length; 13 | 14 | start = start == null ? 0 : (+start || 0); 15 | if (start < 0) { 16 | start = -start > length ? 0 : (length + start); 17 | } 18 | end = (end === undefined || end > length) ? length : (+end || 0); 19 | if (end < 0) { 20 | end += length; 21 | } 22 | length = start > end ? 0 : ((end - start) >>> 0); 23 | start >>>= 0; 24 | 25 | var result = Array(length); 26 | while (++index < length) { 27 | result[index] = array[index + start]; 28 | } 29 | return result; 30 | } 31 | 32 | module.exports = baseSlice; 33 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseSome.js: -------------------------------------------------------------------------------- 1 | var baseEach = require('./baseEach'); 2 | 3 | /** 4 | * The base implementation of `_.some` without support for callback shorthands 5 | * and `this` binding. 6 | * 7 | * @private 8 | * @param {Array|Object|string} collection The collection to iterate over. 9 | * @param {Function} predicate The function invoked per iteration. 10 | * @returns {boolean} Returns `true` if any element passes the predicate check, 11 | * else `false`. 12 | */ 13 | function baseSome(collection, predicate) { 14 | var result; 15 | 16 | baseEach(collection, function(value, index, collection) { 17 | result = predicate(value, index, collection); 18 | return !result; 19 | }); 20 | return !!result; 21 | } 22 | 23 | module.exports = baseSome; 24 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseSortBy.js: -------------------------------------------------------------------------------- 1 | /** 2 | * The base implementation of `_.sortBy` which uses `comparer` to define 3 | * the sort order of `array` and replaces criteria objects with their 4 | * corresponding values. 5 | * 6 | * @private 7 | * @param {Array} array The array to sort. 8 | * @param {Function} comparer The function to define sort order. 9 | * @returns {Array} Returns `array`. 10 | */ 11 | function baseSortBy(array, comparer) { 12 | var length = array.length; 13 | 14 | array.sort(comparer); 15 | while (length--) { 16 | array[length] = array[length].value; 17 | } 18 | return array; 19 | } 20 | 21 | module.exports = baseSortBy; 22 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseSum.js: -------------------------------------------------------------------------------- 1 | var baseEach = require('./baseEach'); 2 | 3 | /** 4 | * The base implementation of `_.sum` without support for callback shorthands 5 | * and `this` binding. 6 | * 7 | * @private 8 | * @param {Array|Object|string} collection The collection to iterate over. 9 | * @param {Function} iteratee The function invoked per iteration. 10 | * @returns {number} Returns the sum. 11 | */ 12 | function baseSum(collection, iteratee) { 13 | var result = 0; 14 | baseEach(collection, function(value, index, collection) { 15 | result += +iteratee(value, index, collection) || 0; 16 | }); 17 | return result; 18 | } 19 | 20 | module.exports = baseSum; 21 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseToString.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Converts `value` to a string if it's not one. An empty string is returned 3 | * for `null` or `undefined` values. 4 | * 5 | * @private 6 | * @param {*} value The value to process. 7 | * @returns {string} Returns the string. 8 | */ 9 | function baseToString(value) { 10 | return value == null ? '' : (value + ''); 11 | } 12 | 13 | module.exports = baseToString; 14 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/baseValues.js: -------------------------------------------------------------------------------- 1 | /** 2 | * The base implementation of `_.values` and `_.valuesIn` which creates an 3 | * array of `object` property values corresponding to the property names 4 | * of `props`. 5 | * 6 | * @private 7 | * @param {Object} object The object to query. 8 | * @param {Array} props The property names to get values for. 9 | * @returns {Object} Returns the array of property values. 10 | */ 11 | function baseValues(object, props) { 12 | var index = -1, 13 | length = props.length, 14 | result = Array(length); 15 | 16 | while (++index < length) { 17 | result[index] = object[props[index]]; 18 | } 19 | return result; 20 | } 21 | 22 | module.exports = baseValues; 23 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/bufferClone.js: -------------------------------------------------------------------------------- 1 | /** Native method references. */ 2 | var ArrayBuffer = global.ArrayBuffer, 3 | Uint8Array = global.Uint8Array; 4 | 5 | /** 6 | * Creates a clone of the given array buffer. 7 | * 8 | * @private 9 | * @param {ArrayBuffer} buffer The array buffer to clone. 10 | * @returns {ArrayBuffer} Returns the cloned array buffer. 11 | */ 12 | function bufferClone(buffer) { 13 | var result = new ArrayBuffer(buffer.byteLength), 14 | view = new Uint8Array(result); 15 | 16 | view.set(new Uint8Array(buffer)); 17 | return result; 18 | } 19 | 20 | module.exports = bufferClone; 21 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/cacheIndexOf.js: -------------------------------------------------------------------------------- 1 | var isObject = require('../lang/isObject'); 2 | 3 | /** 4 | * Checks if `value` is in `cache` mimicking the return signature of 5 | * `_.indexOf` by returning `0` if the value is found, else `-1`. 6 | * 7 | * @private 8 | * @param {Object} cache The cache to search. 9 | * @param {*} value The value to search for. 10 | * @returns {number} Returns `0` if `value` is found, else `-1`. 11 | */ 12 | function cacheIndexOf(cache, value) { 13 | var data = cache.data, 14 | result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value]; 15 | 16 | return result ? 0 : -1; 17 | } 18 | 19 | module.exports = cacheIndexOf; 20 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/cachePush.js: -------------------------------------------------------------------------------- 1 | var isObject = require('../lang/isObject'); 2 | 3 | /** 4 | * Adds `value` to the cache. 5 | * 6 | * @private 7 | * @name push 8 | * @memberOf SetCache 9 | * @param {*} value The value to cache. 10 | */ 11 | function cachePush(value) { 12 | var data = this.data; 13 | if (typeof value == 'string' || isObject(value)) { 14 | data.set.add(value); 15 | } else { 16 | data.hash[value] = true; 17 | } 18 | } 19 | 20 | module.exports = cachePush; 21 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/charsLeftIndex.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Used by `_.trim` and `_.trimLeft` to get the index of the first character 3 | * of `string` that is not found in `chars`. 4 | * 5 | * @private 6 | * @param {string} string The string to inspect. 7 | * @param {string} chars The characters to find. 8 | * @returns {number} Returns the index of the first character not found in `chars`. 9 | */ 10 | function charsLeftIndex(string, chars) { 11 | var index = -1, 12 | length = string.length; 13 | 14 | while (++index < length && chars.indexOf(string.charAt(index)) > -1) {} 15 | return index; 16 | } 17 | 18 | module.exports = charsLeftIndex; 19 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/charsRightIndex.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Used by `_.trim` and `_.trimRight` to get the index of the last character 3 | * of `string` that is not found in `chars`. 4 | * 5 | * @private 6 | * @param {string} string The string to inspect. 7 | * @param {string} chars The characters to find. 8 | * @returns {number} Returns the index of the last character not found in `chars`. 9 | */ 10 | function charsRightIndex(string, chars) { 11 | var index = string.length; 12 | 13 | while (index-- && chars.indexOf(string.charAt(index)) > -1) {} 14 | return index; 15 | } 16 | 17 | module.exports = charsRightIndex; 18 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/compareAscending.js: -------------------------------------------------------------------------------- 1 | var baseCompareAscending = require('./baseCompareAscending'); 2 | 3 | /** 4 | * Used by `_.sortBy` to compare transformed elements of a collection and stable 5 | * sort them in ascending order. 6 | * 7 | * @private 8 | * @param {Object} object The object to compare. 9 | * @param {Object} other The other object to compare. 10 | * @returns {number} Returns the sort order indicator for `object`. 11 | */ 12 | function compareAscending(object, other) { 13 | return baseCompareAscending(object.criteria, other.criteria) || (object.index - other.index); 14 | } 15 | 16 | module.exports = compareAscending; 17 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/createBaseFor.js: -------------------------------------------------------------------------------- 1 | var toObject = require('./toObject'); 2 | 3 | /** 4 | * Creates a base function for `_.forIn` or `_.forInRight`. 5 | * 6 | * @private 7 | * @param {boolean} [fromRight] Specify iterating from right to left. 8 | * @returns {Function} Returns the new base function. 9 | */ 10 | function createBaseFor(fromRight) { 11 | return function(object, iteratee, keysFunc) { 12 | var iterable = toObject(object), 13 | props = keysFunc(object), 14 | length = props.length, 15 | index = fromRight ? length : -1; 16 | 17 | while ((fromRight ? index-- : ++index < length)) { 18 | var key = props[index]; 19 | if (iteratee(iterable[key], key, iterable) === false) { 20 | break; 21 | } 22 | } 23 | return object; 24 | }; 25 | } 26 | 27 | module.exports = createBaseFor; 28 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/createBindWrapper.js: -------------------------------------------------------------------------------- 1 | var createCtorWrapper = require('./createCtorWrapper'); 2 | 3 | /** 4 | * Creates a function that wraps `func` and invokes it with the `this` 5 | * binding of `thisArg`. 6 | * 7 | * @private 8 | * @param {Function} func The function to bind. 9 | * @param {*} [thisArg] The `this` binding of `func`. 10 | * @returns {Function} Returns the new bound function. 11 | */ 12 | function createBindWrapper(func, thisArg) { 13 | var Ctor = createCtorWrapper(func); 14 | 15 | function wrapper() { 16 | var fn = (this && this !== global && this instanceof wrapper) ? Ctor : func; 17 | return fn.apply(thisArg, arguments); 18 | } 19 | return wrapper; 20 | } 21 | 22 | module.exports = createBindWrapper; 23 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/createCache.js: -------------------------------------------------------------------------------- 1 | var SetCache = require('./SetCache'), 2 | getNative = require('./getNative'); 3 | 4 | /** Native method references. */ 5 | var Set = getNative(global, 'Set'); 6 | 7 | /* Native method references for those with the same name as other `lodash` methods. */ 8 | var nativeCreate = getNative(Object, 'create'); 9 | 10 | /** 11 | * Creates a `Set` cache object to optimize linear searches of large arrays. 12 | * 13 | * @private 14 | * @param {Array} [values] The values to cache. 15 | * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`. 16 | */ 17 | function createCache(values) { 18 | return (nativeCreate && Set) ? new SetCache(values) : null; 19 | } 20 | 21 | module.exports = createCache; 22 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/createCompounder.js: -------------------------------------------------------------------------------- 1 | var deburr = require('../string/deburr'), 2 | words = require('../string/words'); 3 | 4 | /** 5 | * Creates a function that produces compound words out of the words in a 6 | * given string. 7 | * 8 | * @private 9 | * @param {Function} callback The function to combine each word. 10 | * @returns {Function} Returns the new compounder function. 11 | */ 12 | function createCompounder(callback) { 13 | return function(string) { 14 | var index = -1, 15 | array = words(deburr(string)), 16 | length = array.length, 17 | result = ''; 18 | 19 | while (++index < length) { 20 | result = callback(result, array[index], index); 21 | } 22 | return result; 23 | }; 24 | } 25 | 26 | module.exports = createCompounder; 27 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/createCurry.js: -------------------------------------------------------------------------------- 1 | var createWrapper = require('./createWrapper'), 2 | isIterateeCall = require('./isIterateeCall'); 3 | 4 | /** 5 | * Creates a `_.curry` or `_.curryRight` function. 6 | * 7 | * @private 8 | * @param {boolean} flag The curry bit flag. 9 | * @returns {Function} Returns the new curry function. 10 | */ 11 | function createCurry(flag) { 12 | function curryFunc(func, arity, guard) { 13 | if (guard && isIterateeCall(func, arity, guard)) { 14 | arity = undefined; 15 | } 16 | var result = createWrapper(func, flag, undefined, undefined, undefined, undefined, undefined, arity); 17 | result.placeholder = curryFunc.placeholder; 18 | return result; 19 | } 20 | return curryFunc; 21 | } 22 | 23 | module.exports = createCurry; 24 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/createDefaults.js: -------------------------------------------------------------------------------- 1 | var restParam = require('../function/restParam'); 2 | 3 | /** 4 | * Creates a `_.defaults` or `_.defaultsDeep` function. 5 | * 6 | * @private 7 | * @param {Function} assigner The function to assign values. 8 | * @param {Function} customizer The function to customize assigned values. 9 | * @returns {Function} Returns the new defaults function. 10 | */ 11 | function createDefaults(assigner, customizer) { 12 | return restParam(function(args) { 13 | var object = args[0]; 14 | if (object == null) { 15 | return object; 16 | } 17 | args.push(customizer); 18 | return assigner.apply(undefined, args); 19 | }); 20 | } 21 | 22 | module.exports = createDefaults; 23 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/createFind.js: -------------------------------------------------------------------------------- 1 | var baseCallback = require('./baseCallback'), 2 | baseFind = require('./baseFind'), 3 | baseFindIndex = require('./baseFindIndex'), 4 | isArray = require('../lang/isArray'); 5 | 6 | /** 7 | * Creates a `_.find` or `_.findLast` function. 8 | * 9 | * @private 10 | * @param {Function} eachFunc The function to iterate over a collection. 11 | * @param {boolean} [fromRight] Specify iterating from right to left. 12 | * @returns {Function} Returns the new find function. 13 | */ 14 | function createFind(eachFunc, fromRight) { 15 | return function(collection, predicate, thisArg) { 16 | predicate = baseCallback(predicate, thisArg, 3); 17 | if (isArray(collection)) { 18 | var index = baseFindIndex(collection, predicate, fromRight); 19 | return index > -1 ? collection[index] : undefined; 20 | } 21 | return baseFind(collection, predicate, eachFunc); 22 | }; 23 | } 24 | 25 | module.exports = createFind; 26 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/createFindIndex.js: -------------------------------------------------------------------------------- 1 | var baseCallback = require('./baseCallback'), 2 | baseFindIndex = require('./baseFindIndex'); 3 | 4 | /** 5 | * Creates a `_.findIndex` or `_.findLastIndex` function. 6 | * 7 | * @private 8 | * @param {boolean} [fromRight] Specify iterating from right to left. 9 | * @returns {Function} Returns the new find function. 10 | */ 11 | function createFindIndex(fromRight) { 12 | return function(array, predicate, thisArg) { 13 | if (!(array && array.length)) { 14 | return -1; 15 | } 16 | predicate = baseCallback(predicate, thisArg, 3); 17 | return baseFindIndex(array, predicate, fromRight); 18 | }; 19 | } 20 | 21 | module.exports = createFindIndex; 22 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/createFindKey.js: -------------------------------------------------------------------------------- 1 | var baseCallback = require('./baseCallback'), 2 | baseFind = require('./baseFind'); 3 | 4 | /** 5 | * Creates a `_.findKey` or `_.findLastKey` function. 6 | * 7 | * @private 8 | * @param {Function} objectFunc The function to iterate over an object. 9 | * @returns {Function} Returns the new find function. 10 | */ 11 | function createFindKey(objectFunc) { 12 | return function(object, predicate, thisArg) { 13 | predicate = baseCallback(predicate, thisArg, 3); 14 | return baseFind(object, predicate, objectFunc, true); 15 | }; 16 | } 17 | 18 | module.exports = createFindKey; 19 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/createForEach.js: -------------------------------------------------------------------------------- 1 | var bindCallback = require('./bindCallback'), 2 | isArray = require('../lang/isArray'); 3 | 4 | /** 5 | * Creates a function for `_.forEach` or `_.forEachRight`. 6 | * 7 | * @private 8 | * @param {Function} arrayFunc The function to iterate over an array. 9 | * @param {Function} eachFunc The function to iterate over a collection. 10 | * @returns {Function} Returns the new each function. 11 | */ 12 | function createForEach(arrayFunc, eachFunc) { 13 | return function(collection, iteratee, thisArg) { 14 | return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection)) 15 | ? arrayFunc(collection, iteratee) 16 | : eachFunc(collection, bindCallback(iteratee, thisArg, 3)); 17 | }; 18 | } 19 | 20 | module.exports = createForEach; 21 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/createForIn.js: -------------------------------------------------------------------------------- 1 | var bindCallback = require('./bindCallback'), 2 | keysIn = require('../object/keysIn'); 3 | 4 | /** 5 | * Creates a function for `_.forIn` or `_.forInRight`. 6 | * 7 | * @private 8 | * @param {Function} objectFunc The function to iterate over an object. 9 | * @returns {Function} Returns the new each function. 10 | */ 11 | function createForIn(objectFunc) { 12 | return function(object, iteratee, thisArg) { 13 | if (typeof iteratee != 'function' || thisArg !== undefined) { 14 | iteratee = bindCallback(iteratee, thisArg, 3); 15 | } 16 | return objectFunc(object, iteratee, keysIn); 17 | }; 18 | } 19 | 20 | module.exports = createForIn; 21 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/createForOwn.js: -------------------------------------------------------------------------------- 1 | var bindCallback = require('./bindCallback'); 2 | 3 | /** 4 | * Creates a function for `_.forOwn` or `_.forOwnRight`. 5 | * 6 | * @private 7 | * @param {Function} objectFunc The function to iterate over an object. 8 | * @returns {Function} Returns the new each function. 9 | */ 10 | function createForOwn(objectFunc) { 11 | return function(object, iteratee, thisArg) { 12 | if (typeof iteratee != 'function' || thisArg !== undefined) { 13 | iteratee = bindCallback(iteratee, thisArg, 3); 14 | } 15 | return objectFunc(object, iteratee); 16 | }; 17 | } 18 | 19 | module.exports = createForOwn; 20 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/createObjectMapper.js: -------------------------------------------------------------------------------- 1 | var baseCallback = require('./baseCallback'), 2 | baseForOwn = require('./baseForOwn'); 3 | 4 | /** 5 | * Creates a function for `_.mapKeys` or `_.mapValues`. 6 | * 7 | * @private 8 | * @param {boolean} [isMapKeys] Specify mapping keys instead of values. 9 | * @returns {Function} Returns the new map function. 10 | */ 11 | function createObjectMapper(isMapKeys) { 12 | return function(object, iteratee, thisArg) { 13 | var result = {}; 14 | iteratee = baseCallback(iteratee, thisArg, 3); 15 | 16 | baseForOwn(object, function(value, key, object) { 17 | var mapped = iteratee(value, key, object); 18 | key = isMapKeys ? mapped : key; 19 | value = isMapKeys ? value : mapped; 20 | result[key] = value; 21 | }); 22 | return result; 23 | }; 24 | } 25 | 26 | module.exports = createObjectMapper; 27 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/createPadDir.js: -------------------------------------------------------------------------------- 1 | var baseToString = require('./baseToString'), 2 | createPadding = require('./createPadding'); 3 | 4 | /** 5 | * Creates a function for `_.padLeft` or `_.padRight`. 6 | * 7 | * @private 8 | * @param {boolean} [fromRight] Specify padding from the right. 9 | * @returns {Function} Returns the new pad function. 10 | */ 11 | function createPadDir(fromRight) { 12 | return function(string, length, chars) { 13 | string = baseToString(string); 14 | return (fromRight ? string : '') + createPadding(string, length, chars) + (fromRight ? '' : string); 15 | }; 16 | } 17 | 18 | module.exports = createPadDir; 19 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/createPartial.js: -------------------------------------------------------------------------------- 1 | var createWrapper = require('./createWrapper'), 2 | replaceHolders = require('./replaceHolders'), 3 | restParam = require('../function/restParam'); 4 | 5 | /** 6 | * Creates a `_.partial` or `_.partialRight` function. 7 | * 8 | * @private 9 | * @param {boolean} flag The partial bit flag. 10 | * @returns {Function} Returns the new partial function. 11 | */ 12 | function createPartial(flag) { 13 | var partialFunc = restParam(function(func, partials) { 14 | var holders = replaceHolders(partials, partialFunc.placeholder); 15 | return createWrapper(func, flag, undefined, partials, holders); 16 | }); 17 | return partialFunc; 18 | } 19 | 20 | module.exports = createPartial; 21 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/createReduce.js: -------------------------------------------------------------------------------- 1 | var baseCallback = require('./baseCallback'), 2 | baseReduce = require('./baseReduce'), 3 | isArray = require('../lang/isArray'); 4 | 5 | /** 6 | * Creates a function for `_.reduce` or `_.reduceRight`. 7 | * 8 | * @private 9 | * @param {Function} arrayFunc The function to iterate over an array. 10 | * @param {Function} eachFunc The function to iterate over a collection. 11 | * @returns {Function} Returns the new each function. 12 | */ 13 | function createReduce(arrayFunc, eachFunc) { 14 | return function(collection, iteratee, accumulator, thisArg) { 15 | var initFromArray = arguments.length < 3; 16 | return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection)) 17 | ? arrayFunc(collection, iteratee, accumulator, initFromArray) 18 | : baseReduce(collection, baseCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc); 19 | }; 20 | } 21 | 22 | module.exports = createReduce; 23 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/createRound.js: -------------------------------------------------------------------------------- 1 | /** Native method references. */ 2 | var pow = Math.pow; 3 | 4 | /** 5 | * Creates a `_.ceil`, `_.floor`, or `_.round` function. 6 | * 7 | * @private 8 | * @param {string} methodName The name of the `Math` method to use when rounding. 9 | * @returns {Function} Returns the new round function. 10 | */ 11 | function createRound(methodName) { 12 | var func = Math[methodName]; 13 | return function(number, precision) { 14 | precision = precision === undefined ? 0 : (+precision || 0); 15 | if (precision) { 16 | precision = pow(10, precision); 17 | return func(number * precision) / precision; 18 | } 19 | return func(number); 20 | }; 21 | } 22 | 23 | module.exports = createRound; 24 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/createSortedIndex.js: -------------------------------------------------------------------------------- 1 | var baseCallback = require('./baseCallback'), 2 | binaryIndex = require('./binaryIndex'), 3 | binaryIndexBy = require('./binaryIndexBy'); 4 | 5 | /** 6 | * Creates a `_.sortedIndex` or `_.sortedLastIndex` function. 7 | * 8 | * @private 9 | * @param {boolean} [retHighest] Specify returning the highest qualified index. 10 | * @returns {Function} Returns the new index function. 11 | */ 12 | function createSortedIndex(retHighest) { 13 | return function(array, value, iteratee, thisArg) { 14 | return iteratee == null 15 | ? binaryIndex(array, value, retHighest) 16 | : binaryIndexBy(array, value, baseCallback(iteratee, thisArg, 1), retHighest); 17 | }; 18 | } 19 | 20 | module.exports = createSortedIndex; 21 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/escapeHtmlChar.js: -------------------------------------------------------------------------------- 1 | /** Used to map characters to HTML entities. */ 2 | var htmlEscapes = { 3 | '&': '&', 4 | '<': '<', 5 | '>': '>', 6 | '"': '"', 7 | "'": ''', 8 | '`': '`' 9 | }; 10 | 11 | /** 12 | * Used by `_.escape` to convert characters to HTML entities. 13 | * 14 | * @private 15 | * @param {string} chr The matched character to escape. 16 | * @returns {string} Returns the escaped character. 17 | */ 18 | function escapeHtmlChar(chr) { 19 | return htmlEscapes[chr]; 20 | } 21 | 22 | module.exports = escapeHtmlChar; 23 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/escapeStringChar.js: -------------------------------------------------------------------------------- 1 | /** Used to escape characters for inclusion in compiled string literals. */ 2 | var stringEscapes = { 3 | '\\': '\\', 4 | "'": "'", 5 | '\n': 'n', 6 | '\r': 'r', 7 | '\u2028': 'u2028', 8 | '\u2029': 'u2029' 9 | }; 10 | 11 | /** 12 | * Used by `_.template` to escape characters for inclusion in compiled string literals. 13 | * 14 | * @private 15 | * @param {string} chr The matched character to escape. 16 | * @returns {string} Returns the escaped character. 17 | */ 18 | function escapeStringChar(chr) { 19 | return '\\' + stringEscapes[chr]; 20 | } 21 | 22 | module.exports = escapeStringChar; 23 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/getData.js: -------------------------------------------------------------------------------- 1 | var metaMap = require('./metaMap'), 2 | noop = require('../utility/noop'); 3 | 4 | /** 5 | * Gets metadata for `func`. 6 | * 7 | * @private 8 | * @param {Function} func The function to query. 9 | * @returns {*} Returns the metadata for `func`. 10 | */ 11 | var getData = !metaMap ? noop : function(func) { 12 | return metaMap.get(func); 13 | }; 14 | 15 | module.exports = getData; 16 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/getFuncName.js: -------------------------------------------------------------------------------- 1 | var realNames = require('./realNames'); 2 | 3 | /** 4 | * Gets the name of `func`. 5 | * 6 | * @private 7 | * @param {Function} func The function to query. 8 | * @returns {string} Returns the function name. 9 | */ 10 | function getFuncName(func) { 11 | var result = (func.name + ''), 12 | array = realNames[result], 13 | length = array ? array.length : 0; 14 | 15 | while (length--) { 16 | var data = array[length], 17 | otherFunc = data.func; 18 | if (otherFunc == null || otherFunc == func) { 19 | return data.name; 20 | } 21 | } 22 | return result; 23 | } 24 | 25 | module.exports = getFuncName; 26 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/getLength.js: -------------------------------------------------------------------------------- 1 | var baseProperty = require('./baseProperty'); 2 | 3 | /** 4 | * Gets the "length" property value of `object`. 5 | * 6 | * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) 7 | * that affects Safari on at least iOS 8.1-8.3 ARM64. 8 | * 9 | * @private 10 | * @param {Object} object The object to query. 11 | * @returns {*} Returns the "length" value. 12 | */ 13 | var getLength = baseProperty('length'); 14 | 15 | module.exports = getLength; 16 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/getMatchData.js: -------------------------------------------------------------------------------- 1 | var isStrictComparable = require('./isStrictComparable'), 2 | pairs = require('../object/pairs'); 3 | 4 | /** 5 | * Gets the propery names, values, and compare flags of `object`. 6 | * 7 | * @private 8 | * @param {Object} object The object to query. 9 | * @returns {Array} Returns the match data of `object`. 10 | */ 11 | function getMatchData(object) { 12 | var result = pairs(object), 13 | length = result.length; 14 | 15 | while (length--) { 16 | result[length][2] = isStrictComparable(result[length][1]); 17 | } 18 | return result; 19 | } 20 | 21 | module.exports = getMatchData; 22 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/getNative.js: -------------------------------------------------------------------------------- 1 | var isNative = require('../lang/isNative'); 2 | 3 | /** 4 | * Gets the native function at `key` of `object`. 5 | * 6 | * @private 7 | * @param {Object} object The object to query. 8 | * @param {string} key The key of the method to get. 9 | * @returns {*} Returns the function if it's native, else `undefined`. 10 | */ 11 | function getNative(object, key) { 12 | var value = object == null ? undefined : object[key]; 13 | return isNative(value) ? value : undefined; 14 | } 15 | 16 | module.exports = getNative; 17 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/indexOfNaN.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Gets the index at which the first occurrence of `NaN` is found in `array`. 3 | * 4 | * @private 5 | * @param {Array} array The array to search. 6 | * @param {number} fromIndex The index to search from. 7 | * @param {boolean} [fromRight] Specify iterating from right to left. 8 | * @returns {number} Returns the index of the matched `NaN`, else `-1`. 9 | */ 10 | function indexOfNaN(array, fromIndex, fromRight) { 11 | var length = array.length, 12 | index = fromIndex + (fromRight ? 0 : -1); 13 | 14 | while ((fromRight ? index-- : ++index < length)) { 15 | var other = array[index]; 16 | if (other !== other) { 17 | return index; 18 | } 19 | } 20 | return -1; 21 | } 22 | 23 | module.exports = indexOfNaN; 24 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/initCloneArray.js: -------------------------------------------------------------------------------- 1 | /** Used for native method references. */ 2 | var objectProto = Object.prototype; 3 | 4 | /** Used to check objects for own properties. */ 5 | var hasOwnProperty = objectProto.hasOwnProperty; 6 | 7 | /** 8 | * Initializes an array clone. 9 | * 10 | * @private 11 | * @param {Array} array The array to clone. 12 | * @returns {Array} Returns the initialized clone. 13 | */ 14 | function initCloneArray(array) { 15 | var length = array.length, 16 | result = new array.constructor(length); 17 | 18 | // Add array properties assigned by `RegExp#exec`. 19 | if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { 20 | result.index = array.index; 21 | result.input = array.input; 22 | } 23 | return result; 24 | } 25 | 26 | module.exports = initCloneArray; 27 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/initCloneObject.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Initializes an object clone. 3 | * 4 | * @private 5 | * @param {Object} object The object to clone. 6 | * @returns {Object} Returns the initialized clone. 7 | */ 8 | function initCloneObject(object) { 9 | var Ctor = object.constructor; 10 | if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) { 11 | Ctor = Object; 12 | } 13 | return new Ctor; 14 | } 15 | 16 | module.exports = initCloneObject; 17 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/invokePath.js: -------------------------------------------------------------------------------- 1 | var baseGet = require('./baseGet'), 2 | baseSlice = require('./baseSlice'), 3 | isKey = require('./isKey'), 4 | last = require('../array/last'), 5 | toPath = require('./toPath'); 6 | 7 | /** 8 | * Invokes the method at `path` on `object`. 9 | * 10 | * @private 11 | * @param {Object} object The object to query. 12 | * @param {Array|string} path The path of the method to invoke. 13 | * @param {Array} args The arguments to invoke the method with. 14 | * @returns {*} Returns the result of the invoked method. 15 | */ 16 | function invokePath(object, path, args) { 17 | if (object != null && !isKey(path, object)) { 18 | path = toPath(path); 19 | object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); 20 | path = last(path); 21 | } 22 | var func = object == null ? object : object[path]; 23 | return func == null ? undefined : func.apply(object, args); 24 | } 25 | 26 | module.exports = invokePath; 27 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/isArrayLike.js: -------------------------------------------------------------------------------- 1 | var getLength = require('./getLength'), 2 | isLength = require('./isLength'); 3 | 4 | /** 5 | * Checks if `value` is array-like. 6 | * 7 | * @private 8 | * @param {*} value The value to check. 9 | * @returns {boolean} Returns `true` if `value` is array-like, else `false`. 10 | */ 11 | function isArrayLike(value) { 12 | return value != null && isLength(getLength(value)); 13 | } 14 | 15 | module.exports = isArrayLike; 16 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/isIndex.js: -------------------------------------------------------------------------------- 1 | /** Used to detect unsigned integer values. */ 2 | var reIsUint = /^\d+$/; 3 | 4 | /** 5 | * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) 6 | * of an array-like value. 7 | */ 8 | var MAX_SAFE_INTEGER = 9007199254740991; 9 | 10 | /** 11 | * Checks if `value` is a valid array-like index. 12 | * 13 | * @private 14 | * @param {*} value The value to check. 15 | * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. 16 | * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. 17 | */ 18 | function isIndex(value, length) { 19 | value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1; 20 | length = length == null ? MAX_SAFE_INTEGER : length; 21 | return value > -1 && value % 1 == 0 && value < length; 22 | } 23 | 24 | module.exports = isIndex; 25 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/isKey.js: -------------------------------------------------------------------------------- 1 | var isArray = require('../lang/isArray'), 2 | toObject = require('./toObject'); 3 | 4 | /** Used to match property names within property paths. */ 5 | var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/, 6 | reIsPlainProp = /^\w*$/; 7 | 8 | /** 9 | * Checks if `value` is a property name and not a property path. 10 | * 11 | * @private 12 | * @param {*} value The value to check. 13 | * @param {Object} [object] The object to query keys on. 14 | * @returns {boolean} Returns `true` if `value` is a property name, else `false`. 15 | */ 16 | function isKey(value, object) { 17 | var type = typeof value; 18 | if ((type == 'string' && reIsPlainProp.test(value)) || type == 'number') { 19 | return true; 20 | } 21 | if (isArray(value)) { 22 | return false; 23 | } 24 | var result = !reIsDeepProp.test(value); 25 | return result || (object != null && value in toObject(object)); 26 | } 27 | 28 | module.exports = isKey; 29 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/isLaziable.js: -------------------------------------------------------------------------------- 1 | var LazyWrapper = require('./LazyWrapper'), 2 | getData = require('./getData'), 3 | getFuncName = require('./getFuncName'), 4 | lodash = require('../chain/lodash'); 5 | 6 | /** 7 | * Checks if `func` has a lazy counterpart. 8 | * 9 | * @private 10 | * @param {Function} func The function to check. 11 | * @returns {boolean} Returns `true` if `func` has a lazy counterpart, else `false`. 12 | */ 13 | function isLaziable(func) { 14 | var funcName = getFuncName(func), 15 | other = lodash[funcName]; 16 | 17 | if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { 18 | return false; 19 | } 20 | if (func === other) { 21 | return true; 22 | } 23 | var data = getData(other); 24 | return !!data && func === data[0]; 25 | } 26 | 27 | module.exports = isLaziable; 28 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/isLength.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) 3 | * of an array-like value. 4 | */ 5 | var MAX_SAFE_INTEGER = 9007199254740991; 6 | 7 | /** 8 | * Checks if `value` is a valid array-like length. 9 | * 10 | * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). 11 | * 12 | * @private 13 | * @param {*} value The value to check. 14 | * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. 15 | */ 16 | function isLength(value) { 17 | return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; 18 | } 19 | 20 | module.exports = isLength; 21 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/isObjectLike.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Checks if `value` is object-like. 3 | * 4 | * @private 5 | * @param {*} value The value to check. 6 | * @returns {boolean} Returns `true` if `value` is object-like, else `false`. 7 | */ 8 | function isObjectLike(value) { 9 | return !!value && typeof value == 'object'; 10 | } 11 | 12 | module.exports = isObjectLike; 13 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/isSpace.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Used by `trimmedLeftIndex` and `trimmedRightIndex` to determine if a 3 | * character code is whitespace. 4 | * 5 | * @private 6 | * @param {number} charCode The character code to inspect. 7 | * @returns {boolean} Returns `true` if `charCode` is whitespace, else `false`. 8 | */ 9 | function isSpace(charCode) { 10 | return ((charCode <= 160 && (charCode >= 9 && charCode <= 13) || charCode == 32 || charCode == 160) || charCode == 5760 || charCode == 6158 || 11 | (charCode >= 8192 && (charCode <= 8202 || charCode == 8232 || charCode == 8233 || charCode == 8239 || charCode == 8287 || charCode == 12288 || charCode == 65279))); 12 | } 13 | 14 | module.exports = isSpace; 15 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/isStrictComparable.js: -------------------------------------------------------------------------------- 1 | var isObject = require('../lang/isObject'); 2 | 3 | /** 4 | * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. 5 | * 6 | * @private 7 | * @param {*} value The value to check. 8 | * @returns {boolean} Returns `true` if `value` if suitable for strict 9 | * equality comparisons, else `false`. 10 | */ 11 | function isStrictComparable(value) { 12 | return value === value && !isObject(value); 13 | } 14 | 15 | module.exports = isStrictComparable; 16 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/lazyClone.js: -------------------------------------------------------------------------------- 1 | var LazyWrapper = require('./LazyWrapper'), 2 | arrayCopy = require('./arrayCopy'); 3 | 4 | /** 5 | * Creates a clone of the lazy wrapper object. 6 | * 7 | * @private 8 | * @name clone 9 | * @memberOf LazyWrapper 10 | * @returns {Object} Returns the cloned `LazyWrapper` object. 11 | */ 12 | function lazyClone() { 13 | var result = new LazyWrapper(this.__wrapped__); 14 | result.__actions__ = arrayCopy(this.__actions__); 15 | result.__dir__ = this.__dir__; 16 | result.__filtered__ = this.__filtered__; 17 | result.__iteratees__ = arrayCopy(this.__iteratees__); 18 | result.__takeCount__ = this.__takeCount__; 19 | result.__views__ = arrayCopy(this.__views__); 20 | return result; 21 | } 22 | 23 | module.exports = lazyClone; 24 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/lazyReverse.js: -------------------------------------------------------------------------------- 1 | var LazyWrapper = require('./LazyWrapper'); 2 | 3 | /** 4 | * Reverses the direction of lazy iteration. 5 | * 6 | * @private 7 | * @name reverse 8 | * @memberOf LazyWrapper 9 | * @returns {Object} Returns the new reversed `LazyWrapper` object. 10 | */ 11 | function lazyReverse() { 12 | if (this.__filtered__) { 13 | var result = new LazyWrapper(this); 14 | result.__dir__ = -1; 15 | result.__filtered__ = true; 16 | } else { 17 | result = this.clone(); 18 | result.__dir__ *= -1; 19 | } 20 | return result; 21 | } 22 | 23 | module.exports = lazyReverse; 24 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/mapDelete.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Removes `key` and its value from the cache. 3 | * 4 | * @private 5 | * @name delete 6 | * @memberOf _.memoize.Cache 7 | * @param {string} key The key of the value to remove. 8 | * @returns {boolean} Returns `true` if the entry was removed successfully, else `false`. 9 | */ 10 | function mapDelete(key) { 11 | return this.has(key) && delete this.__data__[key]; 12 | } 13 | 14 | module.exports = mapDelete; 15 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/mapGet.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Gets the cached value for `key`. 3 | * 4 | * @private 5 | * @name get 6 | * @memberOf _.memoize.Cache 7 | * @param {string} key The key of the value to get. 8 | * @returns {*} Returns the cached value. 9 | */ 10 | function mapGet(key) { 11 | return key == '__proto__' ? undefined : this.__data__[key]; 12 | } 13 | 14 | module.exports = mapGet; 15 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/mapHas.js: -------------------------------------------------------------------------------- 1 | /** Used for native method references. */ 2 | var objectProto = Object.prototype; 3 | 4 | /** Used to check objects for own properties. */ 5 | var hasOwnProperty = objectProto.hasOwnProperty; 6 | 7 | /** 8 | * Checks if a cached value for `key` exists. 9 | * 10 | * @private 11 | * @name has 12 | * @memberOf _.memoize.Cache 13 | * @param {string} key The key of the entry to check. 14 | * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 15 | */ 16 | function mapHas(key) { 17 | return key != '__proto__' && hasOwnProperty.call(this.__data__, key); 18 | } 19 | 20 | module.exports = mapHas; 21 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/mapSet.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Sets `value` to `key` of the cache. 3 | * 4 | * @private 5 | * @name set 6 | * @memberOf _.memoize.Cache 7 | * @param {string} key The key of the value to cache. 8 | * @param {*} value The value to cache. 9 | * @returns {Object} Returns the cache object. 10 | */ 11 | function mapSet(key, value) { 12 | if (key != '__proto__') { 13 | this.__data__[key] = value; 14 | } 15 | return this; 16 | } 17 | 18 | module.exports = mapSet; 19 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/mergeDefaults.js: -------------------------------------------------------------------------------- 1 | var merge = require('../object/merge'); 2 | 3 | /** 4 | * Used by `_.defaultsDeep` to customize its `_.merge` use. 5 | * 6 | * @private 7 | * @param {*} objectValue The destination object property value. 8 | * @param {*} sourceValue The source object property value. 9 | * @returns {*} Returns the value to assign to the destination object. 10 | */ 11 | function mergeDefaults(objectValue, sourceValue) { 12 | return objectValue === undefined ? sourceValue : merge(objectValue, sourceValue, mergeDefaults); 13 | } 14 | 15 | module.exports = mergeDefaults; 16 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/metaMap.js: -------------------------------------------------------------------------------- 1 | var getNative = require('./getNative'); 2 | 3 | /** Native method references. */ 4 | var WeakMap = getNative(global, 'WeakMap'); 5 | 6 | /** Used to store function metadata. */ 7 | var metaMap = WeakMap && new WeakMap; 8 | 9 | module.exports = metaMap; 10 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/pickByArray.js: -------------------------------------------------------------------------------- 1 | var toObject = require('./toObject'); 2 | 3 | /** 4 | * A specialized version of `_.pick` which picks `object` properties specified 5 | * by `props`. 6 | * 7 | * @private 8 | * @param {Object} object The source object. 9 | * @param {string[]} props The property names to pick. 10 | * @returns {Object} Returns the new object. 11 | */ 12 | function pickByArray(object, props) { 13 | object = toObject(object); 14 | 15 | var index = -1, 16 | length = props.length, 17 | result = {}; 18 | 19 | while (++index < length) { 20 | var key = props[index]; 21 | if (key in object) { 22 | result[key] = object[key]; 23 | } 24 | } 25 | return result; 26 | } 27 | 28 | module.exports = pickByArray; 29 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/pickByCallback.js: -------------------------------------------------------------------------------- 1 | var baseForIn = require('./baseForIn'); 2 | 3 | /** 4 | * A specialized version of `_.pick` which picks `object` properties `predicate` 5 | * returns truthy for. 6 | * 7 | * @private 8 | * @param {Object} object The source object. 9 | * @param {Function} predicate The function invoked per iteration. 10 | * @returns {Object} Returns the new object. 11 | */ 12 | function pickByCallback(object, predicate) { 13 | var result = {}; 14 | baseForIn(object, function(value, key, object) { 15 | if (predicate(value, key, object)) { 16 | result[key] = value; 17 | } 18 | }); 19 | return result; 20 | } 21 | 22 | module.exports = pickByCallback; 23 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/reEscape.js: -------------------------------------------------------------------------------- 1 | /** Used to match template delimiters. */ 2 | var reEscape = /<%-([\s\S]+?)%>/g; 3 | 4 | module.exports = reEscape; 5 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/reEvaluate.js: -------------------------------------------------------------------------------- 1 | /** Used to match template delimiters. */ 2 | var reEvaluate = /<%([\s\S]+?)%>/g; 3 | 4 | module.exports = reEvaluate; 5 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/reInterpolate.js: -------------------------------------------------------------------------------- 1 | /** Used to match template delimiters. */ 2 | var reInterpolate = /<%=([\s\S]+?)%>/g; 3 | 4 | module.exports = reInterpolate; 5 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/realNames.js: -------------------------------------------------------------------------------- 1 | /** Used to lookup unminified function names. */ 2 | var realNames = {}; 3 | 4 | module.exports = realNames; 5 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/replaceHolders.js: -------------------------------------------------------------------------------- 1 | /** Used as the internal argument placeholder. */ 2 | var PLACEHOLDER = '__lodash_placeholder__'; 3 | 4 | /** 5 | * Replaces all `placeholder` elements in `array` with an internal placeholder 6 | * and returns an array of their indexes. 7 | * 8 | * @private 9 | * @param {Array} array The array to modify. 10 | * @param {*} placeholder The placeholder to replace. 11 | * @returns {Array} Returns the new array of placeholder indexes. 12 | */ 13 | function replaceHolders(array, placeholder) { 14 | var index = -1, 15 | length = array.length, 16 | resIndex = -1, 17 | result = []; 18 | 19 | while (++index < length) { 20 | if (array[index] === placeholder) { 21 | array[index] = PLACEHOLDER; 22 | result[++resIndex] = index; 23 | } 24 | } 25 | return result; 26 | } 27 | 28 | module.exports = replaceHolders; 29 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/sortedUniq.js: -------------------------------------------------------------------------------- 1 | /** 2 | * An implementation of `_.uniq` optimized for sorted arrays without support 3 | * for callback shorthands and `this` binding. 4 | * 5 | * @private 6 | * @param {Array} array The array to inspect. 7 | * @param {Function} [iteratee] The function invoked per iteration. 8 | * @returns {Array} Returns the new duplicate free array. 9 | */ 10 | function sortedUniq(array, iteratee) { 11 | var seen, 12 | index = -1, 13 | length = array.length, 14 | resIndex = -1, 15 | result = []; 16 | 17 | while (++index < length) { 18 | var value = array[index], 19 | computed = iteratee ? iteratee(value, index, array) : value; 20 | 21 | if (!index || seen !== computed) { 22 | seen = computed; 23 | result[++resIndex] = value; 24 | } 25 | } 26 | return result; 27 | } 28 | 29 | module.exports = sortedUniq; 30 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/toIterable.js: -------------------------------------------------------------------------------- 1 | var isArrayLike = require('./isArrayLike'), 2 | isObject = require('../lang/isObject'), 3 | values = require('../object/values'); 4 | 5 | /** 6 | * Converts `value` to an array-like object if it's not one. 7 | * 8 | * @private 9 | * @param {*} value The value to process. 10 | * @returns {Array|Object} Returns the array-like object. 11 | */ 12 | function toIterable(value) { 13 | if (value == null) { 14 | return []; 15 | } 16 | if (!isArrayLike(value)) { 17 | return values(value); 18 | } 19 | return isObject(value) ? value : Object(value); 20 | } 21 | 22 | module.exports = toIterable; 23 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/toObject.js: -------------------------------------------------------------------------------- 1 | var isObject = require('../lang/isObject'); 2 | 3 | /** 4 | * Converts `value` to an object if it's not one. 5 | * 6 | * @private 7 | * @param {*} value The value to process. 8 | * @returns {Object} Returns the object. 9 | */ 10 | function toObject(value) { 11 | return isObject(value) ? value : Object(value); 12 | } 13 | 14 | module.exports = toObject; 15 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/toPath.js: -------------------------------------------------------------------------------- 1 | var baseToString = require('./baseToString'), 2 | isArray = require('../lang/isArray'); 3 | 4 | /** Used to match property names within property paths. */ 5 | var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g; 6 | 7 | /** Used to match backslashes in property paths. */ 8 | var reEscapeChar = /\\(\\)?/g; 9 | 10 | /** 11 | * Converts `value` to property path array if it's not one. 12 | * 13 | * @private 14 | * @param {*} value The value to process. 15 | * @returns {Array} Returns the property path array. 16 | */ 17 | function toPath(value) { 18 | if (isArray(value)) { 19 | return value; 20 | } 21 | var result = []; 22 | baseToString(value).replace(rePropName, function(match, number, quote, string) { 23 | result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); 24 | }); 25 | return result; 26 | } 27 | 28 | module.exports = toPath; 29 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/trimmedLeftIndex.js: -------------------------------------------------------------------------------- 1 | var isSpace = require('./isSpace'); 2 | 3 | /** 4 | * Used by `_.trim` and `_.trimLeft` to get the index of the first non-whitespace 5 | * character of `string`. 6 | * 7 | * @private 8 | * @param {string} string The string to inspect. 9 | * @returns {number} Returns the index of the first non-whitespace character. 10 | */ 11 | function trimmedLeftIndex(string) { 12 | var index = -1, 13 | length = string.length; 14 | 15 | while (++index < length && isSpace(string.charCodeAt(index))) {} 16 | return index; 17 | } 18 | 19 | module.exports = trimmedLeftIndex; 20 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/trimmedRightIndex.js: -------------------------------------------------------------------------------- 1 | var isSpace = require('./isSpace'); 2 | 3 | /** 4 | * Used by `_.trim` and `_.trimRight` to get the index of the last non-whitespace 5 | * character of `string`. 6 | * 7 | * @private 8 | * @param {string} string The string to inspect. 9 | * @returns {number} Returns the index of the last non-whitespace character. 10 | */ 11 | function trimmedRightIndex(string) { 12 | var index = string.length; 13 | 14 | while (index-- && isSpace(string.charCodeAt(index))) {} 15 | return index; 16 | } 17 | 18 | module.exports = trimmedRightIndex; 19 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/unescapeHtmlChar.js: -------------------------------------------------------------------------------- 1 | /** Used to map HTML entities to characters. */ 2 | var htmlUnescapes = { 3 | '&': '&', 4 | '<': '<', 5 | '>': '>', 6 | '"': '"', 7 | ''': "'", 8 | '`': '`' 9 | }; 10 | 11 | /** 12 | * Used by `_.unescape` to convert HTML entities to characters. 13 | * 14 | * @private 15 | * @param {string} chr The matched character to unescape. 16 | * @returns {string} Returns the unescaped character. 17 | */ 18 | function unescapeHtmlChar(chr) { 19 | return htmlUnescapes[chr]; 20 | } 21 | 22 | module.exports = unescapeHtmlChar; 23 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/internal/wrapperClone.js: -------------------------------------------------------------------------------- 1 | var LazyWrapper = require('./LazyWrapper'), 2 | LodashWrapper = require('./LodashWrapper'), 3 | arrayCopy = require('./arrayCopy'); 4 | 5 | /** 6 | * Creates a clone of `wrapper`. 7 | * 8 | * @private 9 | * @param {Object} wrapper The wrapper to clone. 10 | * @returns {Object} Returns the cloned wrapper. 11 | */ 12 | function wrapperClone(wrapper) { 13 | return wrapper instanceof LazyWrapper 14 | ? wrapper.clone() 15 | : new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__, arrayCopy(wrapper.__actions__)); 16 | } 17 | 18 | module.exports = wrapperClone; 19 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/lang/eq.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./isEqual'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/lang/gt.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Checks if `value` is greater than `other`. 3 | * 4 | * @static 5 | * @memberOf _ 6 | * @category Lang 7 | * @param {*} value The value to compare. 8 | * @param {*} other The other value to compare. 9 | * @returns {boolean} Returns `true` if `value` is greater than `other`, else `false`. 10 | * @example 11 | * 12 | * _.gt(3, 1); 13 | * // => true 14 | * 15 | * _.gt(3, 3); 16 | * // => false 17 | * 18 | * _.gt(1, 3); 19 | * // => false 20 | */ 21 | function gt(value, other) { 22 | return value > other; 23 | } 24 | 25 | module.exports = gt; 26 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/lang/gte.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Checks if `value` is greater than or equal to `other`. 3 | * 4 | * @static 5 | * @memberOf _ 6 | * @category Lang 7 | * @param {*} value The value to compare. 8 | * @param {*} other The other value to compare. 9 | * @returns {boolean} Returns `true` if `value` is greater than or equal to `other`, else `false`. 10 | * @example 11 | * 12 | * _.gte(3, 1); 13 | * // => true 14 | * 15 | * _.gte(3, 3); 16 | * // => true 17 | * 18 | * _.gte(1, 3); 19 | * // => false 20 | */ 21 | function gte(value, other) { 22 | return value >= other; 23 | } 24 | 25 | module.exports = gte; 26 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/lang/isElement.js: -------------------------------------------------------------------------------- 1 | var isObjectLike = require('../internal/isObjectLike'), 2 | isPlainObject = require('./isPlainObject'); 3 | 4 | /** 5 | * Checks if `value` is a DOM element. 6 | * 7 | * @static 8 | * @memberOf _ 9 | * @category Lang 10 | * @param {*} value The value to check. 11 | * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. 12 | * @example 13 | * 14 | * _.isElement(document.body); 15 | * // => true 16 | * 17 | * _.isElement(''); 18 | * // => false 19 | */ 20 | function isElement(value) { 21 | return !!value && value.nodeType === 1 && isObjectLike(value) && !isPlainObject(value); 22 | } 23 | 24 | module.exports = isElement; 25 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/lang/isFinite.js: -------------------------------------------------------------------------------- 1 | /* Native method references for those with the same name as other `lodash` methods. */ 2 | var nativeIsFinite = global.isFinite; 3 | 4 | /** 5 | * Checks if `value` is a finite primitive number. 6 | * 7 | * **Note:** This method is based on [`Number.isFinite`](http://ecma-international.org/ecma-262/6.0/#sec-number.isfinite). 8 | * 9 | * @static 10 | * @memberOf _ 11 | * @category Lang 12 | * @param {*} value The value to check. 13 | * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. 14 | * @example 15 | * 16 | * _.isFinite(10); 17 | * // => true 18 | * 19 | * _.isFinite('10'); 20 | * // => false 21 | * 22 | * _.isFinite(true); 23 | * // => false 24 | * 25 | * _.isFinite(Object(10)); 26 | * // => false 27 | * 28 | * _.isFinite(Infinity); 29 | * // => false 30 | */ 31 | function isFinite(value) { 32 | return typeof value == 'number' && nativeIsFinite(value); 33 | } 34 | 35 | module.exports = isFinite; 36 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/lang/isNaN.js: -------------------------------------------------------------------------------- 1 | var isNumber = require('./isNumber'); 2 | 3 | /** 4 | * Checks if `value` is `NaN`. 5 | * 6 | * **Note:** This method is not the same as [`isNaN`](https://es5.github.io/#x15.1.2.4) 7 | * which returns `true` for `undefined` and other non-numeric values. 8 | * 9 | * @static 10 | * @memberOf _ 11 | * @category Lang 12 | * @param {*} value The value to check. 13 | * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. 14 | * @example 15 | * 16 | * _.isNaN(NaN); 17 | * // => true 18 | * 19 | * _.isNaN(new Number(NaN)); 20 | * // => true 21 | * 22 | * isNaN(undefined); 23 | * // => true 24 | * 25 | * _.isNaN(undefined); 26 | * // => false 27 | */ 28 | function isNaN(value) { 29 | // An `NaN` primitive is the only value that is not equal to itself. 30 | // Perform the `toStringTag` check first to avoid errors with some host objects in IE. 31 | return isNumber(value) && value != +value; 32 | } 33 | 34 | module.exports = isNaN; 35 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/lang/isNull.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Checks if `value` is `null`. 3 | * 4 | * @static 5 | * @memberOf _ 6 | * @category Lang 7 | * @param {*} value The value to check. 8 | * @returns {boolean} Returns `true` if `value` is `null`, else `false`. 9 | * @example 10 | * 11 | * _.isNull(null); 12 | * // => true 13 | * 14 | * _.isNull(void 0); 15 | * // => false 16 | */ 17 | function isNull(value) { 18 | return value === null; 19 | } 20 | 21 | module.exports = isNull; 22 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/lang/isObject.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. 3 | * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) 4 | * 5 | * @static 6 | * @memberOf _ 7 | * @category Lang 8 | * @param {*} value The value to check. 9 | * @returns {boolean} Returns `true` if `value` is an object, else `false`. 10 | * @example 11 | * 12 | * _.isObject({}); 13 | * // => true 14 | * 15 | * _.isObject([1, 2, 3]); 16 | * // => true 17 | * 18 | * _.isObject(1); 19 | * // => false 20 | */ 21 | function isObject(value) { 22 | // Avoid a V8 JIT bug in Chrome 19-20. 23 | // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. 24 | var type = typeof value; 25 | return !!value && (type == 'object' || type == 'function'); 26 | } 27 | 28 | module.exports = isObject; 29 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/lang/isRegExp.js: -------------------------------------------------------------------------------- 1 | var isObject = require('./isObject'); 2 | 3 | /** `Object#toString` result references. */ 4 | var regexpTag = '[object RegExp]'; 5 | 6 | /** Used for native method references. */ 7 | var objectProto = Object.prototype; 8 | 9 | /** 10 | * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) 11 | * of values. 12 | */ 13 | var objToString = objectProto.toString; 14 | 15 | /** 16 | * Checks if `value` is classified as a `RegExp` object. 17 | * 18 | * @static 19 | * @memberOf _ 20 | * @category Lang 21 | * @param {*} value The value to check. 22 | * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. 23 | * @example 24 | * 25 | * _.isRegExp(/abc/); 26 | * // => true 27 | * 28 | * _.isRegExp('/abc/'); 29 | * // => false 30 | */ 31 | function isRegExp(value) { 32 | return isObject(value) && objToString.call(value) == regexpTag; 33 | } 34 | 35 | module.exports = isRegExp; 36 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/lang/isUndefined.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Checks if `value` is `undefined`. 3 | * 4 | * @static 5 | * @memberOf _ 6 | * @category Lang 7 | * @param {*} value The value to check. 8 | * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. 9 | * @example 10 | * 11 | * _.isUndefined(void 0); 12 | * // => true 13 | * 14 | * _.isUndefined(null); 15 | * // => false 16 | */ 17 | function isUndefined(value) { 18 | return value === undefined; 19 | } 20 | 21 | module.exports = isUndefined; 22 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/lang/lt.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Checks if `value` is less than `other`. 3 | * 4 | * @static 5 | * @memberOf _ 6 | * @category Lang 7 | * @param {*} value The value to compare. 8 | * @param {*} other The other value to compare. 9 | * @returns {boolean} Returns `true` if `value` is less than `other`, else `false`. 10 | * @example 11 | * 12 | * _.lt(1, 3); 13 | * // => true 14 | * 15 | * _.lt(3, 3); 16 | * // => false 17 | * 18 | * _.lt(3, 1); 19 | * // => false 20 | */ 21 | function lt(value, other) { 22 | return value < other; 23 | } 24 | 25 | module.exports = lt; 26 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/lang/lte.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Checks if `value` is less than or equal to `other`. 3 | * 4 | * @static 5 | * @memberOf _ 6 | * @category Lang 7 | * @param {*} value The value to compare. 8 | * @param {*} other The other value to compare. 9 | * @returns {boolean} Returns `true` if `value` is less than or equal to `other`, else `false`. 10 | * @example 11 | * 12 | * _.lte(1, 3); 13 | * // => true 14 | * 15 | * _.lte(3, 3); 16 | * // => true 17 | * 18 | * _.lte(3, 1); 19 | * // => false 20 | */ 21 | function lte(value, other) { 22 | return value <= other; 23 | } 24 | 25 | module.exports = lte; 26 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/lang/toArray.js: -------------------------------------------------------------------------------- 1 | var arrayCopy = require('../internal/arrayCopy'), 2 | getLength = require('../internal/getLength'), 3 | isLength = require('../internal/isLength'), 4 | values = require('../object/values'); 5 | 6 | /** 7 | * Converts `value` to an array. 8 | * 9 | * @static 10 | * @memberOf _ 11 | * @category Lang 12 | * @param {*} value The value to convert. 13 | * @returns {Array} Returns the converted array. 14 | * @example 15 | * 16 | * (function() { 17 | * return _.toArray(arguments).slice(1); 18 | * }(1, 2, 3)); 19 | * // => [2, 3] 20 | */ 21 | function toArray(value) { 22 | var length = value ? getLength(value) : 0; 23 | if (!isLength(length)) { 24 | return values(value); 25 | } 26 | if (!length) { 27 | return []; 28 | } 29 | return arrayCopy(value); 30 | } 31 | 32 | module.exports = toArray; 33 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/lang/toPlainObject.js: -------------------------------------------------------------------------------- 1 | var baseCopy = require('../internal/baseCopy'), 2 | keysIn = require('../object/keysIn'); 3 | 4 | /** 5 | * Converts `value` to a plain object flattening inherited enumerable 6 | * properties of `value` to own properties of the plain object. 7 | * 8 | * @static 9 | * @memberOf _ 10 | * @category Lang 11 | * @param {*} value The value to convert. 12 | * @returns {Object} Returns the converted plain object. 13 | * @example 14 | * 15 | * function Foo() { 16 | * this.b = 2; 17 | * } 18 | * 19 | * Foo.prototype.c = 3; 20 | * 21 | * _.assign({ 'a': 1 }, new Foo); 22 | * // => { 'a': 1, 'b': 2 } 23 | * 24 | * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); 25 | * // => { 'a': 1, 'b': 2, 'c': 3 } 26 | */ 27 | function toPlainObject(value) { 28 | return baseCopy(value, keysIn(value)); 29 | } 30 | 31 | module.exports = toPlainObject; 32 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/math.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'add': require('./math/add'), 3 | 'ceil': require('./math/ceil'), 4 | 'floor': require('./math/floor'), 5 | 'max': require('./math/max'), 6 | 'min': require('./math/min'), 7 | 'round': require('./math/round'), 8 | 'sum': require('./math/sum') 9 | }; 10 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/math/add.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Adds two numbers. 3 | * 4 | * @static 5 | * @memberOf _ 6 | * @category Math 7 | * @param {number} augend The first number to add. 8 | * @param {number} addend The second number to add. 9 | * @returns {number} Returns the sum. 10 | * @example 11 | * 12 | * _.add(6, 4); 13 | * // => 10 14 | */ 15 | function add(augend, addend) { 16 | return (+augend || 0) + (+addend || 0); 17 | } 18 | 19 | module.exports = add; 20 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/math/ceil.js: -------------------------------------------------------------------------------- 1 | var createRound = require('../internal/createRound'); 2 | 3 | /** 4 | * Calculates `n` rounded up to `precision`. 5 | * 6 | * @static 7 | * @memberOf _ 8 | * @category Math 9 | * @param {number} n The number to round up. 10 | * @param {number} [precision=0] The precision to round up to. 11 | * @returns {number} Returns the rounded up number. 12 | * @example 13 | * 14 | * _.ceil(4.006); 15 | * // => 5 16 | * 17 | * _.ceil(6.004, 2); 18 | * // => 6.01 19 | * 20 | * _.ceil(6040, -2); 21 | * // => 6100 22 | */ 23 | var ceil = createRound('ceil'); 24 | 25 | module.exports = ceil; 26 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/math/floor.js: -------------------------------------------------------------------------------- 1 | var createRound = require('../internal/createRound'); 2 | 3 | /** 4 | * Calculates `n` rounded down to `precision`. 5 | * 6 | * @static 7 | * @memberOf _ 8 | * @category Math 9 | * @param {number} n The number to round down. 10 | * @param {number} [precision=0] The precision to round down to. 11 | * @returns {number} Returns the rounded down number. 12 | * @example 13 | * 14 | * _.floor(4.006); 15 | * // => 4 16 | * 17 | * _.floor(0.046, 2); 18 | * // => 0.04 19 | * 20 | * _.floor(4060, -2); 21 | * // => 4000 22 | */ 23 | var floor = createRound('floor'); 24 | 25 | module.exports = floor; 26 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/math/round.js: -------------------------------------------------------------------------------- 1 | var createRound = require('../internal/createRound'); 2 | 3 | /** 4 | * Calculates `n` rounded to `precision`. 5 | * 6 | * @static 7 | * @memberOf _ 8 | * @category Math 9 | * @param {number} n The number to round. 10 | * @param {number} [precision=0] The precision to round to. 11 | * @returns {number} Returns the rounded number. 12 | * @example 13 | * 14 | * _.round(4.006); 15 | * // => 4 16 | * 17 | * _.round(4.006, 2); 18 | * // => 4.01 19 | * 20 | * _.round(4060, -2); 21 | * // => 4100 22 | */ 23 | var round = createRound('round'); 24 | 25 | module.exports = round; 26 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/number.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'inRange': require('./number/inRange'), 3 | 'random': require('./number/random') 4 | }; 5 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/object/defaults.js: -------------------------------------------------------------------------------- 1 | var assign = require('./assign'), 2 | assignDefaults = require('../internal/assignDefaults'), 3 | createDefaults = require('../internal/createDefaults'); 4 | 5 | /** 6 | * Assigns own enumerable properties of source object(s) to the destination 7 | * object for all destination properties that resolve to `undefined`. Once a 8 | * property is set, additional values of the same property are ignored. 9 | * 10 | * **Note:** This method mutates `object`. 11 | * 12 | * @static 13 | * @memberOf _ 14 | * @category Object 15 | * @param {Object} object The destination object. 16 | * @param {...Object} [sources] The source objects. 17 | * @returns {Object} Returns `object`. 18 | * @example 19 | * 20 | * _.defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' }); 21 | * // => { 'user': 'barney', 'age': 36 } 22 | */ 23 | var defaults = createDefaults(assign, assignDefaults); 24 | 25 | module.exports = defaults; 26 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/object/defaultsDeep.js: -------------------------------------------------------------------------------- 1 | var createDefaults = require('../internal/createDefaults'), 2 | merge = require('./merge'), 3 | mergeDefaults = require('../internal/mergeDefaults'); 4 | 5 | /** 6 | * This method is like `_.defaults` except that it recursively assigns 7 | * default properties. 8 | * 9 | * **Note:** This method mutates `object`. 10 | * 11 | * @static 12 | * @memberOf _ 13 | * @category Object 14 | * @param {Object} object The destination object. 15 | * @param {...Object} [sources] The source objects. 16 | * @returns {Object} Returns `object`. 17 | * @example 18 | * 19 | * _.defaultsDeep({ 'user': { 'name': 'barney' } }, { 'user': { 'name': 'fred', 'age': 36 } }); 20 | * // => { 'user': { 'name': 'barney', 'age': 36 } } 21 | * 22 | */ 23 | var defaultsDeep = createDefaults(merge, mergeDefaults); 24 | 25 | module.exports = defaultsDeep; 26 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/object/extend.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./assign'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/object/forInRight.js: -------------------------------------------------------------------------------- 1 | var baseForRight = require('../internal/baseForRight'), 2 | createForIn = require('../internal/createForIn'); 3 | 4 | /** 5 | * This method is like `_.forIn` except that it iterates over properties of 6 | * `object` in the opposite order. 7 | * 8 | * @static 9 | * @memberOf _ 10 | * @category Object 11 | * @param {Object} object The object to iterate over. 12 | * @param {Function} [iteratee=_.identity] The function invoked per iteration. 13 | * @param {*} [thisArg] The `this` binding of `iteratee`. 14 | * @returns {Object} Returns `object`. 15 | * @example 16 | * 17 | * function Foo() { 18 | * this.a = 1; 19 | * this.b = 2; 20 | * } 21 | * 22 | * Foo.prototype.c = 3; 23 | * 24 | * _.forInRight(new Foo, function(value, key) { 25 | * console.log(key); 26 | * }); 27 | * // => logs 'c', 'b', and 'a' assuming `_.forIn ` logs 'a', 'b', and 'c' 28 | */ 29 | var forInRight = createForIn(baseForRight); 30 | 31 | module.exports = forInRight; 32 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/object/forOwnRight.js: -------------------------------------------------------------------------------- 1 | var baseForOwnRight = require('../internal/baseForOwnRight'), 2 | createForOwn = require('../internal/createForOwn'); 3 | 4 | /** 5 | * This method is like `_.forOwn` except that it iterates over properties of 6 | * `object` in the opposite order. 7 | * 8 | * @static 9 | * @memberOf _ 10 | * @category Object 11 | * @param {Object} object The object to iterate over. 12 | * @param {Function} [iteratee=_.identity] The function invoked per iteration. 13 | * @param {*} [thisArg] The `this` binding of `iteratee`. 14 | * @returns {Object} Returns `object`. 15 | * @example 16 | * 17 | * function Foo() { 18 | * this.a = 1; 19 | * this.b = 2; 20 | * } 21 | * 22 | * Foo.prototype.c = 3; 23 | * 24 | * _.forOwnRight(new Foo, function(value, key) { 25 | * console.log(key); 26 | * }); 27 | * // => logs 'b' and 'a' assuming `_.forOwn` logs 'a' and 'b' 28 | */ 29 | var forOwnRight = createForOwn(baseForOwnRight); 30 | 31 | module.exports = forOwnRight; 32 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/object/functions.js: -------------------------------------------------------------------------------- 1 | var baseFunctions = require('../internal/baseFunctions'), 2 | keysIn = require('./keysIn'); 3 | 4 | /** 5 | * Creates an array of function property names from all enumerable properties, 6 | * own and inherited, of `object`. 7 | * 8 | * @static 9 | * @memberOf _ 10 | * @alias methods 11 | * @category Object 12 | * @param {Object} object The object to inspect. 13 | * @returns {Array} Returns the new array of property names. 14 | * @example 15 | * 16 | * _.functions(_); 17 | * // => ['after', 'ary', 'assign', ...] 18 | */ 19 | function functions(object) { 20 | return baseFunctions(object, keysIn(object)); 21 | } 22 | 23 | module.exports = functions; 24 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/object/mapKeys.js: -------------------------------------------------------------------------------- 1 | var createObjectMapper = require('../internal/createObjectMapper'); 2 | 3 | /** 4 | * The opposite of `_.mapValues`; this method creates an object with the 5 | * same values as `object` and keys generated by running each own enumerable 6 | * property of `object` through `iteratee`. 7 | * 8 | * @static 9 | * @memberOf _ 10 | * @category Object 11 | * @param {Object} object The object to iterate over. 12 | * @param {Function|Object|string} [iteratee=_.identity] The function invoked 13 | * per iteration. 14 | * @param {*} [thisArg] The `this` binding of `iteratee`. 15 | * @returns {Object} Returns the new mapped object. 16 | * @example 17 | * 18 | * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { 19 | * return key + value; 20 | * }); 21 | * // => { 'a1': 1, 'b2': 2 } 22 | */ 23 | var mapKeys = createObjectMapper(true); 24 | 25 | module.exports = mapKeys; 26 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/object/methods.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./functions'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/object/pairs.js: -------------------------------------------------------------------------------- 1 | var keys = require('./keys'), 2 | toObject = require('../internal/toObject'); 3 | 4 | /** 5 | * Creates a two dimensional array of the key-value pairs for `object`, 6 | * e.g. `[[key1, value1], [key2, value2]]`. 7 | * 8 | * @static 9 | * @memberOf _ 10 | * @category Object 11 | * @param {Object} object The object to query. 12 | * @returns {Array} Returns the new array of key-value pairs. 13 | * @example 14 | * 15 | * _.pairs({ 'barney': 36, 'fred': 40 }); 16 | * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed) 17 | */ 18 | function pairs(object) { 19 | object = toObject(object); 20 | 21 | var index = -1, 22 | props = keys(object), 23 | length = props.length, 24 | result = Array(length); 25 | 26 | while (++index < length) { 27 | var key = props[index]; 28 | result[index] = [key, object[key]]; 29 | } 30 | return result; 31 | } 32 | 33 | module.exports = pairs; 34 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/object/values.js: -------------------------------------------------------------------------------- 1 | var baseValues = require('../internal/baseValues'), 2 | keys = require('./keys'); 3 | 4 | /** 5 | * Creates an array of the own enumerable property values of `object`. 6 | * 7 | * **Note:** Non-object values are coerced to objects. 8 | * 9 | * @static 10 | * @memberOf _ 11 | * @category Object 12 | * @param {Object} object The object to query. 13 | * @returns {Array} Returns the array of property values. 14 | * @example 15 | * 16 | * function Foo() { 17 | * this.a = 1; 18 | * this.b = 2; 19 | * } 20 | * 21 | * Foo.prototype.c = 3; 22 | * 23 | * _.values(new Foo); 24 | * // => [1, 2] (iteration order is not guaranteed) 25 | * 26 | * _.values('hi'); 27 | * // => ['h', 'i'] 28 | */ 29 | function values(object) { 30 | return baseValues(object, keys(object)); 31 | } 32 | 33 | module.exports = values; 34 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/object/valuesIn.js: -------------------------------------------------------------------------------- 1 | var baseValues = require('../internal/baseValues'), 2 | keysIn = require('./keysIn'); 3 | 4 | /** 5 | * Creates an array of the own and inherited enumerable property values 6 | * of `object`. 7 | * 8 | * **Note:** Non-object values are coerced to objects. 9 | * 10 | * @static 11 | * @memberOf _ 12 | * @category Object 13 | * @param {Object} object The object to query. 14 | * @returns {Array} Returns the array of property values. 15 | * @example 16 | * 17 | * function Foo() { 18 | * this.a = 1; 19 | * this.b = 2; 20 | * } 21 | * 22 | * Foo.prototype.c = 3; 23 | * 24 | * _.valuesIn(new Foo); 25 | * // => [1, 2, 3] (iteration order is not guaranteed) 26 | */ 27 | function valuesIn(object) { 28 | return baseValues(object, keysIn(object)); 29 | } 30 | 31 | module.exports = valuesIn; 32 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/string/camelCase.js: -------------------------------------------------------------------------------- 1 | var createCompounder = require('../internal/createCompounder'); 2 | 3 | /** 4 | * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). 5 | * 6 | * @static 7 | * @memberOf _ 8 | * @category String 9 | * @param {string} [string=''] The string to convert. 10 | * @returns {string} Returns the camel cased string. 11 | * @example 12 | * 13 | * _.camelCase('Foo Bar'); 14 | * // => 'fooBar' 15 | * 16 | * _.camelCase('--foo-bar'); 17 | * // => 'fooBar' 18 | * 19 | * _.camelCase('__foo_bar__'); 20 | * // => 'fooBar' 21 | */ 22 | var camelCase = createCompounder(function(result, word, index) { 23 | word = word.toLowerCase(); 24 | return result + (index ? (word.charAt(0).toUpperCase() + word.slice(1)) : word); 25 | }); 26 | 27 | module.exports = camelCase; 28 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/string/capitalize.js: -------------------------------------------------------------------------------- 1 | var baseToString = require('../internal/baseToString'); 2 | 3 | /** 4 | * Capitalizes the first character of `string`. 5 | * 6 | * @static 7 | * @memberOf _ 8 | * @category String 9 | * @param {string} [string=''] The string to capitalize. 10 | * @returns {string} Returns the capitalized string. 11 | * @example 12 | * 13 | * _.capitalize('fred'); 14 | * // => 'Fred' 15 | */ 16 | function capitalize(string) { 17 | string = baseToString(string); 18 | return string && (string.charAt(0).toUpperCase() + string.slice(1)); 19 | } 20 | 21 | module.exports = capitalize; 22 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/string/kebabCase.js: -------------------------------------------------------------------------------- 1 | var createCompounder = require('../internal/createCompounder'); 2 | 3 | /** 4 | * Converts `string` to [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). 5 | * 6 | * @static 7 | * @memberOf _ 8 | * @category String 9 | * @param {string} [string=''] The string to convert. 10 | * @returns {string} Returns the kebab cased string. 11 | * @example 12 | * 13 | * _.kebabCase('Foo Bar'); 14 | * // => 'foo-bar' 15 | * 16 | * _.kebabCase('fooBar'); 17 | * // => 'foo-bar' 18 | * 19 | * _.kebabCase('__foo_bar__'); 20 | * // => 'foo-bar' 21 | */ 22 | var kebabCase = createCompounder(function(result, word, index) { 23 | return result + (index ? '-' : '') + word.toLowerCase(); 24 | }); 25 | 26 | module.exports = kebabCase; 27 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/string/padLeft.js: -------------------------------------------------------------------------------- 1 | var createPadDir = require('../internal/createPadDir'); 2 | 3 | /** 4 | * Pads `string` on the left side if it's shorter than `length`. Padding 5 | * characters are truncated if they exceed `length`. 6 | * 7 | * @static 8 | * @memberOf _ 9 | * @category String 10 | * @param {string} [string=''] The string to pad. 11 | * @param {number} [length=0] The padding length. 12 | * @param {string} [chars=' '] The string used as padding. 13 | * @returns {string} Returns the padded string. 14 | * @example 15 | * 16 | * _.padLeft('abc', 6); 17 | * // => ' abc' 18 | * 19 | * _.padLeft('abc', 6, '_-'); 20 | * // => '_-_abc' 21 | * 22 | * _.padLeft('abc', 3); 23 | * // => 'abc' 24 | */ 25 | var padLeft = createPadDir(); 26 | 27 | module.exports = padLeft; 28 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/string/padRight.js: -------------------------------------------------------------------------------- 1 | var createPadDir = require('../internal/createPadDir'); 2 | 3 | /** 4 | * Pads `string` on the right side if it's shorter than `length`. Padding 5 | * characters are truncated if they exceed `length`. 6 | * 7 | * @static 8 | * @memberOf _ 9 | * @category String 10 | * @param {string} [string=''] The string to pad. 11 | * @param {number} [length=0] The padding length. 12 | * @param {string} [chars=' '] The string used as padding. 13 | * @returns {string} Returns the padded string. 14 | * @example 15 | * 16 | * _.padRight('abc', 6); 17 | * // => 'abc ' 18 | * 19 | * _.padRight('abc', 6, '_-'); 20 | * // => 'abc_-_' 21 | * 22 | * _.padRight('abc', 3); 23 | * // => 'abc' 24 | */ 25 | var padRight = createPadDir(true); 26 | 27 | module.exports = padRight; 28 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/string/snakeCase.js: -------------------------------------------------------------------------------- 1 | var createCompounder = require('../internal/createCompounder'); 2 | 3 | /** 4 | * Converts `string` to [snake case](https://en.wikipedia.org/wiki/Snake_case). 5 | * 6 | * @static 7 | * @memberOf _ 8 | * @category String 9 | * @param {string} [string=''] The string to convert. 10 | * @returns {string} Returns the snake cased string. 11 | * @example 12 | * 13 | * _.snakeCase('Foo Bar'); 14 | * // => 'foo_bar' 15 | * 16 | * _.snakeCase('fooBar'); 17 | * // => 'foo_bar' 18 | * 19 | * _.snakeCase('--foo-bar'); 20 | * // => 'foo_bar' 21 | */ 22 | var snakeCase = createCompounder(function(result, word, index) { 23 | return result + (index ? '_' : '') + word.toLowerCase(); 24 | }); 25 | 26 | module.exports = snakeCase; 27 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/string/startCase.js: -------------------------------------------------------------------------------- 1 | var createCompounder = require('../internal/createCompounder'); 2 | 3 | /** 4 | * Converts `string` to [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). 5 | * 6 | * @static 7 | * @memberOf _ 8 | * @category String 9 | * @param {string} [string=''] The string to convert. 10 | * @returns {string} Returns the start cased string. 11 | * @example 12 | * 13 | * _.startCase('--foo-bar'); 14 | * // => 'Foo Bar' 15 | * 16 | * _.startCase('fooBar'); 17 | * // => 'Foo Bar' 18 | * 19 | * _.startCase('__foo_bar__'); 20 | * // => 'Foo Bar' 21 | */ 22 | var startCase = createCompounder(function(result, word, index) { 23 | return result + (index ? ' ' : '') + (word.charAt(0).toUpperCase() + word.slice(1)); 24 | }); 25 | 26 | module.exports = startCase; 27 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/support.js: -------------------------------------------------------------------------------- 1 | /** 2 | * An object environment feature flags. 3 | * 4 | * @static 5 | * @memberOf _ 6 | * @type Object 7 | */ 8 | var support = {}; 9 | 10 | module.exports = support; 11 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/utility.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'attempt': require('./utility/attempt'), 3 | 'callback': require('./utility/callback'), 4 | 'constant': require('./utility/constant'), 5 | 'identity': require('./utility/identity'), 6 | 'iteratee': require('./utility/iteratee'), 7 | 'matches': require('./utility/matches'), 8 | 'matchesProperty': require('./utility/matchesProperty'), 9 | 'method': require('./utility/method'), 10 | 'methodOf': require('./utility/methodOf'), 11 | 'mixin': require('./utility/mixin'), 12 | 'noop': require('./utility/noop'), 13 | 'property': require('./utility/property'), 14 | 'propertyOf': require('./utility/propertyOf'), 15 | 'range': require('./utility/range'), 16 | 'times': require('./utility/times'), 17 | 'uniqueId': require('./utility/uniqueId') 18 | }; 19 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/utility/attempt.js: -------------------------------------------------------------------------------- 1 | var isError = require('../lang/isError'), 2 | restParam = require('../function/restParam'); 3 | 4 | /** 5 | * Attempts to invoke `func`, returning either the result or the caught error 6 | * object. Any additional arguments are provided to `func` when it's invoked. 7 | * 8 | * @static 9 | * @memberOf _ 10 | * @category Utility 11 | * @param {Function} func The function to attempt. 12 | * @returns {*} Returns the `func` result or error object. 13 | * @example 14 | * 15 | * // avoid throwing errors for invalid selectors 16 | * var elements = _.attempt(function(selector) { 17 | * return document.querySelectorAll(selector); 18 | * }, '>_>'); 19 | * 20 | * if (_.isError(elements)) { 21 | * elements = []; 22 | * } 23 | */ 24 | var attempt = restParam(function(func, args) { 25 | try { 26 | return func.apply(undefined, args); 27 | } catch(e) { 28 | return isError(e) ? e : new Error(e); 29 | } 30 | }); 31 | 32 | module.exports = attempt; 33 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/utility/constant.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Creates a function that returns `value`. 3 | * 4 | * @static 5 | * @memberOf _ 6 | * @category Utility 7 | * @param {*} value The value to return from the new function. 8 | * @returns {Function} Returns the new function. 9 | * @example 10 | * 11 | * var object = { 'user': 'fred' }; 12 | * var getter = _.constant(object); 13 | * 14 | * getter() === object; 15 | * // => true 16 | */ 17 | function constant(value) { 18 | return function() { 19 | return value; 20 | }; 21 | } 22 | 23 | module.exports = constant; 24 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/utility/identity.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This method returns the first argument provided to it. 3 | * 4 | * @static 5 | * @memberOf _ 6 | * @category Utility 7 | * @param {*} value Any value. 8 | * @returns {*} Returns `value`. 9 | * @example 10 | * 11 | * var object = { 'user': 'fred' }; 12 | * 13 | * _.identity(object) === object; 14 | * // => true 15 | */ 16 | function identity(value) { 17 | return value; 18 | } 19 | 20 | module.exports = identity; 21 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/utility/iteratee.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./callback'); 2 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/utility/noop.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A no-operation function that returns `undefined` regardless of the 3 | * arguments it receives. 4 | * 5 | * @static 6 | * @memberOf _ 7 | * @category Utility 8 | * @example 9 | * 10 | * var object = { 'user': 'fred' }; 11 | * 12 | * _.noop(object) === undefined; 13 | * // => true 14 | */ 15 | function noop() { 16 | // No operation performed. 17 | } 18 | 19 | module.exports = noop; 20 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/utility/property.js: -------------------------------------------------------------------------------- 1 | var baseProperty = require('../internal/baseProperty'), 2 | basePropertyDeep = require('../internal/basePropertyDeep'), 3 | isKey = require('../internal/isKey'); 4 | 5 | /** 6 | * Creates a function that returns the property value at `path` on a 7 | * given object. 8 | * 9 | * @static 10 | * @memberOf _ 11 | * @category Utility 12 | * @param {Array|string} path The path of the property to get. 13 | * @returns {Function} Returns the new function. 14 | * @example 15 | * 16 | * var objects = [ 17 | * { 'a': { 'b': { 'c': 2 } } }, 18 | * { 'a': { 'b': { 'c': 1 } } } 19 | * ]; 20 | * 21 | * _.map(objects, _.property('a.b.c')); 22 | * // => [2, 1] 23 | * 24 | * _.pluck(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c'); 25 | * // => [1, 2] 26 | */ 27 | function property(path) { 28 | return isKey(path) ? baseProperty(path) : basePropertyDeep(path); 29 | } 30 | 31 | module.exports = property; 32 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/utility/propertyOf.js: -------------------------------------------------------------------------------- 1 | var baseGet = require('../internal/baseGet'), 2 | toPath = require('../internal/toPath'); 3 | 4 | /** 5 | * The opposite of `_.property`; this method creates a function that returns 6 | * the property value at a given path on `object`. 7 | * 8 | * @static 9 | * @memberOf _ 10 | * @category Utility 11 | * @param {Object} object The object to query. 12 | * @returns {Function} Returns the new function. 13 | * @example 14 | * 15 | * var array = [0, 1, 2], 16 | * object = { 'a': array, 'b': array, 'c': array }; 17 | * 18 | * _.map(['a[2]', 'c[0]'], _.propertyOf(object)); 19 | * // => [2, 0] 20 | * 21 | * _.map([['a', '2'], ['c', '0']], _.propertyOf(object)); 22 | * // => [2, 0] 23 | */ 24 | function propertyOf(object) { 25 | return function(path) { 26 | return baseGet(object, toPath(path), (path + '')); 27 | }; 28 | } 29 | 30 | module.exports = propertyOf; 31 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash/utility/uniqueId.js: -------------------------------------------------------------------------------- 1 | var baseToString = require('../internal/baseToString'); 2 | 3 | /** Used to generate unique IDs. */ 4 | var idCounter = 0; 5 | 6 | /** 7 | * Generates a unique ID. If `prefix` is provided the ID is appended to it. 8 | * 9 | * @static 10 | * @memberOf _ 11 | * @category Utility 12 | * @param {string} [prefix] The value to prefix the ID with. 13 | * @returns {string} Returns the unique ID. 14 | * @example 15 | * 16 | * _.uniqueId('contact_'); 17 | * // => 'contact_104' 18 | * 19 | * _.uniqueId(); 20 | * // => '105' 21 | */ 22 | function uniqueId(prefix) { 23 | var id = ++idCounter; 24 | return baseToString(prefix) + id; 25 | } 26 | 27 | module.exports = uniqueId; 28 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/text.coffee: -------------------------------------------------------------------------------- 1 | fs = require 'fs' 2 | xml2js = require 'xml2js' 3 | 4 | parser = new xml2js.Parser 5 | 6 | fs.readFile 'canon.xml', (err, data) -> 7 | console.log err 8 | parser.parseString (err, result) -> 9 | console.log err 10 | console.dir result 11 | 12 | -------------------------------------------------------------------------------- /node_modules/speedtest-net/node_modules/xml2js/x.js: -------------------------------------------------------------------------------- 1 | var util = require('util'); 2 | var xml2js = require('xml2js'); 3 | 4 | var myxml = " \ 5 | \ 6 | \ 7 | 1 \ 8 | green \ 9 | \ 10 | \ 11 | 2 \ 12 | red \ 13 | \ 14 | \ 15 | 3 \ 16 | yellow \ 17 | \ 18 | " 19 | var myxml = "\ 20 | " 21 | 22 | xml2js.parseString(myxml, function (e, r) { 23 | console.log(util.inspect(r, false, null)); 24 | //console.log(new xml2js.Builder().buildObject(r)); 25 | }); 26 | 27 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "speedtestcli", 3 | "version": "1.1.0", 4 | "description": "", 5 | "author": "", 6 | "license": "ISC", 7 | "bin": { 8 | "speedtest": "index.js" 9 | }, 10 | "homepage": "https://codeforgeek.com/2015/09/command-line-application-nodejs/", 11 | "dependencies": { 12 | "chalk": "^1.1.1", 13 | "log-update": "^1.0.0", 14 | "progress": "^1.1.8", 15 | "speedtest-net": "^1.0.3" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /speedtest.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeforgeek/speed-test-cli/76a4f50170d67bdb39a3fb66a3fca2234f5d69a5/speedtest.gif --------------------------------------------------------------------------------