dlsjs 0.1.26 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -1
- package/dist/dlsjs.js +8332 -0
- package/dist/dlsjs.js.map +1 -0
- package/dist/dlsjs.umd.cjs +2 -0
- package/dist/dlsjs.umd.cjs.map +1 -0
- package/package.json +1 -1
- package/src/{core/Browser → Browser}/Dom.js +0 -4
- package/src/{core/Browser → Browser}/File.js +0 -4
- package/src/{core/Browser → Browser}/Local.js +0 -9
- package/src/Browser/Nav.js +208 -0
- package/src/Browser/Screen.js +175 -0
- package/src/{core/Browser → Browser}/Timer.js +0 -4
- package/src/ES/Tree.js +916 -0
- package/dist/dlsjs.cjs.js +0 -8
- package/dist/dlsjs.cjs.js.map +0 -1
- package/dist/dlsjs.esm.js +0 -5094
- package/dist/dlsjs.esm.js.map +0 -1
- package/dist/dlsjs.umd.js +0 -8
- package/dist/dlsjs.umd.js.map +0 -1
- package/public/vite.svg +0 -1
- package/src/core/Browser/Nav.js +0 -33
- package/src/core/Browser/Screen.js +0 -29
- package/src/core/ES/Tree.js +0 -346
- package/src/javascript.svg +0 -1
- package/vite.config.js +0 -106
- /package/src/{core/ES → ES}/Chain.js +0 -0
- /package/src/{core/ES → ES}/Const.js +0 -0
- /package/src/{core/ES → ES}/Judgment.js +0 -0
- /package/src/{core/ES → ES}/QRW.js +0 -0
- /package/src/{core/ES → ES}/Singleton.js +0 -0
- /package/src/{core/ES → ES}/Trans.js +0 -0
- /package/src/{core/Instance → Instance}/transCore.js +0 -0
- /package/src/{core/Instance → Instance}/transFunc.js +0 -0
- /package/src/{core/Instance → Instance}/transRule.js +0 -0
- /package/src/{core/index.js → index.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dlsjs.js","sources":["../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/bind.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/utils.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/AxiosError.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/null.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/toFormData.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/buildURL.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/InterceptorManager.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/defaults/transitional.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/browser/classes/FormData.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/browser/classes/Blob.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/browser/index.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/common/utils.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/index.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/toURLEncodedForm.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/formDataToJSON.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/defaults/index.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/parseHeaders.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/AxiosHeaders.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/transformData.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/cancel/isCancel.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/cancel/CanceledError.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/settle.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/parseProtocol.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/speedometer.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/throttle.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/progressEventReducer.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/isURLSameOrigin.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/cookies.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/isAbsoluteURL.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/combineURLs.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/buildFullPath.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/mergeConfig.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/resolveConfig.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/adapters/xhr.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/composeSignals.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/trackStream.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/adapters/fetch.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/adapters/adapters.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/dispatchRequest.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/env/data.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/validator.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/Axios.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/cancel/CancelToken.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/spread.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/isAxiosError.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/HttpStatusCode.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/axios.js","../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/index.js","../src/Browser/File.js","../src/Browser/Dom.js","../src/Browser/Nav.js","../src/Browser/Timer.js","../src/Browser/Screen.js","../src/Browser/Local.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/F.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/T.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/__.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_isPlaceholder.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_curry1.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_curry2.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/add.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_concat.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_arity.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_curryN.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/curryN.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/addIndex.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/addIndexRight.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_curry3.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/adjust.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_isArray.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_isTransformer.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_dispatchable.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_reduced.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xfBase.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xall.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/all.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_arrayFromIterator.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_includesWith.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_functionName.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_has.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_objectIs.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_isArguments.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/keys.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/type.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_equals.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/equals.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_indexOf.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_includes.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_map.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_quote.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_toISOString.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_complement.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_arrayReduce.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_filter.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_filterMap.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_isMap.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_isObject.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xfilter.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/filter.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/reject.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_toString.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/toString.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/max.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xmap.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/map.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_isInteger.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_nth.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_prop.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/prop.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/pluck.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_isString.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_isArrayLike.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_createReduce.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xArrayReduce.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/bind.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xReduce.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xwrap.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/reduce.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/allPass.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/always.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/and.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xany.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/any.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/anyPass.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_reduce.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/ap.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_aperture.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xaperture.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/aperture.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/append.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/apply.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/values.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/applySpec.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/applyTo.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/ascend.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/curry.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/ascendNatural.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_assoc.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/isNil.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/assocPath.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/assoc.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/nAry.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/binary.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_isFunction.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/liftN.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/lift.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/both.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/call.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_makeFlat.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_forceReduced.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_flatCat.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xchain.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_chain.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/chain.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/clamp.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_cloneRegExp.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_clone.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/clone.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/collectBy.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/comparator.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/not.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/complement.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_pipe.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_checkForMethod.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/slice.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/tail.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/pipe.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/reverse.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/compose.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/head.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_identity.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/identity.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/pipeWith.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/composeWith.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/concat.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/cond.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/constructN.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/construct.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/converge.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/count.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xreduceBy.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/reduceBy.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/countBy.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/dec.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/defaultTo.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/descend.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/descendNatural.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_Set.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/difference.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/differenceWith.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/remove.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_dissoc.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/dissocPath.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/dissoc.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/divide.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xdrop.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/drop.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xtake.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/take.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_dropLast.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xdropLast.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/dropLast.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_dropLastWhile.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xdropLastWhile.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/dropLastWhile.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xdropRepeatsWith.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/last.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/dropRepeatsWith.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/dropRepeats.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/eqBy.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/dropRepeatsBy.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xdropWhile.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/dropWhile.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/or.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/either.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_isTypedArray.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/empty.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/takeLast.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/endsWith.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/eqProps.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/evolve.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xfind.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/find.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xfindIndex.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/findIndex.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xfindLast.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/findLast.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xfindLastIndex.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/findLastIndex.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/flatten.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/flip.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/flow.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/forEach.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/forEachObjIndexed.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_fromPairs.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/fromPairs.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/groupBy.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/groupWith.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/gt.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/gte.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/hasPath.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/has.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/hasIn.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/identical.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/ifElse.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/inc.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/includes.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/indexBy.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/indexOf.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/init.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/innerJoin.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/insert.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/insertAll.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xuniqBy.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/uniqBy.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/uniq.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/intersection.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/intersperse.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_objectAssign.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/objOf.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_stepCat.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/into.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/invert.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/invertObj.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/invoker.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/is.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/isEmpty.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/isNotEmpty.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/isNotNil.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/join.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/juxt.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/keysIn.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/lastIndexOf.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_isNumber.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/length.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/lens.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/update.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/lensIndex.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_path.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/lensPath.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/lensProp.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/lt.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/lte.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/mapAccum.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/mapAccumRight.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_toPairs.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_rebuild.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_mapKeys.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/mapKeys.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/mapObjIndexed.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/match.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/mathMod.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/maxBy.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/sum.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/mean.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/median.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/memoizeWith.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/mergeAll.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/mergeWithKey.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/mergeDeepWithKey.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/mergeDeepLeft.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/mergeDeepRight.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/mergeDeepWith.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/mergeLeft.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/mergeRight.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/mergeWith.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/min.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/minBy.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_modify.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/modifyPath.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/modify.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/modulo.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/move.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/multiply.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/partialObject.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/negate.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/none.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/nth.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/nthArg.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/o.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/of.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/omit.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/on.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/once.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_assertPromise.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/otherwise.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/over.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/pair.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_createPartialApplicator.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/partial.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/partialRight.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/partition.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/path.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/paths.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/pathEq.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/pathOr.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/pathSatisfies.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/pick.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/pickAll.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/pickBy.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/prepend.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/product.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/useWith.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/project.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_promap.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xpromap.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/promap.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/propEq.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/propIs.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/propOr.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/propSatisfies.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/props.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/range.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/rebuild.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/reduceRight.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/reduceWhile.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/reduced.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/renameKeys.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/times.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/repeat.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/replace.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xscan.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/scan.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/sequence.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/set.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/sort.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/sortBy.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/sortWith.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/split.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/splitAt.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/splitEvery.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/splitWhen.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/splitWhenever.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/startsWith.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/subtract.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/swap.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/symmetricDifference.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/symmetricDifferenceWith.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/takeLastWhile.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xtakeWhile.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/takeWhile.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xtap.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/tap.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_isRegExp.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/test.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/andThen.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/toLower.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/toPairs.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/toPairsIn.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/toUpper.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/transduce.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/transpose.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/traverse.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/trim.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/tryCatch.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/unapply.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/unary.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/uncurryN.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/unfold.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/union.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/internal/_xuniqWith.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/uniqWith.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/unionWith.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/unless.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/unnest.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/until.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/unwind.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/valuesIn.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/view.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/when.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/where.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/whereAny.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/whereEq.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/without.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/xor.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/xprod.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/zip.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/zipObj.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/zipWith.js","../../../node_modules/.pnpm/ramda@0.32.0/node_modules/ramda/es/thunkify.js","../src/ES/Tree.js","../src/ES/QRW.js","../src/ES/Chain.js","../src/ES/Trans.js","../src/ES/Judgment.js","../src/ES/Singleton.js","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/dayjs.min.js","../src/Instance/transFunc.js","../src/Instance/transRule.js","../src/Instance/transCore.js","../src/index.js"],"sourcesContent":["'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n if (isBuffer(obj)){\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless, skipUndefined} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n const msg = error && error.message ? error.message : 'Error';\n\n // Prefer explicit code; otherwise copy the low-level error's code (e.g. ECONNREFUSED)\n const errCode = code == null && error ? error.code : code;\n AxiosError.call(axiosError, msg, errCode, config, request, response);\n\n // Chain the original error on the standard field; non-enumerable to avoid JSON noise\n if (error && axiosError.cause == null) {\n Object.defineProperty(axiosError, 'cause', { value: error, configurable: true });\n }\n\n axiosError.name = (error && error.name) || 'Error';\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {void}\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) => mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true)\n };\n\n utils.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n } \n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n \n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst {isFunction} = utils;\n\nconst globalFetchAPI = (({Request, Response}) => ({\n Request, Response\n}))(utils.global);\n\nconst {\n ReadableStream, TextEncoder\n} = utils.global;\n\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst factory = (env) => {\n env = utils.merge.call({\n skipUndefined: true\n }, globalFetchAPI, env);\n\n const {fetch: envFetch, Request, Response} = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Request(str).arrayBuffer())\n );\n\n const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream = isResponseSupported && isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n };\n\n isFetchSupported && ((() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n })());\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n }\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n }\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request = null;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && \"credentials\" in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions));\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n }\n}\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const {fetch, Request, Response} = env;\n const seeds = [\n Request, Response, fetch\n ];\n\n let len = seeds.length, i = len,\n seed, target, map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, target = (i ? new Map() : factory(env)))\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n * \n * @type {Object<string, Function|Object>}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n }\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', { value });\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', { value });\n }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n * \n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n * \n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n * \n * @param {Array<string|Function>|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const { length } = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object<string, Function|Object>}\n */\n adapters: knownAdapters\n};\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.13.2\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","import axios from \"axios\"\r\n\r\n/**\r\n * 通过文件资源管理器选择本地文件\r\n * @param [acceptType] 接受的文件类型,例:‘image/*’\r\n * @param multiple 是否可选多个文件\r\n * @return {Promise<FileList>}\r\n */\r\nexport function chooseFile(acceptType, multiple) {\r\n return new Promise((resolve) => {\r\n let input = document.querySelector(\"#lcf-choose-file-input\")\r\n if(!input) {\r\n input = document.createElement(\"input\")\r\n input.type = 'file'\r\n input.id = 'lcf-choose-file-input'\r\n input.style.display = 'none'\r\n if(acceptType) input.accept = acceptType\r\n if(multiple) input.multiple = true\r\n input.onchange = function () {\r\n resolve(input.files)\r\n input.remove()\r\n }\r\n document.body.append(input) // 兼容ios,ios下input必须挂载到页面上才可以使用拍照功能\r\n }\r\n input.click()\r\n })\r\n}\r\n\r\n/**\r\n * 选择本地json文件后直接返回json对象/数组\r\n */\r\nexport async function chooseJsonObj() {\r\n let files = await chooseFile()\r\n let jsonStr = await file2Json(files[0])\r\n return JSON.parse(jsonStr)\r\n}\r\n\r\n/**\r\n * 通过请求从服务器读取文件(亦可读取项目内文件)\r\n * @param url 文件路径\r\n * @param [fileName] 文件名,默认取url参数末位单元,'/'为分隔符\r\n * @return {Promise<File>}\r\n */\r\nexport function requestFile(url, fileName) {\r\n if(!fileName) {\r\n const urlList = url.split('/')\r\n fileName = urlList[urlList.length - 1]\r\n }\r\n return new Promise((resolve, reject) => {\r\n axios({\r\n method:'get',\r\n url,\r\n responseType: 'arraybuffer'\r\n }).then(res => {\r\n resolve(new File([res.data], fileName))\r\n }).catch(error => {\r\n reject(error.toString())\r\n })\r\n })\r\n}\r\n\r\n/**\r\n * 从服务器读取json(亦可读取项目内文件)\r\n * @param url 文件路径\r\n * @return {Promise<File>}\r\n */\r\nexport function requestJSON(url) {\r\n return new Promise((resolve, reject) => {\r\n axios({\r\n method:'get',\r\n url,\r\n responseType: 'json'\r\n }).then(res => {\r\n resolve(res.data)\r\n }).catch(error => {\r\n reject(error.toString())\r\n })\r\n })\r\n}\r\n\r\n/**\r\n * 下载blob格式文件\r\n */\r\nexport function downloadBlob(blob, name) {\r\n // 创建下载链接\r\n const save_link = document.createElement(\"a\");\r\n\r\n // 使用标准的 URL.createObjectURL 方法\r\n save_link.href = URL.createObjectURL(blob);\r\n save_link.download = name;\r\n\r\n // 添加到文档中(某些浏览器需要此步骤)\r\n save_link.style.display = 'none';\r\n document.body.appendChild(save_link);\r\n\r\n // 触发下载\r\n save_link.click();\r\n\r\n // 清理资源\r\n setTimeout(() => {\r\n document.body.removeChild(save_link);\r\n URL.revokeObjectURL(save_link.href);\r\n }, 100);\r\n}\r\n\r\n/**\r\n * 下载文本\r\n * @param text - 要下载的文本内容\r\n * @param name - 下载的文件名(包括扩展名)\r\n */\r\nexport function downloadText(text, name) {\r\n // 创建文本内容的 Blob 对象\r\n const blob = new Blob([text], { type: 'text/plain' });\r\n\r\n // 创建下载链接\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(blob);\r\n link.download = name;\r\n link.style.position = 'fixed';\r\n link.style.top = '-1000px'; // 移出可视区域\r\n\r\n // 添加到文档\r\n document.body.appendChild(link);\r\n\r\n // 触发下载\r\n link.click();\r\n\r\n // 清理资源\r\n const cleanup = () => {\r\n if (link.parentNode) {\r\n link.parentNode.removeChild(link);\r\n }\r\n URL.revokeObjectURL(link.href);\r\n };\r\n\r\n // 延迟清理确保下载开始\r\n setTimeout(cleanup, 100);\r\n}\r\n\r\n/**\r\n * 下载remote地址文件,使用html标签直接下载在微前端等情况下可能无法约束下载格式。所以应使用此种方式。\r\n */\r\nexport async function downloadByUrl(url, name) {\r\n const f = await requestFile(url, name)\r\n downloadBlob(f, name)\r\n}\r\n\r\n/**\r\n * file转json字符\r\n */\r\nexport async function file2Json(file) {\r\n return new Promise(resolve => {\r\n const FR = new FileReader()\r\n FR.readAsText(file)\r\n FR.onload = function (e) {\r\n resolve(e.target.result)\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * json字符转blob对象\r\n */\r\nexport function json2Blob(jsonObject) {\r\n return new Blob([jsonObject])\r\n}\r\n\r\n/**\r\n * base64转换\r\n */\r\nexport function toBase64(str){\r\n let encode = encodeURI(str);\r\n return btoa(encode);\r\n}\r\n","/**\r\n * 移动弹窗[用于拖动绝对定位的元素]\r\n * @param eventDown 鼠标按下事件对象\r\n * @param selector 弹窗选择器\r\n * @param restrictionType 限制类型:'none'(无限制)/'full'(限制整个弹窗)/'drag-point'(限制拖动点,默认)\r\n */\r\nexport const movePanel = (eventDown, selector, restrictionType = 'drag-point') => {\r\n eventDown.preventDefault();\r\n const disX = eventDown.layerX;\r\n const disY = eventDown.layerY;\r\n\r\n const panel = document.querySelector(selector);\r\n // 获取弹窗的宽高\r\n const panelWidth = panel.offsetWidth;\r\n const panelHeight = panel.offsetHeight;\r\n\r\n document.onmousemove = (eventMove) => {\r\n moveOption(eventMove);\r\n };\r\n\r\n document.onmouseup = () => {\r\n document.onmousemove = null;\r\n document.onmouseup = null;\r\n };\r\n\r\n const moveOption = (eventMove) => {\r\n // 获取浏览器可视区域尺寸\r\n const clientWidth = document.documentElement.clientWidth;\r\n const clientHeight = document.documentElement.clientHeight;\r\n\r\n // 计算无边界限制时的位置\r\n let left = eventMove.clientX - disX;\r\n let top = eventMove.clientY - disY;\r\n\r\n // 根据限制类型应用不同的边界检查\r\n switch (restrictionType) {\r\n case 'full': // 限制整个弹窗在屏幕内\r\n left = Math.max(0, Math.min(left, clientWidth - panelWidth));\r\n top = Math.max(0, Math.min(top, clientHeight - panelHeight));\r\n break;\r\n\r\n case 'drag-point': // 限制拖动点在屏幕内(默认)\r\n // 计算拖动点(鼠标按下的位置)的屏幕坐标\r\n const dragPointX = left + disX;\r\n const dragPointY = top + disY;\r\n\r\n // 确保拖动点不超出屏幕边界\r\n if (dragPointX < 0) left = -disX;\r\n if (dragPointY < 0) top = -disY;\r\n if (dragPointX > clientWidth) left = clientWidth - disX;\r\n if (dragPointY > clientHeight) top = clientHeight - disY;\r\n break;\r\n\r\n case 'none': // 无限制\r\n default:\r\n // 不需要边界检查\r\n break;\r\n }\r\n\r\n // 应用位置\r\n panel.style.top = top + 'px';\r\n panel.style.left = left + 'px';\r\n }\r\n}\r\n/**\r\n * 移动弹窗[用于拖动相对定位的元素]\r\n * @param eventDown\r\n * @param selector\r\n */\r\nexport const moveRelate = (eventDown, selector) => {\r\n eventDown.preventDefault()\r\n let disX = eventDown.pageX;\r\n let disY = eventDown.pageY;\r\n let startX = parseInt(document.querySelector(selector).style.left || '0')\r\n let startY = parseInt(document.querySelector(selector).style.top || '0')\r\n document.onmousemove = (eventMove) => {\r\n moveOption(eventMove)\r\n };\r\n document.onmouseup = () => {\r\n document.onmousemove = null;\r\n document.onmouseup = null;\r\n };\r\n const moveOption = (eventMove) => {\r\n let left = eventMove.pageX - disX;\r\n let top = eventMove.pageY - disY;\r\n document.querySelector(selector).style.top = top + startY + 'px'\r\n document.querySelector(selector).style.left = left + startX+ 'px'\r\n }\r\n}\r\n\r\n/**\r\n * 计算文本宽度\r\n * @param str\r\n * @param fontSize\r\n * @return {number}\r\n */\r\nexport function getTextWidth(str, fontSize = '14px') {\r\n let result;\r\n let ele = document.createElement('span')\r\n ele.innerText = str;\r\n ele.style.fontSize = fontSize;\r\n document.documentElement.append(ele);\r\n result = ele.offsetWidth;\r\n document.documentElement.removeChild(ele);\r\n return result;\r\n}\r\n\r\n/**\r\n * 计算图片真实尺寸\r\n * @param url\r\n * @return {Promise<unknown>}\r\n */\r\nfunction getImageSizeByUrl(url) {\r\n return new Promise(function (resolve, reject) {\r\n let image = new Image();\r\n image.onload = function () {\r\n resolve({\r\n width: image.width,\r\n height: image.height\r\n });\r\n };\r\n image.onerror = function () {\r\n reject(new Error('error'));\r\n };\r\n image.src = url;\r\n });\r\n}\r\n","/**\r\n * 检测是否为移动设备\r\n * 综合使用User-Agent、屏幕尺寸和触摸支持进行判断\r\n * 时间复杂度O(1):直接访问浏览器属性和正则匹配\r\n *\r\n * @returns {boolean} 是否为移动设备\r\n *\r\n * @example\r\n * if (isMobileDevice()) {\r\n * console.log('当前在移动设备上');\r\n * // 加载移动端优化样式\r\n * }\r\n */\r\nexport function isMobileDevice() {\r\n // 1. 检查User-Agent\r\n const mobileUserAgent = /Mobile|Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i;\r\n const isMobileUA = mobileUserAgent.test(navigator.userAgent);\r\n\r\n // 2. 检查屏幕尺寸(移动设备通常宽度小于768px)\r\n const isSmallScreen = window.innerWidth <= 768;\r\n\r\n // 3. 检查触摸支持\r\n const hasTouchSupport = 'ontouchstart' in window ||\r\n navigator.maxTouchPoints > 0 ||\r\n navigator.msMaxTouchPoints > 0;\r\n\r\n // 4. 检查设备像素比(移动设备通常有较高的DPI)\r\n const isHighDPI = window.devicePixelRatio >= 1.5;\r\n\r\n // 综合判断:User-Agent匹配或(小屏幕且支持触摸)\r\n return isMobileUA || (isSmallScreen && hasTouchSupport);\r\n}\r\n\r\n/**\r\n * 获取设备类型详细信息\r\n * 时间复杂度O(1):直接访问浏览器属性和正则匹配\r\n *\r\n * @returns {Object} 设备信息对象,包含类型、屏幕尺寸等\r\n *\r\n * @example\r\n * const deviceInfo = getDeviceInfo();\r\n * console.log(deviceInfo.type); // 'mobile', 'tablet', 'desktop'\r\n * console.log(deviceInfo.screenWidth); // 屏幕宽度\r\n */\r\nexport function getDeviceInfo() {\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n const screenWidth = window.innerWidth;\r\n\r\n let type = 'desktop';\r\n let subType = 'unknown';\r\n\r\n // 检测设备类型\r\n if (/mobile|android|iphone|ipod/.test(userAgent)) {\r\n type = 'mobile';\r\n if (/iphone|ipod/.test(userAgent)) subType = 'iphone';\r\n else if (/android/.test(userAgent)) subType = 'android';\r\n } else if (/ipad/.test(userAgent) || (screenWidth <= 1024 && screenWidth > 768)) {\r\n type = 'tablet';\r\n if (/ipad/.test(userAgent)) subType = 'ipad';\r\n }\r\n\r\n // 根据屏幕尺寸进一步调整\r\n if (type === 'desktop' && screenWidth <= 768) {\r\n type = 'mobile';\r\n }\r\n\r\n return {\r\n type,\r\n subType,\r\n screenWidth,\r\n screenHeight: window.innerHeight,\r\n pixelRatio: window.devicePixelRatio,\r\n userAgent: navigator.userAgent\r\n };\r\n}\r\n\r\n/**\r\n * 复制文本到剪贴板\r\n * 优先使用现代Clipboard API,降级到传统execCommand方法\r\n * 时间复杂度O(1):直接调用浏览器API\r\n *\r\n * @param {string} text - 要复制的文本内容\r\n * @returns {Promise<boolean>} 复制是否成功\r\n *\r\n * @example\r\n * // 使用async/await\r\n * const success = await copyText('Hello World');\r\n * if (success) {\r\n * console.log('复制成功');\r\n * }\r\n *\r\n * // 使用Promise\r\n * copyText('Hello World').then(success => {\r\n * if (success) {\r\n * console.log('复制成功');\r\n * }\r\n * });\r\n */\r\nexport function copyText(text) {\r\n // 输入验证\r\n if (typeof text !== 'string') {\r\n console.warn('dlsjs: copyText 参数必须是字符串');\r\n return Promise.resolve(false);\r\n }\r\n\r\n if (text === '') {\r\n console.warn('dlsjs: copyText 不能复制空字符串');\r\n return Promise.resolve(false);\r\n }\r\n\r\n // 优先使用现代Clipboard API(需要安全上下文)\r\n if (navigator.clipboard && window.isSecureContext) {\r\n return navigator.clipboard.writeText(text)\r\n .then(() => true)\r\n .catch(error => {\r\n console.error('dlsjs: 使用Clipboard API复制失败:', error);\r\n return fallbackCopyText(text);\r\n });\r\n }\r\n\r\n // 降级到传统方法\r\n return Promise.resolve(fallbackCopyText(text));\r\n}\r\n\r\n/**\r\n * 传统复制文本方法(降级方案)\r\n * 时间复杂度O(1):DOM操作和execCommand调用\r\n *\r\n * @param {string} text - 要复制的文本\r\n * @returns {boolean} 复制是否成功\r\n */\r\nfunction fallbackCopyText(text) {\r\n try {\r\n // 创建临时textarea元素(比input更适合多行文本)\r\n const textarea = document.createElement('textarea');\r\n textarea.value = text;\r\n textarea.style.position = 'fixed';\r\n textarea.style.left = '-9999px';\r\n textarea.style.top = '0';\r\n textarea.setAttribute('readonly', '');\r\n\r\n document.body.appendChild(textarea);\r\n\r\n // 选择文本(兼容不同浏览器)\r\n if (textarea.select) {\r\n textarea.select();\r\n } else if (textarea.setSelectionRange) {\r\n textarea.setSelectionRange(0, textarea.value.length);\r\n }\r\n\r\n // 尝试复制\r\n const successful = document.execCommand('copy');\r\n document.body.removeChild(textarea);\r\n\r\n if (!successful) {\r\n console.warn('dlsjs: 传统复制方法执行失败');\r\n }\r\n\r\n return successful;\r\n } catch (error) {\r\n console.error('dlsjs: 传统复制方法出错:', error);\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * 检查剪贴板API是否可用\r\n * 时间复杂度O(1):直接检查浏览器API支持\r\n *\r\n * @returns {boolean} 剪贴板API是否可用\r\n *\r\n * @example\r\n * if (isClipboardSupported()) {\r\n * // 可以使用现代剪贴板API\r\n * } else {\r\n * // 需要使用传统方法\r\n * }\r\n */\r\nexport function isClipboardSupported() {\r\n return !!(navigator.clipboard && window.isSecureContext);\r\n}\r\n\r\n/**\r\n * 读取剪贴板文本内容\r\n * 需要用户授权,只能在安全上下文(HTTPS)中使用\r\n * 时间复杂度O(1):直接调用浏览器API\r\n *\r\n * @returns {Promise<string>} 剪贴板中的文本内容\r\n *\r\n * @example\r\n * try {\r\n * const text = await readClipboardText();\r\n * console.log('剪贴板内容:', text);\r\n * } catch (error) {\r\n * console.error('读取剪贴板失败:', error);\r\n * }\r\n */\r\nexport function readClipboardText() {\r\n if (!isClipboardSupported()) {\r\n return Promise.reject(new Error('dlsjs: 当前环境不支持剪贴板读取'));\r\n }\r\n\r\n return navigator.clipboard.readText()\r\n .catch(error => {\r\n console.error('dlsjs: 读取剪贴板失败:', error);\r\n throw error;\r\n });\r\n}\r\n","/**\r\n * 等待一个结果为真的情况执行\r\n */\r\n\r\nexport function waitValue (valueGetter, timeout = 10000, freq = 100) {\r\n return new Promise((resolve,reject) => {\r\n let count = 0\r\n let timerId = setInterval(() => {\r\n if(count*freq > timeout) {\r\n clearInterval(timerId)\r\n reject('等待超时')\r\n }\r\n if(valueGetter()) {\r\n clearInterval(timerId)\r\n resolve(valueGetter())\r\n }\r\n count++\r\n }, freq)\r\n })\r\n}\r\n\r\n/**\r\n * 等待固定毫秒数\r\n * @param ms\r\n */\r\nexport async function waitMS (ms) {\r\n return new Promise(resolve => {\r\n setTimeout(resolve, ms)\r\n })\r\n}\r\n\r\n/**\r\n * 一个变化代理,如果一段时间内反复横跳,则取最后,相当于节流防抖的赋值代理版本。\r\n * 应用场景:解决loading状态在多处频繁变化\r\n */\r\nexport function lazyChange (obj, timeout = 100) {\r\n let timer = null\r\n const handler = {\r\n set: (target, key, value) => {\r\n if(!timer) target[key] = value\r\n else clearTimeout(timer)\r\n timer = setTimeout(() => {target[key] = value}, timeout)\r\n return true\r\n }\r\n }\r\n return new Proxy(obj, handler)\r\n}\r\n\r\n/**\r\n * async防抖函数,接收一个async函数,返回节流的async函数\r\n * 先执行一次,timeout毫秒内在发生调用则忽视,timeout后才可继续调用\r\n */\r\nexport function throttleAsync(func, timeout = 100) {\r\n let lastTime = 0\r\n return async function(...args) {\r\n const now = Date.now()\r\n if(now - lastTime < timeout) {\r\n return\r\n }\r\n lastTime = now\r\n return await func(...args)\r\n }\r\n}\r\n\r\n/**\r\n * 接收一个async函数,返回新的async函数\r\n * 至少freq毫秒后触发该函数,freq内再次触发,取消前一次触发,直到freq毫秒内没有触发,正式执行这个函数\r\n */\r\nexport function debounceAsync(func, wait = 100) {\r\n let timer = null\r\n return function(...args) {\r\n if(timer) clearTimeout(timer)\r\n timer = setTimeout(() => {\r\n func(...args)\r\n }, wait)\r\n }\r\n}\r\n\r\n/**\r\n * 轮询工具\r\n */\r\nexport class Poll {\r\n constructor() {\r\n this.timer = null\r\n this.func = () => {}\r\n this.freq = 1000\r\n }\r\n init() {\r\n if(this.timer) return\r\n this.func()\r\n this.timer = setInterval(() => {\r\n this.func()\r\n },this.freq)\r\n }\r\n destroy() {\r\n clearInterval(this.timer)\r\n this.timer = null\r\n }\r\n}\r\n","/**\r\n * 切换全屏状态\r\n * 如果当前处于全屏模式则退出,否则进入全屏模式\r\n * 时间复杂度O(1):直接调用浏览器API,无循环操作\r\n *\r\n * @param {HTMLElement} [element=document.documentElement] - 要设置为全屏的元素,默认为整个文档\r\n * @returns {boolean} 操作是否成功执行\r\n *\r\n * @example\r\n * // 切换整个文档的全屏状态\r\n * toggleFullscreen();\r\n *\r\n * // 切换指定元素的全屏状态\r\n * toggleFullscreen(document.getElementById('myElement'));\r\n */\r\nexport function toggleFullscreen(element = document.documentElement) {\r\n if (!element || !(element instanceof HTMLElement)) {\r\n console.warn('dlsjs: toggleFullscreen 参数必须是有效的HTML元素');\r\n return false;\r\n }\r\n\r\n if (isFullscreenActive()) {\r\n return exitFullscreen();\r\n } else {\r\n return requestFullscreen(element);\r\n }\r\n}\r\n\r\n/**\r\n * 请求进入全屏模式\r\n * 时间复杂度O(1):直接调用浏览器API,无循环操作\r\n *\r\n * @param {HTMLElement} element - 要设置为全屏的元素\r\n * @returns {boolean} 操作是否成功发起\r\n *\r\n * @example\r\n * requestFullscreen(document.getElementById('myElement'));\r\n */\r\nexport function requestFullscreen(element) {\r\n if (!element || !(element instanceof HTMLElement)) {\r\n console.warn('dlsjs: requestFullscreen 参数必须是有效的HTML元素');\r\n return false;\r\n }\r\n\r\n try {\r\n // 处理不同浏览器的全屏API\r\n const requestMethod =\r\n element.requestFullscreen ||\r\n element.webkitRequestFullscreen ||\r\n element.mozRequestFullScreen ||\r\n element.msRequestFullscreen;\r\n\r\n if (requestMethod) {\r\n requestMethod.call(element);\r\n return true;\r\n } else {\r\n console.warn('dlsjs: 当前浏览器不支持全屏API');\r\n return false;\r\n }\r\n } catch (error) {\r\n console.error('dlsjs: 全屏请求失败:', error);\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * 退出全屏模式\r\n * 时间复杂度O(1):直接调用浏览器API,无循环操作\r\n *\r\n * @returns {boolean} 操作是否成功发起\r\n *\r\n * @example\r\n * exitFullscreen();\r\n */\r\nexport function exitFullscreen() {\r\n try {\r\n // 处理不同浏览器的退出全屏API\r\n const exitMethod =\r\n document.exitFullscreen ||\r\n document.webkitExitFullscreen ||\r\n document.mozCancelFullScreen ||\r\n document.msExitFullscreen;\r\n\r\n if (exitMethod) {\r\n exitMethod.call(document);\r\n return true;\r\n } else {\r\n console.warn('dlsjs: 当前浏览器不支持退出全屏API');\r\n return false;\r\n }\r\n } catch (error) {\r\n console.error('dlsjs: 退出全屏失败:', error);\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * 检查当前是否处于全屏模式\r\n * 时间复杂度O(1):直接访问浏览器属性,无循环操作\r\n *\r\n * @returns {boolean} 当前是否处于全屏模式\r\n *\r\n * @example\r\n * if (isFullscreenActive()) {\r\n * console.log('当前处于全屏模式');\r\n * }\r\n */\r\nexport function isFullscreenActive() {\r\n return !!(\r\n document.fullscreenElement ||\r\n document.webkitFullscreenElement ||\r\n document.mozFullScreenElement ||\r\n document.msFullscreenElement\r\n );\r\n}\r\n\r\n/**\r\n * 获取当前全屏元素\r\n * 时间复杂度O(1):直接访问浏览器属性,无循环操作\r\n *\r\n * @returns {HTMLElement|null} 当前全屏元素,如果没有则返回null\r\n *\r\n * @example\r\n * const fullscreenElement = getFullscreenElement();\r\n */\r\nexport function getFullscreenElement() {\r\n return (\r\n document.fullscreenElement ||\r\n document.webkitFullscreenElement ||\r\n document.mozFullScreenElement ||\r\n document.msFullscreenElement ||\r\n null\r\n );\r\n}\r\n\r\n/**\r\n * 添加全屏状态变化监听器\r\n * 时间复杂度O(1):直接添加事件监听器,无循环操作\r\n *\r\n * @param {Function} callback - 状态变化时的回调函数\r\n * @returns {Function} 移除监听器的函数\r\n *\r\n * @example\r\n * const removeListener = addFullscreenChangeListener(() => {\r\n * console.log('全屏状态发生变化');\r\n * });\r\n *\r\n * // 稍后移除监听器\r\n * removeListener();\r\n */\r\nexport function addFullscreenChangeListener(callback) {\r\n if (typeof callback !== 'function') {\r\n console.warn('dlsjs: addFullscreenChangeListener 参数必须是函数');\r\n return () => {};\r\n }\r\n\r\n const eventName =\r\n 'fullscreenchange' in document ? 'fullscreenchange' :\r\n 'webkitfullscreenchange' in document ? 'webkitfullscreenchange' :\r\n 'mozfullscreenchange' in document ? 'mozfullscreenchange' :\r\n 'MSFullscreenChange' in document ? 'MSFullscreenChange' : null;\r\n\r\n if (!eventName) {\r\n console.warn('dlsjs: 当前浏览器不支持全屏变化事件');\r\n return () => {};\r\n }\r\n\r\n const handler = () => callback(isFullscreenActive());\r\n document.addEventListener(eventName, handler);\r\n\r\n // 返回移除监听器的函数\r\n return () => {\r\n document.removeEventListener(eventName, handler);\r\n };\r\n}\r\n","/**\n * 获取localStorage缓存值\n * @param {string} key 存储在localstorage的键名\n * @returns {string|{}} 如果能通过json转化则返回对象,否则返回原字符串\n */\nexport function localGet (key) {\n const value = window.localStorage.getItem(key)\n try {\n return JSON.parse(window.localStorage.getItem(key))\n } catch (error) {\n return value\n }\n}\n\n/**\n * 设定localStorage缓存值\n * @param {string} key 存储在localstorage的键名\n * @param {{}|any} value 可以存储简单对象或者简单类型\n */\nexport function localSet (key, value) {\n window.localStorage.setItem(key, JSON.stringify(value))\n}\n\n/**\n * 删除localStorage缓存值\n * @param {string} key 存储在localstorage的键名\n */\nexport function localRemove (key) {\n window.localStorage.removeItem(key)\n}\n\n/**\n * 获取sessionStorage缓存值\n * @param {string} key 存储在sessionStorage的键名\n * @returns {string|{}} 如果能通过json转化则返回对象,否则返回原字符串\n */\nexport function sessionGet (key) {\n const value = window.sessionStorage.getItem(key)\n try {\n return JSON.parse(window.sessionStorage.getItem(key))\n } catch (error) {\n return value\n }\n}\n\n/**\n * 设定sessionStorage缓存值\n * @param {string} key 存储在sessionStorage的键名\n * @param value 可以存储简单对象或者简单类型\n */\nexport function sessionSet (key, value) {\n window.sessionStorage.setItem(key, JSON.stringify(value))\n}\n\n/**\n * 删除sessionStorage缓存值\n * @param {string} key 存储在sessionStorage的键名\n */\nexport function sessionRemove (key) {\n window.sessionStorage.removeItem(key)\n}\n","/**\n * A function that always returns `false`. Any passed in parameters are ignored.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Function\n * @sig * -> Boolean\n * @param {*}\n * @return {Boolean}\n * @see R.T\n * @example\n *\n * R.F(); //=> false\n */\nvar F = function () {\n return false;\n};\nexport default F;","/**\n * A function that always returns `true`. Any passed in parameters are ignored.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Function\n * @sig * -> Boolean\n * @param {*}\n * @return {Boolean}\n * @see R.F\n * @example\n *\n * R.T(); //=> true\n */\nvar T = function () {\n return true;\n};\nexport default T;","/**\n * A special placeholder value used to specify \"gaps\" within curried functions,\n * allowing partial application of any combination of arguments, regardless of\n * their positions.\n *\n * If `g` is a curried ternary function and `_` is `R.__`, the following are\n * equivalent:\n *\n * - `g(1, 2, 3)`\n * - `g(_, 2, 3)(1)`\n * - `g(_, _, 3)(1)(2)`\n * - `g(_, _, 3)(1, 2)`\n * - `g(_, 2, _)(1, 3)`\n * - `g(_, 2)(1)(3)`\n * - `g(_, 2)(1, 3)`\n * - `g(_, 2)(_, 3)(1)`\n *\n * @name __\n * @constant\n * @memberOf R\n * @since v0.6.0\n * @category Function\n * @example\n *\n * const greet = R.replace('{name}', R.__, 'Hello, {name}!');\n * greet('Alice'); //=> 'Hello, Alice!'\n */\nexport default {\n '@@functional/placeholder': true\n};","export default function _isPlaceholder(a) {\n return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true;\n}","import _isPlaceholder from \"./_isPlaceholder.js\";\n\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curry1(fn) {\n return function f1(a) {\n if (arguments.length === 0 || _isPlaceholder(a)) {\n return f1;\n } else {\n return fn.apply(this, arguments);\n }\n };\n}","import _curry1 from \"./_curry1.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n\n/**\n * Optimized internal two-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curry2(fn) {\n return function f2(a, b) {\n switch (arguments.length) {\n case 0:\n return f2;\n case 1:\n return _isPlaceholder(a) ? f2 : _curry1(function (_b) {\n return fn(a, _b);\n });\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b);\n }) : fn(a, b);\n }\n };\n}","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Adds two values.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig Number -> Number -> Number\n * @param {Number} a\n * @param {Number} b\n * @return {Number}\n * @see R.subtract\n * @example\n *\n * R.add(2, 3); //=> 5\n * R.add(7)(10); //=> 17\n */\nvar add = /*#__PURE__*/_curry2(function add(a, b) {\n return Number(a) + Number(b);\n});\nexport default add;","/**\n * Private `concat` function to merge two array-like objects.\n *\n * @private\n * @param {Array|Arguments} [set1=[]] An array-like object.\n * @param {Array|Arguments} [set2=[]] An array-like object.\n * @return {Array} A new, merged array.\n * @example\n *\n * _concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3]\n */\nexport default function _concat(set1, set2) {\n set1 = set1 || [];\n set2 = set2 || [];\n var idx;\n var len1 = set1.length;\n var len2 = set2.length;\n var result = [];\n idx = 0;\n while (idx < len1) {\n result[result.length] = set1[idx];\n idx += 1;\n }\n idx = 0;\n while (idx < len2) {\n result[result.length] = set2[idx];\n idx += 1;\n }\n return result;\n}","export default function _arity(n, fn) {\n /* eslint-disable no-unused-vars */\n switch (n) {\n case 0:\n return function () {\n return fn.apply(this, arguments);\n };\n case 1:\n return function (a0) {\n return fn.apply(this, arguments);\n };\n case 2:\n return function (a0, a1) {\n return fn.apply(this, arguments);\n };\n case 3:\n return function (a0, a1, a2) {\n return fn.apply(this, arguments);\n };\n case 4:\n return function (a0, a1, a2, a3) {\n return fn.apply(this, arguments);\n };\n case 5:\n return function (a0, a1, a2, a3, a4) {\n return fn.apply(this, arguments);\n };\n case 6:\n return function (a0, a1, a2, a3, a4, a5) {\n return fn.apply(this, arguments);\n };\n case 7:\n return function (a0, a1, a2, a3, a4, a5, a6) {\n return fn.apply(this, arguments);\n };\n case 8:\n return function (a0, a1, a2, a3, a4, a5, a6, a7) {\n return fn.apply(this, arguments);\n };\n case 9:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {\n return fn.apply(this, arguments);\n };\n case 10:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n return fn.apply(this, arguments);\n };\n default:\n throw new Error('First argument to _arity must be a non-negative integer no greater than ten');\n }\n}","import _arity from \"./_arity.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n\n/**\n * Internal curryN function.\n *\n * @private\n * @category Function\n * @param {Number} length The arity of the curried function.\n * @param {Array} received An array of arguments received thus far.\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curryN(length, received, fn) {\n return function () {\n var combined = [];\n var argsIdx = 0;\n var left = length;\n var combinedIdx = 0;\n var hasPlaceholder = false;\n while (combinedIdx < received.length || argsIdx < arguments.length) {\n var result;\n if (combinedIdx < received.length && (!_isPlaceholder(received[combinedIdx]) || argsIdx >= arguments.length)) {\n result = received[combinedIdx];\n } else {\n result = arguments[argsIdx];\n argsIdx += 1;\n }\n combined[combinedIdx] = result;\n if (!_isPlaceholder(result)) {\n left -= 1;\n } else {\n hasPlaceholder = true;\n }\n combinedIdx += 1;\n }\n return !hasPlaceholder && left <= 0 ? fn.apply(this, combined) : _arity(Math.max(0, left), _curryN(length, combined, fn));\n };\n}","import _arity from \"./internal/_arity.js\";\nimport _curry1 from \"./internal/_curry1.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _curryN from \"./internal/_curryN.js\";\n\n/**\n * Returns a curried equivalent of the provided function, with the specified\n * arity. The curried function has two unusual capabilities. First, its\n * arguments needn't be provided one at a time. If `g` is `R.curryN(3, f)`, the\n * following are equivalent:\n *\n * - `g(1)(2)(3)`\n * - `g(1)(2, 3)`\n * - `g(1, 2)(3)`\n * - `g(1, 2, 3)`\n *\n * Secondly, the special placeholder value [`R.__`](#__) may be used to specify\n * \"gaps\", allowing partial application of any combination of arguments,\n * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),\n * the following are equivalent:\n *\n * - `g(1, 2, 3)`\n * - `g(_, 2, 3)(1)`\n * - `g(_, _, 3)(1)(2)`\n * - `g(_, _, 3)(1, 2)`\n * - `g(_, 2)(1)(3)`\n * - `g(_, 2)(1, 3)`\n * - `g(_, 2)(_, 3)(1)`\n *\n * @func\n * @memberOf R\n * @since v0.5.0\n * @category Function\n * @sig Number -> (* -> a) -> (* -> a)\n * @param {Number} length The arity for the returned function.\n * @param {Function} fn The function to curry.\n * @return {Function} A new, curried function.\n * @see R.curry\n * @example\n *\n * const sumArgs = (...args) => R.sum(args);\n *\n * const curriedAddFourNumbers = R.curryN(4, sumArgs);\n * const f = curriedAddFourNumbers(1, 2);\n * const g = f(3);\n * g(4); //=> 10\n */\nvar curryN = /*#__PURE__*/_curry2(function curryN(length, fn) {\n if (length === 1) {\n return _curry1(fn);\n }\n return _arity(length, _curryN(length, [], fn));\n});\nexport default curryN;","import _concat from \"./internal/_concat.js\";\nimport _curry1 from \"./internal/_curry1.js\";\nimport curryN from \"./curryN.js\";\n\n/**\n * Creates a new list iteration function from an existing one by adding two new\n * parameters to its callback function: the current index, and the entire list.\n *\n * This would turn, for instance, [`R.map`](#map) function into one that\n * more closely resembles `Array.prototype.map`. Note that this will only work\n * for functions in which the iteration callback function is the first\n * parameter, and where the list is the last parameter. (This latter might be\n * unimportant if the list parameter is not used.)\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Function\n * @category List\n * @sig (((a ...) -> b) ... -> [a] -> *) -> (((a ..., Int, [a]) -> b) ... -> [a] -> *)\n * @param {Function} fn A list iteration function that does not pass index or list to its callback\n * @return {Function} An altered list iteration function that passes (item, index, list) to its callback\n * @example\n *\n * const mapIndexed = R.addIndex(R.map);\n * mapIndexed((val, idx) => idx + '-' + val, ['f', 'o', 'o', 'b', 'a', 'r']);\n * //=> ['0-f', '1-o', '2-o', '3-b', '4-a', '5-r']\n */\nvar addIndex = /*#__PURE__*/_curry1(function addIndex(fn) {\n return curryN(fn.length, function () {\n var idx = 0;\n var origFn = arguments[0];\n var list = arguments[arguments.length - 1];\n var args = Array.prototype.slice.call(arguments, 0);\n args[0] = function () {\n var result = origFn.apply(this, _concat(arguments, [idx, list]));\n idx += 1;\n return result;\n };\n return fn.apply(this, args);\n });\n});\nexport default addIndex;","import _concat from \"./internal/_concat.js\";\nimport _curry1 from \"./internal/_curry1.js\";\nimport curryN from \"./curryN.js\";\n\n/**\n * As with `addIndex`, `addIndexRight` creates a new list iteration function\n * from an existing one by adding two new parameters to its callback function:\n * the current index, and the entire list.\n *\n * Unlike `addIndex`, `addIndexRight` iterates from the right to the left.\n *\n * @func\n * @memberOf R\n * @since v0.29.0\n * @category Function\n * @category List\n * @sig ((a ... -> b) ... -> [a] -> *) -> (a ..., Int, [a] -> b) ... -> [a] -> *)\n * @param {Function} fn A list iteration function that does not pass index or list to its callback\n * @return {Function} An altered list iteration function that passes (item, index, list) to its callback\n * @example\n *\n * const revmap = (fn, ary) => R.map(fn, R.reverse(ary));\n * const revmapIndexed = R.addIndexRight(revmap);\n * revmapIndexed((val, idx) => idx + '-' + val, ['f', 'o', 'o', 'b', 'a', 'r']);\n * //=> [ '5-r', '4-a', '3-b', '2-o', '1-o', '0-f' ]\n */\nvar addIndexRight = /*#__PURE__*/_curry1(function addIndex(fn) {\n return curryN(fn.length, function () {\n var origFn = arguments[0];\n var list = arguments[arguments.length - 1];\n var idx = list.length - 1;\n var args = Array.prototype.slice.call(arguments, 0);\n args[0] = function () {\n var result = origFn.apply(this, _concat(arguments, [idx, list]));\n idx -= 1;\n return result;\n };\n return fn.apply(this, args);\n });\n});\nexport default addIndexRight;","import _curry1 from \"./_curry1.js\";\nimport _curry2 from \"./_curry2.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n\n/**\n * Optimized internal three-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curry3(fn) {\n return function f3(a, b, c) {\n switch (arguments.length) {\n case 0:\n return f3;\n case 1:\n return _isPlaceholder(a) ? f3 : _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n });\n case 2:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f3 : _isPlaceholder(a) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _curry1(function (_c) {\n return fn(a, b, _c);\n });\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) && _isPlaceholder(c) ? f3 : _isPlaceholder(a) && _isPlaceholder(b) ? _curry2(function (_a, _b) {\n return fn(_a, _b, c);\n }) : _isPlaceholder(a) && _isPlaceholder(c) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) && _isPlaceholder(c) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b, c);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b, c);\n }) : _isPlaceholder(c) ? _curry1(function (_c) {\n return fn(a, b, _c);\n }) : fn(a, b, c);\n }\n };\n}","import _concat from \"./internal/_concat.js\";\nimport _curry3 from \"./internal/_curry3.js\";\n\n/**\n * Applies a function to the value at the given index of an array, returning a\n * new copy of the array with the element at the given index replaced with the\n * result of the function application.\n *\n * When `idx < -list.length || idx >= list.length`, the original list is returned.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category List\n * @sig Number -> (a -> a) -> [a] -> [a]\n * @param {Number} idx The index.\n * @param {Function} fn The function to apply.\n * @param {Array|Arguments} list An array-like object whose value\n * at the supplied index will be replaced.\n * @return {Array} A copy of the supplied array-like object with\n * the element at index `idx` replaced with the value\n * returned by applying `fn` to the existing element.\n * @see R.update\n * @example\n *\n * R.adjust(1, R.toUpper, ['a', 'b', 'c', 'd']); //=> ['a', 'B', 'c', 'd']\n * R.adjust(-1, R.toUpper, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c', 'D']\n *\n * // out-of-range returns original list\n * R.adjust(4, R.toUpper, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c', 'd']\n * R.adjust(-5, R.toUpper, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c', 'd']\n * @symb R.adjust(-1, f, [a, b]) = [a, f(b)]\n * @symb R.adjust(0, f, [a, b]) = [f(a), b]\n */\nvar adjust = /*#__PURE__*/_curry3(function adjust(idx, fn, list) {\n var len = list.length;\n if (idx >= len || idx < -len) {\n return list;\n }\n var _idx = (len + idx) % len;\n var _list = _concat(list);\n _list[_idx] = fn(list[_idx]);\n return _list;\n});\nexport default adjust;","/**\n * Tests whether or not an object is an array.\n *\n * @private\n * @param {*} val The object to test.\n * @return {Boolean} `true` if `val` is an array, `false` otherwise.\n * @example\n *\n * _isArray([]); //=> true\n * _isArray(null); //=> false\n * _isArray({}); //=> false\n */\nexport default Array.isArray || function _isArray(val) {\n return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]';\n};","export default function _isTransformer(obj) {\n return obj != null && typeof obj['@@transducer/step'] === 'function';\n}","import _isArray from \"./_isArray.js\";\nimport _isTransformer from \"./_isTransformer.js\";\n\n/**\n * Returns a function that dispatches with different strategies based on the\n * object in list position (last argument). If it is an array, executes [fn].\n * Otherwise, if it has a function with one of the given method names, it will\n * execute that function (functor case). Otherwise, if it is a transformer,\n * uses transducer created by [transducerCreator] to return a new transformer\n * (transducer case).\n * Otherwise, it will default to executing [fn].\n *\n * @private\n * @param {Array} methodNames properties to check for a custom implementation\n * @param {Function} transducerCreator transducer factory if object is transformer\n * @param {Function} fn default ramda implementation\n * @return {Function} A function that dispatches on object in list position\n */\nexport default function _dispatchable(methodNames, transducerCreator, fn) {\n return function () {\n if (arguments.length === 0) {\n return fn();\n }\n var obj = arguments[arguments.length - 1];\n if (!_isArray(obj)) {\n var idx = 0;\n while (idx < methodNames.length) {\n if (typeof obj[methodNames[idx]] === 'function') {\n return obj[methodNames[idx]].apply(obj, Array.prototype.slice.call(arguments, 0, -1));\n }\n idx += 1;\n }\n if (_isTransformer(obj)) {\n var transducer = transducerCreator.apply(null, Array.prototype.slice.call(arguments, 0, -1));\n return transducer(obj);\n }\n }\n return fn.apply(this, arguments);\n };\n}","export default function _reduced(x) {\n return x && x['@@transducer/reduced'] ? x : {\n '@@transducer/value': x,\n '@@transducer/reduced': true\n };\n}","export default {\n init: function () {\n return this.xf['@@transducer/init']();\n },\n result: function (result) {\n return this.xf['@@transducer/result'](result);\n }\n};","import _reduced from \"./_reduced.js\";\nimport _xfBase from \"./_xfBase.js\";\nvar XAll = /*#__PURE__*/function () {\n function XAll(f, xf) {\n this.xf = xf;\n this.f = f;\n this.all = true;\n }\n XAll.prototype['@@transducer/init'] = _xfBase.init;\n XAll.prototype['@@transducer/result'] = function (result) {\n if (this.all) {\n result = this.xf['@@transducer/step'](result, true);\n }\n return this.xf['@@transducer/result'](result);\n };\n XAll.prototype['@@transducer/step'] = function (result, input) {\n if (!this.f(input)) {\n this.all = false;\n result = _reduced(this.xf['@@transducer/step'](result, false));\n }\n return result;\n };\n return XAll;\n}();\nexport default function _xall(f) {\n return function (xf) {\n return new XAll(f, xf);\n };\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xall from \"./internal/_xall.js\";\n\n/**\n * Returns `true` if all elements of the list match the predicate, `false` if\n * there are any that don't.\n *\n * Dispatches to the `all` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> Boolean\n * @param {Function} fn The predicate function.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if the predicate is satisfied by every element, `false`\n * otherwise.\n * @see R.any, R.none, R.transduce\n * @example\n *\n * const equals3 = R.equals(3);\n * R.all(equals3)([3, 3, 3, 3]); //=> true\n * R.all(equals3)([3, 3, 1, 3]); //=> false\n */\nvar all = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['all'], _xall, function all(fn, list) {\n var idx = 0;\n while (idx < list.length) {\n if (!fn(list[idx])) {\n return false;\n }\n idx += 1;\n }\n return true;\n}));\nexport default all;","export default function _arrayFromIterator(iter) {\n var list = [];\n var next;\n while (!(next = iter.next()).done) {\n list.push(next.value);\n }\n return list;\n}","export default function _includesWith(pred, x, list) {\n var idx = 0;\n var len = list.length;\n while (idx < len) {\n if (pred(x, list[idx])) {\n return true;\n }\n idx += 1;\n }\n return false;\n}","export default function _functionName(f) {\n // String(x => x) evaluates to \"x => x\", so the pattern may not match.\n var match = String(f).match(/^function (\\w*)/);\n return match == null ? '' : match[1];\n}","export default function _has(prop, obj) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}","// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction _objectIs(a, b) {\n // SameValue algorithm\n if (a === b) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return a !== 0 || 1 / a === 1 / b;\n } else {\n // Step 6.a: NaN == NaN\n return a !== a && b !== b;\n }\n}\nexport default typeof Object.is === 'function' ? Object.is : _objectIs;","import _has from \"./_has.js\";\nvar toString = Object.prototype.toString;\nvar _isArguments = /*#__PURE__*/function () {\n return toString.call(arguments) === '[object Arguments]' ? function _isArguments(x) {\n return toString.call(x) === '[object Arguments]';\n } : function _isArguments(x) {\n return _has('callee', x);\n };\n}();\nexport default _isArguments;","import _curry1 from \"./internal/_curry1.js\";\nimport _has from \"./internal/_has.js\";\nimport _isArguments from \"./internal/_isArguments.js\";\n\n// cover IE < 9 keys issues\nvar hasEnumBug = ! /*#__PURE__*/{\n toString: null\n}.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['constructor', 'valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n// Safari bug\nvar hasArgsEnumBug = /*#__PURE__*/function () {\n 'use strict';\n\n return arguments.propertyIsEnumerable('length');\n}();\nvar contains = function contains(list, item) {\n var idx = 0;\n while (idx < list.length) {\n if (list[idx] === item) {\n return true;\n }\n idx += 1;\n }\n return false;\n};\n\n/**\n * Returns a list containing the names of all the enumerable own properties of\n * the supplied object.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> [k]\n * @param {Object} obj The object to extract properties from\n * @return {Array} An array of the object's own properties.\n * @see R.keysIn, R.values, R.toPairs\n * @example\n *\n * R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c']\n */\nvar keys = typeof Object.keys === 'function' && !hasArgsEnumBug ? /*#__PURE__*/_curry1(function keys(obj) {\n return Object(obj) !== obj ? [] : Object.keys(obj);\n}) : /*#__PURE__*/_curry1(function keys(obj) {\n if (Object(obj) !== obj) {\n return [];\n }\n var prop, nIdx;\n var ks = [];\n var checkArgsLength = hasArgsEnumBug && _isArguments(obj);\n for (prop in obj) {\n if (_has(prop, obj) && (!checkArgsLength || prop !== 'length')) {\n ks[ks.length] = prop;\n }\n }\n if (hasEnumBug) {\n nIdx = nonEnumerableProps.length - 1;\n while (nIdx >= 0) {\n prop = nonEnumerableProps[nIdx];\n if (_has(prop, obj) && !contains(ks, prop)) {\n ks[ks.length] = prop;\n }\n nIdx -= 1;\n }\n }\n return ks;\n});\nexport default keys;","import _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Gives a single-word string description of the (native) type of a value,\n * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not\n * attempt to distinguish user Object types any further, reporting them all as\n * 'Object'.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Type\n * @sig * -> String\n * @param {*} val The value to test\n * @return {String}\n * @example\n *\n * R.type({}); //=> \"Object\"\n * R.type(new Map); //=> \"Map\"\n * R.type(new Set); //=> \"Set\"\n * R.type(1); //=> \"Number\"\n * R.type(false); //=> \"Boolean\"\n * R.type('s'); //=> \"String\"\n * R.type(null); //=> \"Null\"\n * R.type([]); //=> \"Array\"\n * R.type(/[A-z]/); //=> \"RegExp\"\n * R.type(() => {}); //=> \"Function\"\n * R.type(async () => {}); //=> \"AsyncFunction\"\n * R.type(undefined); //=> \"Undefined\"\n * R.type(BigInt(123)); //=> \"BigInt\"\n */\nvar type = /*#__PURE__*/_curry1(function type(val) {\n return val === null ? 'Null' : val === undefined ? 'Undefined' : Object.prototype.toString.call(val).slice(8, -1);\n});\nexport default type;","import _arrayFromIterator from \"./_arrayFromIterator.js\";\nimport _includesWith from \"./_includesWith.js\";\nimport _functionName from \"./_functionName.js\";\nimport _has from \"./_has.js\";\nimport _objectIs from \"./_objectIs.js\";\nimport keys from \"../keys.js\";\nimport type from \"../type.js\";\n\n/**\n * private _uniqContentEquals function.\n * That function is checking equality of 2 iterator contents with 2 assumptions\n * - iterators lengths are the same\n * - iterators values are unique\n *\n * false-positive result will be returned for comparison of, e.g.\n * - [1,2,3] and [1,2,3,4]\n * - [1,1,1] and [1,2,3]\n * */\n\nfunction _uniqContentEquals(aIterator, bIterator, stackA, stackB) {\n var a = _arrayFromIterator(aIterator);\n var b = _arrayFromIterator(bIterator);\n function eq(_a, _b) {\n return _equals(_a, _b, stackA.slice(), stackB.slice());\n }\n\n // if *a* array contains any element that is not included in *b*\n return !_includesWith(function (b, aItem) {\n return !_includesWith(eq, aItem, b);\n }, b, a);\n}\nexport default function _equals(a, b, stackA, stackB) {\n if (_objectIs(a, b)) {\n return true;\n }\n var typeA = type(a);\n if (typeA !== type(b)) {\n return false;\n }\n if (typeof a['fantasy-land/equals'] === 'function' || typeof b['fantasy-land/equals'] === 'function') {\n return typeof a['fantasy-land/equals'] === 'function' && a['fantasy-land/equals'](b) && typeof b['fantasy-land/equals'] === 'function' && b['fantasy-land/equals'](a);\n }\n if (typeof a.equals === 'function' || typeof b.equals === 'function') {\n return typeof a.equals === 'function' && a.equals(b) && typeof b.equals === 'function' && b.equals(a);\n }\n switch (typeA) {\n case 'Arguments':\n case 'Array':\n case 'Object':\n if (typeof a.constructor === 'function' && _functionName(a.constructor) === 'Promise') {\n return a === b;\n }\n break;\n case 'Boolean':\n case 'Number':\n case 'String':\n if (!(typeof a === typeof b && _objectIs(a.valueOf(), b.valueOf()))) {\n return false;\n }\n break;\n case 'Date':\n if (!_objectIs(a.valueOf(), b.valueOf())) {\n return false;\n }\n break;\n case 'Error':\n return a.name === b.name && a.message === b.message;\n case 'RegExp':\n if (!(a.source === b.source && a.global === b.global && a.ignoreCase === b.ignoreCase && a.multiline === b.multiline && a.sticky === b.sticky && a.unicode === b.unicode)) {\n return false;\n }\n break;\n }\n var idx = stackA.length - 1;\n while (idx >= 0) {\n if (stackA[idx] === a) {\n return stackB[idx] === b;\n }\n idx -= 1;\n }\n switch (typeA) {\n case 'Map':\n if (a.size !== b.size) {\n return false;\n }\n return _uniqContentEquals(a.entries(), b.entries(), stackA.concat([a]), stackB.concat([b]));\n case 'Set':\n if (a.size !== b.size) {\n return false;\n }\n return _uniqContentEquals(a.values(), b.values(), stackA.concat([a]), stackB.concat([b]));\n case 'Arguments':\n case 'Array':\n case 'Object':\n case 'Boolean':\n case 'Number':\n case 'String':\n case 'Date':\n case 'Error':\n case 'RegExp':\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'ArrayBuffer':\n break;\n default:\n // Values of other types are only equal if identical.\n return false;\n }\n var keysA = keys(a);\n if (keysA.length !== keys(b).length) {\n return false;\n }\n var extendedStackA = stackA.concat([a]);\n var extendedStackB = stackB.concat([b]);\n idx = keysA.length - 1;\n while (idx >= 0) {\n var key = keysA[idx];\n if (!(_has(key, b) && _equals(b[key], a[key], extendedStackA, extendedStackB))) {\n return false;\n }\n idx -= 1;\n }\n return true;\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _equals from \"./internal/_equals.js\";\n\n/**\n * Returns `true` if its arguments are equivalent, `false` otherwise. Handles\n * cyclical data structures.\n *\n * Dispatches symmetrically to the `equals` methods of both arguments, if\n * present.\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Relation\n * @sig a -> b -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @example\n *\n * R.equals(1, 1); //=> true\n * R.equals(1, '1'); //=> false\n * R.equals([1, 2, 3], [1, 2, 3]); //=> true\n *\n * const a = {}; a.v = a;\n * const b = {}; b.v = b;\n * R.equals(a, b); //=> true\n */\nvar equals = /*#__PURE__*/_curry2(function equals(a, b) {\n return _equals(a, b, [], []);\n});\nexport default equals;","import equals from \"../equals.js\";\nexport default function _indexOf(list, a, idx) {\n var inf, item;\n // Array.prototype.indexOf doesn't exist below IE9\n if (typeof list.indexOf === 'function') {\n switch (typeof a) {\n case 'number':\n if (a === 0) {\n // manually crawl the list to distinguish between +0 and -0\n inf = 1 / a;\n while (idx < list.length) {\n item = list[idx];\n if (item === 0 && 1 / item === inf) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n } else if (a !== a) {\n // NaN\n while (idx < list.length) {\n item = list[idx];\n if (typeof item === 'number' && item !== item) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n }\n // non-zero numbers can utilise Set\n return list.indexOf(a, idx);\n\n // all these types can utilise Set\n case 'string':\n case 'boolean':\n case 'function':\n case 'undefined':\n return list.indexOf(a, idx);\n case 'object':\n if (a === null) {\n // null can utilise Set\n return list.indexOf(a, idx);\n }\n }\n }\n // anything else not covered above, defer to R.equals\n while (idx < list.length) {\n if (equals(list[idx], a)) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n}","import _indexOf from \"./_indexOf.js\";\nexport default function _includes(a, list) {\n return _indexOf(list, a, 0) >= 0;\n}","export default function _map(fn, functor) {\n var idx = 0;\n var len = functor.length;\n var result = Array(len);\n while (idx < len) {\n result[idx] = fn(functor[idx]);\n idx += 1;\n }\n return result;\n}","export default function _quote(s) {\n var escaped = s.replace(/\\\\/g, '\\\\\\\\').replace(/[\\b]/g, '\\\\b') // \\b matches word boundary; [\\b] matches backspace\n .replace(/\\f/g, '\\\\f').replace(/\\n/g, '\\\\n').replace(/\\r/g, '\\\\r').replace(/\\t/g, '\\\\t').replace(/\\v/g, '\\\\v').replace(/\\0/g, '\\\\0');\n return '\"' + escaped.replace(/\"/g, '\\\\\"') + '\"';\n}","/**\n * Polyfill from <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString>.\n */\nvar pad = function pad(n) {\n return (n < 10 ? '0' : '') + n;\n};\nvar _toISOString = typeof Date.prototype.toISOString === 'function' ? function _toISOString(d) {\n return d.toISOString();\n} : function _toISOString(d) {\n return d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCDate()) + 'T' + pad(d.getUTCHours()) + ':' + pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds()) + '.' + (d.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) + 'Z';\n};\nexport default _toISOString;","export default function _complement(f) {\n return function () {\n return !f.apply(this, arguments);\n };\n}","export default function _arrayReduce(reducer, acc, list) {\n var index = 0;\n var length = list.length;\n while (index < length) {\n acc = reducer(acc, list[index]);\n index += 1;\n }\n return acc;\n}","export default function _filter(fn, list) {\n var idx = 0;\n var len = list.length;\n var result = [];\n while (idx < len) {\n if (fn(list[idx])) {\n result[result.length] = list[idx];\n }\n idx += 1;\n }\n return result;\n}","export default function _filterMap(fn, map) {\n var result = new Map();\n var iterator = map.entries();\n var current = iterator.next();\n while (!current.done) {\n if (fn(current.value[1])) {\n result.set(current.value[0], current.value[1]);\n }\n current = iterator.next();\n }\n return result;\n}","export default function _isMap(x) {\n return Object.prototype.toString.call(x) === '[object Map]';\n}","export default function _isObject(x) {\n return Object.prototype.toString.call(x) === '[object Object]';\n}","import _xfBase from \"./_xfBase.js\";\nvar XFilter = /*#__PURE__*/function () {\n function XFilter(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XFilter.prototype['@@transducer/init'] = _xfBase.init;\n XFilter.prototype['@@transducer/result'] = _xfBase.result;\n XFilter.prototype['@@transducer/step'] = function (result, input) {\n return this.f(input) ? this.xf['@@transducer/step'](result, input) : result;\n };\n return XFilter;\n}();\nexport default function _xfilter(f) {\n return function (xf) {\n return new XFilter(f, xf);\n };\n}","import _arrayReduce from \"./internal/_arrayReduce.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _filter from \"./internal/_filter.js\";\nimport _filterMap from \"./internal/_filterMap.js\";\nimport _isMap from \"./internal/_isMap.js\";\nimport _isObject from \"./internal/_isObject.js\";\nimport _xfilter from \"./internal/_xfilter.js\";\nimport keys from \"./keys.js\";\n\n/**\n * Takes a predicate and a `Filterable`, and returns a new filterable of the\n * same type containing the members of the given filterable which satisfy the\n * given predicate. Filterable objects include plain objects, Maps, or any object\n * that has a filter method such as `Array`.\n *\n * Dispatches to the `filter` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @category Object\n * @sig Filterable f => (a -> Boolean) -> f a -> f a\n * @param {Function} pred\n * @param {Array} filterable\n * @return {Array} Filterable\n * @see R.reject, R.transduce, R.addIndex\n * @example\n *\n * const isEven = n => n % 2 === 0;\n *\n * R.filter(isEven, [1, 2, 3, 4]); //=> [2, 4]\n *\n * R.filter(isEven, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4}\n */\nvar filter = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['fantasy-land/filter', 'filter'], _xfilter, function (pred, filterable) {\n return _isObject(filterable) ? _arrayReduce(function (acc, key) {\n if (pred(filterable[key])) {\n acc[key] = filterable[key];\n }\n return acc;\n }, {}, keys(filterable)) : _isMap(filterable) ? _filterMap(pred, filterable) :\n // else\n _filter(pred, filterable);\n}));\nexport default filter;","import _complement from \"./internal/_complement.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport filter from \"./filter.js\";\n\n/**\n * The complement of [`filter`](#filter).\n *\n * Acts as a transducer if a transformer is given in list position. Filterable\n * objects include plain objects or any object that has a filter method such\n * as `Array`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Filterable f => (a -> Boolean) -> f a -> f a\n * @param {Function} pred\n * @param {Array} filterable\n * @return {Array}\n * @see R.filter, R.transduce, R.addIndex\n * @example\n *\n * const isOdd = (n) => n % 2 !== 0;\n *\n * R.reject(isOdd, [1, 2, 3, 4]); //=> [2, 4]\n *\n * R.reject(isOdd, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4}\n */\nvar reject = /*#__PURE__*/_curry2(function reject(pred, filterable) {\n return filter(_complement(pred), filterable);\n});\nexport default reject;","import _includes from \"./_includes.js\";\nimport _map from \"./_map.js\";\nimport _quote from \"./_quote.js\";\nimport _toISOString from \"./_toISOString.js\";\nimport keys from \"../keys.js\";\nimport reject from \"../reject.js\";\nexport default function _toString(x, seen) {\n var recur = function recur(y) {\n var xs = seen.concat([x]);\n return _includes(y, xs) ? '<Circular>' : _toString(y, xs);\n };\n\n // mapPairs :: (Object, [String]) -> [String]\n var mapPairs = function (obj, keys) {\n return _map(function (k) {\n return _quote(k) + ': ' + recur(obj[k]);\n }, keys.slice().sort());\n };\n switch (Object.prototype.toString.call(x)) {\n case '[object Arguments]':\n return '(function() { return arguments; }(' + _map(recur, x).join(', ') + '))';\n case '[object Array]':\n return '[' + _map(recur, x).concat(mapPairs(x, reject(function (k) {\n return /^\\d+$/.test(k);\n }, keys(x)))).join(', ') + ']';\n case '[object Boolean]':\n return typeof x === 'object' ? 'new Boolean(' + recur(x.valueOf()) + ')' : x.toString();\n case '[object Date]':\n return 'new Date(' + (isNaN(x.valueOf()) ? recur(NaN) : _quote(_toISOString(x))) + ')';\n case '[object Map]':\n return 'new Map(' + recur(Array.from(x)) + ')';\n case '[object Null]':\n return 'null';\n case '[object Number]':\n return typeof x === 'object' ? 'new Number(' + recur(x.valueOf()) + ')' : 1 / x === -Infinity ? '-0' : x.toString(10);\n case '[object Set]':\n return 'new Set(' + recur(Array.from(x).sort()) + ')';\n case '[object String]':\n return typeof x === 'object' ? 'new String(' + recur(x.valueOf()) + ')' : _quote(x);\n case '[object Undefined]':\n return 'undefined';\n default:\n if (typeof x.toString === 'function') {\n var repr = x.toString();\n if (repr !== '[object Object]') {\n return repr;\n }\n }\n return '{' + mapPairs(x, keys(x)).join(', ') + '}';\n }\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _toString from \"./internal/_toString.js\";\n\n/**\n * Returns the string representation of the given value. `eval`'ing the output\n * should result in a value equivalent to the input value. Many of the built-in\n * `toString` methods do not satisfy this requirement.\n *\n * If the given value is an `[object Object]` with a `toString` method other\n * than `Object.prototype.toString`, this method is invoked with no arguments\n * to produce the return value. This means user-defined constructor functions\n * can provide a suitable `toString` method. For example:\n *\n * function Point(x, y) {\n * this.x = x;\n * this.y = y;\n * }\n *\n * Point.prototype.toString = function() {\n * return 'new Point(' + this.x + ', ' + this.y + ')';\n * };\n *\n * R.toString(new Point(1, 2)); //=> 'new Point(1, 2)'\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category String\n * @sig * -> String\n * @param {*} val\n * @return {String}\n * @example\n *\n * R.toString(42); //=> '42'\n * R.toString('abc'); //=> '\"abc\"'\n * R.toString([1, 2, 3]); //=> '[1, 2, 3]'\n * R.toString({foo: 1, bar: 2, baz: 3}); //=> '{\"bar\": 2, \"baz\": 3, \"foo\": 1}'\n * R.toString(new Date('2001-02-03T04:05:06Z')); //=> 'new Date(\"2001-02-03T04:05:06.000Z\")'\n */\nvar toString = /*#__PURE__*/_curry1(function toString(val) {\n return _toString(val, []);\n});\nexport default toString;","import _curry2 from \"./internal/_curry2.js\";\nimport toString from \"./toString.js\";\n\n/**\n * Returns the larger of its two arguments.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> a\n * @param {*} a\n * @param {*} b\n * @return {*}\n * @see R.maxBy, R.min\n * @example\n *\n * R.max(789, 123); //=> 789\n * R.max('a', 'b'); //=> 'b'\n */\nvar max = /*#__PURE__*/_curry2(function max(a, b) {\n if (a === b) {\n return b;\n }\n function safeMax(x, y) {\n if (x > y !== y > x) {\n return y > x ? y : x;\n }\n return undefined;\n }\n var maxByValue = safeMax(a, b);\n if (maxByValue !== undefined) {\n return maxByValue;\n }\n var maxByType = safeMax(typeof a, typeof b);\n if (maxByType !== undefined) {\n return maxByType === typeof a ? a : b;\n }\n var stringA = toString(a);\n var maxByStringValue = safeMax(stringA, toString(b));\n if (maxByStringValue !== undefined) {\n return maxByStringValue === stringA ? a : b;\n }\n return b;\n});\nexport default max;","import _xfBase from \"./_xfBase.js\";\nvar XMap = /*#__PURE__*/function () {\n function XMap(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XMap.prototype['@@transducer/init'] = _xfBase.init;\n XMap.prototype['@@transducer/result'] = _xfBase.result;\n XMap.prototype['@@transducer/step'] = function (result, input) {\n return this.xf['@@transducer/step'](result, this.f(input));\n };\n return XMap;\n}();\nvar _xmap = function _xmap(f) {\n return function (xf) {\n return new XMap(f, xf);\n };\n};\nexport default _xmap;","import _arrayReduce from \"./internal/_arrayReduce.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _map from \"./internal/_map.js\";\nimport _xmap from \"./internal/_xmap.js\";\nimport curryN from \"./curryN.js\";\nimport keys from \"./keys.js\";\n\n/**\n * Takes a function and\n * a [functor](https://github.com/fantasyland/fantasy-land#functor),\n * applies the function to each of the functor's values, and returns\n * a functor of the same shape.\n *\n * Ramda provides suitable `map` implementations for `Array` and `Object`,\n * so this function may be applied to `[1, 2, 3]` or `{x: 1, y: 2, z: 3}`.\n *\n * Dispatches to the `map` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * Also treats functions as functors and will compose them together.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Functor f => (a -> b) -> f a -> f b\n * @param {Function} fn The function to be called on every element of the input `list`.\n * @param {Array} list The list to be iterated over.\n * @return {Array} The new list.\n * @see R.transduce, R.addIndex, R.pluck, R.project\n * @example\n *\n * const double = x => x * 2;\n *\n * R.map(double, [1, 2, 3]); //=> [2, 4, 6]\n *\n * R.map(double, {x: 1, y: 2, z: 3}); //=> {x: 2, y: 4, z: 6}\n * @symb R.map(f, [a, b]) = [f(a), f(b)]\n * @symb R.map(f, { x: a, y: b }) = { x: f(a), y: f(b) }\n * @symb R.map(f, functor_o) = functor_o.map(f)\n */\nvar map = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['fantasy-land/map', 'map'], _xmap, function map(fn, functor) {\n switch (Object.prototype.toString.call(functor)) {\n case '[object Function]':\n return curryN(functor.length, function () {\n return fn.call(this, functor.apply(this, arguments));\n });\n case '[object Object]':\n return _arrayReduce(function (acc, key) {\n acc[key] = fn(functor[key]);\n return acc;\n }, {}, keys(functor));\n default:\n return _map(fn, functor);\n }\n}));\nexport default map;","/**\n * Determine if the passed argument is an integer.\n *\n * @private\n * @param {*} n\n * @category Type\n * @return {Boolean}\n */\nexport default Number.isInteger || function _isInteger(n) {\n return n << 0 === n;\n};","export default function _nth(offset, list) {\n var idx = offset < 0 ? list.length + offset : offset;\n return list[idx];\n}","import _isInteger from \"./_isInteger.js\";\nimport _nth from \"./_nth.js\";\nfunction _prop(p, obj) {\n if (obj == null) {\n return;\n }\n return _isInteger(p) ? _nth(p, obj) : obj[p];\n}\nexport default _prop;","import _curry2 from \"./internal/_curry2.js\";\nimport _prop from \"./internal/_prop.js\";\n\n/**\n * Returns a function that when supplied an object returns the indicated\n * property of that object, if it exists.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @typedefn Idx = String | Int | Symbol\n * @sig Idx -> {s: a} -> a | Undefined\n * @param {String|Number} p The property name or array index\n * @param {Object} obj The object to query\n * @return {*} The value at `obj.p`.\n * @see R.path, R.props, R.pluck, R.project, R.nth\n * @example\n *\n * R.prop('x', {x: 100}); //=> 100\n * R.prop('x', {}); //=> undefined\n * R.prop(0, [100]); //=> 100\n * R.compose(R.inc, R.prop('x'))({ x: 3 }) //=> 4\n */\n\nvar prop = /*#__PURE__*/_curry2(_prop);\nexport default prop;","import _curry2 from \"./internal/_curry2.js\";\nimport map from \"./map.js\";\nimport prop from \"./prop.js\";\n\n/**\n * Returns a new list by plucking the same named property off all objects in\n * the list supplied.\n *\n * `pluck` will work on\n * any [functor](https://github.com/fantasyland/fantasy-land#functor) in\n * addition to arrays, as it is equivalent to `R.map(R.prop(k), f)`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Functor f => k -> f {k: v} -> f v\n * @param {Number|String} key The key name to pluck off of each object.\n * @param {Array} f The array or functor to consider.\n * @return {Array} The list of values for the given key.\n * @see R.project, R.prop, R.props\n * @example\n *\n * var getAges = R.pluck('age');\n * getAges([{name: 'fred', age: 29}, {name: 'wilma', age: 27}]); //=> [29, 27]\n *\n * R.pluck(0, [[1, 2], [3, 4]]); //=> [1, 3]\n * R.pluck('val', {a: {val: 3}, b: {val: 5}}); //=> {a: 3, b: 5}\n * @symb R.pluck('x', [{x: 1, y: 2}, {x: 3, y: 4}, {x: 5, y: 6}]) = [1, 3, 5]\n * @symb R.pluck(0, [[1, 2], [3, 4], [5, 6]]) = [1, 3, 5]\n */\nvar pluck = /*#__PURE__*/_curry2(function pluck(p, list) {\n return map(prop(p), list);\n});\nexport default pluck;","export default function _isString(x) {\n return Object.prototype.toString.call(x) === '[object String]';\n}","import _curry1 from \"./_curry1.js\";\nimport _isArray from \"./_isArray.js\";\nimport _isString from \"./_isString.js\";\n\n/**\n * Tests whether or not an object is similar to an array.\n *\n * @private\n * @category Type\n * @category List\n * @sig * -> Boolean\n * @param {*} x The object to test.\n * @return {Boolean} `true` if `x` has a numeric length property and extreme indices defined; `false` otherwise.\n * @example\n *\n * _isArrayLike([]); //=> true\n * _isArrayLike(true); //=> false\n * _isArrayLike({}); //=> false\n * _isArrayLike({length: 10}); //=> false\n * _isArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> true\n * _isArrayLike({nodeType: 1, length: 1}) // => false\n */\nvar _isArrayLike = /*#__PURE__*/_curry1(function isArrayLike(x) {\n if (_isArray(x)) {\n return true;\n }\n if (!x) {\n return false;\n }\n if (typeof x !== 'object') {\n return false;\n }\n if (_isString(x)) {\n return false;\n }\n if (x.length === 0) {\n return true;\n }\n if (x.length > 0) {\n return x.hasOwnProperty(0) && x.hasOwnProperty(x.length - 1);\n }\n return false;\n});\nexport default _isArrayLike;","import _isArrayLike from \"./_isArrayLike.js\";\nvar symIterator = typeof Symbol !== 'undefined' ? Symbol.iterator : '@@iterator';\nexport default function _createReduce(arrayReduce, methodReduce, iterableReduce) {\n return function _reduce(xf, acc, list) {\n if (_isArrayLike(list)) {\n return arrayReduce(xf, acc, list);\n }\n if (list == null) {\n return acc;\n }\n if (typeof list['fantasy-land/reduce'] === 'function') {\n return methodReduce(xf, acc, list, 'fantasy-land/reduce');\n }\n if (list[symIterator] != null) {\n return iterableReduce(xf, acc, list[symIterator]());\n }\n if (typeof list.next === 'function') {\n return iterableReduce(xf, acc, list);\n }\n if (typeof list.reduce === 'function') {\n return methodReduce(xf, acc, list, 'reduce');\n }\n throw new TypeError('reduce: list must be array or iterable');\n };\n}","export default function _xArrayReduce(xf, acc, list) {\n var idx = 0;\n var len = list.length;\n while (idx < len) {\n acc = xf['@@transducer/step'](acc, list[idx]);\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n idx += 1;\n }\n return xf['@@transducer/result'](acc);\n}","import _arity from \"./internal/_arity.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Creates a function that is bound to a context.\n * Note: `R.bind` does not provide the additional argument-binding capabilities of\n * [Function.prototype.bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Function\n * @category Object\n * @sig (* -> *) -> {*} -> (* -> *)\n * @param {Function} fn The function to bind to context\n * @param {Object} thisObj The context to bind `fn` to\n * @return {Function} A function that will execute in the context of `thisObj`.\n * @see R.partial\n * @example\n *\n * const log = R.bind(console.log, console);\n * R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=> {a: 3}\n * // logs {a: 2}\n * @symb R.bind(f, o)(a, b) = f.call(o, a, b)\n */\nvar bind = /*#__PURE__*/_curry2(function bind(fn, thisObj) {\n return _arity(fn.length, function () {\n return fn.apply(thisObj, arguments);\n });\n});\nexport default bind;","import _createReduce from \"./_createReduce.js\";\nimport _xArrayReduce from \"./_xArrayReduce.js\";\nimport bind from \"../bind.js\";\nfunction _xIterableReduce(xf, acc, iter) {\n var step = iter.next();\n while (!step.done) {\n acc = xf['@@transducer/step'](acc, step.value);\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n step = iter.next();\n }\n return xf['@@transducer/result'](acc);\n}\nfunction _xMethodReduce(xf, acc, obj, methodName) {\n return xf['@@transducer/result'](obj[methodName](bind(xf['@@transducer/step'], xf), acc));\n}\nvar _xReduce = /*#__PURE__*/_createReduce(_xArrayReduce, _xMethodReduce, _xIterableReduce);\nexport default _xReduce;","var XWrap = /*#__PURE__*/function () {\n function XWrap(fn) {\n this.f = fn;\n }\n XWrap.prototype['@@transducer/init'] = function () {\n throw new Error('init not implemented on XWrap');\n };\n XWrap.prototype['@@transducer/result'] = function (acc) {\n return acc;\n };\n XWrap.prototype['@@transducer/step'] = function (acc, x) {\n return this.f(acc, x);\n };\n return XWrap;\n}();\nexport default function _xwrap(fn) {\n return new XWrap(fn);\n}","import _curry3 from \"./internal/_curry3.js\";\nimport _xReduce from \"./internal/_xReduce.js\";\nimport _xwrap from \"./internal/_xwrap.js\";\n\n/**\n * Returns a single item by iterating through the list, successively calling\n * the iterator function and passing it an accumulator value and the current\n * value from the array, and then passing the result to the next call.\n *\n * The iterator function receives two values: *(acc, value)*. It may use\n * [`R.reduced`](#reduced) to shortcut the iteration.\n *\n * The arguments' order of [`reduceRight`](#reduceRight)'s iterator function\n * is *(value, acc)*.\n *\n * Note: `R.reduce` does not skip deleted or unassigned indices (sparse\n * arrays), unlike the native `Array.prototype.reduce` method. For more details\n * on this behavior, see:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce#Description\n *\n * Be cautious of mutating and returning the accumulator. If you reuse it across\n * invocations, it will continue to accumulate onto the same value. The general\n * recommendation is to always return a new value. If you can't do so for\n * performance reasons, then be sure to reinitialize the accumulator on each\n * invocation.\n *\n * Dispatches to the `reduce` method of the third argument, if present. When\n * doing so, it is up to the user to handle the [`R.reduced`](#reduced)\n * shortcuting, as this is not implemented by `reduce`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, b) -> a) -> a -> [b] -> a\n * @param {Function} fn The iterator function. Receives two values, the accumulator and the\n * current element from the array.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduced, R.addIndex, R.reduceRight\n * @example\n *\n * R.reduce(R.subtract, 0, [1, 2, 3, 4]) // => ((((0 - 1) - 2) - 3) - 4) = -10\n * // - -10\n * // / \\ / \\\n * // - 4 -6 4\n * // / \\ / \\\n * // - 3 ==> -3 3\n * // / \\ / \\\n * // - 2 -1 2\n * // / \\ / \\\n * // 0 1 0 1\n *\n * @symb R.reduce(f, a, [b, c, d]) = f(f(f(a, b), c), d)\n */\nvar reduce = /*#__PURE__*/_curry3(function (xf, acc, list) {\n return _xReduce(typeof xf === 'function' ? _xwrap(xf) : xf, acc, list);\n});\nexport default reduce;","import _curry1 from \"./internal/_curry1.js\";\nimport curryN from \"./curryN.js\";\nimport max from \"./max.js\";\nimport pluck from \"./pluck.js\";\nimport reduce from \"./reduce.js\";\n\n/**\n * Takes a list of predicates and returns a predicate that returns true for a\n * given list of arguments if every one of the provided predicates is satisfied\n * by those arguments.\n *\n * The function returned is a curried function whose arity matches that of the\n * highest-arity predicate.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Logic\n * @sig [(*... -> Boolean)] -> (*... -> Boolean)\n * @param {Array} predicates An array of predicates to check\n * @return {Function} The combined predicate\n * @see R.anyPass, R.both\n * @example\n *\n * const isQueen = R.propEq('Q', 'rank');\n * const isSpade = R.propEq('♠︎', 'suit');\n * const isQueenOfSpades = R.allPass([isQueen, isSpade]);\n *\n * isQueenOfSpades({rank: 'Q', suit: '♣︎'}); //=> false\n * isQueenOfSpades({rank: 'Q', suit: '♠︎'}); //=> true\n */\nvar allPass = /*#__PURE__*/_curry1(function allPass(preds) {\n return curryN(reduce(max, 0, pluck('length', preds)), function () {\n var idx = 0;\n var len = preds.length;\n while (idx < len) {\n if (!preds[idx].apply(this, arguments)) {\n return false;\n }\n idx += 1;\n }\n return true;\n });\n});\nexport default allPass;","import _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Returns a function that always returns the given value. Note that for\n * non-primitives the value returned is a reference to the original value.\n *\n * This function is known as `const`, `constant`, or `K` (for K combinator) in\n * other languages and libraries.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig a -> (* -> a)\n * @param {*} val The value to wrap in a function\n * @return {Function} A Function :: * -> val.\n * @example\n *\n * const t = R.always('Tee');\n * t(); //=> 'Tee'\n */\nvar always = /*#__PURE__*/_curry1(function always(val) {\n return function () {\n return val;\n };\n});\nexport default always;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Returns the first argument if it is falsy, otherwise the second argument.\n * Acts as the boolean `and` statement if both inputs are `Boolean`s.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig a -> b -> a | b\n * @param {Any} a\n * @param {Any} b\n * @return {Any}\n * @see R.both, R.or\n * @example\n *\n * R.and(true, true); //=> true\n * R.and(true, false); //=> false\n * R.and(false, true); //=> false\n * R.and(false, false); //=> false\n */\nvar and = /*#__PURE__*/_curry2(function and(a, b) {\n return a && b;\n});\nexport default and;","import _reduced from \"./_reduced.js\";\nimport _xfBase from \"./_xfBase.js\";\nvar XAny = /*#__PURE__*/function () {\n function XAny(f, xf) {\n this.xf = xf;\n this.f = f;\n this.any = false;\n }\n XAny.prototype['@@transducer/init'] = _xfBase.init;\n XAny.prototype['@@transducer/result'] = function (result) {\n if (!this.any) {\n result = this.xf['@@transducer/step'](result, false);\n }\n return this.xf['@@transducer/result'](result);\n };\n XAny.prototype['@@transducer/step'] = function (result, input) {\n if (this.f(input)) {\n this.any = true;\n result = _reduced(this.xf['@@transducer/step'](result, true));\n }\n return result;\n };\n return XAny;\n}();\nexport default function _xany(f) {\n return function (xf) {\n return new XAny(f, xf);\n };\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xany from \"./internal/_xany.js\";\n\n/**\n * Returns `true` if at least one of the elements of the list match the predicate,\n * `false` otherwise.\n *\n * Dispatches to the `any` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> Boolean\n * @param {Function} fn The predicate function.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if the predicate is satisfied by at least one element, `false`\n * otherwise.\n * @see R.all, R.none, R.transduce\n * @example\n *\n * const lessThan0 = R.flip(R.lt)(0);\n * const lessThan2 = R.flip(R.lt)(2);\n * R.any(lessThan0)([1, 2]); //=> false\n * R.any(lessThan2)([1, 2]); //=> true\n */\nvar any = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['any'], _xany, function any(fn, list) {\n var idx = 0;\n while (idx < list.length) {\n if (fn(list[idx])) {\n return true;\n }\n idx += 1;\n }\n return false;\n}));\nexport default any;","import _curry1 from \"./internal/_curry1.js\";\nimport curryN from \"./curryN.js\";\nimport max from \"./max.js\";\nimport pluck from \"./pluck.js\";\nimport reduce from \"./reduce.js\";\n\n/**\n * Takes a list of predicates and returns a predicate that returns true for a\n * given list of arguments if at least one of the provided predicates is\n * satisfied by those arguments.\n *\n * The function returned is a curried function whose arity matches that of the\n * highest-arity predicate.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Logic\n * @sig [(*... -> Boolean)] -> (*... -> Boolean)\n * @param {Array} predicates An array of predicates to check\n * @return {Function} The combined predicate\n * @see R.allPass, R.either\n * @example\n *\n * const isClub = R.propEq('♣', 'suit');\n * const isSpade = R.propEq('♠', 'suit');\n * const isBlackCard = R.anyPass([isClub, isSpade]);\n *\n * isBlackCard({rank: '10', suit: '♣'}); //=> true\n * isBlackCard({rank: 'Q', suit: '♠'}); //=> true\n * isBlackCard({rank: 'Q', suit: '♦'}); //=> false\n */\nvar anyPass = /*#__PURE__*/_curry1(function anyPass(preds) {\n return curryN(reduce(max, 0, pluck('length', preds)), function () {\n var idx = 0;\n var len = preds.length;\n while (idx < len) {\n if (preds[idx].apply(this, arguments)) {\n return true;\n }\n idx += 1;\n }\n return false;\n });\n});\nexport default anyPass;","import _arrayReduce from \"./_arrayReduce.js\";\nimport _createReduce from \"./_createReduce.js\";\nfunction _iterableReduce(reducer, acc, iter) {\n var step = iter.next();\n while (!step.done) {\n acc = reducer(acc, step.value);\n step = iter.next();\n }\n return acc;\n}\nfunction _methodReduce(reducer, acc, obj, methodName) {\n return obj[methodName](reducer, acc);\n}\nvar _reduce = /*#__PURE__*/_createReduce(_arrayReduce, _methodReduce, _iterableReduce);\nexport default _reduce;","import _concat from \"./internal/_concat.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport map from \"./map.js\";\n\n/**\n * ap applies a list of functions to a list of values.\n *\n * Dispatches to the `ap` method of the first argument, if present. Also\n * treats curried functions as applicatives.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig [a -> b] -> [a] -> [b]\n * @sig Apply f => f (a -> b) -> f a -> f b\n * @sig (r -> a -> b) -> (r -> a) -> (r -> b)\n * @param {*} applyF\n * @param {*} applyX\n * @return {*}\n * @example\n *\n * R.ap([R.multiply(2), R.add(3)], [1,2,3]); //=> [2, 4, 6, 4, 5, 6]\n * R.ap([R.concat('tasty '), R.toUpper], ['pizza', 'salad']); //=> [\"tasty pizza\", \"tasty salad\", \"PIZZA\", \"SALAD\"]\n *\n * // R.ap can also be used as S combinator\n * // when only two functions are passed\n * R.ap(R.concat, R.toUpper)('Ramda') //=> 'RamdaRAMDA'\n * @symb R.ap([f, g], [a, b]) = [f(a), f(b), g(a), g(b)]\n */\nvar ap = /*#__PURE__*/_curry2(function ap(applyF, applyX) {\n return typeof applyX['fantasy-land/ap'] === 'function' ? applyX['fantasy-land/ap'](applyF) : typeof applyF.ap === 'function' ? applyF.ap(applyX) : typeof applyF === 'function' ? function (x) {\n return applyF(x)(applyX(x));\n } : _reduce(function (acc, f) {\n return _concat(acc, map(f, applyX));\n }, [], applyF);\n});\nexport default ap;","export default function _aperture(n, list) {\n var idx = 0;\n var limit = list.length - (n - 1);\n var acc = new Array(limit >= 0 ? limit : 0);\n while (idx < limit) {\n acc[idx] = Array.prototype.slice.call(list, idx, idx + n);\n idx += 1;\n }\n return acc;\n}","import _concat from \"./_concat.js\";\nimport _xfBase from \"./_xfBase.js\";\nvar XAperture = /*#__PURE__*/function () {\n function XAperture(n, xf) {\n this.xf = xf;\n this.pos = 0;\n this.full = false;\n this.acc = new Array(n);\n }\n XAperture.prototype['@@transducer/init'] = _xfBase.init;\n XAperture.prototype['@@transducer/result'] = function (result) {\n this.acc = null;\n return this.xf['@@transducer/result'](result);\n };\n XAperture.prototype['@@transducer/step'] = function (result, input) {\n this.store(input);\n return this.full ? this.xf['@@transducer/step'](result, this.getCopy()) : result;\n };\n XAperture.prototype.store = function (input) {\n this.acc[this.pos] = input;\n this.pos += 1;\n if (this.pos === this.acc.length) {\n this.pos = 0;\n this.full = true;\n }\n };\n XAperture.prototype.getCopy = function () {\n return _concat(Array.prototype.slice.call(this.acc, this.pos), Array.prototype.slice.call(this.acc, 0, this.pos));\n };\n return XAperture;\n}();\nexport default function _xaperture(n) {\n return function (xf) {\n return new XAperture(n, xf);\n };\n}","import _aperture from \"./internal/_aperture.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xaperture from \"./internal/_xaperture.js\";\n\n/**\n * Returns a new list, composed of n-tuples of consecutive elements. If `n` is\n * greater than the length of the list, an empty list is returned.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category List\n * @sig Number -> [a] -> [[a]]\n * @param {Number} n The size of the tuples to create\n * @param {Array} list The list to split into `n`-length tuples\n * @return {Array} The resulting list of `n`-length tuples\n * @see R.transduce\n * @example\n *\n * R.aperture(2, [1, 2, 3, 4, 5]); //=> [[1, 2], [2, 3], [3, 4], [4, 5]]\n * R.aperture(3, [1, 2, 3, 4, 5]); //=> [[1, 2, 3], [2, 3, 4], [3, 4, 5]]\n * R.aperture(7, [1, 2, 3, 4, 5]); //=> []\n */\nvar aperture = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xaperture, _aperture));\nexport default aperture;","import _concat from \"./internal/_concat.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Returns a new list containing the contents of the given list, followed by\n * the given element.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -> [a] -> [a]\n * @param {*} el The element to add to the end of the new list.\n * @param {Array} list The list of elements to add a new item to.\n * list.\n * @return {Array} A new list containing the elements of the old list followed by `el`.\n * @see R.prepend\n * @example\n *\n * R.append('tests', ['write', 'more']); //=> ['write', 'more', 'tests']\n * R.append('tests', []); //=> ['tests']\n * R.append(['tests'], ['write', 'more']); //=> ['write', 'more', ['tests']]\n */\nvar append = /*#__PURE__*/_curry2(function append(el, list) {\n return _concat(list, [el]);\n});\nexport default append;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Applies function `fn` to the argument list `args`. This is useful for\n * creating a fixed-arity function from a variadic function. `fn` should be a\n * bound function if context is significant.\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig (*... -> a) -> [*] -> a\n * @param {Function} fn The function which will be called with `args`\n * @param {Array} args The arguments to call `fn` with\n * @return {*} result The result, equivalent to `fn(...args)`\n * @see R.call, R.unapply\n * @example\n *\n * const nums = [1, 2, 3, -99, 42, 6, 7];\n * R.apply(Math.max, nums); //=> 42\n * @symb R.apply(f, [a, b, c]) = f(a, b, c)\n */\nvar apply = /*#__PURE__*/_curry2(function apply(fn, args) {\n return fn.apply(this, args);\n});\nexport default apply;","import _curry1 from \"./internal/_curry1.js\";\nimport keys from \"./keys.js\";\n\n/**\n * Returns a list of all the enumerable own properties of the supplied object.\n * Note that the order of the output array is not guaranteed across different\n * JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> [v]\n * @param {Object} obj The object to extract values from\n * @return {Array} An array of the values of the object's own properties.\n * @see R.valuesIn, R.keys, R.toPairs\n * @example\n *\n * R.values({a: 1, b: 2, c: 3}); //=> [1, 2, 3]\n */\nvar values = /*#__PURE__*/_curry1(function values(obj) {\n var props = keys(obj);\n var len = props.length;\n var vals = [];\n var idx = 0;\n while (idx < len) {\n vals[idx] = obj[props[idx]];\n idx += 1;\n }\n return vals;\n});\nexport default values;","import _curry1 from \"./internal/_curry1.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport apply from \"./apply.js\";\nimport curryN from \"./curryN.js\";\nimport max from \"./max.js\";\nimport pluck from \"./pluck.js\";\nimport reduce from \"./reduce.js\";\nimport keys from \"./keys.js\";\nimport values from \"./values.js\";\n\n// Use custom mapValues function to avoid issues with specs that include a \"map\" key and R.map\n// delegating calls to .map\nfunction mapValues(fn, obj) {\n return _isArray(obj) ? obj.map(fn) : keys(obj).reduce(function (acc, key) {\n acc[key] = fn(obj[key]);\n return acc;\n }, {});\n}\n\n/**\n * Given a spec object recursively mapping properties to functions, creates a\n * function producing an object of the same structure, by mapping each property\n * to the result of calling its associated function with the supplied arguments.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category Function\n * @sig {k: ((a, b, ..., m) -> v)} -> ((a, b, ..., m) -> {k: v})\n * @param {Object} spec an object recursively mapping properties to functions for\n * producing the values for these properties.\n * @return {Function} A function that returns an object of the same structure\n * as `spec', with each property set to the value returned by calling its\n * associated function with the supplied arguments.\n * @see R.converge, R.juxt\n * @example\n *\n * const getMetrics = R.applySpec({\n * sum: R.add,\n * nested: { mul: R.multiply }\n * });\n * getMetrics(2, 4); // => { sum: 6, nested: { mul: 8 } }\n * @symb R.applySpec({ x: f, y: { z: g } })(a, b) = { x: f(a, b), y: { z: g(a, b) } }\n */\nvar applySpec = /*#__PURE__*/_curry1(function applySpec(spec) {\n spec = mapValues(function (v) {\n return typeof v == 'function' ? v : applySpec(v);\n }, spec);\n return curryN(reduce(max, 0, pluck('length', values(spec))), function () {\n var args = arguments;\n return mapValues(function (f) {\n return apply(f, args);\n }, spec);\n });\n});\nexport default applySpec;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Takes a value and applies a function to it.\n *\n * This function is also known as the `thrush` combinator.\n *\n * @func\n * @memberOf R\n * @since v0.25.0\n * @category Function\n * @sig a -> (a -> b) -> b\n * @param {*} x The value\n * @param {Function} f The function to apply\n * @return {*} The result of applying `f` to `x`\n * @example\n *\n * const t42 = R.applyTo(42);\n * t42(R.identity); //=> 42\n * t42(R.add(1)); //=> 43\n */\nvar applyTo = /*#__PURE__*/_curry2(function applyTo(x, f) {\n return f(x);\n});\nexport default applyTo;","import _curry3 from \"./internal/_curry3.js\";\n\n/**\n * Makes an ascending comparator function out of a function that returns a value\n * that can be compared with `<` and `>`.\n *\n * @func\n * @memberOf R\n * @since v0.23.0\n * @category Function\n * @sig Ord b => (a -> b) -> a -> a -> Number\n * @param {Function} fn A function of arity one that returns a value that can be compared\n * @param {*} a The first item to be compared.\n * @param {*} b The second item to be compared.\n * @return {Number} `-1` if fn(a) < fn(b), `1` if fn(b) < fn(a), otherwise `0`\n * @see R.descend, R.ascendNatural, R.descendNatural\n * @example\n *\n * const byAge = R.ascend(R.prop('age'));\n * const people = [\n * { name: 'Emma', age: 70 },\n * { name: 'Peter', age: 78 },\n * { name: 'Mikhail', age: 62 },\n * ];\n * const peopleByYoungestFirst = R.sort(byAge, people);\n * //=> [{ name: 'Mikhail', age: 62 },{ name: 'Emma', age: 70 }, { name: 'Peter', age: 78 }]\n */\nvar ascend = /*#__PURE__*/_curry3(function ascend(fn, a, b) {\n var aa = fn(a);\n var bb = fn(b);\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n});\nexport default ascend;","import _curry1 from \"./internal/_curry1.js\";\nimport curryN from \"./curryN.js\";\n\n/**\n * Returns a curried equivalent of the provided function. The curried function\n * has two unusual capabilities. First, its arguments needn't be provided one\n * at a time. If `f` is a ternary function and `g` is `R.curry(f)`, the\n * following are equivalent:\n *\n * - `g(1)(2)(3)`\n * - `g(1)(2, 3)`\n * - `g(1, 2)(3)`\n * - `g(1, 2, 3)`\n *\n * Secondly, the special placeholder value [`R.__`](#__) may be used to specify\n * \"gaps\", allowing partial application of any combination of arguments,\n * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),\n * the following are equivalent:\n *\n * - `g(1, 2, 3)`\n * - `g(_, 2, 3)(1)`\n * - `g(_, _, 3)(1)(2)`\n * - `g(_, _, 3)(1, 2)`\n * - `g(_, 2)(1)(3)`\n * - `g(_, 2)(1, 3)`\n * - `g(_, 2)(_, 3)(1)`\n *\n * Please note that default parameters don't count towards a [function arity](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/length)\n * and therefore `curry` won't work well with those.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (* -> a) -> (* -> a)\n * @param {Function} fn The function to curry.\n * @return {Function} A new, curried function.\n * @see R.curryN, R.partial\n * @example\n *\n * const addFourNumbers = (a, b, c, d) => a + b + c + d;\n * const curriedAddFourNumbers = R.curry(addFourNumbers);\n * const f = curriedAddFourNumbers(1, 2);\n * const g = f(3);\n * g(4); //=> 10\n *\n * // R.curry not working well with default parameters\n * const h = R.curry((a, b, c = 2) => a + b + c);\n * h(1)(2)(7); //=> Error! (`3` is not a function!)\n */\nvar curry = /*#__PURE__*/_curry1(function curry(fn) {\n return curryN(fn.length, fn);\n});\nexport default curry;","import curry from \"./curry.js\";\n\n/**\n * Makes an ascending comparator function out of a function that returns a value\n * that can be compared with natural sorting using localeCompare.\n *\n * @func\n * @memberOf R\n * @since v0.30.1\n * @category Function\n * @sig s -> (a -> String) -> a -> a -> Number\n * @param {String|Array} locales A string with a BCP 47 language tag, or an array of such strings. Corresponds to the locales parameter of the Intl.Collator() constructor.\n * @param {Function} fn A function of arity one that returns a string that can be compared\n * @param {*} a The first item to be compared.\n * @param {*} b The second item to be compared.\n * @return {Number} `-1` if a occurs before b, `1` if a occurs after b, otherwise `0`\n * @see R.ascend\n * @example\n *\n * const unsorted = ['3', '1', '10', 'Ørjan', 'Bob', 'Älva'];\n *\n * R.sort(R.ascendNatural('en', R.identity), unsorted);\n * // => ['1', '3', '10', 'Älva', 'Bob', 'Ørjan']\n *\n * R.sort(R.ascendNatural('sv', R.identity), unsorted);\n * // => ['1', '3', '10', 'Bob', 'Älva', 'Ørjan']\n *\n * R.sort(R.ascend(R.identity), unsorted);\n * // => ['1', '10', '3', 'Bob', 'Älva', 'Ørjan']\n */\nvar ascendNatural = /*#__PURE__*/curry(function ascendNatural(locales, fn, a, b) {\n const aa = fn(a);\n const bb = fn(b);\n return aa.localeCompare(bb, locales, {\n numeric: true\n });\n});\nexport default ascendNatural;","import _isArray from \"./_isArray.js\";\nimport _isInteger from \"./_isInteger.js\";\n\n/**\n * Makes a shallow clone of an object, setting or overriding the specified\n * property with the given value. Note that this copies and flattens prototype\n * properties onto the new object as well. All non-primitive properties are\n * copied by reference.\n *\n * @private\n * @param {String|Number} prop The property name to set\n * @param {*} val The new value\n * @param {Object|Array} obj The object to clone\n * @return {Object|Array} A new object equivalent to the original except for the changed property.\n */\nexport default function _assoc(prop, val, obj) {\n if (_isInteger(prop) && _isArray(obj)) {\n var _idx = prop < 0 ? obj.length + prop : prop;\n var arr = [].concat(obj);\n arr[_idx] = val;\n return arr;\n }\n var result = {};\n for (var p in obj) {\n result[p] = obj[p];\n }\n result[prop] = val;\n return result;\n}","import _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Checks if the input value is `null` or `undefined`.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Type\n * @sig * -> Boolean\n * @param {*} x The value to test.\n * @return {Boolean} `true` if `x` is `undefined` or `null`, otherwise `false`.\n * @example\n *\n * R.isNil(null); //=> true\n * R.isNil(undefined); //=> true\n * R.isNil(0); //=> false\n * R.isNil([]); //=> false\n */\nvar isNil = /*#__PURE__*/_curry1(function isNil(x) {\n return x == null;\n});\nexport default isNil;","import _curry3 from \"./internal/_curry3.js\";\nimport _isInteger from \"./internal/_isInteger.js\";\nimport _assoc from \"./internal/_assoc.js\";\nimport isNil from \"./isNil.js\";\nimport _prop from \"./internal/_prop.js\";\n\n/**\n * Makes a shallow clone of an object, setting or overriding the nodes required\n * to create the given path, and placing the specific value at the tail end of\n * that path. Note that this copies and flattens prototype properties onto the\n * new object as well. All non-primitive properties are copied by reference.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @typedefn Idx = String | Int | Symbol\n * @sig [Idx] -> a -> {a} -> {a}\n * @param {Array} path the path to set\n * @param {*} val The new value\n * @param {Object} obj The object to clone\n * @return {Object} A new object equivalent to the original except along the specified path.\n * @see R.dissocPath\n * @example\n *\n * R.assocPath(['a', 'b', 'c'], 42, {a: {b: {c: 0}}}); //=> {a: {b: {c: 42}}}\n *\n * // Any missing or non-object keys in path will be overridden\n * R.assocPath(['a', 'b', 'c'], 42, {a: 5}); //=> {a: {b: {c: 42}}}\n * R.assocPath(['a', 1, 'c'], 42, {a: []}); // => {a: [undefined, {c: 42}]}\n * R.assocPath(['a', -1], 42, {a: [1, 2]}); // => {a: [1, 42]}\n */\nvar assocPath = /*#__PURE__*/_curry3(function assocPath(path, val, obj) {\n if (path.length === 0) {\n return val;\n }\n var idx = path[0];\n if (path.length > 1) {\n var nextObj = _prop(idx, obj);\n if (isNil(nextObj) || typeof nextObj !== 'object') {\n nextObj = _isInteger(path[1]) ? [] : {};\n }\n val = assocPath(Array.prototype.slice.call(path, 1), val, nextObj);\n }\n return _assoc(idx, val, obj);\n});\nexport default assocPath;","import _curry3 from \"./internal/_curry3.js\";\nimport assocPath from \"./assocPath.js\";\n\n/**\n * Makes a shallow clone of an object, setting or overriding the specified\n * property with the given value. Note that this copies and flattens prototype\n * properties onto the new object as well. All non-primitive properties are\n * copied by reference.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig Idx -> a -> {k: v} -> {k: v}\n * @param {String|Number} prop The property name to set\n * @param {*} val The new value\n * @param {Object} obj The object to clone\n * @return {Object} A new object equivalent to the original except for the changed property.\n * @see R.dissoc, R.pick\n * @example\n *\n * R.assoc('c', 3, {a: 1, b: 2}); //=> {a: 1, b: 2, c: 3}\n *\n * R.assoc(4, 3, [1, 2]); //=> [1, 2, undefined, undefined, 3]\n * R.assoc(-1, 3, [1, 2]); //=> [1, 3]\n */\nvar assoc = /*#__PURE__*/_curry3(function assoc(prop, val, obj) {\n return assocPath([prop], val, obj);\n});\nexport default assoc;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Wraps a function of any arity (including nullary) in a function that accepts\n * exactly `n` parameters. Any extraneous parameters will not be passed to the\n * supplied function.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig Number -> (* -> a) -> (* -> a)\n * @param {Number} n The desired arity of the new function.\n * @param {Function} fn The function to wrap.\n * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of\n * arity `n`.\n * @see R.binary, R.unary\n * @example\n *\n * const takesTwoArgs = (a, b) => [a, b];\n *\n * takesTwoArgs.length; //=> 2\n * takesTwoArgs(1, 2); //=> [1, 2]\n *\n * const takesOneArg = R.nAry(1, takesTwoArgs);\n * takesOneArg.length; //=> 1\n * // Only `n` arguments are passed to the wrapped function\n * takesOneArg(1, 2); //=> [1, undefined]\n * @symb R.nAry(0, f)(a, b) = f()\n * @symb R.nAry(1, f)(a, b) = f(a)\n * @symb R.nAry(2, f)(a, b) = f(a, b)\n */\nvar nAry = /*#__PURE__*/_curry2(function nAry(n, fn) {\n switch (n) {\n case 0:\n return function () {\n return fn.call(this);\n };\n case 1:\n return function (a0) {\n return fn.call(this, a0);\n };\n case 2:\n return function (a0, a1) {\n return fn.call(this, a0, a1);\n };\n case 3:\n return function (a0, a1, a2) {\n return fn.call(this, a0, a1, a2);\n };\n case 4:\n return function (a0, a1, a2, a3) {\n return fn.call(this, a0, a1, a2, a3);\n };\n case 5:\n return function (a0, a1, a2, a3, a4) {\n return fn.call(this, a0, a1, a2, a3, a4);\n };\n case 6:\n return function (a0, a1, a2, a3, a4, a5) {\n return fn.call(this, a0, a1, a2, a3, a4, a5);\n };\n case 7:\n return function (a0, a1, a2, a3, a4, a5, a6) {\n return fn.call(this, a0, a1, a2, a3, a4, a5, a6);\n };\n case 8:\n return function (a0, a1, a2, a3, a4, a5, a6, a7) {\n return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7);\n };\n case 9:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {\n return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7, a8);\n };\n case 10:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n };\n default:\n throw new Error('First argument to nAry must be a non-negative integer no greater than ten');\n }\n});\nexport default nAry;","import _curry1 from \"./internal/_curry1.js\";\nimport nAry from \"./nAry.js\";\n\n/**\n * Wraps a function of any arity (including nullary) in a function that accepts\n * exactly 2 parameters. Any extraneous parameters will not be passed to the\n * supplied function.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Function\n * @sig (a -> b -> c -> ... -> z) -> ((a, b) -> z)\n * @param {Function} fn The function to wrap.\n * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of\n * arity 2.\n * @see R.nAry, R.unary\n * @example\n *\n * const takesThreeArgs = function(a, b, c) {\n * return [a, b, c];\n * };\n * takesThreeArgs.length; //=> 3\n * takesThreeArgs(1, 2, 3); //=> [1, 2, 3]\n *\n * const takesTwoArgs = R.binary(takesThreeArgs);\n * takesTwoArgs.length; //=> 2\n * // Only 2 arguments are passed to the wrapped function\n * takesTwoArgs(1, 2, 3); //=> [1, 2, undefined]\n * @symb R.binary(f)(a, b, c) = f(a, b)\n */\nvar binary = /*#__PURE__*/_curry1(function binary(fn) {\n return nAry(2, fn);\n});\nexport default binary;","export default function _isFunction(x) {\n var type = Object.prototype.toString.call(x);\n return type === '[object Function]' || type === '[object AsyncFunction]' || type === '[object GeneratorFunction]' || type === '[object AsyncGeneratorFunction]';\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _arrayReduce from \"./internal/_arrayReduce.js\";\nimport ap from \"./ap.js\";\nimport curryN from \"./curryN.js\";\nimport map from \"./map.js\";\n\n/**\n * \"lifts\" a function to be the specified arity, so that it may \"map over\" that\n * many lists, Functions or other objects that satisfy the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply).\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig Number -> (*... -> *) -> ([*]... -> [*])\n * @param {Function} fn The function to lift into higher context\n * @return {Function} The lifted function.\n * @see R.lift, R.ap\n * @example\n *\n * const madd3 = R.liftN(3, (...args) => R.sum(args));\n * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7]\n */\nvar liftN = /*#__PURE__*/_curry2(function liftN(arity, fn) {\n var lifted = curryN(arity, fn);\n return curryN(arity, function () {\n return _arrayReduce(ap, map(lifted, arguments[0]), Array.prototype.slice.call(arguments, 1));\n });\n});\nexport default liftN;","import _curry1 from \"./internal/_curry1.js\";\nimport liftN from \"./liftN.js\";\n\n/**\n * \"lifts\" a function of arity >= 1 so that it may \"map over\" a list, Function or other\n * object that satisfies the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply).\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig (*... -> *) -> ([*]... -> [*])\n * @param {Function} fn The function to lift into higher context\n * @return {Function} The lifted function.\n * @see R.liftN\n * @example\n *\n * const madd3 = R.lift((a, b, c) => a + b + c);\n *\n * madd3([100, 200], [30, 40], [5, 6, 7]); //=> [135, 136, 137, 145, 146, 147, 235, 236, 237, 245, 246, 247]\n *\n * const madd5 = R.lift((a, b, c, d, e) => a + b + c + d + e);\n *\n * madd5([10, 20], [1], [2, 3], [4], [100, 200]); //=> [117, 217, 118, 218, 127, 227, 128, 228]\n */\nvar lift = /*#__PURE__*/_curry1(function lift(fn) {\n return liftN(fn.length, fn);\n});\nexport default lift;","import _curry2 from \"./internal/_curry2.js\";\nimport _isFunction from \"./internal/_isFunction.js\";\nimport and from \"./and.js\";\nimport lift from \"./lift.js\";\n\n/**\n * A function which calls the two provided functions and returns the `&&`\n * of the results.\n * It returns the result of the first function if it is false-y and the result\n * of the second function otherwise. Note that this is short-circuited,\n * meaning that the second function will not be invoked if the first returns a\n * false-y value.\n *\n * In addition to functions, `R.both` also accepts any fantasy-land compatible\n * applicative functor.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category Logic\n * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean)\n * @param {Function} f A predicate\n * @param {Function} g Another predicate\n * @return {Function} a function that applies its arguments to `f` and `g` and `&&`s their outputs together.\n * @see R.either, R.allPass, R.and\n * @example\n *\n * const gt10 = R.gt(R.__, 10)\n * const lt20 = R.lt(R.__, 20)\n * const f = R.both(gt10, lt20);\n * f(15); //=> true\n * f(30); //=> false\n *\n * R.both(Maybe.Just(false), Maybe.Just(55)); // => Maybe.Just(false)\n * R.both([false, false, 'a'], [11]); //=> [false, false, 11]\n */\nvar both = /*#__PURE__*/_curry2(function both(f, g) {\n return _isFunction(f) ? function _both() {\n return f.apply(this, arguments) && g.apply(this, arguments);\n } : lift(and)(f, g);\n});\nexport default both;","import _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Returns the result of calling its first argument with the remaining\n * arguments. This is occasionally useful as a converging function for\n * [`R.converge`](#converge): the first branch can produce a function while the\n * remaining branches produce values to be passed to that function as its\n * arguments.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Function\n * @sig ((*... -> a), *...) -> a\n * @param {Function} fn The function to apply to the remaining arguments.\n * @param {...*} args Any number of positional arguments.\n * @return {*}\n * @see R.apply\n * @example\n *\n * R.call(R.add, 1, 2); //=> 3\n *\n * const indentN = R.pipe(\n * R.repeat(' '),\n * R.join(''),\n * R.replace(/^(?!$)/gm)\n * );\n *\n * const format = R.converge(\n * R.call,\n * [\n * R.pipe(R.prop('indent'), indentN),\n * R.prop('value')\n * ]\n * );\n *\n * format({indent: 2, value: 'foo\\nbar\\nbaz\\n'}); //=> ' foo\\n bar\\n baz\\n'\n * @symb R.call(f, a, b) = f(a, b)\n */\nvar call = /*#__PURE__*/_curry1(function call(fn) {\n return fn.apply(this, Array.prototype.slice.call(arguments, 1));\n});\nexport default call;","import _isArrayLike from \"./_isArrayLike.js\";\n\n/**\n * `_makeFlat` is a helper function that returns a one-level or fully recursive\n * function based on the flag passed in.\n *\n * @private\n */\nexport default function _makeFlat(recursive) {\n return function flatt(list) {\n var value, jlen, j;\n var result = [];\n var idx = 0;\n var ilen = list.length;\n while (idx < ilen) {\n if (_isArrayLike(list[idx])) {\n value = recursive ? flatt(list[idx]) : list[idx];\n j = 0;\n jlen = value.length;\n while (j < jlen) {\n result[result.length] = value[j];\n j += 1;\n }\n } else {\n result[result.length] = list[idx];\n }\n idx += 1;\n }\n return result;\n };\n}","export default function _forceReduced(x) {\n return {\n '@@transducer/value': x,\n '@@transducer/reduced': true\n };\n}","import _forceReduced from \"./_forceReduced.js\";\nimport _isArrayLike from \"./_isArrayLike.js\";\nimport _xArrayReduce from \"./_xArrayReduce.js\";\nimport _xReduce from \"./_xReduce.js\";\nimport _xfBase from \"./_xfBase.js\";\nvar tInit = '@@transducer/init';\nvar tStep = '@@transducer/step';\nvar tResult = '@@transducer/result';\nvar XPreservingReduced = /*#__PURE__*/function () {\n function XPreservingReduced(xf) {\n this.xf = xf;\n }\n XPreservingReduced.prototype[tInit] = _xfBase.init;\n XPreservingReduced.prototype[tResult] = _xfBase.result;\n XPreservingReduced.prototype[tStep] = function (result, input) {\n var ret = this.xf[tStep](result, input);\n return ret['@@transducer/reduced'] ? _forceReduced(ret) : ret;\n };\n return XPreservingReduced;\n}();\nvar XFlatCat = /*#__PURE__*/function () {\n function XFlatCat(xf) {\n this.xf = new XPreservingReduced(xf);\n }\n XFlatCat.prototype[tInit] = _xfBase.init;\n XFlatCat.prototype[tResult] = _xfBase.result;\n XFlatCat.prototype[tStep] = function (result, input) {\n return !_isArrayLike(input) ? _xArrayReduce(this.xf, result, [input]) : _xReduce(this.xf, result, input);\n };\n return XFlatCat;\n}();\nvar _flatCat = function _xcat(xf) {\n return new XFlatCat(xf);\n};\nexport default _flatCat;","import _flatCat from \"./_flatCat.js\";\nimport _xmap from \"./_xmap.js\";\nexport default function _xchain(f) {\n return function (xf) {\n return _xmap(f)(_flatCat(xf));\n };\n}","import _dispatchable from \"./_dispatchable.js\";\nimport _makeFlat from \"./_makeFlat.js\";\nimport _xchain from \"./_xchain.js\";\nimport map from \"../map.js\";\nexport default /*#__PURE__*/_dispatchable(['fantasy-land/chain', 'chain'], _xchain, function chain(fn, monad) {\n if (typeof monad === 'function') {\n return function (x) {\n return fn(monad(x))(x);\n };\n }\n return _makeFlat(false)(map(fn, monad));\n});","import _curry2 from \"./internal/_curry2.js\";\nimport _chain from \"./internal/_chain.js\";\n\n/**\n * `chain` maps a function over a list and concatenates the results. `chain`\n * is also known as `flatMap` in some libraries.\n *\n * Dispatches to the `chain` method of the second argument, if present,\n * according to the [FantasyLand Chain spec](https://github.com/fantasyland/fantasy-land#chain).\n *\n * If second argument is a function, `chain(f, g)(x)` is equivalent to `f(g(x), x)`.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig Chain m => (a -> m b) -> m a -> m b\n * @param {Function} fn The function to map with\n * @param {Array} list The list to map over\n * @return {Array} The result of flat-mapping `list` with `fn`\n * @example\n *\n * const duplicate = n => [n, n];\n * R.chain(duplicate, [1, 2, 3]); //=> [1, 1, 2, 2, 3, 3]\n *\n * R.chain(R.append, R.head)([1, 2, 3]); //=> [1, 2, 3, 1]\n */\nvar chain = /*#__PURE__*/_curry2(_chain);\nexport default chain;","import _curry3 from \"./internal/_curry3.js\";\n\n/**\n * Restricts a number to be within a range.\n *\n * Also works for other ordered types such as Strings and Dates.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category Relation\n * @sig Ord a => a -> a -> a -> a\n * @param {Number} minimum The lower limit of the clamp (inclusive)\n * @param {Number} maximum The upper limit of the clamp (inclusive)\n * @param {Number} value Value to be clamped\n * @return {Number} Returns `minimum` when `val < minimum`, `maximum` when `val > maximum`, returns `val` otherwise\n * @example\n *\n * R.clamp(1, 10, -5) // => 1\n * R.clamp(1, 10, 15) // => 10\n * R.clamp(1, 10, 4) // => 4\n */\nvar clamp = /*#__PURE__*/_curry3(function clamp(min, max, value) {\n if (min > max) {\n throw new Error('min must not be greater than max in clamp(min, max, value)');\n }\n return value < min ? min : value > max ? max : value;\n});\nexport default clamp;","export default function _cloneRegExp(pattern) {\n return new RegExp(pattern.source, pattern.flags ? pattern.flags : (pattern.global ? 'g' : '') + (pattern.ignoreCase ? 'i' : '') + (pattern.multiline ? 'm' : '') + (pattern.sticky ? 'y' : '') + (pattern.unicode ? 'u' : '') + (pattern.dotAll ? 's' : ''));\n}","import _cloneRegExp from \"./_cloneRegExp.js\";\nimport type from \"../type.js\";\n\n/**\n * Copies an object.\n *\n * @private\n * @param {*} value The value to be copied\n * @param {Boolean} deep Whether or not to perform deep cloning.\n * @return {*} The copied value.\n */\nexport default function _clone(value, deep, map) {\n map || (map = new _ObjectMap());\n\n // this avoids the slower switch with a quick if decision removing some milliseconds in each run.\n if (_isPrimitive(value)) {\n return value;\n }\n var copy = function copy(copiedValue) {\n // Check for circular and same references on the object graph and return its corresponding clone.\n var cachedCopy = map.get(value);\n if (cachedCopy) {\n return cachedCopy;\n }\n map.set(value, copiedValue);\n for (var key in value) {\n if (Object.prototype.hasOwnProperty.call(value, key)) {\n copiedValue[key] = deep ? _clone(value[key], true, map) : value[key];\n }\n }\n return copiedValue;\n };\n switch (type(value)) {\n case 'Object':\n return copy(Object.create(Object.getPrototypeOf(value)));\n case 'Array':\n return copy(Array(value.length));\n case 'Date':\n return new Date(value.valueOf());\n case 'RegExp':\n return _cloneRegExp(value);\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'BigInt64Array':\n case 'BigUint64Array':\n return value.slice();\n default:\n return value;\n }\n}\nfunction _isPrimitive(param) {\n var type = typeof param;\n return param == null || type != 'object' && type != 'function';\n}\nvar _ObjectMap = /*#__PURE__*/function () {\n function _ObjectMap() {\n this.map = {};\n this.length = 0;\n }\n _ObjectMap.prototype.set = function (key, value) {\n var hashedKey = this.hash(key);\n var bucket = this.map[hashedKey];\n if (!bucket) {\n this.map[hashedKey] = bucket = [];\n }\n bucket.push([key, value]);\n this.length += 1;\n };\n _ObjectMap.prototype.hash = function (key) {\n var hashedKey = [];\n for (var value in key) {\n hashedKey.push(Object.prototype.toString.call(key[value]));\n }\n return hashedKey.join();\n };\n _ObjectMap.prototype.get = function (key) {\n /**\n * depending on the number of objects to be cloned is faster to just iterate over the items in the map just because the hash function is so costly,\n * on my tests this number is 180, anything above that using the hash function is faster.\n */\n if (this.length <= 180) {\n for (var p in this.map) {\n var bucket = this.map[p];\n for (var i = 0; i < bucket.length; i += 1) {\n var element = bucket[i];\n if (element[0] === key) {\n return element[1];\n }\n }\n }\n return;\n }\n var hashedKey = this.hash(key);\n var bucket = this.map[hashedKey];\n if (!bucket) {\n return;\n }\n for (var i = 0; i < bucket.length; i += 1) {\n var element = bucket[i];\n if (element[0] === key) {\n return element[1];\n }\n }\n };\n return _ObjectMap;\n}();","import _clone from \"./internal/_clone.js\";\nimport _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Creates a deep copy of the source that can be used in place of the source\n * object without retaining any references to it.\n * The source object may contain (nested) `Array`s and `Object`s,\n * `Number`s, `String`s, `Boolean`s and `Date`s.\n * `Function`s are assigned by reference rather than copied.\n *\n * Dispatches to a `clone` method if present.\n *\n * Note that if the source object has multiple nodes that share a reference,\n * the returned object will have the same structure, but the references will\n * be pointed to the location within the cloned value.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {*} -> {*}\n * @param {*} value The object or array to clone\n * @return {*} A deeply cloned copy of `val`\n * @example\n *\n * const objects = [{}, {}, {}];\n * const objectsClone = R.clone(objects);\n * objects === objectsClone; //=> false\n * objects[0] === objectsClone[0]; //=> false\n */\nvar clone = /*#__PURE__*/_curry1(function clone(value) {\n return value != null && typeof value.clone === 'function' ? value.clone() : _clone(value, true);\n});\nexport default clone;","import _curry2 from \"./internal/_curry2.js\";\nimport _reduce from \"./internal/_reduce.js\";\n\n/**\n * Splits a list into sub-lists, based on the result of calling a key-returning function on each element,\n * and grouping the results according to values returned.\n *\n * @func\n * @memberOf R\n * @since v0.28.0\n * @category List\n * @typedefn Idx = String | Int | Symbol\n * @sig Idx a => (b -> a) -> [b] -> [[b]]\n * @param {Function} fn Function :: a -> Idx\n * @param {Array} list The array to group\n * @return {Array}\n * An array of arrays where each sub-array contains items for which\n * the String-returning function has returned the same value.\n * @see R.groupBy, R.partition\n * @example\n * R.collectBy(R.prop('type'), [\n * {type: 'breakfast', item: '☕️'},\n * {type: 'lunch', item: '🌯'},\n * {type: 'dinner', item: '🍝'},\n * {type: 'breakfast', item: '🥐'},\n * {type: 'lunch', item: '🍕'}\n * ]);\n *\n * // [ [ {type: 'breakfast', item: '☕️'},\n * // {type: 'breakfast', item: '🥐'} ],\n * // [ {type: 'lunch', item: '🌯'},\n * // {type: 'lunch', item: '🍕'} ],\n * // [ {type: 'dinner', item: '🍝'} ] ]\n */\nvar collectBy = /*#__PURE__*/_curry2(function collectBy(fn, list) {\n var group = _reduce(function (o, x) {\n var tag = fn(x);\n if (o[tag] === undefined) {\n o[tag] = [];\n }\n o[tag].push(x);\n return o;\n }, {}, list);\n var newList = [];\n for (var tag in group) {\n newList.push(group[tag]);\n }\n return newList;\n});\nexport default collectBy;","import _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Makes a comparator function out of a function that reports whether the first\n * element is less than the second.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((a, b) -> Boolean) -> ((a, b) -> Number)\n * @param {Function} pred A predicate function of arity two which will return `true` if the first argument\n * is less than the second, `false` otherwise\n * @return {Function} A Function :: a -> b -> Int that returns `-1` if a < b, `1` if b < a, otherwise `0`\n * @example\n *\n * const byAge = R.comparator((a, b) => a.age < b.age);\n * const people = [\n * { name: 'Emma', age: 70 },\n * { name: 'Peter', age: 78 },\n * { name: 'Mikhail', age: 62 },\n * ];\n * const peopleByIncreasingAge = R.sort(byAge, people);\n * //=> [{ name: 'Mikhail', age: 62 },{ name: 'Emma', age: 70 }, { name: 'Peter', age: 78 }]\n */\nvar comparator = /*#__PURE__*/_curry1(function comparator(pred) {\n return function (a, b) {\n return pred(a, b) ? -1 : pred(b, a) ? 1 : 0;\n };\n});\nexport default comparator;","import _curry1 from \"./internal/_curry1.js\";\n\n/**\n * A function that returns the `!` of its argument. It will return `true` when\n * passed false-y value, and `false` when passed a truth-y one.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig * -> Boolean\n * @param {*} a any value\n * @return {Boolean} the logical inverse of passed argument.\n * @see R.complement\n * @example\n *\n * R.not(true); //=> false\n * R.not(false); //=> true\n * R.not(0); //=> true\n * R.not(1); //=> false\n */\nvar not = /*#__PURE__*/_curry1(function not(a) {\n return !a;\n});\nexport default not;","import lift from \"./lift.js\";\nimport not from \"./not.js\";\n\n/**\n * Takes a function `f` and returns a function `g` such that if called with the same arguments\n * when `f` returns a \"truthy\" value, `g` returns `false` and when `f` returns a \"falsy\" value `g` returns `true`.\n *\n * `R.complement` may be applied to any functor\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category Logic\n * @sig (*... -> *) -> (*... -> Boolean)\n * @param {Function} f\n * @return {Function}\n * @see R.not\n * @example\n *\n * const isNotNil = R.complement(R.isNil);\n * R.isNil(null); //=> true\n * isNotNil(null); //=> false\n * R.isNil(7); //=> false\n * isNotNil(7); //=> true\n */\nvar complement = /*#__PURE__*/lift(not);\nexport default complement;","export default function _pipe(f, g) {\n return function () {\n return g.call(this, f.apply(this, arguments));\n };\n}","import _isArray from \"./_isArray.js\";\n\n/**\n * This checks whether a function has a [methodname] function. If it isn't an\n * array it will execute that function otherwise it will default to the ramda\n * implementation.\n *\n * @private\n * @param {Function} fn ramda implementation\n * @param {String} methodname property to check for a custom implementation\n * @return {Object} Whatever the return value of the method is.\n */\nexport default function _checkForMethod(methodname, fn) {\n return function () {\n var length = arguments.length;\n if (length === 0) {\n return fn();\n }\n var obj = arguments[length - 1];\n return _isArray(obj) || typeof obj[methodname] !== 'function' ? fn.apply(this, arguments) : obj[methodname].apply(obj, Array.prototype.slice.call(arguments, 0, length - 1));\n };\n}","import _checkForMethod from \"./internal/_checkForMethod.js\";\nimport _curry3 from \"./internal/_curry3.js\";\n\n/**\n * Returns the elements of the given list or string (or object with a `slice`\n * method) from `fromIndex` (inclusive) to `toIndex` (exclusive).\n *\n * Dispatches to the `slice` method of the third argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig Number -> Number -> [a] -> [a]\n * @sig Number -> Number -> String -> String\n * @param {Number} fromIndex The start index (inclusive).\n * @param {Number} toIndex The end index (exclusive).\n * @param {*} list\n * @return {*}\n * @example\n *\n * R.slice(1, 3, ['a', 'b', 'c', 'd']); //=> ['b', 'c']\n * R.slice(1, Infinity, ['a', 'b', 'c', 'd']); //=> ['b', 'c', 'd']\n * R.slice(0, -1, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c']\n * R.slice(-3, -1, ['a', 'b', 'c', 'd']); //=> ['b', 'c']\n * R.slice(0, 3, 'ramda'); //=> 'ram'\n */\nvar slice = /*#__PURE__*/_curry3( /*#__PURE__*/_checkForMethod('slice', function slice(fromIndex, toIndex, list) {\n return Array.prototype.slice.call(list, fromIndex, toIndex);\n}));\nexport default slice;","import _checkForMethod from \"./internal/_checkForMethod.js\";\nimport _curry1 from \"./internal/_curry1.js\";\nimport slice from \"./slice.js\";\n\n/**\n * Returns all but the first element of the given list or string (or object\n * with a `tail` method).\n *\n * Dispatches to the `slice` method of the first argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @sig String -> String\n * @param {*} list\n * @return {*}\n * @see R.head, R.init, R.last\n * @example\n *\n * R.tail([1, 2, 3]); //=> [2, 3]\n * R.tail([1, 2]); //=> [2]\n * R.tail([1]); //=> []\n * R.tail([]); //=> []\n *\n * R.tail('abc'); //=> 'bc'\n * R.tail('ab'); //=> 'b'\n * R.tail('a'); //=> ''\n * R.tail(''); //=> ''\n */\nvar tail = /*#__PURE__*/_curry1( /*#__PURE__*/_checkForMethod('tail', /*#__PURE__*/slice(1, Infinity)));\nexport default tail;","import _arity from \"./internal/_arity.js\";\nimport _pipe from \"./internal/_pipe.js\";\nimport reduce from \"./reduce.js\";\nimport tail from \"./tail.js\";\n\n/**\n * Performs left-to-right function composition. The first argument may have\n * any arity; the remaining arguments must be unary.\n *\n * In some libraries this function is named `sequence`.\n *\n * **Note:** The result of pipe is not automatically curried.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)) -> ((a, b, ..., n) -> z)\n * @param {...Function} functions\n * @return {Function}\n * @see R.compose\n * @example\n *\n * const f = R.pipe(Math.pow, R.negate, R.inc);\n *\n * f(3, 4); // -(3^4) + 1\n * @symb R.pipe(f, g, h)(a, b) = h(g(f(a, b)))\n * @symb R.pipe(f, g, h)(a)(b) = h(g(f(a)))(b)\n */\nexport default function pipe() {\n if (arguments.length === 0) {\n throw new Error('pipe requires at least one argument');\n }\n return _arity(arguments[0].length, reduce(_pipe, arguments[0], tail(arguments)));\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _isString from \"./internal/_isString.js\";\n\n/**\n * Returns a new list or string with the elements or characters in reverse\n * order.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @sig String -> String\n * @param {Array|String} list\n * @return {Array|String}\n * @example\n *\n * R.reverse([1, 2, 3]); //=> [3, 2, 1]\n * R.reverse([1, 2]); //=> [2, 1]\n * R.reverse([1]); //=> [1]\n * R.reverse([]); //=> []\n *\n * R.reverse('abc'); //=> 'cba'\n * R.reverse('ab'); //=> 'ba'\n * R.reverse('a'); //=> 'a'\n * R.reverse(''); //=> ''\n */\nvar reverse = /*#__PURE__*/_curry1(function reverse(list) {\n return _isString(list) ? list.split('').reverse().join('') : Array.prototype.slice.call(list, 0).reverse();\n});\nexport default reverse;","import pipe from \"./pipe.js\";\nimport reverse from \"./reverse.js\";\n\n/**\n * Performs right-to-left function composition. The last argument may have\n * any arity; the remaining arguments must be unary.\n *\n * **Note:** The result of compose is not automatically curried.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((y -> z), (x -> y), ..., (o -> p), ((a, b, ..., n) -> o)) -> ((a, b, ..., n) -> z)\n * @param {...Function} ...functions The functions to compose\n * @return {Function}\n * @see R.pipe\n * @example\n *\n * const classyGreeting = (firstName, lastName) => \"The name's \" + lastName + \", \" + firstName + \" \" + lastName\n * const yellGreeting = R.compose(R.toUpper, classyGreeting);\n * yellGreeting('James', 'Bond'); //=> \"THE NAME'S BOND, JAMES BOND\"\n *\n * R.compose(Math.abs, R.add(1), R.multiply(2))(-4) //=> 7\n *\n * @symb R.compose(f, g, h)(a, b) = f(g(h(a, b)))\n * @symb R.compose(f, g, h)(a)(b) = f(g(h(a)))(b)\n */\nexport default function compose() {\n if (arguments.length === 0) {\n throw new Error('compose requires at least one argument');\n }\n return pipe.apply(this, reverse(arguments));\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _nth from \"./internal/_nth.js\";\n\n/**\n * Returns the first element of the given list or string. In some libraries\n * this function is named `first`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> a | Undefined\n * @sig String -> String | Undefined\n * @param {Array|String} list\n * @return {*}\n * @see R.tail, R.init, R.last\n * @example\n *\n * R.head([1, 2, 3]); //=> 1\n * R.head([1]); //=> 1\n * R.head([]); //=> undefined\n *\n * R.head('abc'); //=> 'a'\n * R.head('a'); //=> 'a'\n * R.head(''); //=> undefined\n */\nvar head = /*#__PURE__*/_curry1(function (list) {\n return _nth(0, list);\n});\nexport default head;","export default function _identity(x) {\n return x;\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _identity from \"./internal/_identity.js\";\n\n/**\n * A function that does nothing but return the parameter supplied to it. Good\n * as a default or placeholder function.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig a -> a\n * @param {*} x The value to return.\n * @return {*} The input value, `x`.\n * @example\n *\n * R.identity(1); //=> 1\n *\n * const obj = {};\n * R.identity(obj) === obj; //=> true\n * @symb R.identity(a) = a\n */\nvar identity = /*#__PURE__*/_curry1(_identity);\nexport default identity;","import _arity from \"./internal/_arity.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport head from \"./head.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport tail from \"./tail.js\";\nimport identity from \"./identity.js\";\n\n/**\n * Performs left-to-right function composition using transforming function. The first function may have\n * any arity; the remaining functions must be unary.\n *\n * **Note:** The result of pipeWith is not automatically curried. Transforming function is not used on the\n * first argument.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category Function\n * @sig ((* -> *), [((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)]) -> ((a, b, ..., n) -> z)\n * @param {Function} transformer The transforming function\n * @param {Array} functions The functions to pipe\n * @return {Function}\n * @see R.andThen, R.composeWith, R.pipe\n * @examples\n *\n * const pipeWhileNotNil = R.pipeWith((f, res) => R.isNil(res) ? res : f(res));\n *\n * pipeWhileNotNil([R.prop('age'), R.inc ])({age: 1}) //=> 2\n * pipeWhileNotNil([R.prop('age'), R.inc ])({}) //=> undefined\n * @symb R.pipeWith(f)([g, h, i])(...args) = f(i, f(h, g(...args)))\n */\nvar pipeWith = /*#__PURE__*/_curry2(function pipeWith(xf, list) {\n if (list.length <= 0) {\n return identity;\n }\n var headList = head(list);\n var tailList = tail(list);\n return _arity(headList.length, function () {\n return _reduce(function (result, f) {\n return xf.call(this, f, result);\n }, headList.apply(this, arguments), tailList);\n });\n});\nexport default pipeWith;","import _curry2 from \"./internal/_curry2.js\";\nimport pipeWith from \"./pipeWith.js\";\nimport reverse from \"./reverse.js\";\n\n/**\n * Performs right-to-left function composition using transforming function. The last function may have\n * any arity; the remaining functions must be unary. Unlike `compose`, functions are passed in an array.\n *\n * **Note:** The result of composeWith is not automatically curried. Transforming function is not used\n * on the last argument.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category Function\n * @sig ((* -> *), [(y -> z), (x -> y), ..., (o -> p), ((a, b, ..., n) -> o)]) -> ((a, b, ..., n) -> z)\n * @param {Function} transformer The transforming function\n * @param {Array} functions The functions to compose\n * @return {Function}\n * @see R.compose, R.pipeWith\n * @example\n *\n * const composeWhileNotNil = R.composeWith((f, res) => R.isNil(res) ? res : f(res));\n *\n * composeWhileNotNil([R.inc, R.prop('age')])({age: 1}) //=> 2\n * composeWhileNotNil([R.inc, R.prop('age')])({}) //=> undefined\n *\n * @symb R.composeWith(f)([g, h, i])(...args) = f(g, f(h, i(...args)))\n */\nvar composeWith = /*#__PURE__*/_curry2(function composeWith(xf, list) {\n return pipeWith.apply(this, [xf, reverse(list)]);\n});\nexport default composeWith;","import _curry2 from \"./internal/_curry2.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport _isFunction from \"./internal/_isFunction.js\";\nimport _isString from \"./internal/_isString.js\";\nimport toString from \"./toString.js\";\n\n/**\n * Returns the result of concatenating the given lists or strings.\n *\n * Note: `R.concat` expects both arguments to be of the same type,\n * unlike the native `Array.prototype.concat` method. It will throw\n * an error if you `concat` an Array with a non-Array value.\n *\n * Dispatches to the `concat` method of the first argument, if present.\n * Can also concatenate two members of a [fantasy-land\n * compatible semigroup](https://github.com/fantasyland/fantasy-land#semigroup).\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a] -> [a]\n * @sig String -> String -> String\n * @param {Array|String} firstList The first list\n * @param {Array|String} secondList The second list\n * @return {Array|String} A list consisting of the elements of `firstList` followed by the elements of\n * `secondList`.\n *\n * @example\n *\n * R.concat('ABC', 'DEF'); // 'ABCDEF'\n * R.concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3]\n * R.concat([], []); //=> []\n */\nvar concat = /*#__PURE__*/_curry2(function concat(a, b) {\n if (_isArray(a)) {\n if (_isArray(b)) {\n return a.concat(b);\n }\n throw new TypeError(toString(b) + ' is not an array');\n }\n if (_isString(a)) {\n if (_isString(b)) {\n return a + b;\n }\n throw new TypeError(toString(b) + ' is not a string');\n }\n if (a != null && _isFunction(a['fantasy-land/concat'])) {\n return a['fantasy-land/concat'](b);\n }\n if (a != null && _isFunction(a.concat)) {\n return a.concat(b);\n }\n throw new TypeError(toString(a) + ' does not have a method named \"concat\" or \"fantasy-land/concat\"');\n});\nexport default concat;","import _arity from \"./internal/_arity.js\";\nimport _curry1 from \"./internal/_curry1.js\";\nimport map from \"./map.js\";\nimport max from \"./max.js\";\nimport reduce from \"./reduce.js\";\n\n/**\n * Returns a function, `fn`, which encapsulates `if/else, if/else, ...` logic.\n * `R.cond` takes a list of [predicate, transformer] pairs. All of the arguments\n * to `fn` are applied to each of the predicates in turn until one returns a\n * \"truthy\" value, at which point `fn` returns the result of applying its\n * arguments to the corresponding transformer. If none of the predicates\n * matches, `fn` returns undefined.\n *\n * **Please note**: This is not a direct substitute for a `switch` statement.\n * Remember that both elements of every pair passed to `cond` are *functions*,\n * and `cond` returns a function.\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Logic\n * @sig [[(*... -> Boolean),(*... -> *)]] -> (*... -> *)\n * @param {Array} pairs A list of [predicate, transformer]\n * @return {Function}\n * @see R.ifElse, R.unless, R.when\n * @example\n *\n * const fn = R.cond([\n * [R.equals(0), R.always('water freezes at 0°C')],\n * [R.equals(100), R.always('water boils at 100°C')],\n * [R.T, temp => 'nothing special happens at ' + temp + '°C']\n * ]);\n * fn(0); //=> 'water freezes at 0°C'\n * fn(50); //=> 'nothing special happens at 50°C'\n * fn(100); //=> 'water boils at 100°C'\n */\nvar cond = /*#__PURE__*/_curry1(function cond(pairs) {\n var arity = reduce(max, 0, map(function (pair) {\n return pair[0].length;\n }, pairs));\n return _arity(arity, function () {\n var idx = 0;\n while (idx < pairs.length) {\n if (pairs[idx][0].apply(this, arguments)) {\n return pairs[idx][1].apply(this, arguments);\n }\n idx += 1;\n }\n });\n});\nexport default cond;","import _curry2 from \"./internal/_curry2.js\";\nimport curry from \"./curry.js\";\nimport nAry from \"./nAry.js\";\n\n/**\n * Wraps a constructor function inside a curried function that can be called\n * with the same arguments and returns the same type. The arity of the function\n * returned is specified to allow using variadic constructor functions.\n *\n * @func\n * @memberOf R\n * @since v0.4.0\n * @category Function\n * @sig Number -> (* -> {*}) -> (* -> {*})\n * @param {Number} n The arity of the constructor function.\n * @param {Function} Fn The constructor function to wrap.\n * @return {Function} A wrapped, curried constructor function.\n * @example\n *\n * // Variadic Constructor function\n * function Salad() {\n * this.ingredients = arguments;\n * }\n *\n * Salad.prototype.recipe = function() {\n * const instructions = R.map(ingredient => 'Add a dollop of ' + ingredient, this.ingredients);\n * return R.join('\\n', instructions);\n * };\n *\n * const ThreeLayerSalad = R.constructN(3, Salad);\n *\n * // Notice we no longer need the 'new' keyword, and the constructor is curried for 3 arguments.\n * const salad = ThreeLayerSalad('Mayonnaise')('Potato Chips')('Ketchup');\n *\n * console.log(salad.recipe());\n * // Add a dollop of Mayonnaise\n * // Add a dollop of Potato Chips\n * // Add a dollop of Ketchup\n */\nvar constructN = /*#__PURE__*/_curry2(function constructN(n, Fn) {\n if (n > 10) {\n throw new Error('Constructor with greater than ten arguments');\n }\n if (n === 0) {\n return function () {\n return new Fn();\n };\n }\n return curry(nAry(n, function ($0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {\n switch (n) {\n case 1:\n return new Fn($0);\n case 2:\n return new Fn($0, $1);\n case 3:\n return new Fn($0, $1, $2);\n case 4:\n return new Fn($0, $1, $2, $3);\n case 5:\n return new Fn($0, $1, $2, $3, $4);\n case 6:\n return new Fn($0, $1, $2, $3, $4, $5);\n case 7:\n return new Fn($0, $1, $2, $3, $4, $5, $6);\n case 8:\n return new Fn($0, $1, $2, $3, $4, $5, $6, $7);\n case 9:\n return new Fn($0, $1, $2, $3, $4, $5, $6, $7, $8);\n case 10:\n return new Fn($0, $1, $2, $3, $4, $5, $6, $7, $8, $9);\n }\n }));\n});\nexport default constructN;","import _curry1 from \"./internal/_curry1.js\";\nimport constructN from \"./constructN.js\";\n\n/**\n * Wraps a constructor function inside a curried function that can be called\n * with the same arguments and returns the same type.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (* -> {*}) -> (* -> {*})\n * @param {Function} fn The constructor function to wrap.\n * @return {Function} A wrapped, curried constructor function.\n * @see R.invoker\n * @example\n *\n * // Constructor function\n * function Animal(kind) {\n * this.kind = kind;\n * };\n * Animal.prototype.sighting = function() {\n * return \"It's a \" + this.kind + \"!\";\n * }\n *\n * const AnimalConstructor = R.construct(Animal)\n *\n * // Notice we no longer need the 'new' keyword:\n * AnimalConstructor('Pig'); //=> {\"kind\": \"Pig\", \"sighting\": function (){...}};\n *\n * const animalTypes = [\"Lion\", \"Tiger\", \"Bear\"];\n * const animalSighting = R.invoker(0, 'sighting');\n * const sightNewAnimal = R.compose(animalSighting, AnimalConstructor);\n * R.map(sightNewAnimal, animalTypes); //=> [\"It's a Lion!\", \"It's a Tiger!\", \"It's a Bear!\"]\n */\nvar construct = /*#__PURE__*/_curry1(function construct(Fn) {\n return constructN(Fn.length, Fn);\n});\nexport default construct;","import _curry2 from \"./internal/_curry2.js\";\nimport _map from \"./internal/_map.js\";\nimport curryN from \"./curryN.js\";\nimport max from \"./max.js\";\nimport pluck from \"./pluck.js\";\nimport reduce from \"./reduce.js\";\n\n/**\n * Accepts a converging function and a list of branching functions and returns\n * a new function. The arity of the new function is the same as the arity of\n * the longest branching function. When invoked, this new function is applied\n * to some arguments, and each branching function is applied to those same\n * arguments. The results of each branching function are passed as arguments\n * to the converging function to produce the return value.\n *\n * @func\n * @memberOf R\n * @since v0.4.2\n * @category Function\n * @sig ((x1, x2, ...) -> z) -> [((a, b, ...) -> x1), ((a, b, ...) -> x2), ...] -> (a -> b -> ... -> z)\n * @param {Function} after A function. `after` will be invoked with the return values of\n * `fn1` and `fn2` as its arguments.\n * @param {Array} functions A list of functions.\n * @return {Function} A new function.\n * @see R.useWith\n * @example\n *\n * const average = R.converge(R.divide, [R.sum, R.length])\n * average([1, 2, 3, 4, 5, 6, 7]) //=> 4\n *\n * const strangeConcat = R.converge(R.concat, [R.toUpper, R.toLower])\n * strangeConcat(\"Yodel\") //=> \"YODELyodel\"\n *\n * @symb R.converge(f, [g, h])(a, b) = f(g(a, b), h(a, b))\n */\nvar converge = /*#__PURE__*/_curry2(function converge(after, fns) {\n return curryN(reduce(max, 0, pluck('length', fns)), function () {\n var args = arguments;\n var context = this;\n return after.apply(context, _map(function (fn) {\n return fn.apply(context, args);\n }, fns));\n });\n});\nexport default converge;","import _reduce from \"./internal/_reduce.js\";\nimport curry from \"./curry.js\";\n\n/**\n * Returns the number of items in a given `list` matching the predicate `f`\n *\n * @func\n * @memberOf R\n * @since v0.28.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> Number\n * @param {Function} predicate The function to match items against.\n * @param {Array} list The list to count elements from.\n * @return {Number} The count of items matching the predicate.\n * @example\n *\n * const even = x => x % 2 == 0;\n *\n * R.count(even, [1, 2, 3, 4, 5]); // => 2\n * R.map(R.count(even), [[1, 1, 1], [2, 3, 4, 5], [6]]); // => [0, 2, 1]\n */\nvar count = /*#__PURE__*/curry(function (pred, list) {\n return _reduce(function (a, e) {\n return pred(e) ? a + 1 : a;\n }, 0, list);\n});\nexport default count;","import _clone from \"./_clone.js\";\nimport _has from \"./_has.js\";\nimport _xfBase from \"./_xfBase.js\";\nvar XReduceBy = /*#__PURE__*/function () {\n function XReduceBy(valueFn, valueAcc, keyFn, xf) {\n this.valueFn = valueFn;\n this.valueAcc = valueAcc;\n this.keyFn = keyFn;\n this.xf = xf;\n this.inputs = {};\n }\n XReduceBy.prototype['@@transducer/init'] = _xfBase.init;\n XReduceBy.prototype['@@transducer/result'] = function (result) {\n var key;\n for (key in this.inputs) {\n if (_has(key, this.inputs)) {\n result = this.xf['@@transducer/step'](result, this.inputs[key]);\n if (result['@@transducer/reduced']) {\n result = result['@@transducer/value'];\n break;\n }\n }\n }\n this.inputs = null;\n return this.xf['@@transducer/result'](result);\n };\n XReduceBy.prototype['@@transducer/step'] = function (result, input) {\n var key = this.keyFn(input);\n this.inputs[key] = this.inputs[key] || [key, _clone(this.valueAcc, false)];\n this.inputs[key][1] = this.valueFn(this.inputs[key][1], input);\n return result;\n };\n return XReduceBy;\n}();\nexport default function _xreduceBy(valueFn, valueAcc, keyFn) {\n return function (xf) {\n return new XReduceBy(valueFn, valueAcc, keyFn, xf);\n };\n}","import _clone from \"./internal/_clone.js\";\nimport _curryN from \"./internal/_curryN.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _has from \"./internal/_has.js\";\nimport _reduced from \"./internal/_reduced.js\";\nimport _xReduce from \"./internal/_xReduce.js\";\nimport _xreduceBy from \"./internal/_xreduceBy.js\";\nimport _xwrap from \"./internal/_xwrap.js\";\n\n/**\n * Groups the elements of the list according to the result of calling\n * the String-returning function `keyFn` on each element and reduces the elements\n * of each group to a single value via the reducer function `valueFn`.\n *\n * The value function receives two values: *(acc, value)*. It may use\n * [`R.reduced`](#reduced) to short circuit the iteration.\n *\n * This function is basically a more general [`groupBy`](#groupBy) function.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category List\n * @sig ((a, b) -> a) -> a -> (b -> String) -> [b] -> {String: a}\n * @param {Function} valueFn The function that reduces the elements of each group to a single\n * value. Receives two values, accumulator for a particular group and the current element.\n * @param {*} acc The (initial) accumulator value for each group.\n * @param {Function} keyFn The function that maps the list's element into a key.\n * @param {Array} list The array to group.\n * @return {Object} An object with the output of `keyFn` for keys, mapped to the output of\n * `valueFn` for elements which produced that key when passed to `keyFn`.\n * @see R.groupBy, R.reduce, R.reduced\n * @example\n *\n * const groupNames = (acc, {name}) => acc.concat(name)\n * const toGrade = ({score}) =>\n * score < 65 ? 'F' :\n * score < 70 ? 'D' :\n * score < 80 ? 'C' :\n * score < 90 ? 'B' : 'A'\n *\n * var students = [\n * {name: 'Abby', score: 83},\n * {name: 'Bart', score: 62},\n * {name: 'Curt', score: 88},\n * {name: 'Dora', score: 92},\n * ]\n *\n * reduceBy(groupNames, [], toGrade, students)\n * //=> {\"A\": [\"Dora\"], \"B\": [\"Abby\", \"Curt\"], \"F\": [\"Bart\"]}\n */\nvar reduceBy = /*#__PURE__*/_curryN(4, [], /*#__PURE__*/_dispatchable([], _xreduceBy, function reduceBy(valueFn, valueAcc, keyFn, list) {\n var xf = _xwrap(function (acc, elt) {\n var key = keyFn(elt);\n var value = valueFn(_has(key, acc) ? acc[key] : _clone(valueAcc, false), elt);\n if (value && value['@@transducer/reduced']) {\n return _reduced(acc);\n }\n acc[key] = value;\n return acc;\n });\n return _xReduce(xf, {}, list);\n}));\nexport default reduceBy;","import reduceBy from \"./reduceBy.js\";\n\n/**\n * Counts the elements of a list according to how many match each value of a\n * key generated by the supplied function. Returns an object mapping the keys\n * produced by `fn` to the number of occurrences in the list. Note that all\n * keys are coerced to strings because of how JavaScript objects work.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig (a -> String) -> [a] -> {*}\n * @param {Function} fn The function used to map values to keys.\n * @param {Array} list The list to count elements from.\n * @return {Object} An object mapping keys to number of occurrences in the list.\n * @example\n *\n * const numbers = [1.0, 1.1, 1.2, 2.0, 3.0, 2.2];\n * R.countBy(Math.floor)(numbers); //=> {'1': 3, '2': 2, '3': 1}\n *\n * const letters = ['a', 'b', 'A', 'a', 'B', 'c'];\n * R.countBy(R.toLower)(letters); //=> {'a': 3, 'b': 2, 'c': 1}\n */\nvar countBy = /*#__PURE__*/reduceBy(function (acc, elem) {\n return acc + 1;\n}, 0);\nexport default countBy;","import add from \"./add.js\";\n\n/**\n * Decrements its argument.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Math\n * @sig Number -> Number\n * @param {Number} n\n * @return {Number} n - 1\n * @see R.inc\n * @example\n *\n * R.dec(42); //=> 41\n */\nvar dec = /*#__PURE__*/add(-1);\nexport default dec;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Returns the second argument if it is not `null`, `undefined` or `NaN`;\n * otherwise the first argument is returned.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Logic\n * @sig a -> b -> a | b\n * @param {a} default The default value.\n * @param {b} val `val` will be returned instead of `default` unless `val` is `null`, `undefined` or `NaN`.\n * @return {*} The second value if it is not `null`, `undefined` or `NaN`, otherwise the default value\n * @example\n *\n * const defaultTo42 = R.defaultTo(42);\n *\n * defaultTo42(null); //=> 42\n * defaultTo42(undefined); //=> 42\n * defaultTo42(false); //=> false\n * defaultTo42('Ramda'); //=> 'Ramda'\n * // parseInt('string') results in NaN\n * defaultTo42(parseInt('string')); //=> 42\n */\nvar defaultTo = /*#__PURE__*/_curry2(function defaultTo(d, v) {\n return v == null || v !== v ? d : v;\n});\nexport default defaultTo;","import _curry3 from \"./internal/_curry3.js\";\n\n/**\n * Makes a descending comparator function out of a function that returns a value\n * that can be compared with `<` and `>`.\n *\n * @func\n * @memberOf R\n * @since v0.23.0\n * @category Function\n * @sig Ord b => (a -> b) -> a -> a -> Number\n * @param {Function} fn A function of arity one that returns a value that can be compared\n * @param {*} a The first item to be compared.\n * @param {*} b The second item to be compared.\n * @return {Number} `-1` if fn(a) > fn(b), `1` if fn(b) > fn(a), otherwise `0`\n * @see R.ascend, R.descendNatural, R.ascendNatural\n * @example\n *\n * const byAge = R.descend(R.prop('age'));\n * const people = [\n * { name: 'Emma', age: 70 },\n * { name: 'Peter', age: 78 },\n * { name: 'Mikhail', age: 62 },\n * ];\n * const peopleByOldestFirst = R.sort(byAge, people);\n * //=> [{ name: 'Peter', age: 78 }, { name: 'Emma', age: 70 }, { name: 'Mikhail', age: 62 }]\n */\nvar descend = /*#__PURE__*/_curry3(function descend(fn, a, b) {\n var aa = fn(a);\n var bb = fn(b);\n return aa > bb ? -1 : aa < bb ? 1 : 0;\n});\nexport default descend;","import curry from \"./curry.js\";\n\n/**\n * Makes a descending comparator function out of a function that returns a value\n * that can be compared with natural sorting using localeCompare.\n *\n * @func\n * @memberOf R\n * @since v0.30.1\n * @category Function\n * @sig s -> (a -> String) -> a -> a -> Number\n * @param {String|Array} locales A string with a BCP 47 language tag, or an array of such strings. Corresponds to the locales parameter of the Intl.Collator() constructor.\n * @param {Function} fn A function of arity one that returns a string that can be compared\n * @param {*} a The first item to be compared.\n * @param {*} b The second item to be compared.\n * @return {Number} `-1` if a occurs after b, `1` if a occurs before b, otherwise `0`\n * @see R.descend\n * @example\n *\n * const unsorted = ['3', '1', '10', 'Ørjan', 'Bob', 'Älva'];\n *\n * R.sort(R.descendNatural('en', R.identity), unsorted);\n * // => ['Ørjan', 'Bob', 'Älva', '10', '3', '1']\n *\n * R.sort(R.descendNatural('sv', R.identity), unsorted);\n * // => ['Ørjan', 'Älva', 'Bob', '10', '3', '1']\n *\n * R.sort(R.descend(R.identity), unsorted);\n * // => ['Ørjan', 'Älva', 'Bob', '3', '10', '1']\n */\nvar descendNatural = /*#__PURE__*/curry(function descendNatural(locales, fn, a, b) {\n const aa = fn(a);\n const bb = fn(b);\n return bb.localeCompare(aa, locales, {\n numeric: true\n });\n});\nexport default descendNatural;","import _includes from \"./_includes.js\";\nvar _Set = /*#__PURE__*/function () {\n function _Set() {\n /* globals Set */\n this._nativeSet = typeof Set === 'function' ? new Set() : null;\n this._items = {};\n }\n // until we figure out why jsdoc chokes on this\n // @param item The item to add to the Set\n // @returns {boolean} true if the item did not exist prior, otherwise false\n //\n _Set.prototype.add = function (item) {\n return !hasOrAdd(item, true, this);\n };\n\n //\n // @param item The item to check for existence in the Set\n // @returns {boolean} true if the item exists in the Set, otherwise false\n //\n _Set.prototype.has = function (item) {\n return hasOrAdd(item, false, this);\n };\n\n //\n // Combines the logic for checking whether an item is a member of the set and\n // for adding a new item to the set.\n //\n // @param item The item to check or add to the Set instance.\n // @param shouldAdd If true, the item will be added to the set if it doesn't\n // already exist.\n // @param set The set instance to check or add to.\n // @return {boolean} true if the item already existed, otherwise false.\n //\n return _Set;\n}();\nfunction hasOrAdd(item, shouldAdd, set) {\n var type = typeof item;\n var prevSize, newSize;\n switch (type) {\n case 'string':\n case 'number':\n // distinguish between +0 and -0\n if (item === 0 && 1 / item === -Infinity) {\n if (set._items['-0']) {\n return true;\n } else {\n if (shouldAdd) {\n set._items['-0'] = true;\n }\n return false;\n }\n }\n // these types can all utilise the native Set\n if (set._nativeSet !== null) {\n if (shouldAdd) {\n prevSize = set._nativeSet.size;\n set._nativeSet.add(item);\n newSize = set._nativeSet.size;\n return newSize === prevSize;\n } else {\n return set._nativeSet.has(item);\n }\n } else {\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = {};\n set._items[type][item] = true;\n }\n return false;\n } else if (item in set._items[type]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type][item] = true;\n }\n return false;\n }\n }\n case 'boolean':\n // set._items['boolean'] holds a two element array\n // representing [ falseExists, trueExists ]\n if (type in set._items) {\n var bIdx = item ? 1 : 0;\n if (set._items[type][bIdx]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type][bIdx] = true;\n }\n return false;\n }\n } else {\n if (shouldAdd) {\n set._items[type] = item ? [false, true] : [true, false];\n }\n return false;\n }\n case 'function':\n // compare functions for reference equality\n if (set._nativeSet !== null) {\n if (shouldAdd) {\n prevSize = set._nativeSet.size;\n set._nativeSet.add(item);\n newSize = set._nativeSet.size;\n return newSize === prevSize;\n } else {\n return set._nativeSet.has(item);\n }\n } else {\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = [item];\n }\n return false;\n }\n if (!_includes(item, set._items[type])) {\n if (shouldAdd) {\n set._items[type].push(item);\n }\n return false;\n }\n return true;\n }\n case 'undefined':\n if (set._items[type]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type] = true;\n }\n return false;\n }\n case 'object':\n if (item === null) {\n if (!set._items['null']) {\n if (shouldAdd) {\n set._items['null'] = true;\n }\n return false;\n }\n return true;\n }\n /* falls through */\n default:\n // reduce the search size of heterogeneous sets by creating buckets\n // for each type.\n type = Object.prototype.toString.call(item);\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = [item];\n }\n return false;\n }\n // scan through all previously applied items\n if (!_includes(item, set._items[type])) {\n if (shouldAdd) {\n set._items[type].push(item);\n }\n return false;\n }\n return true;\n }\n}\n\n// A simple Set type that honours R.equals semantics\nexport default _Set;","import _curry2 from \"./internal/_curry2.js\";\nimport _Set from \"./internal/_Set.js\";\n\n/**\n * Finds the set (i.e. no duplicates) of all elements in the first list not\n * contained in the second list. Objects and Arrays are compared in terms of\n * value equality, not reference equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig [*] -> [*] -> [*]\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The elements in `list1` that are not in `list2`.\n * @see R.differenceWith, R.symmetricDifference, R.symmetricDifferenceWith, R.without\n * @example\n *\n * R.difference([1,2,3,4], [7,6,5,4,3]); //=> [1,2]\n * R.difference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5]\n * R.difference([{a: 1}, {b: 2}], [{a: 1}, {c: 3}]) //=> [{b: 2}]\n */\nvar difference = /*#__PURE__*/_curry2(function difference(first, second) {\n var out = [];\n var idx = 0;\n var firstLen = first.length;\n var secondLen = second.length;\n var toFilterOut = new _Set();\n for (var i = 0; i < secondLen; i += 1) {\n toFilterOut.add(second[i]);\n }\n while (idx < firstLen) {\n if (toFilterOut.add(first[idx])) {\n out[out.length] = first[idx];\n }\n idx += 1;\n }\n return out;\n});\nexport default difference;","import _includesWith from \"./internal/_includesWith.js\";\nimport _curry3 from \"./internal/_curry3.js\";\n\n/**\n * Finds the set (i.e. no duplicates) of all elements in the first list not\n * contained in the second list. Duplication is determined according to the\n * value returned by applying the supplied predicate to two list elements.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig ((a, a) -> Boolean) -> [a] -> [a] -> [a]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The elements in `list1` that are not in `list2`.\n * @see R.difference, R.symmetricDifference, R.symmetricDifferenceWith\n * @example\n *\n * const cmp = (x, y) => x.a === y.a;\n * const l1 = [{a: 1}, {a: 2}, {a: 3}];\n * const l2 = [{a: 3}, {a: 4}];\n * R.differenceWith(cmp, l1, l2); //=> [{a: 1}, {a: 2}]\n *\n * R.differenceWith(R.equals, [1, 2, 3, 3, 3], []); //=> [1, 2, 3]\n * R.differenceWith(R.equals, [1, 2, 3, 3, 3], [1]); //=> [2, 3]\n */\nvar differenceWith = /*#__PURE__*/_curry3(function differenceWith(pred, first, second) {\n var out = [];\n var idx = 0;\n var firstLen = first.length;\n while (idx < firstLen) {\n if (!_includesWith(pred, first[idx], second) && !_includesWith(pred, first[idx], out)) {\n out.push(first[idx]);\n }\n idx += 1;\n }\n return out;\n});\nexport default differenceWith;","import _curry3 from \"./internal/_curry3.js\";\n\n/**\n * Removes the sub-list of `list` starting at index `start` and containing\n * `count` elements. _Note that this is not destructive_: it returns a copy of\n * the list with the changes.\n * <small>No lists have been harmed in the application of this function.</small>\n *\n * @func\n * @memberOf R\n * @since v0.2.2\n * @category List\n * @sig Number -> Number -> [a] -> [a]\n * @param {Number} start The position to start removing elements\n * @param {Number} count The number of elements to remove\n * @param {Array} list The list to remove from\n * @return {Array} A new Array with `count` elements from `start` removed.\n * @see R.without\n * @example\n *\n * R.remove(2, 3, [1,2,3,4,5,6,7,8]); //=> [1,2,6,7,8]\n */\nvar remove = /*#__PURE__*/_curry3(function remove(start, count, list) {\n var result = Array.prototype.slice.call(list, 0);\n result.splice(start, count);\n return result;\n});\nexport default remove;","import _isInteger from \"./_isInteger.js\";\nimport _isArray from \"./_isArray.js\";\nimport remove from \"../remove.js\";\n\n/**\n * Returns a new object that does not contain a `prop` property.\n *\n * @private\n * @param {String|Number} prop The name of the property to dissociate\n * @param {Object|Array} obj The object to clone\n * @return {Object} A new object equivalent to the original but without the specified property\n */\nexport default function _dissoc(prop, obj) {\n if (obj == null) {\n return obj;\n }\n if (_isInteger(prop) && _isArray(obj)) {\n return remove(prop, 1, obj);\n }\n var result = {};\n for (var p in obj) {\n result[p] = obj[p];\n }\n delete result[prop];\n return result;\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _dissoc from \"./internal/_dissoc.js\";\nimport _isInteger from \"./internal/_isInteger.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport assoc from \"./assoc.js\";\n\n/**\n * Makes a shallow clone of an object. Note that this copies and flattens\n * prototype properties onto the new object as well. All non-primitive\n * properties are copied by reference.\n *\n * @private\n * @param {String|Integer} prop The prop operating\n * @param {Object|Array} obj The object to clone\n * @return {Object|Array} A new object equivalent to the original.\n */\nfunction _shallowCloneObject(prop, obj) {\n if (_isInteger(prop) && _isArray(obj)) {\n return [].concat(obj);\n }\n var result = {};\n for (var p in obj) {\n result[p] = obj[p];\n }\n return result;\n}\n\n/**\n * Makes a shallow clone of an object, omitting the property at the given path.\n * Note that this copies and flattens prototype properties onto the new object\n * as well. All non-primitive properties are copied by reference.\n *\n * @func\n * @memberOf R\n * @since v0.11.0\n * @category Object\n * @typedefn Idx = String | Int | Symbol\n * @sig [Idx] -> {k: v} -> {k: v}\n * @param {Array} path The path to the value to omit\n * @param {Object} obj The object to clone\n * @return {Object} A new object without the property at path\n * @see R.assocPath\n * @example\n *\n * R.dissocPath(['a', 'b', 'c'], {a: {b: {c: 42}}}); //=> {a: {b: {}}}\n */\nvar dissocPath = /*#__PURE__*/_curry2(function dissocPath(path, obj) {\n if (obj == null) {\n return obj;\n }\n switch (path.length) {\n case 0:\n return obj;\n case 1:\n return _dissoc(path[0], obj);\n default:\n var head = path[0];\n var tail = Array.prototype.slice.call(path, 1);\n if (obj[head] == null) {\n return _shallowCloneObject(head, obj);\n } else {\n return assoc(head, dissocPath(tail, obj[head]), obj);\n }\n }\n});\nexport default dissocPath;","import _curry2 from \"./internal/_curry2.js\";\nimport dissocPath from \"./dissocPath.js\";\n\n/**\n * Returns a new object that does not contain a `prop` property.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Object\n * @sig String -> {k: v} -> {k: v}\n * @param {String} prop The name of the property to dissociate\n * @param {Object} obj The object to clone\n * @return {Object} A new object equivalent to the original but without the specified property\n * @see R.assoc, R.omit\n * @example\n *\n * R.dissoc('b', {a: 1, b: 2, c: 3}); //=> {a: 1, c: 3}\n */\nvar dissoc = /*#__PURE__*/_curry2(function dissoc(prop, obj) {\n return dissocPath([prop], obj);\n});\nexport default dissoc;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Divides two numbers. Equivalent to `a / b`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig Number -> Number -> Number\n * @param {Number} a The first value.\n * @param {Number} b The second value.\n * @return {Number} The result of `a / b`.\n * @see R.multiply\n * @example\n *\n * R.divide(71, 100); //=> 0.71\n *\n * const half = R.divide(R.__, 2);\n * half(42); //=> 21\n *\n * const reciprocal = R.divide(1);\n * reciprocal(4); //=> 0.25\n */\nvar divide = /*#__PURE__*/_curry2(function divide(a, b) {\n return a / b;\n});\nexport default divide;","import _xfBase from \"./_xfBase.js\";\nvar XDrop = /*#__PURE__*/function () {\n function XDrop(n, xf) {\n this.xf = xf;\n this.n = n;\n }\n XDrop.prototype['@@transducer/init'] = _xfBase.init;\n XDrop.prototype['@@transducer/result'] = _xfBase.result;\n XDrop.prototype['@@transducer/step'] = function (result, input) {\n if (this.n > 0) {\n this.n -= 1;\n return result;\n }\n return this.xf['@@transducer/step'](result, input);\n };\n return XDrop;\n}();\nexport default function _xdrop(n) {\n return function (xf) {\n return new XDrop(n, xf);\n };\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xdrop from \"./internal/_xdrop.js\";\nimport slice from \"./slice.js\";\n\n/**\n * Returns all but the first `n` elements of the given list, string, or\n * transducer/transformer (or object with a `drop` method).\n *\n * Dispatches to the `drop` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -> [a] -> [a]\n * @sig Number -> String -> String\n * @param {Number} n\n * @param {*} list\n * @return {*} A copy of list without the first `n` elements\n * @see R.take, R.transduce, R.dropLast, R.dropWhile\n * @example\n *\n * R.drop(1, ['foo', 'bar', 'baz']); //=> ['bar', 'baz']\n * R.drop(2, ['foo', 'bar', 'baz']); //=> ['baz']\n * R.drop(3, ['foo', 'bar', 'baz']); //=> []\n * R.drop(4, ['foo', 'bar', 'baz']); //=> []\n * R.drop(3, 'ramda'); //=> 'da'\n */\nvar drop = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['drop'], _xdrop, function drop(n, xs) {\n return slice(Math.max(0, n), Infinity, xs);\n}));\nexport default drop;","import _reduced from \"./_reduced.js\";\nimport _xfBase from \"./_xfBase.js\";\nvar XTake = /*#__PURE__*/function () {\n function XTake(n, xf) {\n this.xf = xf;\n this.n = n;\n this.i = 0;\n }\n XTake.prototype['@@transducer/init'] = _xfBase.init;\n XTake.prototype['@@transducer/result'] = _xfBase.result;\n XTake.prototype['@@transducer/step'] = function (result, input) {\n this.i += 1;\n var ret = this.n === 0 ? result : this.xf['@@transducer/step'](result, input);\n return this.n >= 0 && this.i >= this.n ? _reduced(ret) : ret;\n };\n return XTake;\n}();\nexport default function _xtake(n) {\n return function (xf) {\n return new XTake(n, xf);\n };\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xtake from \"./internal/_xtake.js\";\nimport slice from \"./slice.js\";\n\n/**\n * Returns the first `n` elements of the given list, string, or\n * transducer/transformer (or object with a `take` method).\n *\n * Dispatches to the `take` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -> [a] -> [a]\n * @sig Number -> String -> String\n * @param {Number} n\n * @param {*} list\n * @return {*}\n * @see R.drop\n * @example\n *\n * R.take(1, ['foo', 'bar', 'baz']); //=> ['foo']\n * R.take(2, ['foo', 'bar', 'baz']); //=> ['foo', 'bar']\n * R.take(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz']\n * R.take(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz']\n * R.take(3, 'ramda'); //=> 'ram'\n *\n * const personnel = [\n * 'Dave Brubeck',\n * 'Paul Desmond',\n * 'Eugene Wright',\n * 'Joe Morello',\n * 'Gerry Mulligan',\n * 'Bob Bates',\n * 'Joe Dodge',\n * 'Ron Crotty'\n * ];\n *\n * const takeFive = R.take(5);\n * takeFive(personnel);\n * //=> ['Dave Brubeck', 'Paul Desmond', 'Eugene Wright', 'Joe Morello', 'Gerry Mulligan']\n * @symb R.take(-1, [a, b]) = [a, b]\n * @symb R.take(0, [a, b]) = []\n * @symb R.take(1, [a, b]) = [a]\n * @symb R.take(2, [a, b]) = [a, b]\n */\nvar take = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['take'], _xtake, function take(n, xs) {\n return slice(0, n < 0 ? Infinity : n, xs);\n}));\nexport default take;","import take from \"../take.js\";\nexport default function dropLast(n, xs) {\n return take(n < xs.length ? xs.length - n : 0, xs);\n}","import _xfBase from \"./_xfBase.js\";\nvar XDropLast = /*#__PURE__*/function () {\n function XDropLast(n, xf) {\n if (n <= 0) {\n return xf;\n }\n this.xf = xf;\n this.pos = 0;\n this.full = false;\n this.acc = new Array(n);\n }\n XDropLast.prototype['@@transducer/init'] = _xfBase.init;\n XDropLast.prototype['@@transducer/result'] = function (result) {\n this.acc = null;\n return this.xf['@@transducer/result'](result);\n };\n XDropLast.prototype['@@transducer/step'] = function (result, input) {\n if (this.full) {\n result = this.xf['@@transducer/step'](result, this.acc[this.pos]);\n }\n this.store(input);\n return result;\n };\n XDropLast.prototype.store = function (input) {\n this.acc[this.pos] = input;\n this.pos += 1;\n if (this.pos === this.acc.length) {\n this.pos = 0;\n this.full = true;\n }\n };\n return XDropLast;\n}();\nexport default function _xdropLast(n) {\n return function (xf) {\n return new XDropLast(n, xf);\n };\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _dropLast from \"./internal/_dropLast.js\";\nimport _xdropLast from \"./internal/_xdropLast.js\";\n\n/**\n * Returns a list containing all but the last `n` elements of the given `list`.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig Number -> [a] -> [a]\n * @sig Number -> String -> String\n * @param {Number} n The number of elements of `list` to skip.\n * @param {Array} list The list of elements to consider.\n * @return {Array} A copy of the list with only the first `list.length - n` elements\n * @see R.takeLast, R.drop, R.dropWhile, R.dropLastWhile\n * @example\n *\n * R.dropLast(1, ['foo', 'bar', 'baz']); //=> ['foo', 'bar']\n * R.dropLast(2, ['foo', 'bar', 'baz']); //=> ['foo']\n * R.dropLast(3, ['foo', 'bar', 'baz']); //=> []\n * R.dropLast(4, ['foo', 'bar', 'baz']); //=> []\n * R.dropLast(3, 'ramda'); //=> 'ra'\n */\nvar dropLast = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xdropLast, _dropLast));\nexport default dropLast;","import slice from \"../slice.js\";\nexport default function dropLastWhile(pred, xs) {\n var idx = xs.length - 1;\n while (idx >= 0 && pred(xs[idx])) {\n idx -= 1;\n }\n return slice(0, idx + 1, xs);\n}","import _xfBase from \"./_xfBase.js\";\nimport _xReduce from \"./_xReduce.js\";\nvar XDropLastWhile = /*#__PURE__*/function () {\n function XDropLastWhile(fn, xf) {\n this.f = fn;\n this.retained = [];\n this.xf = xf;\n }\n XDropLastWhile.prototype['@@transducer/init'] = _xfBase.init;\n XDropLastWhile.prototype['@@transducer/result'] = function (result) {\n this.retained = null;\n return this.xf['@@transducer/result'](result);\n };\n XDropLastWhile.prototype['@@transducer/step'] = function (result, input) {\n return this.f(input) ? this.retain(result, input) : this.flush(result, input);\n };\n XDropLastWhile.prototype.flush = function (result, input) {\n result = _xReduce(this.xf, result, this.retained);\n this.retained = [];\n return this.xf['@@transducer/step'](result, input);\n };\n XDropLastWhile.prototype.retain = function (result, input) {\n this.retained.push(input);\n return result;\n };\n return XDropLastWhile;\n}();\nexport default function _xdropLastWhile(fn) {\n return function (xf) {\n return new XDropLastWhile(fn, xf);\n };\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _dropLastWhile from \"./internal/_dropLastWhile.js\";\nimport _xdropLastWhile from \"./internal/_xdropLastWhile.js\";\n\n/**\n * Returns a new list excluding all the tailing elements of a given list which\n * satisfy the supplied predicate function. It passes each value from the right\n * to the supplied predicate function, skipping elements until the predicate\n * function returns a `falsy` value. The predicate function is applied to one argument:\n * *(value)*.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> [a]\n * @sig (a -> Boolean) -> String -> String\n * @param {Function} predicate The function to be called on each element\n * @param {Array} xs The collection to iterate over.\n * @return {Array} A new array without any trailing elements that return `falsy` values from the `predicate`.\n * @see R.takeLastWhile, R.addIndex, R.drop, R.dropWhile\n * @example\n *\n * const lteThree = x => x <= 3;\n *\n * R.dropLastWhile(lteThree, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3, 4]\n *\n * R.dropLastWhile(x => x !== 'd' , 'Ramda'); //=> 'Ramd'\n */\nvar dropLastWhile = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xdropLastWhile, _dropLastWhile));\nexport default dropLastWhile;","import _xfBase from \"./_xfBase.js\";\nvar XDropRepeatsWith = /*#__PURE__*/function () {\n function XDropRepeatsWith(pred, xf) {\n this.xf = xf;\n this.pred = pred;\n this.lastValue = undefined;\n this.seenFirstValue = false;\n }\n XDropRepeatsWith.prototype['@@transducer/init'] = _xfBase.init;\n XDropRepeatsWith.prototype['@@transducer/result'] = _xfBase.result;\n XDropRepeatsWith.prototype['@@transducer/step'] = function (result, input) {\n var sameAsLast = false;\n if (!this.seenFirstValue) {\n this.seenFirstValue = true;\n } else if (this.pred(this.lastValue, input)) {\n sameAsLast = true;\n }\n this.lastValue = input;\n return sameAsLast ? result : this.xf['@@transducer/step'](result, input);\n };\n return XDropRepeatsWith;\n}();\nexport default function _xdropRepeatsWith(pred) {\n return function (xf) {\n return new XDropRepeatsWith(pred, xf);\n };\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _nth from \"./internal/_nth.js\";\n\n/**\n * Returns the last element of the given list or string.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig [a] -> a | Undefined\n * @sig String -> String | Undefined\n * @param {*} list\n * @return {*}\n * @see R.init, R.head, R.tail\n * @example\n *\n * R.last([1, 2, 3]); //=> 3\n * R.last([1]); //=> 1\n * R.last([]); //=> undefined\n *\n * R.last('abc'); //=> 'c'\n * R.last('a'); //=> 'a'\n * R.last(''); //=> undefined\n */\nvar last = /*#__PURE__*/_curry1(function (list) {\n return _nth(-1, list);\n});\nexport default last;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xdropRepeatsWith from \"./internal/_xdropRepeatsWith.js\";\nimport last from \"./last.js\";\n\n/**\n * Returns a new list without any consecutively repeating elements. Equality is\n * determined by applying the supplied predicate to each pair of consecutive elements. The\n * first element in a series of equal elements will be preserved.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category List\n * @sig ((a, a) -> Boolean) -> [a] -> [a]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list The array to consider.\n * @return {Array} `list` without repeating elements.\n * @see R.transduce\n * @example\n *\n * const l = [1, -1, 1, 3, 4, -4, -4, -5, 5, 3, 3];\n * R.dropRepeatsWith(R.eqBy(Math.abs), l); //=> [1, 3, 4, -5, 3]\n */\nvar dropRepeatsWith = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xdropRepeatsWith, function dropRepeatsWith(pred, list) {\n var result = [];\n var idx = 1;\n var len = list.length;\n if (len !== 0) {\n result[0] = list[0];\n while (idx < len) {\n if (!pred(last(result), list[idx])) {\n result[result.length] = list[idx];\n }\n idx += 1;\n }\n }\n return result;\n}));\nexport default dropRepeatsWith;","import _curry1 from \"./internal/_curry1.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xdropRepeatsWith from \"./internal/_xdropRepeatsWith.js\";\nimport dropRepeatsWith from \"./dropRepeatsWith.js\";\nimport equals from \"./equals.js\";\n\n/**\n * Returns a new list without any consecutively repeating elements.\n * [`R.equals`](#equals) is used to determine equality.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category List\n * @sig [a] -> [a]\n * @param {Array} list The array to consider.\n * @return {Array} `list` without repeating elements.\n * @see R.transduce\n * @example\n *\n * R.dropRepeats([1, 1, 1, 2, 3, 4, 4, 2, 2]); //=> [1, 2, 3, 4, 2]\n */\nvar dropRepeats = /*#__PURE__*/_curry1( /*#__PURE__*/_dispatchable([], function () {\n return _xdropRepeatsWith(equals);\n}, /*#__PURE__*/dropRepeatsWith(equals)));\nexport default dropRepeats;","import _curry3 from \"./internal/_curry3.js\";\nimport equals from \"./equals.js\";\n\n/**\n * Takes a function and two values in its domain and returns `true` if the\n * values map to the same value in the codomain; `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category Relation\n * @sig (a -> b) -> a -> a -> Boolean\n * @param {Function} f\n * @param {*} x\n * @param {*} y\n * @return {Boolean}\n * @example\n *\n * R.eqBy(Math.abs, 5, -5); //=> true\n */\nvar eqBy = /*#__PURE__*/_curry3(function eqBy(f, x, y) {\n return equals(f(x), f(y));\n});\nexport default eqBy;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xdropRepeatsWith from \"./internal/_xdropRepeatsWith.js\";\nimport dropRepeatsWith from \"./dropRepeatsWith.js\";\nimport eqBy from \"./eqBy.js\";\n\n/**\n * Returns a new list without any consecutively repeating elements,\n * based upon the value returned by applying the supplied function to\n * each list element. [`R.equals`](#equals) is used to determine equality.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.29.0\n * @category List\n * @sig (a -> b) -> [a] -> [a]\n * @param {Function} fn A function used to produce a value to use during comparisons.\n * @param {Array} list The array to consider.\n * @return {Array} `list` without repeating elements.\n * @see R.transduce\n * @example\n *\n * R.dropRepeatsBy(Math.abs, [1, -1, -1, 2, 3, -4, 4, 2, 2]); //=> [1, 2, 3, -4, 2]\n */\nvar dropRepeatsBy = /*#__PURE__*/_curry2(function (fn, list) {\n return _dispatchable([], function () {\n return _xdropRepeatsWith(eqBy(fn));\n }, dropRepeatsWith(eqBy(fn)))(list);\n});\nexport default dropRepeatsBy;","import _xfBase from \"./_xfBase.js\";\nvar XDropWhile = /*#__PURE__*/function () {\n function XDropWhile(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XDropWhile.prototype['@@transducer/init'] = _xfBase.init;\n XDropWhile.prototype['@@transducer/result'] = _xfBase.result;\n XDropWhile.prototype['@@transducer/step'] = function (result, input) {\n if (this.f) {\n if (this.f(input)) {\n return result;\n }\n this.f = null;\n }\n return this.xf['@@transducer/step'](result, input);\n };\n return XDropWhile;\n}();\nexport default function _xdropWhile(f) {\n return function (xf) {\n return new XDropWhile(f, xf);\n };\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xdropWhile from \"./internal/_xdropWhile.js\";\nimport slice from \"./slice.js\";\n\n/**\n * Returns a new list excluding the leading elements of a given list which\n * satisfy the supplied predicate function. It passes each value to the supplied\n * predicate function, skipping elements while the predicate function returns\n * `true`. The predicate function is applied to one argument: *(value)*.\n *\n * Dispatches to the `dropWhile` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> [a]\n * @sig (a -> Boolean) -> String -> String\n * @param {Function} fn The function called per iteration.\n * @param {Array} xs The collection to iterate over.\n * @return {Array} A new array.\n * @see R.takeWhile, R.transduce, R.addIndex\n * @example\n *\n * const lteTwo = x => x <= 2;\n *\n * R.dropWhile(lteTwo, [1, 2, 3, 4, 3, 2, 1]); //=> [3, 4, 3, 2, 1]\n *\n * R.dropWhile(x => x !== 'd' , 'Ramda'); //=> 'da'\n */\nvar dropWhile = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['dropWhile'], _xdropWhile, function dropWhile(pred, xs) {\n var idx = 0;\n var len = xs.length;\n while (idx < len && pred(xs[idx])) {\n idx += 1;\n }\n return slice(idx, Infinity, xs);\n}));\nexport default dropWhile;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Returns the first argument if it is truthy, otherwise the second argument.\n * Acts as the boolean `or` statement if both inputs are `Boolean`s.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig a -> b -> a | b\n * @param {Any} a\n * @param {Any} b\n * @return {Any}\n * @see R.either, R.and\n * @example\n *\n * R.or(true, true); //=> true\n * R.or(true, false); //=> true\n * R.or(false, true); //=> true\n * R.or(false, false); //=> false\n */\nvar or = /*#__PURE__*/_curry2(function or(a, b) {\n return a || b;\n});\nexport default or;","import _curry2 from \"./internal/_curry2.js\";\nimport _isFunction from \"./internal/_isFunction.js\";\nimport lift from \"./lift.js\";\nimport or from \"./or.js\";\n\n/**\n * A function wrapping calls to the two functions in an `||` operation,\n * returning the result of the first function if it is truth-y and the result\n * of the second function otherwise. Note that this is short-circuited,\n * meaning that the second function will not be invoked if the first returns a\n * truth-y value.\n *\n * In addition to functions, `R.either` also accepts any fantasy-land compatible\n * applicative functor.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category Logic\n * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean)\n * @param {Function} f a predicate\n * @param {Function} g another predicate\n * @return {Function} a function that applies its arguments to `f` and `g` and `||`s their outputs together.\n * @see R.both, R.anyPass, R.or\n * @example\n *\n * const gt10 = x => x > 10;\n * const even = x => x % 2 === 0;\n * const f = R.either(gt10, even);\n * f(101); //=> true\n * f(8); //=> true\n *\n * R.either(Maybe.Just(false), Maybe.Just(55)); // => Maybe.Just(55)\n * R.either([false, false, 'a'], [11]) // => [11, 11, \"a\"]\n */\nvar either = /*#__PURE__*/_curry2(function either(f, g) {\n return _isFunction(f) ? function _either() {\n return f.apply(this, arguments) || g.apply(this, arguments);\n } : lift(or)(f, g);\n});\nexport default either;","/**\n * Tests whether or not an object is a typed array.\n *\n * @private\n * @param {*} val The object to test.\n * @return {Boolean} `true` if `val` is a typed array, `false` otherwise.\n * @example\n *\n * _isTypedArray(new Uint8Array([])); //=> true\n * _isTypedArray(new Float32Array([])); //=> true\n * _isTypedArray([]); //=> false\n * _isTypedArray(null); //=> false\n * _isTypedArray({}); //=> false\n */\nexport default function _isTypedArray(val) {\n var type = Object.prototype.toString.call(val);\n return type === '[object Uint8ClampedArray]' || type === '[object Int8Array]' || type === '[object Uint8Array]' || type === '[object Int16Array]' || type === '[object Uint16Array]' || type === '[object Int32Array]' || type === '[object Uint32Array]' || type === '[object Float32Array]' || type === '[object Float64Array]' || type === '[object BigInt64Array]' || type === '[object BigUint64Array]';\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _isArguments from \"./internal/_isArguments.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport _isObject from \"./internal/_isObject.js\";\nimport _isString from \"./internal/_isString.js\";\nimport _isTypedArray from \"./internal/_isTypedArray.js\";\n\n/**\n * Returns the empty value of its argument's type. Ramda defines the empty\n * value of Array (`[]`), Object (`{}`), String (`''`), Map (`new Map()`), Set (`new Set()`),\n * TypedArray (`Uint8Array []`, `Float32Array []`, etc), and Arguments. Other\n * types are supported if they define `<Type>.empty`,\n * `<Type>.prototype.empty` or implement the\n * [FantasyLand Monoid spec](https://github.com/fantasyland/fantasy-land#monoid).\n *\n * Dispatches to the `empty` method of the first argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig a -> a\n * @param {*} x\n * @return {*}\n * @example\n *\n * R.empty(Just(42)); //=> Nothing()\n * R.empty([1, 2, 3]); //=> []\n * R.empty('unicorns'); //=> ''\n * R.empty({x: 1, y: 2}); //=> {}\n * R.empty(Uint8Array.from('123')); //=> Uint8Array []\n * R.empty(Set); //=> Set()\n */\nvar empty = /*#__PURE__*/_curry1(function empty(x) {\n return x != null && typeof x['fantasy-land/empty'] === 'function' ? x['fantasy-land/empty']() : x != null && x.constructor != null && typeof x.constructor['fantasy-land/empty'] === 'function' ? x.constructor['fantasy-land/empty']() : x != null && typeof x.empty === 'function' ? x.empty() : x != null && x.constructor != null && typeof x.constructor.empty === 'function' ? x.constructor.empty() : x == Set || x instanceof Set ? new Set() : x == Map || x instanceof Map ? new Map() : _isArray(x) ? [] : _isString(x) ? '' : _isObject(x) ? {} : _isArguments(x) ? function () {\n return arguments;\n }() : _isTypedArray(x) ? x.constructor.from('') : void 0 // else\n ;\n});\n\nexport default empty;","import _curry2 from \"./internal/_curry2.js\";\nimport drop from \"./drop.js\";\n\n/**\n * Returns a new list containing the last `n` elements of the given list.\n * If `n > list.length`, returns a list of `list.length` elements.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig Number -> [a] -> [a]\n * @sig Number -> String -> String\n * @param {Number} n The number of elements to return.\n * @param {Array} xs The collection to consider.\n * @return {Array}\n * @see R.dropLast\n * @example\n *\n * R.takeLast(1, ['foo', 'bar', 'baz']); //=> ['baz']\n * R.takeLast(2, ['foo', 'bar', 'baz']); //=> ['bar', 'baz']\n * R.takeLast(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz']\n * R.takeLast(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz']\n * R.takeLast(3, 'ramda'); //=> 'mda'\n */\nvar takeLast = /*#__PURE__*/_curry2(function takeLast(n, xs) {\n return drop(n >= 0 ? xs.length - n : 0, xs);\n});\nexport default takeLast;","import _curry2 from \"./internal/_curry2.js\";\nimport equals from \"./equals.js\";\nimport takeLast from \"./takeLast.js\";\n\n/**\n * Checks if a list ends with the provided sublist.\n *\n * Similarly, checks if a string ends with the provided substring.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category List\n * @sig [a] -> [a] -> Boolean\n * @sig String -> String -> Boolean\n * @param {*} suffix\n * @param {*} list\n * @return {Boolean}\n * @see R.startsWith\n * @example\n *\n * R.endsWith('c', 'abc') //=> true\n * R.endsWith('b', 'abc') //=> false\n * R.endsWith(['c'], ['a', 'b', 'c']) //=> true\n * R.endsWith(['b'], ['a', 'b', 'c']) //=> false\n */\nvar endsWith = /*#__PURE__*/_curry2(function (suffix, list) {\n return equals(takeLast(suffix.length, list), suffix);\n});\nexport default endsWith;","import _curry3 from \"./internal/_curry3.js\";\nimport equals from \"./equals.js\";\n\n/**\n * Reports whether two objects have the same value, in [`R.equals`](#equals)\n * terms, for the specified property. Useful as a curried predicate.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig k -> {k: v} -> {k: v} -> Boolean\n * @param {String} prop The name of the property to compare\n * @param {Object} obj1\n * @param {Object} obj2\n * @return {Boolean}\n *\n * @example\n *\n * const o1 = { a: 1, b: 2, c: 3, d: 4 };\n * const o2 = { a: 10, b: 20, c: 3, d: 40 };\n * R.eqProps('a', o1, o2); //=> false\n * R.eqProps('c', o1, o2); //=> true\n */\nvar eqProps = /*#__PURE__*/_curry3(function eqProps(prop, obj1, obj2) {\n return equals(obj1[prop], obj2[prop]);\n});\nexport default eqProps;","import _curry2 from \"./internal/_curry2.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport _isObject from \"./internal/_isObject.js\";\n\n/**\n * Creates a new object by recursively evolving a shallow copy of `object`,\n * according to the `transformation` functions. All non-primitive properties\n * are copied by reference.\n *\n * A `transformation` function will not be invoked if its corresponding key\n * does not exist in the evolved object.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Object\n * @sig {k: (v -> v)} -> {k: v} -> {k: v}\n * @param {Object} transformations The object specifying transformation functions to apply\n * to the object.\n * @param {Object} object The object to be transformed.\n * @return {Object} The transformed object.\n * @example\n *\n * const tomato = {firstName: ' Tomato ', data: {elapsed: 100, remaining: 1400}, id:123};\n * const transformations = {\n * firstName: R.trim,\n * lastName: R.trim, // Will not get invoked.\n * data: {elapsed: R.add(1), remaining: R.add(-1)}\n * };\n * R.evolve(transformations, tomato); //=> {firstName: 'Tomato', data: {elapsed: 101, remaining: 1399}, id:123}\n */\nvar evolve = /*#__PURE__*/_curry2(function evolve(transformations, object) {\n if (!_isObject(object) && !_isArray(object)) {\n return object;\n }\n var result = object instanceof Array ? [] : {};\n var transformation, key, type;\n for (key in object) {\n transformation = transformations[key];\n type = typeof transformation;\n result[key] = type === 'function' ? transformation(object[key]) : transformation && type === 'object' ? evolve(transformation, object[key]) : object[key];\n }\n return result;\n});\nexport default evolve;","import _reduced from \"./_reduced.js\";\nimport _xfBase from \"./_xfBase.js\";\nvar XFind = /*#__PURE__*/function () {\n function XFind(f, xf) {\n this.xf = xf;\n this.f = f;\n this.found = false;\n }\n XFind.prototype['@@transducer/init'] = _xfBase.init;\n XFind.prototype['@@transducer/result'] = function (result) {\n if (!this.found) {\n result = this.xf['@@transducer/step'](result, void 0);\n }\n return this.xf['@@transducer/result'](result);\n };\n XFind.prototype['@@transducer/step'] = function (result, input) {\n if (this.f(input)) {\n this.found = true;\n result = _reduced(this.xf['@@transducer/step'](result, input));\n }\n return result;\n };\n return XFind;\n}();\nexport default function _xfind(f) {\n return function (xf) {\n return new XFind(f, xf);\n };\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xfind from \"./internal/_xfind.js\";\n\n/**\n * Returns the first element of the list which matches the predicate, or\n * `undefined` if no element matches.\n *\n * Dispatches to the `find` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> a | undefined\n * @param {Function} fn The predicate function used to determine if the element is the\n * desired one.\n * @param {Array} list The array to consider.\n * @return {Object} The element found, or `undefined`.\n * @see R.transduce\n * @example\n *\n * const xs = [{a: 1}, {a: 2}, {a: 3}];\n * R.find(R.propEq(2, 'a'))(xs); //=> {a: 2}\n * R.find(R.propEq(4, 'a'))(xs); //=> undefined\n */\nvar find = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['find'], _xfind, function find(fn, list) {\n var idx = 0;\n var len = list.length;\n while (idx < len) {\n if (fn(list[idx])) {\n return list[idx];\n }\n idx += 1;\n }\n}));\nexport default find;","import _reduced from \"./_reduced.js\";\nimport _xfBase from \"./_xfBase.js\";\nvar XFindIndex = /*#__PURE__*/function () {\n function XFindIndex(f, xf) {\n this.xf = xf;\n this.f = f;\n this.idx = -1;\n this.found = false;\n }\n XFindIndex.prototype['@@transducer/init'] = _xfBase.init;\n XFindIndex.prototype['@@transducer/result'] = function (result) {\n if (!this.found) {\n result = this.xf['@@transducer/step'](result, -1);\n }\n return this.xf['@@transducer/result'](result);\n };\n XFindIndex.prototype['@@transducer/step'] = function (result, input) {\n this.idx += 1;\n if (this.f(input)) {\n this.found = true;\n result = _reduced(this.xf['@@transducer/step'](result, this.idx));\n }\n return result;\n };\n return XFindIndex;\n}();\nexport default function _xfindIndex(f) {\n return function (xf) {\n return new XFindIndex(f, xf);\n };\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xfindIndex from \"./internal/_xfindIndex.js\";\n\n/**\n * Returns the index of the first element of the list which matches the\n * predicate, or `-1` if no element matches.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig (a -> Boolean) -> [a] -> Number\n * @param {Function} fn The predicate function used to determine if the element is the\n * desired one.\n * @param {Array} list The array to consider.\n * @return {Number} The index of the element found, or `-1`.\n * @see R.transduce, R.indexOf\n * @example\n *\n * const xs = [{a: 1}, {a: 2}, {a: 3}];\n * R.findIndex(R.propEq(2, 'a'))(xs); //=> 1\n * R.findIndex(R.propEq(4, 'a'))(xs); //=> -1\n */\nvar findIndex = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xfindIndex, function findIndex(fn, list) {\n var idx = 0;\n var len = list.length;\n while (idx < len) {\n if (fn(list[idx])) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n}));\nexport default findIndex;","import _xfBase from \"./_xfBase.js\";\nvar XFindLast = /*#__PURE__*/function () {\n function XFindLast(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XFindLast.prototype['@@transducer/init'] = _xfBase.init;\n XFindLast.prototype['@@transducer/result'] = function (result) {\n return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.last));\n };\n XFindLast.prototype['@@transducer/step'] = function (result, input) {\n if (this.f(input)) {\n this.last = input;\n }\n return result;\n };\n return XFindLast;\n}();\nexport default function _xfindLast(f) {\n return function (xf) {\n return new XFindLast(f, xf);\n };\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xfindLast from \"./internal/_xfindLast.js\";\n\n/**\n * Returns the last element of the list which matches the predicate, or\n * `undefined` if no element matches.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig (a -> Boolean) -> [a] -> a | undefined\n * @param {Function} fn The predicate function used to determine if the element is the\n * desired one.\n * @param {Array} list The array to consider.\n * @return {Object} The element found, or `undefined`.\n * @see R.transduce\n * @example\n *\n * const xs = [{a: 1, b: 0}, {a:1, b: 1}];\n * R.findLast(R.propEq(1, 'a'))(xs); //=> {a: 1, b: 1}\n * R.findLast(R.propEq(4, 'a'))(xs); //=> undefined\n */\nvar findLast = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xfindLast, function findLast(fn, list) {\n var idx = list.length - 1;\n while (idx >= 0) {\n if (fn(list[idx])) {\n return list[idx];\n }\n idx -= 1;\n }\n}));\nexport default findLast;","import _xfBase from \"./_xfBase.js\";\nvar XFindLastIndex = /*#__PURE__*/function () {\n function XFindLastIndex(f, xf) {\n this.xf = xf;\n this.f = f;\n this.idx = -1;\n this.lastIdx = -1;\n }\n XFindLastIndex.prototype['@@transducer/init'] = _xfBase.init;\n XFindLastIndex.prototype['@@transducer/result'] = function (result) {\n return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.lastIdx));\n };\n XFindLastIndex.prototype['@@transducer/step'] = function (result, input) {\n this.idx += 1;\n if (this.f(input)) {\n this.lastIdx = this.idx;\n }\n return result;\n };\n return XFindLastIndex;\n}();\nexport default function _xfindLastIndex(f) {\n return function (xf) {\n return new XFindLastIndex(f, xf);\n };\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xfindLastIndex from \"./internal/_xfindLastIndex.js\";\n\n/**\n * Returns the index of the last element of the list which matches the\n * predicate, or `-1` if no element matches.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig (a -> Boolean) -> [a] -> Number\n * @param {Function} fn The predicate function used to determine if the element is the\n * desired one.\n * @param {Array} list The array to consider.\n * @return {Number} The index of the element found, or `-1`.\n * @see R.transduce, R.lastIndexOf\n * @example\n *\n * const xs = [{a: 1, b: 0}, {a:1, b: 1}];\n * R.findLastIndex(R.propEq(1, 'a'))(xs); //=> 1\n * R.findLastIndex(R.propEq(4, 'a'))(xs); //=> -1\n */\nvar findLastIndex = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xfindLastIndex, function findLastIndex(fn, list) {\n var idx = list.length - 1;\n while (idx >= 0) {\n if (fn(list[idx])) {\n return idx;\n }\n idx -= 1;\n }\n return -1;\n}));\nexport default findLastIndex;","import _curry1 from \"./internal/_curry1.js\";\nimport _makeFlat from \"./internal/_makeFlat.js\";\n\n/**\n * Returns a new list by pulling every item out of it (and all its sub-arrays)\n * and putting them in a new array, depth-first.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [b]\n * @param {Array} list The array to consider.\n * @return {Array} The flattened list.\n * @see R.unnest\n * @example\n *\n * R.flatten([1, 2, [3, 4], 5, [6, [7, 8, [9, [10, 11], 12]]]]);\n * //=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n */\nvar flatten = /*#__PURE__*/_curry1( /*#__PURE__*/_makeFlat(true));\nexport default flatten;","import _curry1 from \"./internal/_curry1.js\";\nimport curryN from \"./curryN.js\";\n\n/**\n * Returns a new function much like the supplied one, except that the first two\n * arguments' order is reversed.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((a, b, c, ...) -> z) -> (b -> a -> c -> ... -> z)\n * @param {Function} fn The function to invoke with its first two parameters reversed.\n * @return {*} The result of invoking `fn` with its first two parameters' order reversed.\n * @example\n *\n * const mergeThree = (a, b, c) => [].concat(a, b, c);\n *\n * mergeThree(1, 2, 3); //=> [1, 2, 3]\n *\n * R.flip(mergeThree)(1, 2, 3); //=> [2, 1, 3]\n * @symb R.flip(f)(a, b, c) = f(b, a, c)\n */\nvar flip = /*#__PURE__*/_curry1(function flip(fn) {\n return curryN(fn.length, function (a, b) {\n var args = Array.prototype.slice.call(arguments, 0);\n args[0] = b;\n args[1] = a;\n return fn.apply(this, args);\n });\n});\nexport default flip;","import applyTo from \"./applyTo.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _reduce from \"./internal/_reduce.js\";\n\n/**\n * Takes the value of an expression and applies it to a function\n * which is the left-to-right serial composition of the functions\n * given in the second argument.\n *\n * The functions in the pipeline should be unary functions.\n *\n * `flow` is helps to avoid introducing an extra function with named arguments\n * for computing the result of a function pipeline which depends on given initial values.\n * Rather than defining a referential transparent function `f = (_x, _y) => R.pipe(g(_x), h(_y), …)`\n * which is only later needed once `z = f(x, y)`,\n * the introduction of `f`, `_x` and `_y` can be avoided: `z = flow(x, [g, h(y),…]`\n *\n * In some libraries this function is named `pipe`.\n *\n * @func\n * @memberOf R\n * @since v0.30.0\n * @category Function\n * @sig a → [(a → b), …, (y → z)] → z\n * @param {*} a The seed value\n * @param {Array<Function>} pipeline functions composing the pipeline\n * @return {*} z The result of applying the seed value to the function pipeline\n * @see R.pipe\n * @example\n * R.flow(9, [Math.sqrt, R.negate, R.inc]); //=> -2\n *\n * const personObj = { first: 'Jane', last: 'Doe' };\n * const fullName = R.flow(personObj, [R.values, R.join(' ')]); //=> \"Jane Doe\"\n * const givenName = R.flow(' ', [R.trim, R.when(R.isEmpty, R.always(fullName))]); //=> \"Jane Doe\"\n */\nvar flow = /*#__PURE__*/_curry2(function flow(seed, pipeline) {\n return _reduce(applyTo, seed, pipeline);\n});\nexport default flow;","import _checkForMethod from \"./internal/_checkForMethod.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Iterate over an input `list`, calling a provided function `fn` for each\n * element in the list.\n *\n * `fn` receives one argument: *(value)*.\n *\n * Note: `R.forEach` does not skip deleted or unassigned indices (sparse\n * arrays), unlike the native `Array.prototype.forEach` method. For more\n * details on this behavior, see:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Description\n *\n * Also note that, unlike `Array.prototype.forEach`, Ramda's `forEach` returns\n * the original array. In some libraries this function is named `each`.\n *\n * Dispatches to the `forEach` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig (a -> *) -> [a] -> [a]\n * @param {Function} fn The function to invoke. Receives one argument, `value`.\n * @param {Array} list The list to iterate over.\n * @return {Array} The original list.\n * @see R.addIndex\n * @example\n *\n * const printXPlusFive = x => console.log(x + 5);\n * R.forEach(printXPlusFive, [1, 2, 3]); //=> [1, 2, 3]\n * // logs 6\n * // logs 7\n * // logs 8\n * @symb R.forEach(f, [a, b, c]) = [a, b, c]\n */\nvar forEach = /*#__PURE__*/_curry2( /*#__PURE__*/_checkForMethod('forEach', function forEach(fn, list) {\n var len = list.length;\n var idx = 0;\n while (idx < len) {\n fn(list[idx]);\n idx += 1;\n }\n return list;\n}));\nexport default forEach;","import _curry2 from \"./internal/_curry2.js\";\nimport keys from \"./keys.js\";\n\n/**\n * Iterate over an input `object`, calling a provided function `fn` for each\n * key and value in the object.\n *\n * `fn` receives three argument: *(value, key, obj)*.\n *\n * @func\n * @memberOf R\n * @since v0.23.0\n * @category Object\n * @sig ((a, String, StrMap a) -> Any) -> StrMap a -> StrMap a\n * @param {Function} fn The function to invoke. Receives three argument, `value`, `key`, `obj`.\n * @param {Object} obj The object to iterate over.\n * @return {Object} The original object.\n * @example\n *\n * const printKeyConcatValue = (value, key) => console.log(key + ':' + value);\n * R.forEachObjIndexed(printKeyConcatValue, {x: 1, y: 2}); //=> {x: 1, y: 2}\n * // logs x:1\n * // logs y:2\n * @symb R.forEachObjIndexed(f, {x: a, y: b}) = {x: a, y: b}\n */\nvar forEachObjIndexed = /*#__PURE__*/_curry2(function forEachObjIndexed(fn, obj) {\n var keyList = keys(obj);\n var idx = 0;\n while (idx < keyList.length) {\n var key = keyList[idx];\n fn(obj[key], key, obj);\n idx += 1;\n }\n return obj;\n});\nexport default forEachObjIndexed;","export default function fromPairs(pairs) {\n var result = {};\n var idx = 0;\n while (idx < pairs.length) {\n result[pairs[idx][0]] = pairs[idx][1];\n idx += 1;\n }\n return result;\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _fromPairs from \"./internal/_fromPairs.js\";\n\n/**\n * Creates a new object from a list key-value pairs. If a key appears in\n * multiple pairs, the rightmost pair is included in the object.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig [[k,v]] -> {k: v}\n * @param {Array} pairs An array of two-element arrays that will be the keys and values of the output object.\n * @return {Object} The object made by pairing up `keys` and `values`.\n * @see R.toPairs, R.pair\n * @example\n *\n * R.fromPairs([['a', 1], ['b', 2], ['c', 3]]); //=> {a: 1, b: 2, c: 3}\n */\nvar fromPairs = /*#__PURE__*/_curry1(_fromPairs);\nexport default fromPairs;","import _checkForMethod from \"./internal/_checkForMethod.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport reduceBy from \"./reduceBy.js\";\n\n/**\n * Splits a list into sub-lists stored in an object, based on the result of\n * calling a key-returning function on each element, and grouping the\n * results according to values returned.\n *\n * Dispatches to the `groupBy` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @typedefn Idx = String | Int | Symbol\n * @sig Idx a => (b -> a) -> [b] -> {a: [b]}\n * @param {Function} fn Function :: a -> Idx\n * @param {Array} list The array to group\n * @return {Object} An object with the output of `fn` for keys, mapped to arrays of elements\n * that produced that key when passed to `fn`.\n * @see R.reduceBy, R.transduce, R.indexBy, R.collectBy\n * @example\n *\n * const byGrade = R.groupBy(function(student) {\n * const score = student.score;\n * return score < 65 ? 'F' :\n * score < 70 ? 'D' :\n * score < 80 ? 'C' :\n * score < 90 ? 'B' : 'A';\n * });\n * const students = [{name: 'Abby', score: 84},\n * {name: 'Eddy', score: 58},\n * // ...\n * {name: 'Jack', score: 69}];\n * byGrade(students);\n * // {\n * // 'A': [{name: 'Dianne', score: 99}],\n * // 'B': [{name: 'Abby', score: 84}]\n * // // ...,\n * // 'F': [{name: 'Eddy', score: 58}]\n * // }\n */\nvar groupBy = /*#__PURE__*/_curry2( /*#__PURE__*/_checkForMethod('groupBy', /*#__PURE__*/reduceBy(function (acc, item) {\n acc.push(item);\n return acc;\n}, [])));\nexport default groupBy;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Takes a list and returns a list of lists where each sublist's elements are\n * all satisfied pairwise comparison according to the provided function.\n * Only adjacent elements are passed to the comparison function.\n *\n * @func\n * @memberOf R\n * @since v0.21.0\n * @category List\n * @sig ((a, a) → Boolean) → [a] → [[a]]\n * @param {Function} fn Function for determining whether two given (adjacent)\n * elements should be in the same group\n * @param {Array} list The array to group. Also accepts a string, which will be\n * treated as a list of characters.\n * @return {List} A list that contains sublists of elements,\n * whose concatenations are equal to the original list.\n * @example\n *\n * R.groupWith(R.equals, [0, 1, 1, 2, 3, 5, 8, 13, 21])\n * //=> [[0], [1, 1], [2], [3], [5], [8], [13], [21]]\n *\n * R.groupWith((a, b) => a + 1 === b, [0, 1, 1, 2, 3, 5, 8, 13, 21])\n * //=> [[0, 1], [1, 2, 3], [5], [8], [13], [21]]\n *\n * R.groupWith((a, b) => a % 2 === b % 2, [0, 1, 1, 2, 3, 5, 8, 13, 21])\n * //=> [[0], [1, 1], [2], [3, 5], [8], [13, 21]]\n *\n * const isVowel = R.test(/^[aeiou]$/i);\n * R.groupWith(R.eqBy(isVowel), 'aestiou')\n * //=> ['ae', 'st', 'iou']\n */\nvar groupWith = /*#__PURE__*/_curry2(function (fn, list) {\n var res = [];\n var idx = 0;\n var len = list.length;\n while (idx < len) {\n var nextidx = idx + 1;\n while (nextidx < len && fn(list[nextidx - 1], list[nextidx])) {\n nextidx += 1;\n }\n res.push(list.slice(idx, nextidx));\n idx = nextidx;\n }\n return res;\n});\nexport default groupWith;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Returns `true` if the first argument is greater than the second; `false`\n * otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @see R.lt\n * @example\n *\n * R.gt(2, 1); //=> true\n * R.gt(2, 2); //=> false\n * R.gt(2, 3); //=> false\n * R.gt('a', 'z'); //=> false\n * R.gt('z', 'a'); //=> true\n */\nvar gt = /*#__PURE__*/_curry2(function gt(a, b) {\n return a > b;\n});\nexport default gt;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Returns `true` if the first argument is greater than or equal to the second;\n * `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> Boolean\n * @param {Number} a\n * @param {Number} b\n * @return {Boolean}\n * @see R.lte\n * @example\n *\n * R.gte(2, 1); //=> true\n * R.gte(2, 2); //=> true\n * R.gte(2, 3); //=> false\n * R.gte('a', 'z'); //=> false\n * R.gte('z', 'a'); //=> true\n */\nvar gte = /*#__PURE__*/_curry2(function gte(a, b) {\n return a >= b;\n});\nexport default gte;","import _curry2 from \"./internal/_curry2.js\";\nimport _has from \"./internal/_has.js\";\nimport isNil from \"./isNil.js\";\n\n/**\n * Returns whether or not a path exists in an object. Only the object's\n * own properties are checked.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category Object\n * @typedefn Idx = String | Int | Symbol\n * @sig [Idx] -> {a} -> Boolean\n * @param {Array} path The path to use.\n * @param {Object} obj The object to check the path in.\n * @return {Boolean} Whether the path exists.\n * @see R.has\n * @example\n *\n * R.hasPath(['a', 'b'], {a: {b: 2}}); // => true\n * R.hasPath(['a', 'b'], {a: {b: undefined}}); // => true\n * R.hasPath(['a', 'b'], {a: {c: 2}}); // => false\n * R.hasPath(['a', 'b'], {}); // => false\n */\nvar hasPath = /*#__PURE__*/_curry2(function hasPath(_path, obj) {\n if (_path.length === 0 || isNil(obj)) {\n return false;\n }\n var val = obj;\n var idx = 0;\n while (idx < _path.length) {\n if (!isNil(val) && _has(_path[idx], val)) {\n val = val[_path[idx]];\n idx += 1;\n } else {\n return false;\n }\n }\n return true;\n});\nexport default hasPath;","import _curry2 from \"./internal/_curry2.js\";\nimport hasPath from \"./hasPath.js\";\n\n/**\n * Returns whether or not an object has an own property with the specified name\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Object\n * @sig s -> {s: x} -> Boolean\n * @param {String} prop The name of the property to check for.\n * @param {Object} obj The object to query.\n * @return {Boolean} Whether the property exists.\n * @example\n *\n * const hasName = R.has('name');\n * hasName({name: 'alice'}); //=> true\n * hasName({name: 'bob'}); //=> true\n * hasName({}); //=> false\n *\n * const point = {x: 0, y: 0};\n * const pointHas = R.has(R.__, point);\n * pointHas('x'); //=> true\n * pointHas('y'); //=> true\n * pointHas('z'); //=> false\n */\nvar has = /*#__PURE__*/_curry2(function has(prop, obj) {\n return hasPath([prop], obj);\n});\nexport default has;","import _curry2 from \"./internal/_curry2.js\";\nimport isNil from \"./isNil.js\";\n\n/**\n * Returns whether or not an object or its prototype chain has a property with\n * the specified name\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Object\n * @sig s -> {s: x} -> Boolean\n * @param {String} prop The name of the property to check for.\n * @param {Object} obj The object to query.\n * @return {Boolean} Whether the property exists.\n * @example\n *\n * function Rectangle(width, height) {\n * this.width = width;\n * this.height = height;\n * }\n * Rectangle.prototype.area = function() {\n * return this.width * this.height;\n * };\n *\n * const square = new Rectangle(2, 2);\n * R.hasIn('width', square); //=> true\n * R.hasIn('area', square); //=> true\n */\nvar hasIn = /*#__PURE__*/_curry2(function hasIn(prop, obj) {\n if (isNil(obj)) {\n return false;\n }\n return prop in obj;\n});\nexport default hasIn;","import _objectIs from \"./internal/_objectIs.js\";\n\n/**\n * Returns true if its arguments are identical, false otherwise. Values are\n * identical if they reference the same memory. `NaN` is identical to `NaN`;\n * `0` and `-0` are not identical.\n *\n * Note this is merely a curried version of ES6 `Object.is`.\n *\n * `identical` does not support the `__` placeholder.\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Relation\n * @sig a -> a -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @example\n *\n * const o = {};\n * R.identical(o, o); //=> true\n * R.identical(1, 1); //=> true\n * R.identical(1, '1'); //=> false\n * R.identical([], []); //=> false\n * R.identical(0, -0); //=> false\n * R.identical(NaN, NaN); //=> true\n */\nvar identical = function (a, b) {\n switch (arguments.length) {\n case 0:\n return identical;\n case 1:\n return function () {\n return function unaryIdentical(_b) {\n switch (arguments.length) {\n case 0:\n return unaryIdentical;\n default:\n return _objectIs(a, _b);\n }\n };\n }();\n default:\n return _objectIs(a, b);\n }\n};\n\n// In order to support Cross-origin Window objects as arguments to identical,\n// it cannot be implemented as _curry2(_objectIs).\n// The reason is that _curry2 checks if a function argument is the placeholder __\n// by accessing a paritcular property. However, across URL origins access\n// to most properties of Window is forbidden.\nexport default identical;","import _curry3 from \"./internal/_curry3.js\";\nimport curryN from \"./curryN.js\";\n\n/**\n * Creates a function that will process either the `onTrue` or the `onFalse`\n * function depending upon the result of the `condition` predicate.\n *\n * Note that `ifElse` takes its arity from the longest of the three functions passed to it.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Logic\n * @sig (*... -> Boolean) -> (*... -> *) -> (*... -> *) -> (*... -> *)\n * @param {Function} condition A predicate function\n * @param {Function} onTrue A function to invoke when the `condition` evaluates to a truthy value.\n * @param {Function} onFalse A function to invoke when the `condition` evaluates to a falsy value.\n * @return {Function} A new function that will process either the `onTrue` or the `onFalse`\n * function depending upon the result of the `condition` predicate.\n * @see R.unless, R.when, R.cond\n * @example\n *\n * const incCount = R.ifElse(\n * R.has('count'),\n * R.over(R.lensProp('count'), R.inc),\n * R.assoc('count', 1)\n * );\n * incCount({ count: 1 }); //=> { count: 2 }\n * incCount({}); //=> { count: 1 }\n */\nvar ifElse = /*#__PURE__*/_curry3(function ifElse(condition, onTrue, onFalse) {\n return curryN(Math.max(condition.length, onTrue.length, onFalse.length), function _ifElse() {\n return condition.apply(this, arguments) ? onTrue.apply(this, arguments) : onFalse.apply(this, arguments);\n });\n});\nexport default ifElse;","import add from \"./add.js\";\n\n/**\n * Increments its argument.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Math\n * @sig Number -> Number\n * @param {Number} n\n * @return {Number} n + 1\n * @see R.dec\n * @example\n *\n * R.inc(42); //=> 43\n */\nvar inc = /*#__PURE__*/add(1);\nexport default inc;","import _includes from \"./internal/_includes.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Returns `true` if the specified value is equal, in [`R.equals`](#equals)\n * terms, to at least one element of the given list; `false` otherwise.\n * Also works with strings.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category List\n * @sig a -> [a] -> Boolean\n * @param {Object} a The item to compare against.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if an equivalent item is in the list, `false` otherwise.\n * @see R.any\n * @example\n *\n * R.includes(3, [1, 2, 3]); //=> true\n * R.includes(4, [1, 2, 3]); //=> false\n * R.includes({ name: 'Fred' }, [{ name: 'Fred' }]); //=> true\n * R.includes([42], [[42]]); //=> true\n * R.includes('ba', 'banana'); //=>true\n */\nvar includes = /*#__PURE__*/_curry2(_includes);\nexport default includes;","import reduceBy from \"./reduceBy.js\";\n\n/**\n * Given a function that generates a key, turns a list of objects into an\n * object indexing the objects by the given key. Note that if multiple\n * objects generate the same value for the indexing key only the last value\n * will be included in the generated object.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @typedefn Idx = String | Int | Symbol\n * @sig Idx a => (b -> a) -> [b] -> {a: b}\n * @param {Function} fn Function :: a -> Idx\n * @param {Array} array The array of objects to index\n * @return {Object} An object indexing each array element by the given property.\n * @see R.groupBy\n * @example\n *\n * const list = [{id: 'xyz', title: 'A'}, {id: 'abc', title: 'B'}];\n * R.indexBy(R.prop('id'), list);\n * //=> {abc: {id: 'abc', title: 'B'}, xyz: {id: 'xyz', title: 'A'}}\n */\nvar indexBy = /*#__PURE__*/reduceBy(function (acc, elem) {\n return elem;\n}, null);\nexport default indexBy;","import _curry2 from \"./internal/_curry2.js\";\nimport _indexOf from \"./internal/_indexOf.js\";\nimport _isArray from \"./internal/_isArray.js\";\n\n/**\n * Returns the position of the first occurrence of an item in an array, or -1\n * if the item is not included in the array. [`R.equals`](#equals) is used to\n * determine equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -> [a] -> Number\n * @param {*} target The item to find.\n * @param {Array} xs The array to search in.\n * @return {Number} the index of the target, or -1 if the target is not found.\n * @see R.lastIndexOf, R.findIndex\n * @example\n *\n * R.indexOf(3, [1,2,3,4]); //=> 2\n * R.indexOf(10, [1,2,3,4]); //=> -1\n */\nvar indexOf = /*#__PURE__*/_curry2(function indexOf(target, xs) {\n return typeof xs.indexOf === 'function' && !_isArray(xs) ? xs.indexOf(target) : _indexOf(xs, target, 0);\n});\nexport default indexOf;","import slice from \"./slice.js\";\n\n/**\n * Returns all but the last element of the given list or string.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category List\n * @sig [a] -> [a]\n * @sig String -> String\n * @param {*} list\n * @return {*}\n * @see R.last, R.head, R.tail\n * @example\n *\n * R.init([1, 2, 3]); //=> [1, 2]\n * R.init([1, 2]); //=> [1]\n * R.init([1]); //=> []\n * R.init([]); //=> []\n *\n * R.init('abc'); //=> 'ab'\n * R.init('ab'); //=> 'a'\n * R.init('a'); //=> ''\n * R.init(''); //=> ''\n */\nvar init = /*#__PURE__*/slice(0, -1);\nexport default init;","import _includesWith from \"./internal/_includesWith.js\";\nimport _curry3 from \"./internal/_curry3.js\";\nimport _filter from \"./internal/_filter.js\";\n\n/**\n * Takes a predicate `pred`, a list `xs`, and a list `ys`, and returns a list\n * `xs'` comprising each of the elements of `xs` which is equal to one or more\n * elements of `ys` according to `pred`.\n *\n * `pred` must be a binary function expecting an element from each list.\n *\n * `xs`, `ys`, and `xs'` are treated as sets, semantically, so ordering should\n * not be significant, but since `xs'` is ordered the implementation guarantees\n * that its values are in the same order as they appear in `xs`. Duplicates are\n * not removed, so `xs'` may contain duplicates if `xs` contains duplicates.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Relation\n * @sig ((a, b) -> Boolean) -> [a] -> [b] -> [a]\n * @param {Function} pred\n * @param {Array} xs\n * @param {Array} ys\n * @return {Array}\n * @see R.intersection\n * @example\n *\n * R.innerJoin(\n * (record, id) => record.id === id,\n * [{id: 824, name: 'Richie Furay'},\n * {id: 956, name: 'Dewey Martin'},\n * {id: 313, name: 'Bruce Palmer'},\n * {id: 456, name: 'Stephen Stills'},\n * {id: 177, name: 'Neil Young'}],\n * [177, 456, 999]\n * );\n * //=> [{id: 456, name: 'Stephen Stills'}, {id: 177, name: 'Neil Young'}]\n */\nvar innerJoin = /*#__PURE__*/_curry3(function innerJoin(pred, xs, ys) {\n return _filter(function (x) {\n return _includesWith(pred, x, ys);\n }, xs);\n});\nexport default innerJoin;","import _curry3 from \"./internal/_curry3.js\";\n\n/**\n * Inserts the supplied element into the list, at the specified `index`. _Note that\n\n * this is not destructive_: it returns a copy of the list with the changes.\n * <small>No lists have been harmed in the application of this function.</small>\n *\n * @func\n * @memberOf R\n * @since v0.2.2\n * @category List\n * @sig Number -> a -> [a] -> [a]\n * @param {Number} index The position to insert the element\n * @param {*} elt The element to insert into the Array\n * @param {Array} list The list to insert into\n * @return {Array} A new Array with `elt` inserted at `index`.\n * @example\n *\n * R.insert(2, 'x', [1,2,3,4]); //=> [1,2,'x',3,4]\n */\nvar insert = /*#__PURE__*/_curry3(function insert(idx, elt, list) {\n idx = idx < list.length && idx >= 0 ? idx : list.length;\n var result = Array.prototype.slice.call(list, 0);\n result.splice(idx, 0, elt);\n return result;\n});\nexport default insert;","import _curry3 from \"./internal/_curry3.js\";\n\n/**\n * Inserts the sub-list into the list, at the specified `index`. _Note that this is not\n * destructive_: it returns a copy of the list with the changes.\n * <small>No lists have been harmed in the application of this function.</small>\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category List\n * @sig Number -> [a] -> [a] -> [a]\n * @param {Number} index The position to insert the sub-list\n * @param {Array} elts The sub-list to insert into the Array\n * @param {Array} list The list to insert the sub-list into\n * @return {Array} A new Array with `elts` inserted starting at `index`.\n * @example\n *\n * R.insertAll(2, ['x','y','z'], [1,2,3,4]); //=> [1,2,'x','y','z',3,4]\n */\nvar insertAll = /*#__PURE__*/_curry3(function insertAll(idx, elts, list) {\n idx = idx < list.length && idx >= 0 ? idx : list.length;\n return [].concat(Array.prototype.slice.call(list, 0, idx), elts, Array.prototype.slice.call(list, idx));\n});\nexport default insertAll;","import _Set from \"./_Set.js\";\nimport _xfBase from \"./_xfBase.js\";\nvar XUniqBy = /*#__PURE__*/function () {\n function XUniqBy(f, xf) {\n this.xf = xf;\n this.f = f;\n this.set = new _Set();\n }\n XUniqBy.prototype['@@transducer/init'] = _xfBase.init;\n XUniqBy.prototype['@@transducer/result'] = _xfBase.result;\n XUniqBy.prototype['@@transducer/step'] = function (result, input) {\n return this.set.add(this.f(input)) ? this.xf['@@transducer/step'](result, input) : result;\n };\n return XUniqBy;\n}();\nexport default function _xuniqBy(f) {\n return function (xf) {\n return new XUniqBy(f, xf);\n };\n}","import _Set from \"./internal/_Set.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xuniqBy from \"./internal/_xuniqBy.js\";\n\n/**\n * Returns a new list containing only one copy of each element in the original\n * list, based upon the value returned by applying the supplied function to\n * each list element. Prefers the first item if the supplied function produces\n * the same value on two items. [`R.equals`](#equals) is used for comparison.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig (a -> b) -> [a] -> [a]\n * @param {Function} fn A function used to produce a value to use during comparisons.\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n * R.uniqBy(Math.abs, [-1, -5, 2, 10, 1, 2]); //=> [-1, -5, 2, 10]\n */\nvar uniqBy = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xuniqBy, function (fn, list) {\n var set = new _Set();\n var result = [];\n var idx = 0;\n var appliedItem, item;\n while (idx < list.length) {\n item = list[idx];\n appliedItem = fn(item);\n if (set.add(appliedItem)) {\n result.push(item);\n }\n idx += 1;\n }\n return result;\n}));\nexport default uniqBy;","import identity from \"./identity.js\";\nimport uniqBy from \"./uniqBy.js\";\n\n/**\n * Returns a new list containing only one copy of each element in the original\n * list. [`R.equals`](#equals) is used to determine equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n * R.uniq([1, 1, 2, 1]); //=> [1, 2]\n * R.uniq([1, '1']); //=> [1, '1']\n * R.uniq([[42], [42]]); //=> [[42]]\n */\nvar uniq = /*#__PURE__*/uniqBy(identity);\nexport default uniq;","import _curry2 from \"./internal/_curry2.js\";\nimport _filter from \"./internal/_filter.js\";\nimport _Set from \"./internal/_Set.js\";\nimport uniq from \"./uniq.js\";\n\n/**\n * Combines two lists into a set (i.e. no duplicates) composed of those\n * elements common to both lists.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig [*] -> [*] -> [*]\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The list of elements found in both `list1` and `list2`.\n * @see R.innerJoin\n * @example\n *\n * R.intersection([1,2,3,4], [7,6,5,4,3]); //=> [4, 3]\n */\nvar intersection = /*#__PURE__*/_curry2(function intersection(list1, list2) {\n var toKeep = new _Set();\n for (var i = 0; i < list1.length; i += 1) {\n toKeep.add(list1[i]);\n }\n return uniq(_filter(toKeep.has.bind(toKeep), list2));\n});\nexport default intersection;","import _checkForMethod from \"./internal/_checkForMethod.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Creates a new list with the separator interposed between elements.\n *\n * Dispatches to the `intersperse` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category List\n * @sig a -> [a] -> [a]\n * @param {*} separator The element to add to the list.\n * @param {Array} list The list to be interposed.\n * @return {Array} The new list.\n * @example\n *\n * R.intersperse('a', ['b', 'n', 'n', 's']); //=> ['b', 'a', 'n', 'a', 'n', 'a', 's']\n */\nvar intersperse = /*#__PURE__*/_curry2( /*#__PURE__*/_checkForMethod('intersperse', function _intersperse(separator, list) {\n var length = list.length;\n if (length === 0) {\n return [];\n }\n var out = Array(length * 2 - 1);\n var idx = 0;\n while (idx < length) {\n var i = idx * 2;\n if (idx === length - 1) {\n out[i] = list[idx];\n } else {\n out[i] = list[idx];\n out[i + 1] = separator;\n }\n idx += 1;\n }\n return out;\n}));\nexport default intersperse;","import _has from \"./_has.js\";\n\n// Based on https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\nfunction _objectAssign(target) {\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n var output = Object(target);\n var idx = 1;\n var length = arguments.length;\n while (idx < length) {\n var source = arguments[idx];\n if (source != null) {\n for (var nextKey in source) {\n if (_has(nextKey, source)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n idx += 1;\n }\n return output;\n}\nexport default typeof Object.assign === 'function' ? Object.assign : _objectAssign;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Creates an object containing a single key:value pair.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category Object\n * @sig String -> a -> {String:a}\n * @param {String} key\n * @param {*} val\n * @return {Object}\n * @see R.pair\n * @example\n *\n * const matchPhrases = R.compose(\n * R.objOf('must'),\n * R.map(R.objOf('match_phrase'))\n * );\n * matchPhrases(['foo', 'bar', 'baz']); //=> {must: [{match_phrase: 'foo'}, {match_phrase: 'bar'}, {match_phrase: 'baz'}]}\n */\nvar objOf = /*#__PURE__*/_curry2(function objOf(key, val) {\n var obj = {};\n obj[key] = val;\n return obj;\n});\nexport default objOf;","import _objectAssign from \"./_objectAssign.js\";\nimport _identity from \"./_identity.js\";\nimport _isArrayLike from \"./_isArrayLike.js\";\nimport _isTransformer from \"./_isTransformer.js\";\nimport objOf from \"../objOf.js\";\nvar _stepCatArray = {\n '@@transducer/init': Array,\n '@@transducer/step': function (xs, x) {\n xs.push(x);\n return xs;\n },\n '@@transducer/result': _identity\n};\nvar _stepCatString = {\n '@@transducer/init': String,\n '@@transducer/step': function (a, b) {\n return a + b;\n },\n '@@transducer/result': _identity\n};\nvar _stepCatObject = {\n '@@transducer/init': Object,\n '@@transducer/step': function (result, input) {\n return _objectAssign(result, _isArrayLike(input) ? objOf(input[0], input[1]) : input);\n },\n '@@transducer/result': _identity\n};\nexport default function _stepCat(obj) {\n if (_isTransformer(obj)) {\n return obj;\n }\n if (_isArrayLike(obj)) {\n return _stepCatArray;\n }\n if (typeof obj === 'string') {\n return _stepCatString;\n }\n if (typeof obj === 'object') {\n return _stepCatObject;\n }\n throw new Error('Cannot create transformer for ' + obj);\n}","import _curry3 from \"./internal/_curry3.js\";\nimport _isTransformer from \"./internal/_isTransformer.js\";\nimport _xReduce from \"./internal/_xReduce.js\";\nimport _stepCat from \"./internal/_stepCat.js\";\n\n/**\n * Transforms the items of the list with the transducer and appends the\n * transformed items to the accumulator using an appropriate iterator function\n * based on the accumulator type.\n *\n * The accumulator can be an array, string, object or a transformer. Iterated\n * items will be appended to arrays and concatenated to strings. Objects will\n * be merged directly or 2-item arrays will be merged as key, value pairs.\n *\n * The accumulator can also be a transformer object that provides a 2-arity\n * reducing iterator function, step, 0-arity initial value function, init, and\n * 1-arity result extraction function result. The step function is used as the\n * iterator function in reduce. The result function is used to convert the\n * final accumulator into the return type and in most cases is R.identity. The\n * init function is used to provide the initial accumulator.\n *\n * The iteration is performed with [`R.reduce`](#reduce) after initializing the\n * transducer.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category List\n * @sig a -> (b -> b) -> [c] -> a\n * @param {*} acc The initial accumulator value.\n * @param {Function} xf The transducer function. Receives a transformer and returns a transformer.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.transduce\n * @example\n *\n * const numbers = [1, 2, 3, 4];\n * const transducer = R.compose(R.map(R.add(1)), R.take(2));\n *\n * R.into([], transducer, numbers); //=> [2, 3]\n *\n * const intoArray = R.into([]);\n * intoArray(transducer, numbers); //=> [2, 3]\n */\nvar into = /*#__PURE__*/_curry3(function into(acc, transducer, list) {\n var xf = transducer(_isTransformer(acc) ? acc : _stepCat(acc));\n return _xReduce(xf, xf['@@transducer/init'](), list);\n});\nexport default into;","import _curry1 from \"./internal/_curry1.js\";\nimport _has from \"./internal/_has.js\";\nimport keys from \"./keys.js\";\n\n/**\n * Same as [`R.invertObj`](#invertObj), however this accounts for objects with\n * duplicate values by putting the values into an array.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Object\n * @sig {s: x} -> {x: [ s, ... ]}\n * @param {Object} obj The object or array to invert\n * @return {Object} out A new object with keys in an array.\n * @see R.invertObj\n * @example\n *\n * const raceResultsByFirstName = {\n * first: 'alice',\n * second: 'jake',\n * third: 'alice',\n * };\n * R.invert(raceResultsByFirstName);\n * //=> { 'alice': ['first', 'third'], 'jake':['second'] }\n */\nvar invert = /*#__PURE__*/_curry1(function invert(obj) {\n var props = keys(obj);\n var len = props.length;\n var idx = 0;\n var out = {};\n while (idx < len) {\n var key = props[idx];\n var val = obj[key];\n var list = _has(val, out) ? out[val] : out[val] = [];\n list[list.length] = key;\n idx += 1;\n }\n return out;\n});\nexport default invert;","import _curry1 from \"./internal/_curry1.js\";\nimport keys from \"./keys.js\";\n\n/**\n * Returns a new object with the keys of the given object as values, and the\n * values of the given object, which are coerced to strings, as keys. Note\n * that the last key found is preferred when handling the same value.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Object\n * @sig {s: x} -> {x: s}\n * @param {Object} obj The object or array to invert\n * @return {Object} out A new object\n * @see R.invert\n * @example\n *\n * const raceResults = {\n * first: 'alice',\n * second: 'jake'\n * };\n * R.invertObj(raceResults);\n * //=> { 'alice': 'first', 'jake':'second' }\n *\n * // Alternatively:\n * const raceResults = ['alice', 'jake'];\n * R.invertObj(raceResults);\n * //=> { 'alice': '0', 'jake':'1' }\n */\nvar invertObj = /*#__PURE__*/_curry1(function invertObj(obj) {\n var props = keys(obj);\n var len = props.length;\n var idx = 0;\n var out = {};\n while (idx < len) {\n var key = props[idx];\n out[obj[key]] = key;\n idx += 1;\n }\n return out;\n});\nexport default invertObj;","import _curry2 from \"./internal/_curry2.js\";\nimport _isFunction from \"./internal/_isFunction.js\";\nimport curryN from \"./curryN.js\";\nimport toString from \"./toString.js\";\n\n/**\n * Given an `arity` (Number) and a `name` (String) the `invoker` function\n * returns a curried function that takes `arity` arguments and a `context`\n * object. It will \"invoke\" the `name`'d function (a method) on the `context`\n * object.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig Number -> String -> (a -> b -> ... -> n -> Object -> *)\n * @param {Number} arity Number of arguments the returned function should take\n * before the target object.\n * @param {String} method Name of any of the target object's methods to call.\n * @return {Function} A new curried function.\n * @see R.construct\n * @example\n * // A function with no arguments\n * const asJson = invoker(0, \"json\")\n * // Just like calling .then((response) => response.json())\n * fetch(\"http://example.com/index.json\").then(asJson)\n *\n * // A function with one argument\n * const sliceFrom = invoker(1, 'slice');\n * sliceFrom(6, 'abcdefghijklm'); //=> 'ghijklm'\n *\n * // A function with two arguments\n * const sliceFrom6 = invoker(2, 'slice')(6);\n * sliceFrom6(8, 'abcdefghijklm'); //=> 'gh'\n *\n * // NOTE: You can't simply pass some of the arguments to the initial invoker function.\n * const firstCreditCardSection = invoker(2, \"slice\", 0, 4)\n * firstCreditCardSection(\"4242 4242 4242 4242\") // => Function<...>\n *\n * // Since invoker returns a curried function, you may partially apply it to create the function you need.\n * const firstCreditCardSection = invoker(2, \"slice\")(0, 4)\n * firstCreditCardSection(\"4242 4242 4242 4242\") // => \"4242\"\n *\n * @symb R.invoker(0, 'method')(o) = o['method']()\n * @symb R.invoker(1, 'method')(a, o) = o['method'](a)\n * @symb R.invoker(2, 'method')(a, b, o) = o['method'](a, b)\n */\nvar invoker = /*#__PURE__*/_curry2(function invoker(arity, method) {\n return curryN(arity + 1, function () {\n var target = arguments[arity];\n if (target != null && _isFunction(target[method])) {\n return target[method].apply(target, Array.prototype.slice.call(arguments, 0, arity));\n }\n throw new TypeError(toString(target) + ' does not have a method named \"' + method + '\"');\n });\n});\nexport default invoker;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * See if an object (i.e. `val`) is an instance of the supplied constructor. This\n * function will check up the inheritance chain, if any.\n * If `val` was created using `Object.create`, `R.is(Object, val) === true`.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Type\n * @sig (* -> {*}) -> a -> Boolean\n * @param {Object} ctor A constructor\n * @param {*} val The value to test\n * @return {Boolean}\n * @example\n *\n * R.is(Object, {}); //=> true\n * R.is(Number, 1); //=> true\n * R.is(Object, 1); //=> false\n * R.is(String, 's'); //=> true\n * R.is(String, new String('')); //=> true\n * R.is(Object, new String('')); //=> true\n * R.is(Object, 's'); //=> false\n * R.is(Number, {}); //=> false\n */\nvar is = /*#__PURE__*/_curry2(function is(Ctor, val) {\n return val instanceof Ctor || val != null && (val.constructor === Ctor || Ctor.name === 'Object' && typeof val === 'object');\n});\nexport default is;","import _curry1 from \"./internal/_curry1.js\";\nimport empty from \"./empty.js\";\nimport equals from \"./equals.js\";\n\n/**\n * Returns `true` if the given value is its type's empty value; `false`\n * otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig a -> Boolean\n * @param {*} x\n * @return {Boolean}\n * @see R.empty, R.isNotEmpty\n * @example\n *\n * R.isEmpty([1, 2, 3]); //=> false\n * R.isEmpty([]); //=> true\n * R.isEmpty(''); //=> true\n * R.isEmpty(null); //=> false\n * R.isEmpty({}); //=> true\n * R.isEmpty({length: 0}); //=> false\n * R.isEmpty(Uint8Array.from('')); //=> true\n * R.isEmpty(new Set()) //=> true\n * R.isEmpty(new Map()) //=> true\n */\nvar isEmpty = /*#__PURE__*/_curry1(function isEmpty(x) {\n return x != null && equals(x, empty(x));\n});\nexport default isEmpty;","import _curry1 from \"./internal/_curry1.js\";\nimport isEmpty from \"./isEmpty.js\";\n\n/**\n * Returns `false` if the given value is its type's empty value; `true`\n * otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.29.2\n * @category Logic\n * @sig a -> Boolean\n * @param {*} x\n * @return {Boolean}\n * @see R.empty, R.isEmpty\n * @example\n *\n * R.isNotEmpty([1, 2, 3]); //=> true\n * R.isNotEmpty([]); //=> false\n * R.isNotEmpty(''); //=> false\n * R.isNotEmpty(null); //=> true\n * R.isNotEmpty({}); //=> false\n * R.isNotEmpty({length: 0}); //=> true\n * R.isNotEmpty(Uint8Array.from('')); //=> false\n */\nvar isNotEmpty = /*#__PURE__*/_curry1(function isNotEmpty(x) {\n return !isEmpty(x);\n});\nexport default isNotEmpty;","import isNil from \"./isNil.js\";\nimport _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Checks if the input value is not `null` and not `undefined`.\n *\n * @func\n * @memberOf R\n * @since v0.29.0\n * @category Type\n * @sig * -> Boolean\n * @param {*} x The value to test.\n * @return {Boolean} `true` if `x` is not `undefined` or not `null`, otherwise `false`.\n * @example\n *\n * R.isNotNil(null); //=> false\n * R.isNotNil(undefined); //=> false\n * R.isNotNil(0); //=> true\n * R.isNotNil([]); //=> true\n */\nvar isNotNil = /*#__PURE__*/_curry1(function isNotNil(x) {\n return !isNil(x);\n});\nexport default isNotNil;","import invoker from \"./invoker.js\";\n\n/**\n * Returns a string made by inserting the `separator` between each element and\n * concatenating all the elements into a single string.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig String -> [a] -> String\n * @param {Number|String} separator The string used to separate the elements.\n * @param {Array} xs The elements to join into a string.\n * @return {String} str The string made by concatenating `xs` with `separator`.\n * @see R.split\n * @example\n *\n * const spacer = R.join(' ');\n * spacer(['a', 2, 3.4]); //=> 'a 2 3.4'\n * R.join('|', [1, 2, 3]); //=> '1|2|3'\n */\nvar join = /*#__PURE__*/invoker(1, 'join');\nexport default join;","import _curry1 from \"./internal/_curry1.js\";\nimport converge from \"./converge.js\";\n\n/**\n * juxt applies a list of functions to a list of values.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Function\n * @sig [(a, b, ..., m) -> n] -> ((a, b, ..., m) -> [n])\n * @param {Array} fns An array of functions\n * @return {Function} A function that returns a list of values after applying each of the original `fns` to its parameters.\n * @see R.applySpec\n * @example\n *\n * const getRange = R.juxt([Math.min, Math.max]);\n * getRange(3, 4, 9, -3); //=> [-3, 9]\n * @symb R.juxt([f, g, h])(a, b) = [f(a, b), g(a, b), h(a, b)]\n */\nvar juxt = /*#__PURE__*/_curry1(function juxt(fns) {\n return converge(function () {\n return Array.prototype.slice.call(arguments, 0);\n }, fns);\n});\nexport default juxt;","import _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Returns a list containing the names of all the properties of the supplied\n * object, including prototype properties.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Object\n * @sig {k: v} -> [k]\n * @param {Object} obj The object to extract properties from\n * @return {Array} An array of the object's own and prototype properties.\n * @see R.keys, R.valuesIn\n * @example\n *\n * const F = function() { this.x = 'X'; };\n * F.prototype.y = 'Y';\n * const f = new F();\n * R.keysIn(f); //=> ['x', 'y']\n */\nvar keysIn = /*#__PURE__*/_curry1(function keysIn(obj) {\n var prop;\n var ks = [];\n for (prop in obj) {\n ks[ks.length] = prop;\n }\n return ks;\n});\nexport default keysIn;","import _curry2 from \"./internal/_curry2.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport equals from \"./equals.js\";\n\n/**\n * Returns the position of the last occurrence of an item in an array, or -1 if\n * the item is not included in the array. [`R.equals`](#equals) is used to\n * determine equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -> [a] -> Number\n * @param {*} target The item to find.\n * @param {Array} xs The array to search in.\n * @return {Number} the index of the target, or -1 if the target is not found.\n * @see R.indexOf, R.findLastIndex\n * @example\n *\n * R.lastIndexOf(3, [-1,3,3,0,1,2,3,4]); //=> 6\n * R.lastIndexOf(10, [1,2,3,4]); //=> -1\n */\nvar lastIndexOf = /*#__PURE__*/_curry2(function lastIndexOf(target, xs) {\n if (typeof xs.lastIndexOf === 'function' && !_isArray(xs)) {\n return xs.lastIndexOf(target);\n } else {\n var idx = xs.length - 1;\n while (idx >= 0) {\n if (equals(xs[idx], target)) {\n return idx;\n }\n idx -= 1;\n }\n return -1;\n }\n});\nexport default lastIndexOf;","export default function _isNumber(x) {\n return Object.prototype.toString.call(x) === '[object Number]';\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _isNumber from \"./internal/_isNumber.js\";\n\n/**\n * Returns the number of elements in the array by returning `list.length`.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig [a] -> Number\n * @param {Array} list The array to inspect.\n * @return {Number} The length of the array.\n * @example\n *\n * R.length([]); //=> 0\n * R.length([1, 2, 3]); //=> 3\n */\nvar length = /*#__PURE__*/_curry1(function length(list) {\n return list != null && _isNumber(list.length) ? list.length : NaN;\n});\nexport default length;","import _curry2 from \"./internal/_curry2.js\";\nimport map from \"./map.js\";\n\n/**\n * Returns a lens for the given getter and setter functions. The getter \"gets\"\n * the value of the focus; the setter \"sets\" the value of the focus. The setter\n * should not mutate the data structure.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig (s -> a) -> ((a, s) -> s) -> Lens s a\n * @param {Function} getter\n * @param {Function} setter\n * @return {Lens}\n * @see R.view, R.set, R.over, R.lensIndex, R.lensProp\n * @example\n *\n * const xLens = R.lens(R.prop('x'), R.assoc('x'));\n *\n * R.view(xLens, {x: 1, y: 2}); //=> 1\n * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2}\n * R.over(xLens, R.negate, {x: 1, y: 2}); //=> {x: -1, y: 2}\n */\nvar lens = /*#__PURE__*/_curry2(function lens(getter, setter) {\n return function (toFunctorFn) {\n return function (target) {\n return map(function (focus) {\n return setter(focus, target);\n }, toFunctorFn(getter(target)));\n };\n };\n});\nexport default lens;","import _curry3 from \"./internal/_curry3.js\";\nimport adjust from \"./adjust.js\";\nimport always from \"./always.js\";\n\n/**\n * Returns a new copy of the array with the element at the provided index\n * replaced with the given value.\n *\n * When `idx < -list.length || idx >= list.length`, the original list is returned.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category List\n * @sig Number -> a -> [a] -> [a]\n * @param {Number} idx The index to update.\n * @param {*} x The value to exist at the given index of the returned array.\n * @param {Array|Arguments} list The source array-like object to be updated.\n * @return {Array} A copy of `list` with the value at index `idx` replaced with `x`.\n * @see R.adjust\n * @example\n *\n * R.update(1, '_', ['a', 'b', 'c']); //=> ['a', '_', 'c']\n * R.update(-1, '_', ['a', 'b', 'c']); //=> ['a', 'b', '_']\n *\n * // out-of-range returns original list\n * R.update(3, '_', ['a', 'b', 'c']); //=> ['a', 'b', 'c']\n * R.update(-4, '_', ['a', 'b', 'c']); //=> ['a', 'b', 'c']\n * @symb R.update(-1, a, [b, c]) = [b, a]\n * @symb R.update(0, a, [b, c]) = [a, c]\n * @symb R.update(1, a, [b, c]) = [b, a]\n */\nvar update = /*#__PURE__*/_curry3(function update(idx, x, list) {\n return adjust(idx, always(x), list);\n});\nexport default update;","import _curry1 from \"./internal/_curry1.js\";\nimport _nth from \"./internal/_nth.js\";\nimport lens from \"./lens.js\";\nimport update from \"./update.js\";\n\n/**\n * Returns a lens whose focus is the specified index.\n *\n * When `idx < -list.length || idx >= list.length`, `R.set` or `R.over`, the original list is returned.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig Number -> Lens s a\n * @param {Number} n\n * @return {Lens}\n * @see R.view, R.set, R.over, R.nth\n * @example\n *\n * const headLens = R.lensIndex(0);\n *\n * R.view(headLens, ['a', 'b', 'c']); //=> 'a'\n * R.set(headLens, 'x', ['a', 'b', 'c']); //=> ['x', 'b', 'c']\n * R.over(headLens, R.toUpper, ['a', 'b', 'c']); //=> ['A', 'b', 'c']\n *\n * // out-of-range returns original list\n * R.set(R.lensIndex(3), 'x', ['a', 'b', 'c']); //=> ['a', 'b', 'c']\n * R.over(R.lensIndex(-4), R.toUpper, ['a', 'b', 'c']); //=> ['a', 'b', 'c']\n */\nvar lensIndex = /*#__PURE__*/_curry1(function lensIndex(n) {\n return lens(function (val) {\n return _nth(n, val);\n }, update(n));\n});\nexport default lensIndex;","import _isInteger from \"./_isInteger.js\";\nimport _nth from \"./_nth.js\";\nexport default function _path(pathAr, obj) {\n var val = obj;\n for (var i = 0; i < pathAr.length; i += 1) {\n if (val == null) {\n return undefined;\n }\n var p = pathAr[i];\n if (_isInteger(p)) {\n val = _nth(p, val);\n } else {\n val = val[p];\n }\n }\n return val;\n}","import _curry1 from \"./internal/_curry1.js\";\nimport assocPath from \"./assocPath.js\";\nimport lens from \"./lens.js\";\nimport _path from \"./internal/_path.js\";\n\n/**\n * Returns a lens whose focus is the specified path.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Object\n * @typedefn Idx = String | Int | Symbol\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig [Idx] -> Lens s a\n * @param {Array} path The path to use.\n * @return {Lens}\n * @see R.view, R.set, R.over\n * @example\n *\n * const xHeadYLens = R.lensPath(['x', 0, 'y']);\n *\n * R.view(xHeadYLens, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});\n * //=> 2\n * R.set(xHeadYLens, 1, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});\n * //=> {x: [{y: 1, z: 3}, {y: 4, z: 5}]}\n * R.over(xHeadYLens, R.negate, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});\n * //=> {x: [{y: -2, z: 3}, {y: 4, z: 5}]}\n */\n\nvar lensPath = /*#__PURE__*/_curry1(function lensPath(p) {\n return lens(function (val) {\n return _path(p, val);\n }, assocPath(p));\n});\nexport default lensPath;","import _curry1 from \"./internal/_curry1.js\";\nimport assoc from \"./assoc.js\";\nimport lens from \"./lens.js\";\nimport prop from \"./prop.js\";\n\n/**\n * Returns a lens whose focus is the specified property.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig String -> Lens s a\n * @param {String} k\n * @return {Lens}\n * @see R.view, R.set, R.over\n * @example\n *\n * const xLens = R.lensProp('x');\n *\n * R.view(xLens, {x: 1, y: 2}); //=> 1\n * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2}\n * R.over(xLens, R.negate, {x: 1, y: 2}); //=> {x: -1, y: 2}\n */\nvar lensProp = /*#__PURE__*/_curry1(function lensProp(k) {\n return lens(prop(k), assoc(k));\n});\nexport default lensProp;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Returns `true` if the first argument is less than the second; `false`\n * otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @see R.gt\n * @example\n *\n * R.lt(2, 1); //=> false\n * R.lt(2, 2); //=> false\n * R.lt(2, 3); //=> true\n * R.lt('a', 'z'); //=> true\n * R.lt('z', 'a'); //=> false\n */\nvar lt = /*#__PURE__*/_curry2(function lt(a, b) {\n return a < b;\n});\nexport default lt;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Returns `true` if the first argument is less than or equal to the second;\n * `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> Boolean\n * @param {Number} a\n * @param {Number} b\n * @return {Boolean}\n * @see R.gte\n * @example\n *\n * R.lte(2, 1); //=> false\n * R.lte(2, 2); //=> true\n * R.lte(2, 3); //=> true\n * R.lte('a', 'z'); //=> true\n * R.lte('z', 'a'); //=> false\n */\nvar lte = /*#__PURE__*/_curry2(function lte(a, b) {\n return a <= b;\n});\nexport default lte;","import _curry3 from \"./internal/_curry3.js\";\n\n/**\n * The `mapAccum` function behaves like a combination of map and reduce; it\n * applies a function to each element of a list, passing an accumulating\n * parameter from left to right, and returning a final value of this\n * accumulator together with the new list.\n *\n * The iterator function receives two arguments, *acc* and *value*, and should\n * return a tuple *[acc, value]*.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig ((acc, x) -> (acc, y)) -> acc -> [x] -> (acc, [y])\n * @param {Function} fn The function to be called on every element of the input `list`.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.scan, R.addIndex, R.mapAccumRight\n * @example\n *\n * const digits = ['1', '2', '3', '4'];\n * const appender = (a, b) => [a + b, a + b];\n *\n * R.mapAccum(appender, 0, digits); //=> ['01234', ['01', '012', '0123', '01234']]\n * @symb R.mapAccum(f, a, [b, c, d]) = [\n * f(f(f(a, b)[0], c)[0], d)[0],\n * [\n * f(a, b)[1],\n * f(f(a, b)[0], c)[1],\n * f(f(f(a, b)[0], c)[0], d)[1]\n * ]\n * ]\n */\nvar mapAccum = /*#__PURE__*/_curry3(function mapAccum(fn, acc, list) {\n var idx = 0;\n var len = list.length;\n var result = Array(len);\n var tuple = [acc];\n while (idx < len) {\n tuple = fn(tuple[0], list[idx]);\n result[idx] = tuple[1];\n idx += 1;\n }\n return [tuple[0], result];\n});\nexport default mapAccum;","import _curry3 from \"./internal/_curry3.js\";\n\n/**\n * The `mapAccumRight` function behaves like a combination of map and reduce; it\n * applies a function to each element of a list, passing an accumulating\n * parameter from right to left, and returning a final value of this\n * accumulator together with the new list.\n *\n * Similar to [`mapAccum`](#mapAccum), except moves through the input list from\n * the right to the left.\n *\n * The iterator function receives two arguments, *acc* and *value*, and should\n * return a tuple *[acc, value]*.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig ((acc, x) -> (acc, y)) -> acc -> [x] -> (acc, [y])\n * @param {Function} fn The function to be called on every element of the input `list`.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.addIndex, R.mapAccum\n * @example\n *\n * const digits = ['1', '2', '3', '4'];\n * const appender = (a, b) => [b + a, b + a];\n *\n * R.mapAccumRight(appender, 5, digits); //=> ['12345', ['12345', '2345', '345', '45']]\n * @symb R.mapAccumRight(f, a, [b, c, d]) = [\n * f(f(f(a, d)[0], c)[0], b)[0],\n * [\n * f(a, d)[1],\n * f(f(a, d)[0], c)[1],\n * f(f(f(a, d)[0], c)[0], b)[1]\n * ]\n * ]\n */\nvar mapAccumRight = /*#__PURE__*/_curry3(function mapAccumRight(fn, acc, list) {\n var idx = list.length - 1;\n var result = Array(list.length);\n var tuple = [acc];\n while (idx >= 0) {\n tuple = fn(tuple[0], list[idx]);\n result[idx] = tuple[1];\n idx -= 1;\n }\n return [tuple[0], result];\n});\nexport default mapAccumRight;","import _has from \"./_has.js\";\nexport default function _toPairs(obj) {\n var pairs = [];\n for (var prop in obj) {\n if (_has(prop, obj)) {\n pairs[pairs.length] = [prop, obj[prop]];\n }\n }\n return pairs;\n}","import _fromPairs from \"./_fromPairs.js\";\nimport _toPairs from \"./_toPairs.js\";\nimport _chain from \"./_chain.js\";\nvar rebuild = function (convert, obj) {\n return _fromPairs(_chain(function (pair) {\n return convert(pair[0], pair[1]);\n }, _toPairs(obj)));\n};\nexport default rebuild;","import _rebuild from \"./_rebuild.js\";\nvar mapKeys = function mapKeys(fn, obj) {\n return _rebuild(function (k, v) {\n return [[fn(k), v]];\n }, obj);\n};\nexport default mapKeys;","import _curry2 from \"./internal/_curry2.js\";\nimport _mapKeys from \"./internal/_mapKeys.js\";\n\n/**\n * Transforms an object by converting the keys to new values.\n *\n * **Note** that if multiple keys map to the same new key, the last one processed will dominate.\n *\n * @func\n * @memberOf R\n * @since v0.31.0\n * @category Object\n * @sig (String -> String) -> Object -> Object\n * @param {Function} fn\n * @param {Object} obj\n * @return {Object}\n * @see R.map, R.rebuild, R.renameKeys\n * @example\n *\n * R.mapKeys(toUpper, {foo: 1, bar: 2, baz: 3}) //=> {FOO: 1, BAR: 2, BAZ: 3}\n */\nvar mapKeys = /*#__PURE__*/_curry2(_mapKeys);\nexport default mapKeys;","import _arrayReduce from \"./internal/_arrayReduce.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport keys from \"./keys.js\";\n\n/**\n * An Object-specific version of [`map`](#map). The function is applied to three\n * arguments: *(value, key, obj)*. If only the value is significant, use\n * [`map`](#map) instead.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Object\n * @sig ((*, String, Object) -> *) -> Object -> Object\n * @param {Function} fn\n * @param {Object} obj\n * @return {Object}\n * @see R.map\n * @example\n *\n * const xyz = { x: 1, y: 2, z: 3 };\n * const prependKeyAndDouble = (num, key, obj) => key + (num * 2);\n *\n * R.mapObjIndexed(prependKeyAndDouble, xyz); //=> { x: 'x2', y: 'y4', z: 'z6' }\n */\nvar mapObjIndexed = /*#__PURE__*/_curry2(function mapObjIndexed(fn, obj) {\n return _arrayReduce(function (acc, key) {\n acc[key] = fn(obj[key], key, obj);\n return acc;\n }, {}, keys(obj));\n});\nexport default mapObjIndexed;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Tests a regular expression against a String. Note that this function will\n * return an empty array when there are no matches. This differs from\n * [`String.prototype.match`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match)\n * which returns `null` when there are no matches.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category String\n * @sig RegExp -> String -> [String | Undefined]\n * @param {RegExp} rx A regular expression.\n * @param {String} str The string to match against\n * @return {Array} The list of matches or empty array.\n * @see R.test\n * @example\n *\n * R.match(/([a-z]a)/g, 'bananas'); //=> ['ba', 'na', 'na']\n * R.match(/a/, 'b'); //=> []\n * R.match(/a/, null); //=> TypeError: null does not have a method named \"match\"\n */\nvar match = /*#__PURE__*/_curry2(function match(rx, str) {\n return str.match(rx) || [];\n});\nexport default match;","import _curry2 from \"./internal/_curry2.js\";\nimport _isInteger from \"./internal/_isInteger.js\";\n\n/**\n * `mathMod` behaves like the modulo operator should mathematically, unlike the\n * `%` operator (and by extension, [`R.modulo`](#modulo)). So while\n * `-17 % 5` is `-2`, `mathMod(-17, 5)` is `3`. `mathMod` requires Integer\n * arguments, and returns NaN when the modulus is zero or negative.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Math\n * @sig Number -> Number -> Number\n * @param {Number} m The dividend.\n * @param {Number} p the modulus.\n * @return {Number} The result of `b mod a`.\n * @see R.modulo\n * @example\n *\n * R.mathMod(-17, 5); //=> 3\n * R.mathMod(17, 5); //=> 2\n * R.mathMod(17, -5); //=> NaN\n * R.mathMod(17, 0); //=> NaN\n * R.mathMod(17.2, 5); //=> NaN\n * R.mathMod(17, 5.3); //=> NaN\n *\n * const clock = R.mathMod(R.__, 12);\n * clock(15); //=> 3\n * clock(24); //=> 0\n *\n * const seventeenMod = R.mathMod(17);\n * seventeenMod(3); //=> 2\n * seventeenMod(4); //=> 1\n * seventeenMod(10); //=> 7\n */\nvar mathMod = /*#__PURE__*/_curry2(function mathMod(m, p) {\n if (!_isInteger(m)) {\n return NaN;\n }\n if (!_isInteger(p) || p < 1) {\n return NaN;\n }\n return (m % p + p) % p;\n});\nexport default mathMod;","import _curry3 from \"./internal/_curry3.js\";\nimport max from \"./max.js\";\n\n/**\n * Takes a function and two values, and returns whichever value produces the\n * larger result when passed to the provided function.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Relation\n * @sig Ord b => (a -> b) -> a -> a -> a\n * @param {Function} f\n * @param {*} a\n * @param {*} b\n * @return {*}\n * @see R.max, R.minBy\n * @example\n *\n * // square :: Number -> Number\n * const square = n => n * n;\n *\n * R.maxBy(square, -3, 2); //=> -3\n *\n * R.reduce(R.maxBy(square), 0, [3, -5, 4, 1, -2]); //=> -5\n * R.reduce(R.maxBy(square), 0, []); //=> 0\n */\nvar maxBy = /*#__PURE__*/_curry3(function maxBy(f, a, b) {\n var resultB = f(b);\n return max(f(a), resultB) === resultB ? b : a;\n});\nexport default maxBy;","import add from \"./add.js\";\nimport reduce from \"./reduce.js\";\n\n/**\n * Adds together all the elements of a list.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig [Number] -> Number\n * @param {Array} list An array of numbers\n * @return {Number} The sum of all the numbers in the list.\n * @see R.reduce\n * @example\n *\n * R.sum([2,4,6,8,100,1]); //=> 121\n */\nvar sum = /*#__PURE__*/reduce(add, 0);\nexport default sum;","import _curry1 from \"./internal/_curry1.js\";\nimport sum from \"./sum.js\";\n\n/**\n * Returns the mean of the given list of numbers.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Math\n * @sig [Number] -> Number\n * @param {Array} list\n * @return {Number}\n * @see R.median\n * @example\n *\n * R.mean([2, 7, 9]); //=> 6\n * R.mean([]); //=> NaN\n */\nvar mean = /*#__PURE__*/_curry1(function mean(list) {\n return sum(list) / list.length;\n});\nexport default mean;","import _curry1 from \"./internal/_curry1.js\";\nimport mean from \"./mean.js\";\n\n/**\n * Returns the median of the given list of numbers.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Math\n * @sig [Number] -> Number\n * @param {Array} list\n * @return {Number}\n * @see R.mean\n * @example\n *\n * R.median([2, 9, 7]); //=> 7\n * R.median([7, 2, 10, 9]); //=> 8\n * R.median([]); //=> NaN\n */\nvar median = /*#__PURE__*/_curry1(function median(list) {\n var len = list.length;\n if (len === 0) {\n return NaN;\n }\n var width = 2 - len % 2;\n var idx = (len - width) / 2;\n return mean(Array.prototype.slice.call(list, 0).sort(function (a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n }).slice(idx, idx + width));\n});\nexport default median;","import _arity from \"./internal/_arity.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _has from \"./internal/_has.js\";\n\n/**\n * Takes a string-returning function `keyGen` and a function `fn` and returns\n * a new function that returns cached results for subsequent\n * calls with the same arguments.\n *\n * When the function is invoked, `keyGen` is applied to the same arguments\n * and its result becomes the cache key. If the cache contains something\n * under that key, the function simply returns it and does not invoke `fn` at all.\n *\n * Otherwise `fn` is applied to the same arguments and its return value\n * is cached under that key and returned by the function.\n *\n * Care must be taken when implementing `keyGen` to avoid key collision,\n * or if tracking references, memory leaks and mutating arguments.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Function\n * @sig (*... -> String) -> (*... -> a) -> (*... -> a)\n * @param {Function} keyGen The function to generate the cache key.\n * @param {Function} fn The function to memoize.\n * @return {Function} Memoized version of `fn`.\n * @example\n * const withAge = memoizeWith(o => `${o.birth}/${o.death}`, ({birth, death}) => {\n * // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^\n * // keyGen fn\n * console.log(`computing age for ${birth}/${death}`);\n * return ({birth, death, age: death - birth});\n * });\n *\n * withAge({birth: 1921, death: 1999});\n * //=> LOG: computing age for 1921/1999\n * //=> {birth: 1921, death: 1999, age: 78} (returned from fn)\n *\n * withAge({birth: 1921, death: 1999});\n * //=> {birth: 1921, death: 1999, age: 78} (returned from cache)\n */\nvar memoizeWith = /*#__PURE__*/_curry2(function memoizeWith(keyGen, fn) {\n var cache = {};\n return _arity(fn.length, function () {\n var key = keyGen.apply(this, arguments);\n if (!_has(key, cache)) {\n cache[key] = fn.apply(this, arguments);\n }\n return cache[key];\n });\n});\nexport default memoizeWith;","import _objectAssign from \"./internal/_objectAssign.js\";\nimport _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Creates one new object with the own properties from a list of objects.\n * If a key exists in more than one object, the value from the last\n * object it exists in will be used.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig [{k: v}] -> {k: v}\n * @param {Array} list An array of objects\n * @return {Object} A merged object.\n * @see R.reduce\n * @example\n *\n * R.mergeAll([{foo:1},{bar:2},{baz:3}]); //=> {foo:1,bar:2,baz:3}\n * R.mergeAll([{foo:1},{foo:2},{bar:2}]); //=> {foo:2,bar:2}\n * @symb R.mergeAll([{ x: 1 }, { y: 2 }, { z: 3 }]) = { x: 1, y: 2, z: 3 }\n */\nvar mergeAll = /*#__PURE__*/_curry1(function mergeAll(list) {\n return _objectAssign.apply(null, [{}].concat(list));\n});\nexport default mergeAll;","import _curry3 from \"./internal/_curry3.js\";\nimport _has from \"./internal/_has.js\";\n\n/**\n * Creates a new object with the own properties of the two provided objects. If\n * a key exists in both objects, the provided function is applied to the key\n * and the values associated with the key in each object, with the result being\n * used as the value associated with the key in the returned object.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Object\n * @sig ((String, a, a) -> a) -> {a} -> {a} -> {a}\n * @param {Function} fn\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeDeepWithKey, R.mergeWith\n * @example\n *\n * let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r\n * R.mergeWithKey(concatValues,\n * { a: true, thing: 'foo', values: [10, 20] },\n * { b: true, thing: 'bar', values: [15, 35] });\n * //=> { a: true, b: true, thing: 'bar', values: [10, 20, 15, 35] }\n * @symb R.mergeWithKey(f, { x: 1, y: 2 }, { y: 5, z: 3 }) = { x: 1, y: f('y', 2, 5), z: 3 }\n */\nvar mergeWithKey = /*#__PURE__*/_curry3(function mergeWithKey(fn, l, r) {\n var result = {};\n var k;\n l = l || {};\n r = r || {};\n for (k in l) {\n if (_has(k, l)) {\n result[k] = _has(k, r) ? fn(k, l[k], r[k]) : l[k];\n }\n }\n for (k in r) {\n if (_has(k, r) && !_has(k, result)) {\n result[k] = r[k];\n }\n }\n return result;\n});\nexport default mergeWithKey;","import _curry3 from \"./internal/_curry3.js\";\nimport _isObject from \"./internal/_isObject.js\";\nimport mergeWithKey from \"./mergeWithKey.js\";\n\n/**\n * Creates a new object with the own properties of the two provided objects.\n * If a key exists in both objects:\n * - and both associated values are also objects then the values will be\n * recursively merged.\n * - otherwise the provided function is applied to the key and associated values\n * using the resulting value as the new value associated with the key.\n * If a key only exists in one object, the value will be associated with the key\n * of the resulting object.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Object\n * @sig ((String, a, a) -> a) -> {a} -> {a} -> {a}\n * @param {Function} fn\n * @param {Object} lObj\n * @param {Object} rObj\n * @return {Object}\n * @see R.mergeWithKey, R.mergeDeepWith\n * @example\n *\n * let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r\n * R.mergeDeepWithKey(concatValues,\n * { a: true, c: { thing: 'foo', values: [10, 20] }},\n * { b: true, c: { thing: 'bar', values: [15, 35] }});\n * //=> { a: true, b: true, c: { thing: 'bar', values: [10, 20, 15, 35] }}\n */\nvar mergeDeepWithKey = /*#__PURE__*/_curry3(function mergeDeepWithKey(fn, lObj, rObj) {\n return mergeWithKey(function (k, lVal, rVal) {\n if (_isObject(lVal) && _isObject(rVal)) {\n return mergeDeepWithKey(fn, lVal, rVal);\n } else {\n return fn(k, lVal, rVal);\n }\n }, lObj, rObj);\n});\nexport default mergeDeepWithKey;","import _curry2 from \"./internal/_curry2.js\";\nimport mergeDeepWithKey from \"./mergeDeepWithKey.js\";\n\n/**\n * Creates a new object with the own properties of the first object merged with\n * the own properties of the second object. If a key exists in both objects:\n * - and both values are objects, the two values will be recursively merged\n * - otherwise the value from the first object will be used.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Object\n * @sig {a} -> {a} -> {a}\n * @param {Object} lObj\n * @param {Object} rObj\n * @return {Object}\n * @see R.mergeDeepRight, R.mergeDeepWith, R.mergeDeepWithKey\n * @example\n *\n * R.mergeDeepLeft({ name: 'fred', age: 10, contact: { email: 'moo@example.com' }},\n * { age: 40, contact: { email: 'baa@example.com' }});\n * //=> { name: 'fred', age: 10, contact: { email: 'moo@example.com' }}\n */\nvar mergeDeepLeft = /*#__PURE__*/_curry2(function mergeDeepLeft(lObj, rObj) {\n return mergeDeepWithKey(function (k, lVal, rVal) {\n return lVal;\n }, lObj, rObj);\n});\nexport default mergeDeepLeft;","import _curry2 from \"./internal/_curry2.js\";\nimport mergeDeepWithKey from \"./mergeDeepWithKey.js\";\n\n/**\n * Creates a new object with the own properties of the first object merged with\n * the own properties of the second object. If a key exists in both objects:\n * - and both values are objects, the two values will be recursively merged\n * - otherwise the value from the second object will be used.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Object\n * @sig {a} -> {a} -> {a}\n * @param {Object} lObj\n * @param {Object} rObj\n * @return {Object}\n * @see R.mergeDeepLeft, R.mergeDeepWith, R.mergeDeepWithKey\n * @example\n *\n * R.mergeDeepRight({ name: 'fred', age: 10, contact: { email: 'moo@example.com' }},\n * { age: 40, contact: { email: 'baa@example.com' }});\n * //=> { name: 'fred', age: 40, contact: { email: 'baa@example.com' }}\n */\nvar mergeDeepRight = /*#__PURE__*/_curry2(function mergeDeepRight(lObj, rObj) {\n return mergeDeepWithKey(function (k, lVal, rVal) {\n return rVal;\n }, lObj, rObj);\n});\nexport default mergeDeepRight;","import _curry3 from \"./internal/_curry3.js\";\nimport mergeDeepWithKey from \"./mergeDeepWithKey.js\";\n\n/**\n * Creates a new object with the own properties of the two provided objects.\n * If a key exists in both objects:\n * - and both associated values are also objects then the values will be\n * recursively merged.\n * - otherwise the provided function is applied to associated values using the\n * resulting value as the new value associated with the key.\n * If a key only exists in one object, the value will be associated with the key\n * of the resulting object.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Object\n * @sig ((a, a) -> a) -> {a} -> {a} -> {a}\n * @param {Function} fn\n * @param {Object} lObj\n * @param {Object} rObj\n * @return {Object}\n * @see R.mergeWith, R.mergeDeepWithKey\n * @example\n *\n * R.mergeDeepWith(R.concat,\n * { a: true, c: { values: [10, 20] }},\n * { b: true, c: { values: [15, 35] }});\n * //=> { a: true, b: true, c: { values: [10, 20, 15, 35] }}\n */\nvar mergeDeepWith = /*#__PURE__*/_curry3(function mergeDeepWith(fn, lObj, rObj) {\n return mergeDeepWithKey(function (k, lVal, rVal) {\n return fn(lVal, rVal);\n }, lObj, rObj);\n});\nexport default mergeDeepWith;","import _objectAssign from \"./internal/_objectAssign.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Create a new object with the own properties of the first object merged with\n * the own properties of the second object. If a key exists in both objects,\n * the value from the first object will be used.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category Object\n * @sig {k: v} -> {k: v} -> {k: v}\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeRight, R.mergeDeepLeft, R.mergeWith, R.mergeWithKey\n * @example\n *\n * R.mergeLeft({ 'age': 40 }, { 'name': 'fred', 'age': 10 });\n * //=> { 'name': 'fred', 'age': 40 }\n *\n * const resetToDefault = R.mergeLeft({x: 0});\n * resetToDefault({x: 5, y: 2}); //=> {x: 0, y: 2}\n * @symb R.mergeLeft(a, b) = {...b, ...a}\n */\nvar mergeLeft = /*#__PURE__*/_curry2(function mergeLeft(l, r) {\n return _objectAssign({}, r, l);\n});\nexport default mergeLeft;","import _objectAssign from \"./internal/_objectAssign.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Create a new object with the own properties of the first object merged with\n * the own properties of the second object. If a key exists in both objects,\n * the value from the second object will be used.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category Object\n * @sig {k: v} -> {k: v} -> {k: v}\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeLeft, R.mergeDeepRight, R.mergeWith, R.mergeWithKey\n * @example\n *\n * R.mergeRight({ 'name': 'fred', 'age': 10 }, { 'age': 40 });\n * //=> { 'name': 'fred', 'age': 40 }\n *\n * const withDefaults = R.mergeRight({x: 0, y: 0});\n * withDefaults({y: 2}); //=> {x: 0, y: 2}\n * @symb R.mergeRight(a, b) = {...a, ...b}\n */\nvar mergeRight = /*#__PURE__*/_curry2(function mergeRight(l, r) {\n return _objectAssign({}, l, r);\n});\nexport default mergeRight;","import _curry3 from \"./internal/_curry3.js\";\nimport mergeWithKey from \"./mergeWithKey.js\";\n\n/**\n * Creates a new object with the own properties of the two provided objects. If\n * a key exists in both objects, the provided function is applied to the values\n * associated with the key in each object, with the result being used as the\n * value associated with the key in the returned object.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Object\n * @sig ((a, a) -> a) -> {a} -> {a} -> {a}\n * @param {Function} fn\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeDeepWith, R.mergeWithKey\n * @example\n *\n * R.mergeWith(R.concat,\n * { a: true, values: [10, 20] },\n * { b: true, values: [15, 35] });\n * //=> { a: true, b: true, values: [10, 20, 15, 35] }\n */\nvar mergeWith = /*#__PURE__*/_curry3(function mergeWith(fn, l, r) {\n return mergeWithKey(function (_, _l, _r) {\n return fn(_l, _r);\n }, l, r);\n});\nexport default mergeWith;","import _curry2 from \"./internal/_curry2.js\";\nimport toString from \"./toString.js\";\n\n/**\n * Returns the smaller of its two arguments.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> a\n * @param {*} a\n * @param {*} b\n * @return {*}\n * @see R.minBy, R.max\n * @example\n *\n * R.min(789, 123); //=> 123\n * R.min('a', 'b'); //=> 'a'\n */\nvar min = /*#__PURE__*/_curry2(function min(a, b) {\n if (a === b) {\n return a;\n }\n function safeMin(x, y) {\n if (x < y !== y < x) {\n return y < x ? y : x;\n }\n return undefined;\n }\n var minByValue = safeMin(a, b);\n if (minByValue !== undefined) {\n return minByValue;\n }\n var minByType = safeMin(typeof a, typeof b);\n if (minByType !== undefined) {\n return minByType === typeof a ? a : b;\n }\n var stringA = toString(a);\n var minByStringValue = safeMin(stringA, toString(b));\n if (minByStringValue !== undefined) {\n return minByStringValue === stringA ? a : b;\n }\n return a;\n});\nexport default min;","import _curry3 from \"./internal/_curry3.js\";\nimport min from \"./min.js\";\n\n/**\n * Takes a function and two values, and returns whichever value produces the\n * smaller result when passed to the provided function.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Relation\n * @sig Ord b => (a -> b) -> a -> a -> a\n * @param {Function} f\n * @param {*} a\n * @param {*} b\n * @return {*}\n * @see R.min, R.maxBy\n * @example\n *\n * // square :: Number -> Number\n * const square = n => n * n;\n *\n * R.minBy(square, -3, 2); //=> 2\n *\n * R.reduce(R.minBy(square), Infinity, [3, -5, 4, 1, -2]); //=> 1\n * R.reduce(R.minBy(square), Infinity, []); //=> Infinity\n */\nvar minBy = /*#__PURE__*/_curry3(function minBy(f, a, b) {\n var resultB = f(b);\n return min(f(a), resultB) === resultB ? b : a;\n});\nexport default minBy;","import _isArray from \"./_isArray.js\";\nimport _isInteger from \"./_isInteger.js\";\n\n/**\n * Makes a shallow clone of an object, applying the given fn to the specified\n * property with the given value. Note that this copies and flattens prototype\n * properties onto the new object as well. All non-primitive properties are\n * copied by reference.\n *\n * @private\n * @param {String|Number} prop The property name to set\n * @param {Function} fn The function to apply to the property\n * @param {Object|Array} obj The object to clone\n * @return {Object|Array} A new object equivalent to the original except for the changed property.\n */\nexport default function _modify(prop, fn, obj) {\n if (_isInteger(prop) && _isArray(obj)) {\n var arr = [].concat(obj);\n arr[prop] = fn(arr[prop]);\n return arr;\n }\n var result = {};\n for (var p in obj) {\n result[p] = obj[p];\n }\n result[prop] = fn(result[prop]);\n return result;\n}","import _curry3 from \"./internal/_curry3.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport _isObject from \"./internal/_isObject.js\";\nimport _has from \"./internal/_has.js\";\nimport _assoc from \"./internal/_assoc.js\";\nimport _modify from \"./internal/_modify.js\";\n\n/**\n * Creates a shallow clone of the passed object by applying an `fn` function\n * to the value at the given path.\n *\n * The function will not be invoked, and the object will not change\n * if its corresponding path does not exist in the object.\n * All non-primitive properties are copied to the new object by reference.\n *\n * @func\n * @memberOf R\n * @since v0.28.0\n * @category Object\n * @sig [Idx] -> (v -> v) -> {k: v} -> {k: v}\n * @param {Array} path The path to be modified.\n * @param {Function} fn The function to apply to the path.\n * @param {Object} object The object to be transformed.\n * @return {Object} The transformed object.\n * @example\n *\n * const person = {name: 'James', address: { zipCode: '90216' }};\n * R.modifyPath(['address', 'zipCode'], R.reverse, person); //=> {name: 'James', address: { zipCode: '61209' }}\n *\n * // Can handle arrays too\n * const person = {name: 'James', addresses: [{ zipCode: '90216' }]};\n * R.modifyPath(['addresses', 0, 'zipCode'], R.reverse, person); //=> {name: 'James', addresses: [{ zipCode: '61209' }]}\n */\nvar modifyPath = /*#__PURE__*/_curry3(function modifyPath(path, fn, object) {\n if (!_isObject(object) && !_isArray(object)) {\n return object;\n }\n if (path.length === 0) {\n return fn(object);\n }\n var idx = path[0];\n if (!_has(idx, object)) {\n return object;\n }\n if (path.length === 1) {\n return _modify(idx, fn, object);\n }\n var val = modifyPath(Array.prototype.slice.call(path, 1), fn, object[idx]);\n if (val === object[idx]) {\n return object;\n }\n return _assoc(idx, val, object);\n});\nexport default modifyPath;","import _curry3 from \"./internal/_curry3.js\";\nimport modifyPath from \"./modifyPath.js\";\n\n/**\n * Creates a copy of the passed object by applying an `fn` function to the given `prop` property.\n *\n * The function will not be invoked, and the object will not change\n * if its corresponding property does not exist in the object.\n * All non-primitive properties are copied to the new object by reference.\n *\n * @func\n * @memberOf R\n * @since v0.28.0\n * @category Object\n * @sig Idx -> (v -> v) -> {k: v} -> {k: v}\n * @param {String|Number} prop The property to be modified.\n * @param {Function} fn The function to apply to the property.\n * @param {Object} object The object to be transformed.\n * @return {Object} The transformed object.\n * @example\n *\n * const person = {name: 'James', age: 20, pets: ['dog', 'cat']};\n * R.modify('age', R.add(1), person); //=> {name: 'James', age: 21, pets: ['dog', 'cat']}\n * R.modify('pets', R.append('turtle'), person); //=> {name: 'James', age: 20, pets: ['dog', 'cat', 'turtle']}\n */\nvar modify = /*#__PURE__*/_curry3(function modify(prop, fn, object) {\n return modifyPath([prop], fn, object);\n});\nexport default modify;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Divides the first parameter by the second and returns the remainder. Note\n * that this function preserves the JavaScript-style behavior for modulo. For\n * mathematical modulo see [`mathMod`](#mathMod).\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category Math\n * @sig Number -> Number -> Number\n * @param {Number} a The value to the divide.\n * @param {Number} b The pseudo-modulus\n * @return {Number} The result of `b % a`.\n * @see R.mathMod\n * @example\n *\n * R.modulo(17, 3); //=> 2\n * // JS behavior:\n * R.modulo(-17, 3); //=> -2\n * R.modulo(17, -3); //=> 2\n *\n * const isOdd = R.modulo(R.__, 2);\n * isOdd(42); //=> 0\n * isOdd(21); //=> 1\n */\nvar modulo = /*#__PURE__*/_curry2(function modulo(a, b) {\n return a % b;\n});\nexport default modulo;","import _curry3 from \"./internal/_curry3.js\";\n\n/**\n * Move an item, at index `from`, to index `to`, in a list of elements.\n * A new list will be created containing the new elements order.\n *\n * @func\n * @memberOf R\n * @since v0.27.1\n * @category List\n * @sig Number -> Number -> [a] -> [a]\n * @param {Number} from The source index\n * @param {Number} to The destination index\n * @param {Array} list The list which will serve to realise the move\n * @return {Array} The new list reordered\n * @example\n *\n * R.move(0, 2, ['a', 'b', 'c', 'd', 'e', 'f']); //=> ['b', 'c', 'a', 'd', 'e', 'f']\n * R.move(-1, 0, ['a', 'b', 'c', 'd', 'e', 'f']); //=> ['f', 'a', 'b', 'c', 'd', 'e'] list rotation\n */\nvar move = /*#__PURE__*/_curry3(function (from, to, list) {\n var length = list.length;\n var result = list.slice();\n var positiveFrom = from < 0 ? length + from : from;\n var positiveTo = to < 0 ? length + to : to;\n var item = result.splice(positiveFrom, 1);\n return positiveFrom < 0 || positiveFrom >= list.length || positiveTo < 0 || positiveTo >= list.length ? list : [].concat(result.slice(0, positiveTo)).concat(item).concat(result.slice(positiveTo, list.length));\n});\nexport default move;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Multiplies two numbers. Equivalent to `a * b` but curried.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig Number -> Number -> Number\n * @param {Number} a The first value.\n * @param {Number} b The second value.\n * @return {Number} The result of `a * b`.\n * @see R.divide\n * @example\n *\n * const double = R.multiply(2);\n * const triple = R.multiply(3);\n * double(3); //=> 6\n * triple(4); //=> 12\n * R.multiply(2, 5); //=> 10\n */\nvar multiply = /*#__PURE__*/_curry2(function multiply(a, b) {\n return a * b;\n});\nexport default multiply;","import mergeDeepRight from \"./mergeDeepRight.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Takes a function `f` and an object, and returns a function `g`.\n * When applied, `g` returns the result of applying `f` to the object\n * provided initially merged deeply (right) with the object provided as an argument to `g`.\n *\n * @func\n * @memberOf R\n * @since v0.28.0\n * @category Function\n * @sig (({ a, b, c, ..., n }) -> x) -> { a, b, c, ...} -> ({ d, e, f, ..., n } -> x)\n * @param {Function} f\n * @param {Object} props\n * @return {Function}\n * @see R.partial, R.partialRight, R.curry, R.mergeDeepRight\n * @example\n *\n * const multiply2 = ({ a, b }) => a * b;\n * const double = R.partialObject(multiply2, { a: 2 });\n * double({ b: 2 }); //=> 4\n *\n * const greet = ({ salutation, title, firstName, lastName }) =>\n * salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!';\n *\n * const sayHello = R.partialObject(greet, { salutation: 'Hello' });\n * const sayHelloToMs = R.partialObject(sayHello, { title: 'Ms.' });\n * sayHelloToMs({ firstName: 'Jane', lastName: 'Jones' }); //=> 'Hello, Ms. Jane Jones!'\n * @symb R.partialObject(f, { a, b })({ c, d }) = f({ a, b, c, d })\n */\nvar partialObject = /*#__PURE__*/_curry2(function partialObject(f, o) {\n return function _partialObject(props) {\n return f(mergeDeepRight(o, props));\n };\n});\nexport default partialObject;","import _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Negates its argument.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Math\n * @sig Number -> Number\n * @param {Number} n\n * @return {Number}\n * @example\n *\n * R.negate(42); //=> -42\n */\nvar negate = /*#__PURE__*/_curry1(function negate(n) {\n return -n;\n});\nexport default negate;","import _complement from \"./internal/_complement.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport all from \"./all.js\";\n\n/**\n * Returns `true` if no elements of the list match the predicate, `false`\n * otherwise.\n *\n * Dispatches to the `all` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> Boolean\n * @param {Function} fn The predicate function.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if the predicate is not satisfied by every element, `false` otherwise.\n * @see R.all, R.any\n * @example\n *\n * const isEven = n => n % 2 === 0;\n * const isOdd = n => n % 2 !== 0;\n *\n * R.none(isEven, [1, 3, 5, 7, 9, 11]); //=> true\n * R.none(isOdd, [1, 3, 5, 7, 8, 11]); //=> false\n */\nvar none = /*#__PURE__*/_curry2(function none(fn, input) {\n return all(_complement(fn), input);\n});\nexport default none;","import _curry2 from \"./internal/_curry2.js\";\nimport _nth from \"./internal/_nth.js\";\n\n/**\n * Returns the nth element of the given list or string. If n is negative the\n * element at index length + n is returned.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -> [a] -> a | Undefined\n * @sig Number -> String -> String | Undefined\n * @param {Number} offset\n * @param {*} list\n * @return {*}\n * @example\n *\n * const list = ['foo', 'bar', 'baz', 'quux'];\n * R.nth(1, list); //=> 'bar'\n * R.nth(-1, list); //=> 'quux'\n * R.nth(-99, list); //=> undefined\n *\n * R.nth(2, 'abc'); //=> 'c'\n * R.nth(3, 'abc'); //=> undefined\n * @symb R.nth(-1, [a, b, c]) = c\n * @symb R.nth(0, [a, b, c]) = a\n * @symb R.nth(1, [a, b, c]) = b\n */\nvar nth = /*#__PURE__*/_curry2(_nth);\nexport default nth;","import _curry1 from \"./internal/_curry1.js\";\nimport _nth from \"./internal/_nth.js\";\nimport curryN from \"./curryN.js\";\n\n/**\n * Returns a function which returns its nth argument.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Function\n * @sig Number -> *... -> *\n * @param {Number} n\n * @return {Function}\n * @example\n *\n * R.nthArg(1)('a', 'b', 'c'); //=> 'b'\n * R.nthArg(-1)('a', 'b', 'c'); //=> 'c'\n * @symb R.nthArg(-1)(a, b, c) = c\n * @symb R.nthArg(0)(a, b, c) = a\n * @symb R.nthArg(1)(a, b, c) = b\n */\nvar nthArg = /*#__PURE__*/_curry1(function nthArg(n) {\n var arity = n < 0 ? 1 : n + 1;\n return curryN(arity, function () {\n return _nth(n, arguments);\n });\n});\nexport default nthArg;","import _curry3 from \"./internal/_curry3.js\";\n\n/**\n * `o` is a curried composition function that returns a unary function.\n * Like [`compose`](#compose), `o` performs right-to-left function composition.\n * Unlike [`compose`](#compose), the rightmost function passed to `o` will be\n * invoked with only one argument. Also, unlike [`compose`](#compose), `o` is\n * limited to accepting only 2 unary functions. The name o was chosen because\n * of its similarity to the mathematical composition operator ∘.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Function\n * @sig (b -> c) -> (a -> b) -> a -> c\n * @param {Function} f\n * @param {Function} g\n * @return {Function}\n * @see R.compose, R.pipe\n * @example\n *\n * const classyGreeting = name => \"The name's \" + name.last + \", \" + name.first + \" \" + name.last\n * const yellGreeting = R.o(R.toUpper, classyGreeting);\n * yellGreeting({first: 'James', last: 'Bond'}); //=> \"THE NAME'S BOND, JAMES BOND\"\n *\n * R.o(R.multiply(10), R.add(10))(-4) //=> 60\n *\n * @symb R.o(f, g, x) = f(g(x))\n */\nvar o = /*#__PURE__*/_curry3(function o(f, g, x) {\n return f(g(x));\n});\nexport default o;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Given a constructor and a value, returns a new instance of that constructor\n * containing the value.\n *\n * Dispatches to the `fantasy-land/of` method of the constructor first (if present)\n * or to the `of` method last (if present). When neither are present, wraps the\n * value in an array.\n *\n * Note this `of` is different from the ES6 `of`; See\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig (* -> {*}) -> a -> {a}\n * @param {Object} Ctor A constructor\n * @param {*} val any value\n * @return {*} An instance of the `Ctor` wrapping `val`.\n * @example\n *\n * R.of(Array, 42); //=> [42]\n * R.of(Array, [42]); //=> [[42]]\n * R.of(Maybe, 42); //=> Maybe.Just(42)\n */\nvar of = /*#__PURE__*/_curry2(function of(Ctor, val) {\n return typeof Ctor['fantasy-land/of'] === 'function' ? Ctor['fantasy-land/of'](val) : typeof Ctor.of === 'function' ? Ctor.of(val) : [val];\n});\nexport default of;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Returns a partial copy of an object omitting the keys specified.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig [String] -> {String: *} -> {String: *}\n * @param {Array} names an array of String property names to omit from the new object\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with properties from `names` not on it.\n * @see R.pick\n * @example\n *\n * R.omit(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, c: 3}\n */\nvar omit = /*#__PURE__*/_curry2(function omit(names, obj) {\n var result = {};\n var index = {};\n var idx = 0;\n var len = names.length;\n while (idx < len) {\n index[names[idx]] = 1;\n idx += 1;\n }\n for (var prop in obj) {\n if (!index.hasOwnProperty(prop)) {\n result[prop] = obj[prop];\n }\n }\n return result;\n});\nexport default omit;","import curryN from \"./internal/_curryN.js\";\n\n/**\n * Takes a binary function `f`, a unary function `g`, and two values.\n * Applies `g` to each value, then applies the result of each to `f`.\n *\n * Also known as the P combinator.\n *\n * @func\n * @memberOf R\n * @since v0.28.0\n * @category Function\n * @sig ((a, a) -> b) -> (c -> a) -> c -> c -> b\n * @param {Function} f a binary function\n * @param {Function} g a unary function\n * @param {any} a any value\n * @param {any} b any value\n * @return {any} The result of `f`\n * @example\n *\n * const eqBy = R.on((a, b) => a === b);\n * eqBy(R.prop('a'), {b:0, a:1}, {a:1}) //=> true;\n *\n * const containsInsensitive = R.on(R.includes, R.toLower);\n * containsInsensitive('o', 'FOO'); //=> true\n * @symb R.on(f, g, a, b) = f(g(a), g(b))\n */\nvar on = /*#__PURE__*/curryN(4, [], function on(f, g, a, b) {\n return f(g(a), g(b));\n});\nexport default on;","import _arity from \"./internal/_arity.js\";\nimport _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Accepts a function `fn` and returns a function that guards invocation of\n * `fn` such that `fn` can only ever be called once, no matter how many times\n * the returned function is invoked. The first value calculated is returned in\n * subsequent invocations.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (a... -> b) -> (a... -> b)\n * @param {Function} fn The function to wrap in a call-only-once wrapper.\n * @return {Function} The wrapped function.\n * @example\n *\n * const addOneOnce = R.once(x => x + 1);\n * addOneOnce(10); //=> 11\n * addOneOnce(addOneOnce(50)); //=> 11\n */\nvar once = /*#__PURE__*/_curry1(function once(fn) {\n var called = false;\n var result;\n return _arity(fn.length, function () {\n if (called) {\n return result;\n }\n called = true;\n result = fn.apply(this, arguments);\n return result;\n });\n});\nexport default once;","import _isFunction from \"./_isFunction.js\";\nimport _toString from \"./_toString.js\";\nexport default function _assertPromise(name, p) {\n if (p == null || !_isFunction(p.then)) {\n throw new TypeError('`' + name + '` expected a Promise, received ' + _toString(p, []));\n }\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _assertPromise from \"./internal/_assertPromise.js\";\n\n/**\n * Returns the result of applying the onFailure function to the value inside\n * a failed promise. This is useful for handling rejected promises\n * inside function compositions.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category Function\n * @sig (e -> b) -> (Promise e a) -> (Promise e b)\n * @sig (e -> (Promise f b)) -> (Promise e a) -> (Promise f b)\n * @param {Function} onFailure The function to apply. Can return a value or a promise of a value.\n * @param {Promise} p\n * @return {Promise} The result of calling `p.then(null, onFailure)`\n * @see R.andThen\n * @example\n *\n * const failedFetch = id => Promise.reject('bad ID');\n * const useDefault = () => ({ firstName: 'Bob', lastName: 'Loblaw' });\n *\n * //recoverFromFailure :: String -> Promise ({ firstName, lastName })\n * const recoverFromFailure = R.pipe(\n * failedFetch,\n * R.otherwise(useDefault),\n * R.andThen(R.pick(['firstName', 'lastName'])),\n * );\n * recoverFromFailure(12345).then(console.log);\n */\nvar otherwise = /*#__PURE__*/_curry2(function otherwise(f, p) {\n _assertPromise('otherwise', p);\n return p.then(null, f);\n});\nexport default otherwise;","import _curry3 from \"./internal/_curry3.js\";\n\n// `Identity` is a functor that holds a single value, where `map` simply\n// transforms the held value with the provided function.\nvar Identity = function (x) {\n return {\n value: x,\n map: function (f) {\n return Identity(f(x));\n }\n };\n};\n\n/**\n * Returns the result of \"setting\" the portion of the given data structure\n * focused by the given lens to the result of applying the given function to\n * the focused value.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig Lens s a -> (a -> a) -> s -> s\n * @param {Lens} lens\n * @param {*} v\n * @param {*} x\n * @return {*}\n * @see R.view, R.set, R.lens, R.lensIndex, R.lensProp, R.lensPath\n * @example\n *\n * const headLens = R.lensIndex(0);\n *\n * R.over(headLens, R.toUpper, ['foo', 'bar', 'baz']); //=> ['FOO', 'bar', 'baz']\n */\nvar over = /*#__PURE__*/_curry3(function over(lens, f, x) {\n // The value returned by the getter function is first transformed with `f`,\n // then set as the value of an `Identity`. This is then mapped over with the\n // setter function of the lens.\n return lens(function (y) {\n return Identity(f(y));\n })(x).value;\n});\nexport default over;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Takes two arguments, `fst` and `snd`, and returns `[fst, snd]`.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category List\n * @sig a -> b -> (a,b)\n * @param {*} fst\n * @param {*} snd\n * @return {Array}\n * @see R.objOf, R.of\n * @example\n *\n * R.pair('foo', 'bar'); //=> ['foo', 'bar']\n */\nvar pair = /*#__PURE__*/_curry2(function pair(fst, snd) {\n return [fst, snd];\n});\nexport default pair;","import _arity from \"./_arity.js\";\nimport _curry2 from \"./_curry2.js\";\nexport default function _createPartialApplicator(concat) {\n return _curry2(function (fn, args) {\n return _arity(Math.max(0, fn.length - args.length), function () {\n return fn.apply(this, concat(args, arguments));\n });\n });\n}","import _concat from \"./internal/_concat.js\";\nimport _createPartialApplicator from \"./internal/_createPartialApplicator.js\";\n\n/**\n * Takes a function `f` and a list of arguments, and returns a function `g`.\n * When applied, `g` returns the result of applying `f` to the arguments\n * provided initially followed by the arguments provided to `g`.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Function\n * @sig ((a, b, c, ..., n) -> x) -> [a, b, c, ...] -> ((d, e, f, ..., n) -> x)\n * @param {Function} f\n * @param {Array} args\n * @return {Function}\n * @see R.partialRight, R.curry\n * @example\n *\n * const multiply2 = (a, b) => a * b;\n * const double = R.partial(multiply2, [2]);\n * double(3); //=> 6\n *\n * const greet = (salutation, title, firstName, lastName) =>\n * salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!';\n *\n * const sayHello = R.partial(greet, ['Hello']);\n * const sayHelloToMs = R.partial(sayHello, ['Ms.']);\n * sayHelloToMs('Jane', 'Jones'); //=> 'Hello, Ms. Jane Jones!'\n * @symb R.partial(f, [a, b])(c, d) = f(a, b, c, d)\n */\nvar partial = /*#__PURE__*/_createPartialApplicator(_concat);\nexport default partial;","import _concat from \"./internal/_concat.js\";\nimport _createPartialApplicator from \"./internal/_createPartialApplicator.js\";\nimport flip from \"./flip.js\";\n\n/**\n * Takes a function `f` and a list of arguments, and returns a function `g`.\n * When applied, `g` returns the result of applying `f` to the arguments\n * provided to `g` followed by the arguments provided initially.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Function\n * @sig ((a, b, c, ..., n) -> x) -> [d, e, f, ..., n] -> ((a, b, c, ...) -> x)\n * @param {Function} f\n * @param {Array} args\n * @return {Function}\n * @see R.partial\n * @example\n *\n * const greet = (salutation, title, firstName, lastName) =>\n * salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!';\n *\n * const greetMsJaneJones = R.partialRight(greet, ['Ms.', 'Jane', 'Jones']);\n *\n * greetMsJaneJones('Hello'); //=> 'Hello, Ms. Jane Jones!'\n * @symb R.partialRight(f, [a, b])(c, d) = f(c, d, a, b)\n */\nvar partialRight = /*#__PURE__*/_createPartialApplicator( /*#__PURE__*/flip(_concat));\nexport default partialRight;","import filter from \"./filter.js\";\nimport juxt from \"./juxt.js\";\nimport reject from \"./reject.js\";\n\n/**\n * Takes a predicate and a list or other `Filterable` object and returns the\n * pair of filterable objects of the same type of elements which do and do not\n * satisfy, the predicate, respectively. Filterable objects include plain objects or any object\n * that has a filter method such as `Array`.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig Filterable f => (a -> Boolean) -> f a -> [f a, f a]\n * @param {Function} pred A predicate to determine which side the element belongs to.\n * @param {Array} filterable the list (or other filterable) to partition.\n * @return {Array} An array, containing first the subset of elements that satisfy the\n * predicate, and second the subset of elements that do not satisfy.\n * @see R.filter, R.reject\n * @example\n *\n * R.partition(R.includes('s'), ['sss', 'ttt', 'foo', 'bars']);\n * // => [ [ 'sss', 'bars' ], [ 'ttt', 'foo' ] ]\n *\n * R.partition(R.includes('s'), { a: 'sss', b: 'ttt', foo: 'bars' });\n * // => [ { a: 'sss', foo: 'bars' }, { b: 'ttt' } ]\n */\nvar partition = /*#__PURE__*/juxt([filter, reject]);\nexport default partition;","import _curry2 from \"./internal/_curry2.js\";\nimport _path from \"./internal/_path.js\";\n\n/**\n * Retrieves the value at a given path. The nodes of the path can be arbitrary strings or non-negative integers.\n * For anything else, the value is unspecified. Integer paths are meant to index arrays, strings are meant for objects.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Object\n * @typedefn Idx = String | Int | Symbol\n * @sig [Idx] -> {a} -> a | Undefined\n * @sig Idx = String | NonNegativeInt\n * @param {Array} path The path to use.\n * @param {Object} obj The object or array to retrieve the nested property from.\n * @return {*} The data at `path`.\n * @see R.prop, R.nth, R.assocPath, R.dissocPath\n * @example\n *\n * R.path(['a', 'b'], {a: {b: 2}}); //=> 2\n * R.path(['a', 'b'], {c: {b: 2}}); //=> undefined\n * R.path(['a', 'b', 0], {a: {b: [1, 2, 3]}}); //=> 1\n * R.path(['a', 'b', -2], {a: {b: [1, 2, 3]}}); //=> 2\n * R.path([2], {'2': 2}); //=> 2\n * R.path([-2], {'-2': 'a'}); //=> undefined\n */\n\nvar path = /*#__PURE__*/_curry2(_path);\nexport default path;","import _curry2 from \"./internal/_curry2.js\";\nimport _isInteger from \"./internal/_isInteger.js\";\nimport _nth from \"./internal/_nth.js\";\n\n/**\n * Retrieves the values at given paths of an object.\n *\n * @func\n * @memberOf R\n * @since v0.27.1\n * @category Object\n * @typedefn Idx = [String | Int | Symbol]\n * @sig [Idx] -> {a} -> [a | Undefined]\n * @param {Array} pathsArray The array of paths to be fetched.\n * @param {Object} obj The object to retrieve the nested properties from.\n * @return {Array} A list consisting of values at paths specified by \"pathsArray\".\n * @see R.path\n * @example\n *\n * R.paths([['a', 'b'], ['p', 0, 'q']], {a: {b: 2}, p: [{q: 3}]}); //=> [2, 3]\n * R.paths([['a', 'b'], ['p', 'r']], {a: {b: 2}, p: [{q: 3}]}); //=> [2, undefined]\n */\nvar paths = /*#__PURE__*/_curry2(function paths(pathsArray, obj) {\n return pathsArray.map(function (paths) {\n var val = obj;\n var idx = 0;\n var p;\n while (idx < paths.length) {\n if (val == null) {\n return;\n }\n p = paths[idx];\n val = _isInteger(p) ? _nth(p, val) : val[p];\n idx += 1;\n }\n return val;\n });\n});\nexport default paths;","import _curry3 from \"./internal/_curry3.js\";\nimport _path from \"./internal/_path.js\";\nimport equals from \"./equals.js\";\n\n/**\n * Determines whether a nested path on an object has a specific value, in\n * [`R.equals`](#equals) terms. Most likely used to filter a list.\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Relation\n * @typedefn Idx = String | Int | Symbol\n * @sig a -> [Idx] -> {a} -> Boolean\n * @param {*} val The value to compare the nested property with\n * @param {Array} path The path of the nested property to use\n * @param {Object} obj The object to check the nested property in\n * @return {Boolean} `true` if the value equals the nested object property,\n * `false` otherwise.\n * @see R.whereEq, R.propEq, R.pathSatisfies, R.equals\n * @example\n *\n * const user1 = { address: { zipCode: 90210 } };\n * const user2 = { address: { zipCode: 55555 } };\n * const user3 = { name: 'Bob' };\n * const users = [ user1, user2, user3 ];\n * const isFamous = R.pathEq(90210, ['address', 'zipCode']);\n * R.filter(isFamous, users); //=> [ user1 ]\n */\nvar pathEq = /*#__PURE__*/_curry3(function pathEq(val, pathAr, obj) {\n return equals(_path(pathAr, obj), val);\n});\nexport default pathEq;","import _curry3 from \"./internal/_curry3.js\";\nimport _path from \"./internal/_path.js\";\nimport defaultTo from \"./defaultTo.js\";\n\n/**\n * If the given, non-null object has a value at the given path, returns the\n * value at that path. Otherwise returns the provided default value.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category Object\n * @typedefn Idx = String | Int | Symbol\n * @sig a -> [Idx] -> {a} -> a\n * @param {*} d The default value.\n * @param {Array} p The path to use.\n * @param {Object} obj The object to retrieve the nested property from.\n * @return {*} The data at `path` of the supplied object or the default value.\n * @example\n *\n * R.pathOr('N/A', ['a', 'b'], {a: {b: 2}}); //=> 2\n * R.pathOr('N/A', ['a', 'b'], {c: {b: 2}}); //=> \"N/A\"\n */\nvar pathOr = /*#__PURE__*/_curry3(function pathOr(d, p, obj) {\n return defaultTo(d, _path(p, obj));\n});\nexport default pathOr;","import _curry3 from \"./internal/_curry3.js\";\nimport _path from \"./internal/_path.js\";\n\n/**\n * Returns `true` if the specified object property at given path satisfies the\n * given predicate; `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Logic\n * @typedefn Idx = String | Int | Symbol\n * @sig (a -> Boolean) -> [Idx] -> {a} -> Boolean\n * @param {Function} pred\n * @param {Array} propPath\n * @param {*} obj\n * @return {Boolean}\n * @see R.propSatisfies, R.path\n * @example\n *\n * R.pathSatisfies(y => y > 0, ['x', 'y'], {x: {y: 2}}); //=> true\n * R.pathSatisfies(R.is(Object), [], {x: {y: 2}}); //=> true\n */\nvar pathSatisfies = /*#__PURE__*/_curry3(function pathSatisfies(pred, propPath, obj) {\n return pred(_path(propPath, obj));\n});\nexport default pathSatisfies;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Returns a partial copy of an object containing only the keys specified. If\n * the key does not exist, the property is ignored.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig [k] -> {k: v} -> {k: v}\n * @param {Array} names an array of String property names to copy onto a new object\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with only properties from `names` on it.\n * @see R.omit, R.props\n * @example\n *\n * R.pick(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4}\n * R.pick(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1}\n */\nvar pick = /*#__PURE__*/_curry2(function pick(names, obj) {\n var result = {};\n var idx = 0;\n while (idx < names.length) {\n if (names[idx] in obj) {\n result[names[idx]] = obj[names[idx]];\n }\n idx += 1;\n }\n return result;\n});\nexport default pick;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Similar to `pick` except that this one includes a `key: undefined` pair for\n * properties that don't exist.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig [k] -> {k: v} -> {k: v}\n * @param {Array} names an array of String property names to copy onto a new object\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with only properties from `names` on it.\n * @see R.pick\n * @example\n *\n * R.pickAll(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4}\n * R.pickAll(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, e: undefined, f: undefined}\n */\nvar pickAll = /*#__PURE__*/_curry2(function pickAll(names, obj) {\n var result = {};\n var idx = 0;\n var len = names.length;\n while (idx < len) {\n var name = names[idx];\n result[name] = obj[name];\n idx += 1;\n }\n return result;\n});\nexport default pickAll;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Returns a partial copy of an object containing only the keys that satisfy\n * the supplied predicate.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @sig ((v, k) -> Boolean) -> {k: v} -> {k: v}\n * @param {Function} pred A predicate to determine whether or not a key\n * should be included on the output object.\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with only properties that satisfy `pred`\n * on it.\n * @see R.pick, R.filter\n * @example\n *\n * const isUpperCase = (val, key) => key.toUpperCase() === key;\n * R.pickBy(isUpperCase, {a: 1, b: 2, A: 3, B: 4}); //=> {A: 3, B: 4}\n */\nvar pickBy = /*#__PURE__*/_curry2(function pickBy(test, obj) {\n var result = {};\n for (var prop in obj) {\n if (test(obj[prop], prop, obj)) {\n result[prop] = obj[prop];\n }\n }\n return result;\n});\nexport default pickBy;","import _concat from \"./internal/_concat.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Returns a new list with the given element at the front, followed by the\n * contents of the list.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -> [a] -> [a]\n * @param {*} el The item to add to the head of the output list.\n * @param {Array} list The array to add to the tail of the output list.\n * @return {Array} A new array.\n * @see R.append\n * @example\n *\n * R.prepend('fee', ['fi', 'fo', 'fum']); //=> ['fee', 'fi', 'fo', 'fum']\n */\nvar prepend = /*#__PURE__*/_curry2(function prepend(el, list) {\n return _concat([el], list);\n});\nexport default prepend;","import multiply from \"./multiply.js\";\nimport reduce from \"./reduce.js\";\n\n/**\n * Multiplies together all the elements of a list.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig [Number] -> Number\n * @param {Array} list An array of numbers\n * @return {Number} The product of all the numbers in the list.\n * @see R.reduce\n * @example\n *\n * R.product([2,4,6,8,100,1]); //=> 38400\n */\nvar product = /*#__PURE__*/reduce(multiply, 1);\nexport default product;","import _curry2 from \"./internal/_curry2.js\";\nimport curryN from \"./curryN.js\";\n\n/**\n * Accepts a function `fn` and a list of transformer functions and returns a\n * new curried function. When the new function is invoked, it calls the\n * function `fn` with parameters consisting of the result of calling each\n * supplied handler on successive arguments to the new function.\n *\n * If more arguments are passed to the returned function than transformer\n * functions, those arguments are passed directly to `fn` as additional\n * parameters. If you expect additional arguments that don't need to be\n * transformed, although you can ignore them, it's best to pass an identity\n * function so that the new function reports the correct arity.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((x1, x2, ...) -> z) -> [(a -> x1), (b -> x2), ...] -> (a -> b -> ... -> z)\n * @param {Function} fn The function to wrap.\n * @param {Array} transformers A list of transformer functions\n * @return {Function} The wrapped function.\n * @see R.converge\n * @example\n *\n * R.useWith(Math.pow, [R.identity, R.identity])(3, 4); //=> 81\n * R.useWith(Math.pow, [R.identity, R.identity])(3)(4); //=> 81\n * R.useWith(Math.pow, [R.dec, R.inc])(3, 4); //=> 32\n * R.useWith(Math.pow, [R.dec, R.inc])(3)(4); //=> 32\n * @symb R.useWith(f, [g, h])(a, b) = f(g(a), h(b))\n */\nvar useWith = /*#__PURE__*/_curry2(function useWith(fn, transformers) {\n return curryN(transformers.length, function () {\n var args = [];\n var idx = 0;\n while (idx < transformers.length) {\n args.push(transformers[idx].call(this, arguments[idx]));\n idx += 1;\n }\n return fn.apply(this, args.concat(Array.prototype.slice.call(arguments, transformers.length)));\n });\n});\nexport default useWith;","import _map from \"./internal/_map.js\";\nimport identity from \"./identity.js\";\nimport pickAll from \"./pickAll.js\";\nimport useWith from \"./useWith.js\";\n\n/**\n * Reasonable analog to SQL `select` statement.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @category Relation\n * @sig [k] -> [{k: v}] -> [{k: v}]\n * @param {Array} props The property names to project\n * @param {Array} objs The objects to query\n * @return {Array} An array of objects with just the `props` properties.\n * @see R.pluck, R.props, R.prop\n * @example\n *\n * const abby = {name: 'Abby', age: 7, hair: 'blond', grade: 2};\n * const fred = {name: 'Fred', age: 12, hair: 'brown', grade: 7};\n * const kids = [abby, fred];\n * R.project(['name', 'grade'], kids); //=> [{name: 'Abby', grade: 2}, {name: 'Fred', grade: 7}]\n */\nvar project = /*#__PURE__*/useWith(_map, [pickAll, identity]); // passing `identity` gives correct arity\nexport default project;","export default function _promap(f, g, profunctor) {\n return function (x) {\n return g(profunctor(f(x)));\n };\n}","import _xfBase from \"./_xfBase.js\";\nimport _promap from \"./_promap.js\";\nvar XPromap = /*#__PURE__*/function () {\n function XPromap(f, g, xf) {\n this.xf = xf;\n this.f = f;\n this.g = g;\n }\n XPromap.prototype['@@transducer/init'] = _xfBase.init;\n XPromap.prototype['@@transducer/result'] = _xfBase.result;\n XPromap.prototype['@@transducer/step'] = function (result, input) {\n return this.xf['@@transducer/step'](result, _promap(this.f, this.g, input));\n };\n return XPromap;\n}();\nexport default function _xpromap(f, g) {\n return function (xf) {\n return new XPromap(f, g, xf);\n };\n}","import _curry3 from \"./internal/_curry3.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _promap from \"./internal/_promap.js\";\nimport _xpromap from \"./internal/_xpromap.js\";\n\n/**\n * Takes two functions as pre- and post- processors respectively for a third function,\n * i.e. `promap(f, g, h)(x) === g(h(f(x)))`.\n *\n * Dispatches to the `promap` method of the third argument, if present,\n * according to the [FantasyLand Profunctor spec](https://github.com/fantasyland/fantasy-land#profunctor).\n *\n * Acts as a transducer if a transformer is given in profunctor position.\n *\n * @func\n * @memberOf R\n * @since v0.28.0\n * @category Function\n * @sig (a -> b) -> (c -> d) -> (b -> c) -> (a -> d)\n * @sig Profunctor p => (a -> b) -> (c -> d) -> p b c -> p a d\n * @param {Function} f The preprocessor function, a -> b\n * @param {Function} g The postprocessor function, c -> d\n * @param {Profunctor} profunctor The profunctor instance to be promapped, e.g. b -> c\n * @return {Profunctor} The new profunctor instance, e.g. a -> d\n * @see R.transduce\n * @example\n *\n * const decodeChar = R.promap(s => s.charCodeAt(), String.fromCharCode, R.add(-8))\n * const decodeString = R.promap(R.split(''), R.join(''), R.map(decodeChar))\n * decodeString(\"ziuli\") //=> \"ramda\"\n *\n * @symb R.promap(f, g, h) = x => g(h(f(x)))\n * @symb R.promap(f, g, profunctor) = profunctor.promap(f, g)\n */\nvar promap = /*#__PURE__*/_curry3( /*#__PURE__*/_dispatchable(['fantasy-land/promap', 'promap'], _xpromap, _promap));\nexport default promap;","import _curry3 from \"./internal/_curry3.js\";\nimport prop from \"./prop.js\";\nimport equals from \"./equals.js\";\n\n/**\n * Returns `true` if the specified object property is equal, in\n * [`R.equals`](#equals) terms, to the given value; `false` otherwise.\n * You can test multiple properties with [`R.whereEq`](#whereEq),\n * and test nested path property with [`R.pathEq`](#pathEq).\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig a -> String -> Object -> Boolean\n * @param {*} val The value to compare the property with\n * @param {String} name the specified object property's key\n * @param {*} obj The object to check the property in\n * @return {Boolean} `true` if the value equals the specified object property,\n * `false` otherwise.\n * @see R.whereEq, R.pathEq, R.propSatisfies, R.equals\n * @example\n *\n * const abby = {name: 'Abby', age: 7, hair: 'blond'};\n * const fred = {name: 'Fred', age: 12, hair: 'brown'};\n * const rusty = {name: 'Rusty', age: 10, hair: 'brown'};\n * const alois = {name: 'Alois', age: 15, disposition: 'surly'};\n * const kids = [abby, fred, rusty, alois];\n * const hasBrownHair = R.propEq('brown', 'hair');\n * R.filter(hasBrownHair, kids); //=> [fred, rusty]\n */\nvar propEq = /*#__PURE__*/_curry3(function propEq(val, name, obj) {\n return equals(val, prop(name, obj));\n});\nexport default propEq;","import _curry3 from \"./internal/_curry3.js\";\nimport prop from \"./prop.js\";\nimport is from \"./is.js\";\n\n/**\n * Returns `true` if the specified object property is of the given type;\n * `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Type\n * @sig Type -> String -> Object -> Boolean\n * @param {Function} type\n * @param {String} name\n * @param {*} obj\n * @return {Boolean}\n * @see R.is, R.propSatisfies\n * @example\n *\n * R.propIs(Number, 'x', {x: 1, y: 2}); //=> true\n * R.propIs(Number, 'x', {x: 'foo'}); //=> false\n * R.propIs(Number, 'x', {}); //=> false\n */\nvar propIs = /*#__PURE__*/_curry3(function propIs(type, name, obj) {\n return is(type, prop(name, obj));\n});\nexport default propIs;","import _curry3 from \"./internal/_curry3.js\";\nimport defaultTo from \"./defaultTo.js\";\nimport prop from \"./prop.js\";\n\n/**\n * Return the specified property of the given non-null object if the property\n * is present and it's value is not `null`, `undefined` or `NaN`.\n *\n * Otherwise the first argument is returned.\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Object\n * @sig a -> String -> Object -> a\n * @param {*} val The default value.\n * @param {String} p The name of the property to return.\n * @param {Object} obj The object to query.\n * @return {*} The value of given property of the supplied object or the default value.\n * @example\n *\n * const alice = {\n * name: 'ALICE',\n * age: 101\n * };\n * const favorite = R.prop('favoriteLibrary');\n * const favoriteWithDefault = R.propOr('Ramda', 'favoriteLibrary');\n *\n * favorite(alice); //=> undefined\n * favoriteWithDefault(alice); //=> 'Ramda'\n */\nvar propOr = /*#__PURE__*/_curry3(function propOr(val, p, obj) {\n return defaultTo(val, prop(p, obj));\n});\nexport default propOr;","import _curry3 from \"./internal/_curry3.js\";\nimport prop from \"./prop.js\";\n\n/**\n * Returns `true` if the specified object property satisfies the given\n * predicate; `false` otherwise. You can test multiple properties with\n * [`R.where`](#where).\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Logic\n * @sig (a -> Boolean) -> String -> {String: a} -> Boolean\n * @param {Function} pred\n * @param {String} name\n * @param {*} obj\n * @return {Boolean}\n * @see R.where, R.propEq, R.propIs\n * @example\n *\n * R.propSatisfies(x => x > 0, 'x', {x: 1, y: 2}); //=> true\n */\nvar propSatisfies = /*#__PURE__*/_curry3(function propSatisfies(pred, name, obj) {\n return pred(prop(name, obj));\n});\nexport default propSatisfies;","import _curry2 from \"./internal/_curry2.js\";\nimport prop from \"./prop.js\";\n\n/**\n * Acts as multiple `prop`: array of keys in, array of values out. Preserves\n * order.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig [k] -> {k: v} -> [v]\n * @param {Array} ps The property names to fetch\n * @param {Object} obj The object to query\n * @return {Array} The corresponding values or partially applied function.\n * @see R.prop, R.pluck, R.project\n * @example\n *\n * R.props(['x', 'y'], {x: 1, y: 2}); //=> [1, 2]\n * R.props(['c', 'a', 'b'], {b: 2, a: 1}); //=> [undefined, 1, 2]\n *\n * const fullName = R.compose(R.join(' '), R.props(['first', 'last']));\n * fullName({last: 'Bullet-Tooth', age: 33, first: 'Tony'}); //=> 'Tony Bullet-Tooth'\n */\nvar props = /*#__PURE__*/_curry2(function props(ps, obj) {\n return ps.map(function (p) {\n return prop(p, obj);\n });\n});\nexport default props;","import _curry2 from \"./internal/_curry2.js\";\nimport _isNumber from \"./internal/_isNumber.js\";\n\n/**\n * Returns a list of numbers from `from` (inclusive) to `to` (exclusive).\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -> Number -> [Number]\n * @param {Number} from The first number in the list.\n * @param {Number} to One more than the last number in the list.\n * @return {Array} The list of numbers in the set `[a, b)`.\n * @example\n *\n * R.range(1, 5); //=> [1, 2, 3, 4]\n * R.range(1, 5.5); //=> [1, 2, 3, 4, 5]\n * R.range(1.5, 5.5); //=> [1.5, 2.5, 3.5, 4.5]\n */\nvar range = /*#__PURE__*/_curry2(function range(from, to) {\n if (!(_isNumber(from) && _isNumber(to))) {\n throw new TypeError('Both arguments to range must be numbers');\n }\n var length = from < to ? Math.ceil(to - from) : 0;\n var result = Array(length);\n var idx = 0;\n while (idx < length) {\n result[idx] = idx + from;\n idx += 1;\n }\n return result;\n});\nexport default range;","import _curry2 from \"./internal/_curry2.js\";\nimport _rebuild from \"./internal/_rebuild.js\";\n\n/**\n * Transforms an object into a new one, applying to every key-value pair a\n * function creating zero, one, or many new key-value pairs, and combining\n * the results into a single object.\n *\n * @func\n * @memberOf R\n * @since v0.31.0\n * @category List\n * @sig ([String, a] -> [[String, b]]) -> {k: a} -> {k: b}\n * @param {Function} convert A function that converts a key and a value to an array of key-value arrays.\n * @param {Object} obj The structure to convert\n * @return {Array} A new object whose key-value pairs are the result of applying the `convert` function\n * to every key-value pair in `obj`.\n * @see R.map, R.mapKeys, R.renameKeys\n * @example\n *\n * R.rebuild((k, v) => [[k.toUpperCase(), v * v]], {a: 1, b: 2, c: 3}) //=> {A: 1, B: 4, C: 9}\n */\nvar rebuild = /*#__PURE__*/_curry2(_rebuild);\nexport default rebuild;","import _curry3 from \"./internal/_curry3.js\";\n\n/**\n * Returns a single item by iterating through the list, successively calling\n * the iterator function and passing it an accumulator value and the current\n * value from the array, and then passing the result to the next call.\n *\n * Similar to [`reduce`](#reduce), except moves through the input list from the\n * right to the left.\n *\n * The iterator function receives two values: *(value, acc)*, while the arguments'\n * order of `reduce`'s iterator function is *(acc, value)*. `reduceRight` may use [`reduced`](#reduced)\n * to short circuit the iteration.\n *\n * Note: `R.reduceRight` does not skip deleted or unassigned indices (sparse\n * arrays), unlike the native `Array.prototype.reduceRight` method. For more details\n * on this behavior, see:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduceRight#Description\n *\n * Be cautious of mutating and returning the accumulator. If you reuse it across\n * invocations, it will continue to accumulate onto the same value. The general\n * recommendation is to always return a new value. If you can't do so for\n * performance reasons, then be sure to reinitialize the accumulator on each\n * invocation.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, b) -> b) -> b -> [a] -> b\n * @param {Function} fn The iterator function. Receives two values, the current element from the array\n * and the accumulator.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduce, R.addIndex, R.reduced\n * @example\n *\n * R.reduceRight(R.subtract, 0, [1, 2, 3, 4]) // => (1 - (2 - (3 - (4 - 0)))) = -2\n * // - -2\n * // / \\ / \\\n * // 1 - 1 3\n * // / \\ / \\\n * // 2 - ==> 2 -1\n * // / \\ / \\\n * // 3 - 3 4\n * // / \\ / \\\n * // 4 0 4 0\n *\n * @symb R.reduceRight(f, a, [b, c, d]) = f(b, f(c, f(d, a)))\n */\nvar reduceRight = /*#__PURE__*/_curry3(function reduceRight(fn, acc, list) {\n var idx = list.length - 1;\n while (idx >= 0) {\n acc = fn(list[idx], acc);\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n idx -= 1;\n }\n return acc;\n});\nexport default reduceRight;","import _curryN from \"./internal/_curryN.js\";\nimport _xReduce from \"./internal/_xReduce.js\";\nimport _xwrap from \"./internal/_xwrap.js\";\nimport _reduced from \"./internal/_reduced.js\";\n\n/**\n * Like [`reduce`](#reduce), `reduceWhile` returns a single item by iterating\n * through the list, successively calling the iterator function. `reduceWhile`\n * also takes a predicate that is evaluated before each step. If the predicate\n * returns `false`, it \"short-circuits\" the iteration and returns the current\n * value of the accumulator. `reduceWhile` may alternatively be short-circuited\n * via [`reduced`](#reduced).\n *\n * @func\n * @memberOf R\n * @since v0.22.0\n * @category List\n * @sig ((a, b) -> Boolean) -> ((a, b) -> a) -> a -> [b] -> a\n * @param {Function} pred The predicate. It is passed the accumulator and the\n * current element.\n * @param {Function} fn The iterator function. Receives two values, the\n * accumulator and the current element.\n * @param {*} a The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduce, R.reduced\n * @example\n *\n * const isOdd = (acc, x) => x % 2 !== 0;\n * const xs = [1, 3, 5, 60, 777, 800];\n * R.reduceWhile(isOdd, R.add, 0, xs); //=> 9\n *\n * const ys = [2, 4, 6]\n * R.reduceWhile(isOdd, R.add, 111, ys); //=> 111\n */\nvar reduceWhile = /*#__PURE__*/_curryN(4, [], function _reduceWhile(pred, fn, a, list) {\n var xf = _xwrap(function (acc, x) {\n return pred(acc, x) ? fn(acc, x) : _reduced(acc);\n });\n return _xReduce(xf, a, list);\n});\nexport default reduceWhile;","import _curry1 from \"./internal/_curry1.js\";\nimport _reduced from \"./internal/_reduced.js\";\n\n/**\n * Returns a value wrapped to indicate that it is the final value of the reduce\n * and transduce functions. The returned value should be considered a black\n * box: the internal structure is not guaranteed to be stable.\n *\n * This optimization is available to the below functions:\n * - [`reduce`](#reduce)\n * - [`reduceWhile`](#reduceWhile)\n * - [`reduceBy`](#reduceBy)\n * - [`reduceRight`](#reduceRight)\n * - [`transduce`](#transduce)\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category List\n * @sig a -> *\n * @param {*} x The final value of the reduce.\n * @return {*} The wrapped value.\n * @see R.reduce, R.reduceWhile, R.reduceBy, R.reduceRight, R.transduce\n * @example\n *\n * R.reduce(\n * (acc, item) => item > 3 ? R.reduced(acc) : acc.concat(item),\n * [],\n * [1, 2, 3, 4, 5]) // [1, 2, 3]\n */\nvar reduced = /*#__PURE__*/_curry1(_reduced);\nexport default reduced;","import _curry2 from \"./internal/_curry2.js\";\nimport _has from \"./internal/_has.js\";\nimport _mapKeys from \"./internal/_mapKeys.js\";\n\n/**\n * Converts an object to a new one by changing all keys that are also found as keys in a mapping\n * object to their corresponding values from that object.\n *\n * @func\n * @memberOf R\n * @since v0.31.0\n * @category Object\n * @sig Object -> Object -> Object\n * @param {Function} mapping An object pairing existing keys with new ones\n * @param {Object} obj A target object to convert\n * @return {Object} The result of replacing existing keys with their mapping counterparts when such exist\n * @see R.mapKeys, R.rebuild\n * @example\n *\n * var mapping = { name: 'firstName', address: 'street' };\n * var obj = { name: 'John', city: 'Paris' };\n *\n * R.renameKeys(mapping, obj) //=> { firstName: 'John', city: 'Paris' }\n */\nvar renameKeys = /*#__PURE__*/_curry2(function renameKeys(mapping, obj) {\n return _mapKeys(function (key) {\n return _has(key, mapping) ? mapping[key] : key;\n }, obj);\n});\nexport default renameKeys;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Calls an input function `n` times, returning an array containing the results\n * of those function calls.\n *\n * `fn` is passed one argument: The current value of `n`, which begins at `0`\n * and is gradually incremented to `n - 1`.\n *\n * @func\n * @memberOf R\n * @since v0.2.3\n * @category List\n * @sig (Number -> a) -> Number -> [a]\n * @param {Function} fn The function to invoke. Passed one argument, the current value of `n`.\n * @param {Number} n A value between `0` and `n - 1`. Increments after each function call.\n * @return {Array} An array containing the return values of all calls to `fn`.\n * @see R.repeat\n * @example\n *\n * R.times(R.identity, 5); //=> [0, 1, 2, 3, 4]\n * @symb R.times(f, 0) = []\n * @symb R.times(f, 1) = [f(0)]\n * @symb R.times(f, 2) = [f(0), f(1)]\n */\nvar times = /*#__PURE__*/_curry2(function times(fn, n) {\n var len = Number(n);\n if (len < 0 || isNaN(len)) {\n throw new RangeError('n must be a non-negative number');\n }\n var idx = 0;\n var list = Array(len);\n while (idx < len) {\n list[idx] = fn(idx);\n idx += 1;\n }\n return list;\n});\nexport default times;","import _curry2 from \"./internal/_curry2.js\";\nimport always from \"./always.js\";\nimport times from \"./times.js\";\n\n/**\n * Returns a fixed list of size `n` containing a specified identical value.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig a -> n -> [a]\n * @param {*} value The value to repeat.\n * @param {Number} n The desired size of the output list.\n * @return {Array} A new array containing `n` `value`s.\n * @see R.times\n * @example\n *\n * R.repeat('hi', 5); //=> ['hi', 'hi', 'hi', 'hi', 'hi']\n *\n * const obj = {};\n * const repeatedObjs = R.repeat(obj, 5); //=> [{}, {}, {}, {}, {}]\n * repeatedObjs[0] === repeatedObjs[1]; //=> true\n * @symb R.repeat(a, 0) = []\n * @symb R.repeat(a, 1) = [a]\n * @symb R.repeat(a, 2) = [a, a]\n */\nvar repeat = /*#__PURE__*/_curry2(function repeat(value, n) {\n return times(always(value), n);\n});\nexport default repeat;","import _curry3 from \"./internal/_curry3.js\";\n\n/**\n * Replace a substring or regex match in a string with a replacement.\n *\n * The first two parameters correspond to the parameters of the\n * `String.prototype.replace()` function, so the second parameter can also be a\n * function.\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category String\n * @sig RegExp|String -> String -> String -> String\n * @param {RegExp|String} pattern A regular expression or a substring to match.\n * @param {String} replacement The string to replace the matches with.\n * @param {String} str The String to do the search and replacement in.\n * @return {String} The result.\n * @example\n *\n * R.replace('foo', 'bar', 'foo foo foo'); //=> 'bar foo foo'\n * R.replace(/foo/, 'bar', 'foo foo foo'); //=> 'bar foo foo'\n *\n * // Use the \"g\" (global) flag to replace all occurrences:\n * R.replace(/foo/g, 'bar', 'foo foo foo'); //=> 'bar bar bar'\n */\nvar replace = /*#__PURE__*/_curry3(function replace(regex, replacement, str) {\n return str.replace(regex, replacement);\n});\nexport default replace;","import _curry3 from \"./_curry3.js\";\nimport _xfBase from \"./_xfBase.js\";\nvar tInit = '@@transducer/init';\nvar tStep = '@@transducer/step';\nvar XScan = /*#__PURE__*/function () {\n function XScan(reducer, acc, xf) {\n this.xf = xf;\n this.f = reducer;\n this.acc = acc;\n }\n XScan.prototype[tInit] = function () {\n return this.xf[tStep](this.xf[tInit](), this.acc);\n };\n XScan.prototype['@@transducer/result'] = _xfBase.result;\n XScan.prototype[tStep] = function (result, input) {\n if (result['@@transducer/reduced']) {\n return result;\n }\n this.acc = this.f(this.acc, input);\n return this.xf[tStep](result, this.acc);\n };\n return XScan;\n}();\nvar _xscan = /*#__PURE__*/_curry3(function _xscan(reducer, acc, xf) {\n return new XScan(reducer, acc, xf);\n});\nexport default _xscan;","import _curry3 from \"./internal/_curry3.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xscan from \"./internal/_xscan.js\";\n\n/**\n * Scan is similar to [`reduce`](#reduce), but returns a list of successively\n * reduced values from the left.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig ((a, b) -> a) -> a -> [b] -> [a]\n * @param {Function} fn The iterator function. Receives two values, the accumulator and the\n * current element from the array\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {Array} A list of all intermediately reduced values.\n * @see R.reduce, R.mapAccum\n * @example\n *\n * const numbers = [1, 2, 3, 4];\n * const factorials = R.scan(R.multiply, 1, numbers); //=> [1, 1, 2, 6, 24]\n * @symb R.scan(f, a, [b, c]) = [a, f(a, b), f(f(a, b), c)]\n */\nvar scan = /*#__PURE__*/_curry3( /*#__PURE__*/_dispatchable([], _xscan, function scan(fn, acc, list) {\n var idx = 0;\n var len = list.length;\n var result = Array(len + 1);\n result[0] = acc;\n while (idx < len) {\n acc = fn(acc, list[idx]);\n result[idx + 1] = acc;\n idx += 1;\n }\n return result;\n}));\nexport default scan;","import _curry2 from \"./internal/_curry2.js\";\nimport ap from \"./ap.js\";\nimport map from \"./map.js\";\nimport prepend from \"./prepend.js\";\nimport reduceRight from \"./reduceRight.js\";\nimport identity from \"./internal/_identity.js\";\n\n/**\n * Transforms a [Traversable](https://github.com/fantasyland/fantasy-land#traversable)\n * of [Applicative](https://github.com/fantasyland/fantasy-land#applicative) into an\n * Applicative of Traversable.\n *\n * Dispatches to the `\"fantasy-land/traverse\"` or the `traverse` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig fantasy-land/of :: TypeRep f => f ~> a -> f a\n * @sig (Applicative f, Traversable t) => TypeRep f -> t (f a) -> f (t a)\n * @sig (Applicative f, Traversable t) => (a -> f a) -> t (f a) -> f (t a)\n * @param {Object|Function} TypeRepresentative with an `of` or `fantasy-land/of` method\n * @param {*} traversable\n * @return {*}\n * @see R.traverse\n * @example\n *\n * R.sequence(Maybe.of, [Just(1), Just(2), Just(3)]); //=> Just([1, 2, 3])\n * R.sequence(Maybe.of, [Just(1), Just(2), Nothing()]); //=> Nothing()\n *\n * R.sequence(R.of(Array), Just([1, 2, 3])); //=> [Just(1), Just(2), Just(3)]\n * R.sequence(R.of(Array), Nothing()); //=> [Nothing()]\n */\nvar sequence = /*#__PURE__*/_curry2(function sequence(F, traversable) {\n var of = typeof F['fantasy-land/of'] === 'function' ? F['fantasy-land/of'] : typeof F.of === 'function' ? F.of : F;\n var TypeRep = {\n 'fantasy-land/of': of\n };\n return typeof traversable['fantasy-land/traverse'] === 'function' ? traversable['fantasy-land/traverse'](TypeRep, identity) : typeof traversable.traverse === 'function' ? traversable.traverse(TypeRep, identity) : reduceRight(function (x, acc) {\n return ap(map(prepend, x), acc);\n }, of([]), traversable);\n});\nexport default sequence;","import _curry3 from \"./internal/_curry3.js\";\nimport always from \"./always.js\";\nimport over from \"./over.js\";\n\n/**\n * Returns the result of \"setting\" the portion of the given data structure\n * focused by the given lens to the given value.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig Lens s a -> a -> s -> s\n * @param {Lens} lens\n * @param {*} v\n * @param {*} x\n * @return {*}\n * @see R.view, R.over, R.lens, R.lensIndex, R.lensProp, R.lensPath\n * @example\n *\n * const xLens = R.lensProp('x');\n *\n * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2}\n * R.set(xLens, 8, {x: 1, y: 2}); //=> {x: 8, y: 2}\n */\nvar set = /*#__PURE__*/_curry3(function set(lens, v, x) {\n return over(lens, always(v), x);\n});\nexport default set;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Returns a copy of the list, sorted according to the comparator function,\n * which should accept two values at a time and return a negative number if the\n * first value is smaller, a positive number if it's larger, and zero if they\n * are equal. Please note that this is a **copy** of the list. It does not\n * modify the original.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, a) -> Number) -> [a] -> [a]\n * @param {Function} comparator A sorting function :: a -> b -> Int\n * @param {Array} list The list to sort\n * @return {Array} a new array with its elements sorted by the comparator function.\n * @see R.ascend, R.descend\n * @example\n *\n * const diff = function(a, b) { return a - b; };\n * R.sort(diff, [4,2,7,5]); //=> [2, 4, 5, 7]\n */\nvar sort = /*#__PURE__*/_curry2(function sort(comparator, list) {\n return Array.prototype.slice.call(list, 0).sort(comparator);\n});\nexport default sort;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Sorts the list according to the supplied function.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord b => (a -> b) -> [a] -> [a]\n * @param {Function} fn\n * @param {Array} list The list to sort.\n * @return {Array} A new list sorted by the keys generated by `fn`.\n * @example\n *\n * const sortByFirstItem = R.sortBy(R.prop(0));\n * const pairs = [[-1, 1], [-2, 2], [-3, 3]];\n * sortByFirstItem(pairs); //=> [[-3, 3], [-2, 2], [-1, 1]]\n *\n * const sortByNameCaseInsensitive = R.sortBy(R.compose(R.toLower, R.prop('name')));\n * const alice = {\n * name: 'ALICE',\n * age: 101\n * };\n * const bob = {\n * name: 'Bob',\n * age: -10\n * };\n * const clara = {\n * name: 'clara',\n * age: 314.159\n * };\n * const people = [clara, bob, alice];\n * sortByNameCaseInsensitive(people); //=> [alice, bob, clara]\n */\nvar sortBy = /*#__PURE__*/_curry2(function sortBy(fn, list) {\n return Array.prototype.slice.call(list, 0).sort(function (a, b) {\n var aa = fn(a);\n var bb = fn(b);\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n });\n});\nexport default sortBy;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Sorts a list according to a list of comparators.\n *\n * @func\n * @memberOf R\n * @since v0.23.0\n * @category Relation\n * @sig [(a, a) -> Number] -> [a] -> [a]\n * @param {Array} functions A list of comparator functions.\n * @param {Array} list The list to sort.\n * @return {Array} A new list sorted according to the comarator functions.\n * @see R.ascend, R.descend\n * @example\n *\n * const alice = {\n * name: 'alice',\n * age: 40\n * };\n * const bob = {\n * name: 'bob',\n * age: 30\n * };\n * const clara = {\n * name: 'clara',\n * age: 40\n * };\n * const people = [clara, bob, alice];\n * const ageNameSort = R.sortWith([\n * R.descend(R.prop('age')),\n * R.ascend(R.prop('name'))\n * ]);\n * ageNameSort(people); //=> [alice, clara, bob]\n */\nvar sortWith = /*#__PURE__*/_curry2(function sortWith(fns, list) {\n return Array.prototype.slice.call(list, 0).sort(function (a, b) {\n var result = 0;\n var i = 0;\n while (result === 0 && i < fns.length) {\n result = fns[i](a, b);\n i += 1;\n }\n return result;\n });\n});\nexport default sortWith;","import invoker from \"./invoker.js\";\n\n/**\n * Splits a string into an array of strings based on the given\n * separator.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category String\n * @sig (String | RegExp) -> String -> [String]\n * @param {String|RegExp} sep The pattern.\n * @param {String} str The string to separate into an array.\n * @return {Array} The array of strings from `str` separated by `sep`.\n * @see R.join\n * @example\n *\n * const pathComponents = R.split('/');\n * R.tail(pathComponents('/usr/local/bin/node')); //=> ['usr', 'local', 'bin', 'node']\n *\n * R.split('.', 'a.b.c.xyz.d'); //=> ['a', 'b', 'c', 'xyz', 'd']\n */\nvar split = /*#__PURE__*/invoker(1, 'split');\nexport default split;","import _curry2 from \"./internal/_curry2.js\";\nimport length from \"./length.js\";\nimport slice from \"./slice.js\";\n\n/**\n * Splits a given list or string at a given index.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig Number -> [a] -> [[a], [a]]\n * @sig Number -> String -> [String, String]\n * @param {Number} index The index where the array/string is split.\n * @param {Array|String} array The array/string to be split.\n * @return {Array}\n * @example\n *\n * R.splitAt(1, [1, 2, 3]); //=> [[1], [2, 3]]\n * R.splitAt(5, 'hello world'); //=> ['hello', ' world']\n * R.splitAt(-1, 'foobar'); //=> ['fooba', 'r']\n */\nvar splitAt = /*#__PURE__*/_curry2(function splitAt(index, array) {\n return [slice(0, index, array), slice(index, length(array), array)];\n});\nexport default splitAt;","import _curry2 from \"./internal/_curry2.js\";\nimport slice from \"./slice.js\";\n\n/**\n * Splits a collection into slices of the specified length.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig Number -> [a] -> [[a]]\n * @sig Number -> String -> [String]\n * @param {Number} n\n * @param {Array} list\n * @return {Array}\n * @example\n *\n * R.splitEvery(3, [1, 2, 3, 4, 5, 6, 7]); //=> [[1, 2, 3], [4, 5, 6], [7]]\n * R.splitEvery(3, 'foobarbaz'); //=> ['foo', 'bar', 'baz']\n */\nvar splitEvery = /*#__PURE__*/_curry2(function splitEvery(n, list) {\n if (n <= 0) {\n throw new Error('First argument to splitEvery must be a positive integer');\n }\n var result = [];\n var idx = 0;\n while (idx < list.length) {\n result.push(slice(idx, idx += n, list));\n }\n return result;\n});\nexport default splitEvery;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Takes a list and a predicate and returns a pair of lists with the following properties:\n *\n * - the result of concatenating the two output lists is equivalent to the input list;\n * - none of the elements of the first output list satisfies the predicate; and\n * - if the second output list is non-empty, its first element satisfies the predicate.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> [[a], [a]]\n * @param {Function} pred The predicate that determines where the array is split.\n * @param {Array} list The array to be split.\n * @return {Array}\n * @example\n *\n * R.splitWhen(R.equals(2), [1, 2, 3, 1, 2, 3]); //=> [[1], [2, 3, 1, 2, 3]]\n */\nvar splitWhen = /*#__PURE__*/_curry2(function splitWhen(pred, list) {\n var idx = 0;\n var len = list.length;\n var prefix = [];\n while (idx < len && !pred(list[idx])) {\n prefix.push(list[idx]);\n idx += 1;\n }\n return [prefix, Array.prototype.slice.call(list, idx)];\n});\nexport default splitWhen;","import _curryN from \"./internal/_curryN.js\";\n/**\n * Splits an array into slices on every occurrence of a value.\n *\n * @func\n * @memberOf R\n * @since v0.28.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> [[a]]\n * @param {Function} pred The predicate that determines where the array is split.\n * @param {Array} list The array to be split.\n * @return {Array}\n * @example\n *\n * R.splitWhenever(R.equals(2), [1, 2, 3, 2, 4, 5, 2, 6, 7]); //=> [[1], [3], [4, 5], [6, 7]]\n */\nvar splitWhenever = /*#__PURE__*/_curryN(2, [], function splitWhenever(pred, list) {\n var acc = [];\n var curr = [];\n for (var i = 0; i < list.length; i = i + 1) {\n if (!pred(list[i])) {\n curr.push(list[i]);\n }\n if ((i < list.length - 1 && pred(list[i + 1]) || i === list.length - 1) && curr.length > 0) {\n acc.push(curr);\n curr = [];\n }\n }\n return acc;\n});\nexport default splitWhenever;","import _curry2 from \"./internal/_curry2.js\";\nimport equals from \"./equals.js\";\nimport take from \"./take.js\";\n\n/**\n * Checks if a list starts with the provided sublist.\n *\n * Similarly, checks if a string starts with the provided substring.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category List\n * @sig [a] -> [a] -> Boolean\n * @sig String -> String -> Boolean\n * @param {*} prefix\n * @param {*} list\n * @return {Boolean}\n * @see R.endsWith\n * @example\n *\n * R.startsWith('a', 'abc') //=> true\n * R.startsWith('b', 'abc') //=> false\n * R.startsWith(['a'], ['a', 'b', 'c']) //=> true\n * R.startsWith(['b'], ['a', 'b', 'c']) //=> false\n */\nvar startsWith = /*#__PURE__*/_curry2(function (prefix, list) {\n return equals(take(prefix.length, list), prefix);\n});\nexport default startsWith;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Subtracts its second argument from its first argument.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig Number -> Number -> Number\n * @param {Number} a The first value.\n * @param {Number} b The second value.\n * @return {Number} The result of `a - b`.\n * @see R.add\n * @example\n *\n * R.subtract(10, 8); //=> 2\n *\n * const minus5 = R.subtract(R.__, 5);\n * minus5(17); //=> 12\n *\n * const complementaryAngle = R.subtract(90);\n * complementaryAngle(30); //=> 60\n * complementaryAngle(72); //=> 18\n */\nvar subtract = /*#__PURE__*/_curry2(function subtract(a, b) {\n return Number(a) - Number(b);\n});\nexport default subtract;","import _curry3 from \"./internal/_curry3.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport _isString from \"./internal/_isString.js\";\nimport clone from \"./clone.js\";\nvar swapObject = function (indexA, indexB, o) {\n var copy = clone(o);\n var properties = Object.getOwnPropertyNames(copy);\n if (properties.includes(indexA) && properties.includes(indexB)) {\n var tmp = copy[indexA];\n copy[indexA] = copy[indexB];\n copy[indexB] = tmp;\n }\n return copy;\n};\nvar swapList = function (indexA, indexB, list) {\n var length = list.length;\n var result = list.slice();\n var positiveIndexA = indexA < 0 ? length + indexA : indexA;\n var positiveIndexB = indexB < 0 ? length + indexB : indexB;\n var positiveMin = Math.min(positiveIndexA, positiveIndexB);\n var positiveMax = Math.max(positiveIndexA, positiveIndexB);\n if (positiveIndexA < 0 || positiveIndexA > length) {\n return result;\n }\n if (positiveIndexB < 0 || positiveIndexB > length) {\n return result;\n }\n if (positiveIndexA === positiveIndexB) {\n return result;\n }\n result = [].concat(result.slice(0, positiveMin)).concat([result[positiveMax]]).concat(result.slice(positiveMin + 1, positiveMax)).concat([result[positiveMin]]).concat(result.slice(positiveMax + 1, length));\n return result;\n};\nvar swapString = function (indexA, indexB, s) {\n var result = swapList(indexA, indexB, s);\n return _isArray(result) ? result.join('') : result;\n};\n\n/**\n * Swap an item, at index `indexA` with another item, at index `indexB`, in an object or a list of elements.\n * A new result will be created containing the new elements order.\n *\n * @func\n * @memberOf R\n * @since v0.29.0\n * @category List\n * @sig Number -> Number -> [a] -> [a]\n * @param {Number|string|Object} indexA The first index\n * @param {Number|string|Object} indexB The second index\n * @param {Array|Object} o Either the object or list which will serve to realise the swap\n * @return {Array|Object} The new object or list reordered\n * @example\n *\n * R.swap(0, 2, ['a', 'b', 'c', 'd', 'e', 'f']); //=> ['c', 'b', 'a', 'd', 'e', 'f']\n * R.swap(-1, 0, ['a', 'b', 'c', 'd', 'e', 'f']); //=> ['f', 'b', 'c', 'd', 'e', 'a']\n * R.swap('a', 'b', {a: 1, b: 2}); //=> {a: 2, b: 1}\n * R.swap(0, 2, 'foo'); //=> 'oof'\n */\nvar swap = /*#__PURE__*/_curry3(function (indexA, indexB, o) {\n if (_isArray(o)) {\n return swapList(indexA, indexB, o);\n } else if (_isString(o)) {\n return swapString(indexA, indexB, o);\n } else {\n return swapObject(indexA, indexB, o);\n }\n});\nexport default swap;","import _curry2 from \"./internal/_curry2.js\";\nimport concat from \"./concat.js\";\nimport difference from \"./difference.js\";\n\n/**\n * Finds the set (i.e. no duplicates) of all elements contained in the first or\n * second list, but not both.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Relation\n * @sig [*] -> [*] -> [*]\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The elements in `list1` or `list2`, but not both.\n * @see R.symmetricDifferenceWith, R.difference, R.differenceWith\n * @example\n *\n * R.symmetricDifference([1,2,3,4], [7,6,5,4,3]); //=> [1,2,7,6,5]\n * R.symmetricDifference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5,1,2]\n */\nvar symmetricDifference = /*#__PURE__*/_curry2(function symmetricDifference(list1, list2) {\n return concat(difference(list1, list2), difference(list2, list1));\n});\nexport default symmetricDifference;","import _curry3 from \"./internal/_curry3.js\";\nimport concat from \"./concat.js\";\nimport differenceWith from \"./differenceWith.js\";\n\n/**\n * Finds the set (i.e. no duplicates) of all elements contained in the first or\n * second list, but not both. Duplication is determined according to the value\n * returned by applying the supplied predicate to two list elements.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Relation\n * @sig ((a, a) -> Boolean) -> [a] -> [a] -> [a]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The elements in `list1` or `list2`, but not both.\n * @see R.symmetricDifference, R.difference, R.differenceWith\n * @example\n *\n * const eqA = R.eqBy(R.prop('a'));\n * const l1 = [{a: 1}, {a: 2}, {a: 3}, {a: 4}];\n * const l2 = [{a: 3}, {a: 4}, {a: 5}, {a: 6}];\n * R.symmetricDifferenceWith(eqA, l1, l2); //=> [{a: 1}, {a: 2}, {a: 5}, {a: 6}]\n */\nvar symmetricDifferenceWith = /*#__PURE__*/_curry3(function symmetricDifferenceWith(pred, list1, list2) {\n return concat(differenceWith(pred, list1, list2), differenceWith(pred, list2, list1));\n});\nexport default symmetricDifferenceWith;","import _curry2 from \"./internal/_curry2.js\";\nimport slice from \"./slice.js\";\n\n/**\n * Returns a new list containing the last `n` elements of a given list, passing\n * each value to the supplied predicate function, and terminating when the\n * predicate function returns `false`. Excludes the element that caused the\n * predicate function to fail. The predicate function is passed one argument:\n * *(value)*.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> [a]\n * @sig (a -> Boolean) -> String -> String\n * @param {Function} fn The function called per iteration.\n * @param {Array} xs The collection to iterate over.\n * @return {Array} A new array.\n * @see R.dropLastWhile, R.addIndex\n * @example\n *\n * const isNotOne = x => x !== 1;\n *\n * R.takeLastWhile(isNotOne, [1, 2, 3, 4]); //=> [2, 3, 4]\n *\n * R.takeLastWhile(x => x !== 'R' , 'Ramda'); //=> 'amda'\n */\nvar takeLastWhile = /*#__PURE__*/_curry2(function takeLastWhile(fn, xs) {\n var idx = xs.length - 1;\n while (idx >= 0 && fn(xs[idx])) {\n idx -= 1;\n }\n return slice(idx + 1, Infinity, xs);\n});\nexport default takeLastWhile;","import _reduced from \"./_reduced.js\";\nimport _xfBase from \"./_xfBase.js\";\nvar XTakeWhile = /*#__PURE__*/function () {\n function XTakeWhile(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XTakeWhile.prototype['@@transducer/init'] = _xfBase.init;\n XTakeWhile.prototype['@@transducer/result'] = _xfBase.result;\n XTakeWhile.prototype['@@transducer/step'] = function (result, input) {\n return this.f(input) ? this.xf['@@transducer/step'](result, input) : _reduced(result);\n };\n return XTakeWhile;\n}();\nexport default function _xtakeWhile(f) {\n return function (xf) {\n return new XTakeWhile(f, xf);\n };\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xtakeWhile from \"./internal/_xtakeWhile.js\";\nimport slice from \"./slice.js\";\n\n/**\n * Returns a new list containing the first `n` elements of a given list,\n * passing each value to the supplied predicate function, and terminating when\n * the predicate function returns `false`. Excludes the element that caused the\n * predicate function to fail. The predicate function is passed one argument:\n * *(value)*.\n *\n * Dispatches to the `takeWhile` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> [a]\n * @sig (a -> Boolean) -> String -> String\n * @param {Function} fn The function called per iteration.\n * @param {Array} xs The collection to iterate over.\n * @return {Array} A new array.\n * @see R.dropWhile, R.transduce, R.addIndex\n * @example\n *\n * const isNotFour = x => x !== 4;\n *\n * R.takeWhile(isNotFour, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3]\n *\n * R.takeWhile(x => x !== 'd' , 'Ramda'); //=> 'Ram'\n */\nvar takeWhile = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['takeWhile'], _xtakeWhile, function takeWhile(fn, xs) {\n var idx = 0;\n var len = xs.length;\n while (idx < len && fn(xs[idx])) {\n idx += 1;\n }\n return slice(0, idx, xs);\n}));\nexport default takeWhile;","import _xfBase from \"./_xfBase.js\";\nvar XTap = /*#__PURE__*/function () {\n function XTap(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XTap.prototype['@@transducer/init'] = _xfBase.init;\n XTap.prototype['@@transducer/result'] = _xfBase.result;\n XTap.prototype['@@transducer/step'] = function (result, input) {\n this.f(input);\n return this.xf['@@transducer/step'](result, input);\n };\n return XTap;\n}();\nexport default function _xtap(f) {\n return function (xf) {\n return new XTap(f, xf);\n };\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xtap from \"./internal/_xtap.js\";\n\n/**\n * Runs the given function with the supplied object, then returns the object.\n *\n * Acts as a transducer if a transformer is given as second parameter.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (a -> *) -> a -> a\n * @param {Function} fn The function to call with `x`. The return value of `fn` will be thrown away.\n * @param {*} x\n * @return {*} `x`.\n * @example\n *\n * const sayX = x => console.log('x is ' + x);\n * R.tap(sayX, 100); //=> 100\n * // logs 'x is 100'\n * @symb R.tap(f, a) = (f(a), a)\n */\nvar tap = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xtap, function tap(fn, x) {\n fn(x);\n return x;\n}));\nexport default tap;","export default function _isRegExp(x) {\n return Object.prototype.toString.call(x) === '[object RegExp]';\n}","import _cloneRegExp from \"./internal/_cloneRegExp.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _isRegExp from \"./internal/_isRegExp.js\";\nimport toString from \"./toString.js\";\n\n/**\n * Determines whether a given string matches a given regular expression.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category String\n * @sig RegExp -> String -> Boolean\n * @param {RegExp} pattern\n * @param {String} str\n * @return {Boolean}\n * @see R.match\n * @example\n *\n * R.test(/^x/, 'xyz'); //=> true\n * R.test(/^y/, 'xyz'); //=> false\n */\nvar test = /*#__PURE__*/_curry2(function test(pattern, str) {\n if (!_isRegExp(pattern)) {\n throw new TypeError('‘test’ requires a value of type RegExp as its first argument; received ' + toString(pattern));\n }\n return _cloneRegExp(pattern).test(str);\n});\nexport default test;","import _curry2 from \"./internal/_curry2.js\";\nimport _assertPromise from \"./internal/_assertPromise.js\";\n\n/**\n * Returns the result of applying the onSuccess function to the value inside\n * a successfully resolved promise. This is useful for working with promises\n * inside function compositions.\n *\n * @func\n * @memberOf R\n * @since v0.27.1\n * @category Function\n * @sig (a -> b) -> (Promise e a) -> (Promise e b)\n * @sig (a -> (Promise e b)) -> (Promise e a) -> (Promise e b)\n * @param {Function} onSuccess The function to apply. Can return a value or a promise of a value.\n * @param {Promise} p\n * @return {Promise} The result of calling `p.then(onSuccess)`\n * @see R.otherwise, R.pipeWith\n * @example\n *\n * const makeQuery = email => ({ query: { email }});\n * const fetchMember = request =>\n * Promise.resolve({ firstName: 'Bob', lastName: 'Loblaw', id: 42 });\n * const pickName = R.pick(['firstName', 'lastName'])\n *\n * //getMemberName :: String -> Promise ({ firstName, lastName })\n * const getMemberName = R.pipe(\n * makeQuery,\n * fetchMember,\n * R.andThen(pickName),\n * );\n *\n * // Alternately\n * const getMemberName = R.pipe(\n * makeQuery,\n * fetchMember,\n * )\n *\n * R.pipeWith(R.andThen, [getMemberName, pickName])('bob@gmail.com').then(console.log)\n * // logs {\"firstName\":\"Bob\",\"lastName\":\"Loblaw\"}\n *\n * getMemberName('bob@gmail.com').then(console.log);\n */\nvar andThen = /*#__PURE__*/_curry2(function andThen(f, p) {\n _assertPromise('andThen', p);\n return p.then(f);\n});\nexport default andThen;","import invoker from \"./invoker.js\";\n\n/**\n * The lower case version of a string.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category String\n * @sig String -> String\n * @param {String} str The string to lower case.\n * @return {String} The lower case version of `str`.\n * @see R.toUpper\n * @example\n *\n * R.toLower('XYZ'); //=> 'xyz'\n */\nvar toLower = /*#__PURE__*/invoker(0, 'toLowerCase');\nexport default toLower;","import _curry1 from \"./internal/_curry1.js\";\nimport _toPairs from \"./internal/_toPairs.js\";\n\n/**\n * Converts an object into an array of key, value arrays. Only the object's\n * own properties are used.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.4.0\n * @category Object\n * @sig {String: *} -> [[String,*]]\n * @param {Object} obj The object to extract from\n * @return {Array} An array of key, value arrays from the object's own properties.\n * @see R.fromPairs, R.keys, R.values\n * @example\n *\n * R.toPairs({a: 1, b: 2, c: 3}); //=> [['a', 1], ['b', 2], ['c', 3]]\n */\nvar toPairs = /*#__PURE__*/_curry1(_toPairs);\nexport default toPairs;","import _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Converts an object into an array of key, value arrays. The object's own\n * properties and prototype properties are used. Note that the order of the\n * output array is not guaranteed to be consistent across different JS\n * platforms.\n *\n * @func\n * @memberOf R\n * @since v0.4.0\n * @category Object\n * @sig {String: *} -> [[String,*]]\n * @param {Object} obj The object to extract from\n * @return {Array} An array of key, value arrays from the object's own\n * and prototype properties.\n * @example\n *\n * const F = function() { this.x = 'X'; };\n * F.prototype.y = 'Y';\n * const f = new F();\n * R.toPairsIn(f); //=> [['x','X'], ['y','Y']]\n */\nvar toPairsIn = /*#__PURE__*/_curry1(function toPairsIn(obj) {\n var pairs = [];\n for (var prop in obj) {\n pairs[pairs.length] = [prop, obj[prop]];\n }\n return pairs;\n});\nexport default toPairsIn;","import invoker from \"./invoker.js\";\n\n/**\n * The upper case version of a string.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category String\n * @sig String -> String\n * @param {String} str The string to upper case.\n * @return {String} The upper case version of `str`.\n * @see R.toLower\n * @example\n *\n * R.toUpper('abc'); //=> 'ABC'\n */\nvar toUpper = /*#__PURE__*/invoker(0, 'toUpperCase');\nexport default toUpper;","import _xReduce from \"./internal/_xReduce.js\";\nimport _xwrap from \"./internal/_xwrap.js\";\nimport curryN from \"./curryN.js\";\n\n/**\n * Initializes a transducer using supplied iterator function. Returns a single\n * item by iterating through the list, successively calling the transformed\n * iterator function and passing it an accumulator value and the current value\n * from the array, and then passing the result to the next call.\n *\n * The iterator function receives two values: *(acc, value)*. It will be\n * wrapped as a transformer to initialize the transducer. A transformer can be\n * passed directly in place of an iterator function. In both cases, iteration\n * may be stopped early with the [`R.reduced`](#reduced) function.\n *\n * A transducer is a function that accepts a transformer and returns a\n * transformer and can be composed directly.\n *\n * A transformer is an object that provides a 2-arity reducing iterator\n * function, step, 0-arity initial value function, init, and 1-arity result\n * extraction function, result. The step function is used as the iterator\n * function in reduce. The result function is used to convert the final\n * accumulator into the return type and in most cases is\n * [`R.identity`](#identity). The init function can be used to provide an\n * initial accumulator, but is ignored by transduce.\n *\n * The iteration is performed with [`R.reduce`](#reduce) after initializing the transducer.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category List\n * @sig (c -> c) -> ((a, b) -> a) -> a -> [b] -> a\n * @param {Function} xf The transducer function. Receives a transformer and returns a transformer.\n * @param {Function} fn The iterator function. Receives two values, the accumulator and the\n * current element from the array. Wrapped as transformer, if necessary, and used to\n * initialize the transducer\n * @param {*} acc The initial accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduce, R.reduced, R.into\n * @example\n *\n * const numbers = [1, 2, 3, 4];\n * const transducer = R.compose(R.map(R.add(1)), R.take(2));\n * R.transduce(transducer, R.flip(R.append), [], numbers); //=> [2, 3]\n *\n * const isOdd = (x) => x % 2 !== 0;\n * const firstOddTransducer = R.compose(R.filter(isOdd), R.take(1));\n * R.transduce(firstOddTransducer, R.flip(R.append), [], R.range(0, 100)); //=> [1]\n */\nvar transduce = /*#__PURE__*/curryN(4, function transduce(xf, fn, acc, list) {\n return _xReduce(xf(typeof fn === 'function' ? _xwrap(fn) : fn), acc, list);\n});\nexport default transduce;","import _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Transposes the rows and columns of a 2D list.\n * When passed a list of `n` lists of length `x`,\n * returns a list of `x` lists of length `n`.\n *\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig [[a]] -> [[a]]\n * @param {Array} list A 2D list\n * @return {Array} A 2D list\n * @example\n *\n * R.transpose([[1, 'a'], [2, 'b'], [3, 'c']]) //=> [[1, 2, 3], ['a', 'b', 'c']]\n * R.transpose([[1, 2, 3], ['a', 'b', 'c']]) //=> [[1, 'a'], [2, 'b'], [3, 'c']]\n *\n * // If some of the rows are shorter than the following rows, their elements are skipped:\n * R.transpose([[10, 11], [20], [], [30, 31, 32]]) //=> [[10, 20, 30], [11, 31], [32]]\n * @symb R.transpose([[a], [b], [c]]) = [a, b, c]\n * @symb R.transpose([[a, b], [c, d]]) = [[a, c], [b, d]]\n * @symb R.transpose([[a, b], [c]]) = [[a, c], [b]]\n */\nvar transpose = /*#__PURE__*/_curry1(function transpose(outerlist) {\n var i = 0;\n var result = [];\n while (i < outerlist.length) {\n var innerlist = outerlist[i];\n var j = 0;\n while (j < innerlist.length) {\n if (typeof result[j] === 'undefined') {\n result[j] = [];\n }\n result[j].push(innerlist[j]);\n j += 1;\n }\n i += 1;\n }\n return result;\n});\nexport default transpose;","import _curry3 from \"./internal/_curry3.js\";\nimport map from \"./map.js\";\nimport sequence from \"./sequence.js\";\n\n/**\n * Maps an [Applicative](https://github.com/fantasyland/fantasy-land#applicative)-returning\n * function over a [Traversable](https://github.com/fantasyland/fantasy-land#traversable),\n * then uses [`sequence`](#sequence) to transform the resulting Traversable of Applicative\n * into an Applicative of Traversable.\n *\n * Dispatches to the `traverse` method of the third argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig fantasy-land/of :: TypeRep f => f ~> a -> f a\n * @sig (Applicative f, Traversable t) => TypeRep f -> (a -> f b) -> t a -> f (t b)\n * @sig (Applicative f, Traversable t) => (b -> f b) -> (a -> f b) -> t a -> f (t b)\n * @param {Object|Function} TypeRepresentative with an `of` or `fantasy-land/of` method\n * @param {Function} f\n * @param {*} traversable\n * @return {*}\n * @see R.sequence\n * @example\n *\n * // Returns `Maybe.Nothing` if the given divisor is `0`\n * const safeDiv = n => d => d === 0 ? Maybe.Nothing() : Maybe.Just(n / d)\n *\n * R.traverse(Maybe.of, safeDiv(10), [2, 4, 5]); //=> Maybe.Just([5, 2.5, 2])\n * R.traverse(Maybe.of, safeDiv(10), [2, 0, 5]); //=> Maybe.Nothing\n *\n * // Using a Type Representative\n * R.traverse(Maybe, safeDiv(10), Right(4)); //=> Just(Right(2.5))\n * R.traverse(Maybe, safeDiv(10), Right(0)); //=> Nothing\n * R.traverse(Maybe, safeDiv(10), Left(\"X\")); //=> Just(Left(\"X\"))\n */\nvar traverse = /*#__PURE__*/_curry3(function traverse(F, f, traversable) {\n var of = typeof F['fantasy-land/of'] === 'function' ? F['fantasy-land/of'] : typeof F.of === 'function' ? F.of : F;\n var TypeRep = {\n 'fantasy-land/of': of\n };\n return typeof traversable['fantasy-land/traverse'] === 'function' ? traversable['fantasy-land/traverse'](TypeRep, f) : typeof traversable.traverse === 'function' ? traversable.traverse(TypeRep, f) : sequence(TypeRep, map(f, traversable));\n});\nexport default traverse;","import _curry1 from \"./internal/_curry1.js\";\nvar ws = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u2000\\u2001\\u2002\\u2003' + '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028' + '\\u2029\\uFEFF';\nvar zeroWidth = '\\u200b';\nvar hasProtoTrim = typeof String.prototype.trim === 'function';\n/**\n * Removes (strips) whitespace from both ends of the string.\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category String\n * @sig String -> String\n * @param {String} str The string to trim.\n * @return {String} Trimmed version of `str`.\n * @example\n *\n * R.trim(' xyz '); //=> 'xyz'\n * R.map(R.trim, R.split(',', 'x, y, z')); //=> ['x', 'y', 'z']\n */\nvar trim = !hasProtoTrim || /*#__PURE__*/ws.trim() || ! /*#__PURE__*/zeroWidth.trim() ? /*#__PURE__*/_curry1(function trim(str) {\n var beginRx = new RegExp('^[' + ws + '][' + ws + ']*');\n var endRx = new RegExp('[' + ws + '][' + ws + ']*$');\n return str.replace(beginRx, '').replace(endRx, '');\n}) : /*#__PURE__*/_curry1(function trim(str) {\n return str.trim();\n});\nexport default trim;","import _arity from \"./internal/_arity.js\";\nimport _concat from \"./internal/_concat.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n\n/**\n * `tryCatch` takes two functions, a `tryer` and a `catcher`. The returned\n * function evaluates the `tryer`; if it does not throw, it simply returns the\n * result. If the `tryer` *does* throw, the returned function evaluates the\n * `catcher` function and returns its result. Note that for effective\n * composition with this function, both the `tryer` and `catcher` functions\n * must return the same type of results.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category Function\n * @sig (...x -> a) -> ((e, ...x) -> a) -> (...x -> a)\n * @param {Function} tryer The function that may throw.\n * @param {Function} catcher The function that will be evaluated if `tryer` throws.\n * @return {Function} A new function that will catch exceptions and send them to the catcher.\n * @example\n *\n * R.tryCatch(R.prop('x'), R.F)({x: true}); //=> true\n * R.tryCatch(() => { throw 'foo'}, R.always('caught'))('bar') // =>\n * 'caught'\n * R.tryCatch(R.times(R.identity), R.always([]))('s') // => []\n * R.tryCatch(() => { throw 'this is not a valid value'}, (err, value)=>({error : err, value }))('bar') // => {'error': 'this is not a valid value', 'value': 'bar'}\n */\nvar tryCatch = /*#__PURE__*/_curry2(function _tryCatch(tryer, catcher) {\n return _arity(tryer.length, function () {\n try {\n return tryer.apply(this, arguments);\n } catch (e) {\n return catcher.apply(this, _concat([e], arguments));\n }\n });\n});\nexport default tryCatch;","import _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Takes a function `fn`, which takes a single array argument, and returns a\n * function which:\n *\n * - takes any number of positional arguments;\n * - passes these arguments to `fn` as an array; and\n * - returns the result.\n *\n * In other words, `R.unapply` derives a variadic function from a function which\n * takes an array. `R.unapply` is the inverse of [`R.apply`](#apply).\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Function\n * @sig ([*...] -> a) -> (*... -> a)\n * @param {Function} fn\n * @return {Function}\n * @see R.apply\n * @example\n *\n * R.unapply(JSON.stringify)(1, 2, 3); //=> '[1,2,3]'\n * @symb R.unapply(f)(a, b) = f([a, b])\n */\nvar unapply = /*#__PURE__*/_curry1(function unapply(fn) {\n return function () {\n return fn(Array.prototype.slice.call(arguments, 0));\n };\n});\nexport default unapply;","import _curry1 from \"./internal/_curry1.js\";\nimport nAry from \"./nAry.js\";\n\n/**\n * Wraps a function of any arity (including nullary) in a function that accepts\n * exactly 1 parameter. Any extraneous parameters will not be passed to the\n * supplied function.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Function\n * @sig (a -> b -> c -> ... -> z) -> (a -> z)\n * @param {Function} fn The function to wrap.\n * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of\n * arity 1.\n * @see R.binary, R.nAry\n * @example\n *\n * const takesTwoArgs = function(a, b) {\n * return [a, b];\n * };\n * takesTwoArgs.length; //=> 2\n * takesTwoArgs(1, 2); //=> [1, 2]\n *\n * const takesOneArg = R.unary(takesTwoArgs);\n * takesOneArg.length; //=> 1\n * // Only 1 argument is passed to the wrapped function\n * takesOneArg(1, 2); //=> [1, undefined]\n * @symb R.unary(f)(a, b, c) = f(a)\n */\nvar unary = /*#__PURE__*/_curry1(function unary(fn) {\n return nAry(1, fn);\n});\nexport default unary;","import _curry2 from \"./internal/_curry2.js\";\nimport curryN from \"./curryN.js\";\n\n/**\n * Returns a function of arity `n` from a (manually) curried function.\n * Note that, the returned function is actually a ramda style\n * curryied function, which can accept one or more arguments in each\n * function calling.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Function\n * @sig Number -> (a -> b -> c ... -> z) -> ((a -> b -> c ...) -> z)\n * @param {Number} length The arity for the returned function.\n * @param {Function} fn The function to uncurry.\n * @return {Function} A new function.\n * @see R.curry, R.curryN\n * @example\n *\n * const addFour = a => b => c => d => a + b + c + d;\n *\n * const uncurriedAddFour = R.uncurryN(4, addFour);\n * uncurriedAddFour(1, 2, 3, 4); //=> 10\n */\nvar uncurryN = /*#__PURE__*/_curry2(function uncurryN(depth, fn) {\n return curryN(depth, function () {\n var currentDepth = 1;\n var value = fn;\n var idx = 0;\n var endIdx;\n while (currentDepth <= depth && typeof value === 'function') {\n endIdx = currentDepth === depth ? arguments.length : idx + value.length;\n value = value.apply(this, Array.prototype.slice.call(arguments, idx, endIdx));\n currentDepth += 1;\n idx = endIdx;\n }\n return value;\n });\n});\nexport default uncurryN;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Builds a list from a seed value. Accepts an iterator function, which returns\n * either false to stop iteration or an array of length 2 containing the value\n * to add to the resulting list and the seed to be used in the next call to the\n * iterator function.\n *\n * The iterator function receives one argument: *(seed)*.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig (a -> [b]) -> * -> [b]\n * @param {Function} fn The iterator function. receives one argument, `seed`, and returns\n * either false to quit iteration or an array of length two to proceed. The element\n * at index 0 of this array will be added to the resulting array, and the element\n * at index 1 will be passed to the next call to `fn`.\n * @param {*} seed The seed value.\n * @return {Array} The final list.\n * @example\n *\n * const f = n => n > 50 ? false : [-n, n + 10];\n * R.unfold(f, 10); //=> [-10, -20, -30, -40, -50]\n * @symb R.unfold(f, x) = [f(x)[0], f(f(x)[1])[0], f(f(f(x)[1])[1])[0], ...]\n */\nvar unfold = /*#__PURE__*/_curry2(function unfold(fn, seed) {\n var pair = fn(seed);\n var result = [];\n while (pair && pair.length) {\n result[result.length] = pair[0];\n pair = fn(pair[1]);\n }\n return result;\n});\nexport default unfold;","import _concat from \"./internal/_concat.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport compose from \"./compose.js\";\nimport uniq from \"./uniq.js\";\n\n/**\n * Combines two lists into a set (i.e. no duplicates) composed of the elements\n * of each list.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig [*] -> [*] -> [*]\n * @param {Array} as The first list.\n * @param {Array} bs The second list.\n * @return {Array} The first and second lists concatenated, with\n * duplicates removed.\n * @example\n *\n * R.union([1, 2, 3], [2, 3, 4]); //=> [1, 2, 3, 4]\n */\nvar union = /*#__PURE__*/_curry2( /*#__PURE__*/compose(uniq, _concat));\nexport default union;","import _includesWith from \"./_includesWith.js\";\nimport _xfBase from \"./_xfBase.js\";\nvar XUniqWith = /*#__PURE__*/function () {\n function XUniqWith(pred, xf) {\n this.xf = xf;\n this.pred = pred;\n this.items = [];\n }\n XUniqWith.prototype['@@transducer/init'] = _xfBase.init;\n XUniqWith.prototype['@@transducer/result'] = _xfBase.result;\n XUniqWith.prototype['@@transducer/step'] = function (result, input) {\n if (_includesWith(this.pred, input, this.items)) {\n return result;\n } else {\n this.items.push(input);\n return this.xf['@@transducer/step'](result, input);\n }\n };\n return XUniqWith;\n}();\nexport default function _xuniqWith(pred) {\n return function (xf) {\n return new XUniqWith(pred, xf);\n };\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _includesWith from \"./internal/_includesWith.js\";\nimport _xuniqWith from \"./internal/_xuniqWith.js\";\n\n/**\n * Returns a new list containing only one copy of each element in the original\n * list, based upon the value returned by applying the supplied predicate to\n * two list elements. Prefers the first item if two items compare equal based\n * on the predicate.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category List\n * @sig ((a, a) -> Boolean) -> [a] -> [a]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n * const strEq = R.eqBy(String);\n * R.uniqWith(strEq)([1, '1', 2, 1]); //=> [1, 2]\n * R.uniqWith(strEq)([{}, {}]); //=> [{}]\n * R.uniqWith(strEq)([1, '1', 1]); //=> [1]\n * R.uniqWith(strEq)(['1', 1, 1]); //=> ['1']\n */\nvar uniqWith = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xuniqWith, function (pred, list) {\n var idx = 0;\n var len = list.length;\n var result = [];\n var item;\n while (idx < len) {\n item = list[idx];\n if (!_includesWith(pred, item, result)) {\n result[result.length] = item;\n }\n idx += 1;\n }\n return result;\n}));\nexport default uniqWith;","import _concat from \"./internal/_concat.js\";\nimport _curry3 from \"./internal/_curry3.js\";\nimport uniqWith from \"./uniqWith.js\";\n\n/**\n * Combines two lists into a set (i.e. no duplicates) composed of the elements\n * of each list. Duplication is determined according to the value returned by\n * applying the supplied predicate to two list elements. If an element exists\n * in both lists, the first element from the first list will be used.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig ((a, a) -> Boolean) -> [*] -> [*] -> [*]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The first and second lists concatenated, with\n * duplicates removed.\n * @see R.union\n * @example\n *\n * const l1 = [{a: 1}, {a: 2}];\n * const l2 = [{a: 1}, {a: 4}];\n * R.unionWith(R.eqBy(R.prop('a')), l1, l2); //=> [{a: 1}, {a: 2}, {a: 4}]\n */\nvar unionWith = /*#__PURE__*/_curry3(function unionWith(pred, list1, list2) {\n return uniqWith(pred, _concat(list1, list2));\n});\nexport default unionWith;","import _curry3 from \"./internal/_curry3.js\";\n\n/**\n * Tests the final argument by passing it to the given predicate function. If\n * the predicate is not satisfied, the function will return the result of\n * calling the `whenFalseFn` function with the same argument. If the predicate\n * is satisfied, the argument is returned as is.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category Logic\n * @sig (a -> Boolean) -> (a -> b) -> a -> a | b\n * @param {Function} pred A predicate function\n * @param {Function} whenFalseFn A function to invoke when the `pred` evaluates\n * to a falsy value.\n * @param {*} x An object to test with the `pred` function and\n * pass to `whenFalseFn` if necessary.\n * @return {*} Either `x` or the result of applying `x` to `whenFalseFn`.\n * @see R.ifElse, R.when, R.cond\n * @example\n *\n * let safeInc = R.unless(R.isNil, R.inc);\n * safeInc(null); //=> null\n * safeInc(1); //=> 2\n */\nvar unless = /*#__PURE__*/_curry3(function unless(pred, whenFalseFn, x) {\n return pred(x) ? x : whenFalseFn(x);\n});\nexport default unless;","import _identity from \"./internal/_identity.js\";\nimport chain from \"./chain.js\";\n\n/**\n * Shorthand for `R.chain(R.identity)`, which removes one level of nesting from\n * any [Chain](https://github.com/fantasyland/fantasy-land#chain).\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig Chain c => c (c a) -> c a\n * @param {*} list\n * @return {*}\n * @see R.flatten, R.chain\n * @example\n *\n * R.unnest([1, [2], [[3]]]); //=> [1, 2, [3]]\n * R.unnest([[1, 2], [3, 4], [5, 6]]); //=> [1, 2, 3, 4, 5, 6]\n */\nvar unnest = /*#__PURE__*/chain(_identity);\nexport default unnest;","import _curry3 from \"./internal/_curry3.js\";\n\n/**\n * Takes a predicate, a transformation function, and an initial value,\n * and returns a value of the same type as the initial value.\n * It does so by applying the transformation until the predicate is satisfied,\n * at which point it returns the satisfactory value.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category Logic\n * @sig (a -> Boolean) -> (a -> a) -> a -> a\n * @param {Function} pred A predicate function\n * @param {Function} fn The iterator function\n * @param {*} init Initial value\n * @return {*} Final value that satisfies predicate\n * @example\n *\n * R.until(R.gt(R.__, 100), R.multiply(2))(1) // => 128\n */\nvar until = /*#__PURE__*/_curry3(function until(pred, fn, init) {\n var val = init;\n while (!pred(val)) {\n val = fn(val);\n }\n return val;\n});\nexport default until;","import _curry2 from \"./internal/_curry2.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport _map from \"./internal/_map.js\";\nimport _assoc from \"./internal/_assoc.js\";\n\n/**\n *\n * Deconstructs an array field from the input documents to output a document for each element.\n * Each output document is the input document with the value of the array field replaced by the element.\n *\n * @func\n * @memberOf R\n * @since v0.28.0\n * @category Object\n * @sig String -> {k: [v]} -> [{k: v}]\n * @param {String} key The key to determine which property of the object should be unwound.\n * @param {Object} object The object containing the list to unwind at the property named by the key.\n * @return {List} A list of new objects, each having the given key associated to an item from the unwound list.\n * @example\n *\n * R.unwind('hobbies', {\n * name: 'alice',\n * hobbies: ['Golf', 'Hacking'],\n * colors: ['red', 'green'],\n * });\n * // [\n * // { name: 'alice', hobbies: 'Golf', colors: ['red', 'green'] },\n * // { name: 'alice', hobbies: 'Hacking', colors: ['red', 'green'] }\n * // ]\n */\n\nvar unwind = /*#__PURE__*/_curry2(function (key, object) {\n // If key is not in object or key is not as a list in object\n if (!(key in object && _isArray(object[key]))) {\n return [object];\n }\n // Map over object[key] which is a list and assoc each element with key\n return _map(function (item) {\n return _assoc(key, item, object);\n }, object[key]);\n});\nexport default unwind;","import _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Returns a list of all the properties, including prototype properties, of the\n * supplied object.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Object\n * @sig {k: v} -> [v]\n * @param {Object} obj The object to extract values from\n * @return {Array} An array of the values of the object's own and prototype properties.\n * @see R.values, R.keysIn\n * @example\n *\n * const F = function() { this.x = 'X'; };\n * F.prototype.y = 'Y';\n * const f = new F();\n * R.valuesIn(f); //=> ['X', 'Y']\n */\nvar valuesIn = /*#__PURE__*/_curry1(function valuesIn(obj) {\n var prop;\n var vs = [];\n for (prop in obj) {\n vs[vs.length] = obj[prop];\n }\n return vs;\n});\nexport default valuesIn;","import _curry2 from \"./internal/_curry2.js\";\n\n// `Const` is a functor that effectively ignores the function given to `map`.\nvar Const = function (x) {\n return {\n value: x,\n 'fantasy-land/map': function () {\n return this;\n }\n };\n};\n\n/**\n * Returns a \"view\" of the given data structure, determined by the given lens.\n * The lens's focus determines which portion of the data structure is visible.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig Lens s a -> s -> a\n * @param {Lens} lens\n * @param {*} x\n * @return {*}\n * @see R.set, R.over, R.lens, R.lensIndex, R.lensProp, R.lensPath\n * @example\n *\n * const xLens = R.lensProp('x');\n *\n * R.view(xLens, {x: 1, y: 2}); //=> 1\n * R.view(xLens, {x: 4, y: 2}); //=> 4\n */\nvar view = /*#__PURE__*/_curry2(function view(lens, x) {\n // Using `Const` effectively ignores the setter function of the `lens`,\n // leaving the value returned by the getter function unmodified.\n return lens(Const)(x).value;\n});\nexport default view;","import _curry3 from \"./internal/_curry3.js\";\n\n/**\n * Tests the final argument by passing it to the given predicate function. If\n * the predicate is satisfied, the function will return the result of calling\n * the `whenTrueFn` function with the same argument. If the predicate is not\n * satisfied, the argument is returned as is.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category Logic\n * @sig (a -> Boolean) -> (a -> b) -> a -> a | b\n * @param {Function} pred A predicate function\n * @param {Function} whenTrueFn A function to invoke when the `condition`\n * evaluates to a truthy value.\n * @param {*} x An object to test with the `pred` function and\n * pass to `whenTrueFn` if necessary.\n * @return {*} Either `x` or the result of applying `x` to `whenTrueFn`.\n * @see R.ifElse, R.unless, R.cond\n * @example\n *\n * // truncate :: String -> String\n * const truncate = R.when(\n * R.propSatisfies(R.gt(R.__, 10), 'length'),\n * R.pipe(R.take(10), R.append('…'), R.join(''))\n * );\n * truncate('12345'); //=> '12345'\n * truncate('0123456789ABC'); //=> '0123456789…'\n */\nvar when = /*#__PURE__*/_curry3(function when(pred, whenTrueFn, x) {\n return pred(x) ? whenTrueFn(x) : x;\n});\nexport default when;","import _curry2 from \"./internal/_curry2.js\";\nimport _has from \"./internal/_has.js\";\n\n/**\n * Takes a spec object and a test object; returns true if the test satisfies\n * the spec. Each of the spec's own properties must be a predicate function.\n * Each predicate is applied to the value of the corresponding property of the\n * test object. `where` returns true if all the predicates return true, false\n * otherwise.\n *\n * `where` is well suited to declaratively expressing constraints for other\n * functions such as [`filter`](#filter) and [`find`](#find).\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category Object\n * @sig {String: (* -> Boolean)} -> {String: *} -> Boolean\n * @param {Object} spec\n * @param {Object} testObj\n * @return {Boolean}\n * @see R.propSatisfies, R.whereEq\n * @example\n *\n * // pred :: Object -> Boolean\n * const pred = R.where({\n * a: R.equals('foo'),\n * b: R.complement(R.equals('bar')),\n * x: R.gt(R.__, 10),\n * y: R.lt(R.__, 20)\n * });\n *\n * pred({a: 'foo', b: 'xxx', x: 11, y: 19}); //=> true\n * pred({a: 'xxx', b: 'xxx', x: 11, y: 19}); //=> false\n * pred({a: 'foo', b: 'bar', x: 11, y: 19}); //=> false\n * pred({a: 'foo', b: 'xxx', x: 10, y: 19}); //=> false\n * pred({a: 'foo', b: 'xxx', x: 11, y: 20}); //=> false\n */\nvar where = /*#__PURE__*/_curry2(function where(spec, testObj) {\n for (var prop in spec) {\n if (_has(prop, spec) && !spec[prop](testObj[prop])) {\n return false;\n }\n }\n return true;\n});\nexport default where;","import _curry2 from \"./internal/_curry2.js\";\nimport _has from \"./internal/_has.js\";\n\n/**\n * Takes a spec object and a test object; each of the spec's own properties must be a predicate function.\n * Each predicate is applied to the value of the corresponding property of the\n * test object. `whereAny` returns true if at least one of the predicates return true,\n * false otherwise.\n *\n * `whereAny` is well suited to declaratively expressing constraints for other\n * functions such as [`filter`](#filter) and [`find`](#find).\n *\n * @func\n * @memberOf R\n * @since v0.28.0\n * @category Object\n * @sig {String: (* -> Boolean)} -> {String: *} -> Boolean\n * @param {Object} spec\n * @param {Object} testObj\n * @return {Boolean}\n * @see R.propSatisfies, R.where\n * @example\n *\n * // pred :: Object -> Boolean\n * const pred = R.whereAny({\n * a: R.equals('foo'),\n * b: R.complement(R.equals('xxx')),\n * x: R.gt(R.__, 10),\n * y: R.lt(R.__, 20)\n * });\n *\n * pred({a: 'foo', b: 'xxx', x: 8, y: 34}); //=> true\n * pred({a: 'xxx', b: 'xxx', x: 9, y: 21}); //=> false\n * pred({a: 'bar', b: 'xxx', x: 10, y: 20}); //=> false\n * pred({a: 'foo', b: 'bar', x: 10, y: 20}); //=> true\n * pred({a: 'foo', b: 'xxx', x: 11, y: 20}); //=> true\n */\nvar whereAny = /*#__PURE__*/_curry2(function whereAny(spec, testObj) {\n for (var prop in spec) {\n if (_has(prop, spec) && spec[prop](testObj[prop])) {\n return true;\n }\n }\n return false;\n});\nexport default whereAny;","import _curry2 from \"./internal/_curry2.js\";\nimport equals from \"./equals.js\";\nimport map from \"./map.js\";\nimport where from \"./where.js\";\n\n/**\n * Takes a spec object and a test object; returns true if the test satisfies\n * the spec, false otherwise. An object satisfies the spec if, for each of the\n * spec's own properties, accessing that property of the object gives the same\n * value (in [`R.equals`](#equals) terms) as accessing that property of the\n * spec.\n *\n * `whereEq` is a specialization of [`where`](#where).\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Object\n * @sig {String: *} -> {String: *} -> Boolean\n * @param {Object} spec\n * @param {Object} testObj\n * @return {Boolean}\n * @see R.propEq, R.where\n * @example\n *\n * // pred :: Object -> Boolean\n * const pred = R.whereEq({a: 1, b: 2});\n *\n * pred({a: 1}); //=> false\n * pred({a: 1, b: 2}); //=> true\n * pred({a: 1, b: 2, c: 3}); //=> true\n * pred({a: 1, b: 1}); //=> false\n */\nvar whereEq = /*#__PURE__*/_curry2(function whereEq(spec, testObj) {\n return where(map(equals, spec), testObj);\n});\nexport default whereEq;","import _curry2 from \"./internal/_curry2.js\";\nimport _Set from \"./internal/_Set.js\";\nimport reject from \"./reject.js\";\n\n/**\n * Returns a new list without values in the first argument.\n * [`R.equals`](#equals) is used to determine equality.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig [a] -> [a] -> [a]\n * @param {Array} list1 The values to be removed from `list2`.\n * @param {Array} list2 The array to remove values from.\n * @return {Array} The new array without values in `list1`.\n * @see R.transduce, R.difference, R.remove\n * @example\n *\n * R.without([1, 2], [1, 2, 1, 3, 4]); //=> [3, 4]\n */\nvar without = /*#__PURE__*/_curry2(function without(xs, list) {\n var toRemove = new _Set();\n for (var i = 0; i < xs.length; i += 1) {\n toRemove.add(xs[i]);\n }\n return reject(toRemove.has.bind(toRemove), list);\n});\nexport default without;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Exclusive disjunction logical operation.\n * Returns `true` if one of the arguments is truthy and the other is falsy.\n * Otherwise, it returns `false`.\n *\n * @func\n * @memberOf R\n * @since v0.27.1\n * @category Logic\n * @sig a -> b -> Boolean\n * @param {Any} a\n * @param {Any} b\n * @return {Boolean} true if one of the arguments is truthy and the other is falsy\n * @see R.or, R.and\n * @example\n *\n * R.xor(true, true); //=> false\n * R.xor(true, false); //=> true\n * R.xor(false, true); //=> true\n * R.xor(false, false); //=> false\n */\nvar xor = /*#__PURE__*/_curry2(function xor(a, b) {\n return Boolean(!a ^ !b);\n});\nexport default xor;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Creates a new list out of the two supplied by creating each possible pair\n * from the lists.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [b] -> [[a,b]]\n * @param {Array} as The first list.\n * @param {Array} bs The second list.\n * @return {Array} The list made by combining each possible pair from\n * `as` and `bs` into pairs (`[a, b]`).\n * @example\n *\n * R.xprod([1, 2], ['a', 'b']); //=> [[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b']]\n * @symb R.xprod([a, b], [c, d]) = [[a, c], [a, d], [b, c], [b, d]]\n */\nvar xprod = /*#__PURE__*/_curry2(function xprod(a, b) {\n // = xprodWith(prepend); (takes about 3 times as long...)\n var i = 0;\n var ilen = a.length;\n var j;\n var jlen = b.length;\n var result = Array(ilen * jlen);\n while (i < ilen) {\n j = 0;\n while (j < jlen) {\n result[i * jlen + j] = [a[i], b[j]];\n j += 1;\n }\n i += 1;\n }\n return result;\n});\nexport default xprod;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Creates a new list out of the two supplied by pairing up equally-positioned\n * items from both lists. The returned list is truncated to the length of the\n * shorter of the two input lists.\n * Note: `zip` is equivalent to `zipWith(function(a, b) { return [a, b] })`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [b] -> [[a,b]]\n * @param {Array} list1 The first array to consider.\n * @param {Array} list2 The second array to consider.\n * @return {Array} The list made by pairing up same-indexed elements of `list1` and `list2`.\n * @example\n *\n * R.zip([1, 2, 3], ['a', 'b', 'c']); //=> [[1, 'a'], [2, 'b'], [3, 'c']]\n * @symb R.zip([a, b, c], [d, e, f]) = [[a, d], [b, e], [c, f]]\n */\nvar zip = /*#__PURE__*/_curry2(function zip(a, b) {\n var len = Math.min(a.length, b.length);\n var rv = Array(len);\n var idx = 0;\n while (idx < len) {\n rv[idx] = [a[idx], b[idx]];\n idx += 1;\n }\n return rv;\n});\nexport default zip;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Creates a new object out of a list of keys and a list of values.\n * Key/value pairing is truncated to the length of the shorter of the two lists.\n * Note: `zipObj` is equivalent to `pipe(zip, fromPairs)`.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig [String] -> [*] -> {String: *}\n * @param {Array} keys The array that will be properties on the output object.\n * @param {Array} values The list of values on the output object.\n * @return {Object} The object made by pairing up same-indexed elements of `keys` and `values`.\n * @example\n *\n * R.zipObj(['a', 'b', 'c'], [1, 2, 3]); //=> {a: 1, b: 2, c: 3}\n */\nvar zipObj = /*#__PURE__*/_curry2(function zipObj(keys, values) {\n var idx = 0;\n var len = Math.min(keys.length, values.length);\n var out = {};\n while (idx < len) {\n out[keys[idx]] = values[idx];\n idx += 1;\n }\n return out;\n});\nexport default zipObj;","import _curry3 from \"./internal/_curry3.js\";\n\n/**\n * Creates a new list out of the two supplied by applying the function to each\n * equally-positioned pair in the lists. The returned list is truncated to the\n * length of the shorter of the two input lists.\n *\n * @function\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, b) -> c) -> [a] -> [b] -> [c]\n * @param {Function} fn The function used to combine the two elements into one value.\n * @param {Array} list1 The first array to consider.\n * @param {Array} list2 The second array to consider.\n * @return {Array} The list made by combining same-indexed elements of `list1` and `list2`\n * using `fn`.\n * @example\n *\n * const f = (x, y) => {\n * // ...\n * };\n * R.zipWith(f, [1, 2, 3], ['a', 'b', 'c']);\n * //=> [f(1, 'a'), f(2, 'b'), f(3, 'c')]\n * @symb R.zipWith(fn, [a, b, c], [d, e, f]) = [fn(a, d), fn(b, e), fn(c, f)]\n */\nvar zipWith = /*#__PURE__*/_curry3(function zipWith(fn, a, b) {\n var len = Math.min(a.length, b.length);\n var rv = Array(len);\n var idx = 0;\n while (idx < len) {\n rv[idx] = fn(a[idx], b[idx]);\n idx += 1;\n }\n return rv;\n});\nexport default zipWith;","import curryN from \"./curryN.js\";\nimport _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Creates a thunk out of a function. A thunk delays a calculation until\n * its result is needed, providing lazy evaluation of arguments.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category Function\n * @sig ((a, b, ..., j) -> k) -> (a, b, ..., j) -> (() -> k)\n * @param {Function} fn A function to wrap in a thunk\n * @return {Function} Expects arguments for `fn` and returns a new function\n * that, when called, applies those arguments to `fn`.\n * @see R.partial, R.partialRight\n * @example\n *\n * R.thunkify(R.identity)(42)(); //=> 42\n * R.thunkify((a, b) => a + b)(25, 17)(); //=> 42\n */\nvar thunkify = /*#__PURE__*/_curry1(function thunkify(fn) {\n return curryN(fn.length, function createThunk() {\n var fnArgs = arguments;\n return function invokeThunk() {\n return fn.apply(this, fnArgs);\n };\n });\n});\nexport default thunkify;","import {uniqBy} from \"ramda\";\r\n\r\n/**\r\n * 列表转树(高性能版,适配100W+数据)\r\n * 时间复杂度O(n):n 是 list 的长度(输入数据量)\r\n * 不改变原数组指针,生成的children也会注入原数组\r\n *\r\n * @param {Array} list - 原始列表数据\r\n * @param {Object} extendProps - 自定义属性映射 {id: 'id', children: 'children', parentId: 'parentId'}\r\n * @returns {Array} 树形结构数据\r\n */\r\nexport function list2Tree (list, extendProps = {}) {\r\n // 1. 配置默认属性映射,兼容自定义字段\r\n const props = {\r\n id: 'id',\r\n children: 'children',\r\n parentId: 'parentId',\r\n useConcat: false, // 保留原有配置,实际优化后无需concat\r\n ...extendProps\r\n };\r\n\r\n // 校验数据结构\r\n if(list && list[0] && !list[0].hasOwnProperty(props.id)) {\r\n console.warn('数据非标准,未找到唯一标识字段,直接返回')\r\n return list\r\n }\r\n\r\n const { id: idKey, children: childrenKey, parentId: parentIdKey, useConcat } = props;\r\n\r\n // -1.先清空children。防止重复叠加调用。\r\n if(useConcat === false) {\r\n for (const node of list) {\r\n delete node[childrenKey];\r\n }\r\n }\r\n\r\n // 2. 构建ID到节点的哈希映射(O(n)),同时初始化children数组\r\n const nodeMap = new Map();\r\n const rootNodes = []; // 存储根节点(parentId为空/0/不存在的节点)\r\n\r\n // 第一次遍历:初始化映射和children,O(n)\r\n for (const node of list) {\r\n const nodeId = node[idKey];\r\n // 初始化children数组(避免后续判断undefined)\r\n if (!node[childrenKey]) {\r\n node[childrenKey] = [];\r\n }\r\n // 将节点存入Map,方便后续快速查找父节点\r\n nodeMap.set(nodeId, node);\r\n }\r\n\r\n // 第二次遍历:关联父子节点,O(n)\r\n for (const node of list) {\r\n const parentId = node[parentIdKey];\r\n const parentNode = nodeMap.get(parentId);\r\n\r\n if (parentNode) {\r\n // 有父节点:添加到父节点的children中\r\n if (useConcat && Array.isArray(parentNode[childrenKey])) {\r\n parentNode[childrenKey] = parentNode[childrenKey].concat(node);\r\n } else {\r\n parentNode[childrenKey].push(node);\r\n }\r\n } else {\r\n // 无父节点:归为根节点(parentId为空/0/不存在)\r\n rootNodes.push(node);\r\n }\r\n }\r\n\r\n // 3. 清理空children(可选,保持和原逻辑一致)\r\n for (const node of list) {\r\n if (Array.isArray(node[childrenKey]) && node[childrenKey].length === 0) {\r\n delete node[childrenKey];\r\n }\r\n }\r\n\r\n return rootNodes;\r\n}\r\n\r\n/**\r\n * 为list添加_parentIds属性,属性为不含自身的数组,顺序从最外层开始\r\n * 该函数将遍历列表中的每个节点,并为其添加一个_parentIds属性,\r\n * 该属性包含从根节点到当前节点父节点的完整路径(不包括自身)\r\n * 时间复杂度O(n):n 是 list 的长度(输入数据量)\r\n *\r\n * @param {Array} list - 包含树节点的平铺数组,每个节点应具有id和parentId属性\r\n *\r\n * @example\r\n * const list = [\r\n * { id: '1', name: 'Root' },\r\n * { id: '2', name: 'Child1', parentId: '1' },\r\n * { id: '3', name: 'GrandChild1', parentId: '2' }\r\n * ];\r\n *\r\n * setParentIds4List(list);\r\n * // 结果:\r\n * // list[0] = { id: '1', name: 'Root', _parentIds: [] }\r\n * // list[1] = { id: '2', name: 'Child1', parentId: '1', _parentIds: ['1'] }\r\n * // list[2] = { id: '3', name: 'GrandChild1', parentId: '2', _parentIds: ['1', '2'] }\r\n *\r\n * @returns {Array} list - 直接返回入参数组,指针不变\r\n */\r\nexport function setParentIds4List(list) {\r\n if (!list || list.length === 0) return;\r\n\r\n // 创建ID到节点的映射表\r\n const nodeMap = new Map();\r\n for (const node of list) {\r\n nodeMap.set(node.id, node);\r\n node._parentIds = []; // 初始化_parentIds\r\n }\r\n\r\n // 计算每个节点的_parentIds,使用记忆化避免重复计算\r\n function calculateParentIds(node) {\r\n if (node._parentIds.length > 0 || !node.parentId) {\r\n // 如果已经计算过或者没有父节点,直接返回\r\n return node._parentIds;\r\n }\r\n\r\n const parentNode = nodeMap.get(node.parentId);\r\n if (!parentNode) {\r\n // 父节点不存在,清空_parentIds\r\n node._parentIds = [];\r\n return node._parentIds;\r\n }\r\n\r\n // 先确保父节点的_parentIds已经计算完成\r\n const parentParentIds = calculateParentIds(parentNode);\r\n\r\n // 当前节点的_parentIds = 父节点的_parentIds + 父节点ID\r\n node._parentIds = [...parentParentIds, node.parentId];\r\n\r\n return node._parentIds;\r\n }\r\n\r\n // 遍历所有节点,计算_parentIds\r\n for (const node of list) {\r\n if (node._parentIds.length === 0) { // 只对未计算过的节点进行计算\r\n calculateParentIds(node);\r\n }\r\n }\r\n return list\r\n}\r\n\r\n/**\r\n * 查找树上的点\r\n * 在树形结构中查找满足指定条件的第一个节点\r\n * 时间复杂度O(n):n 是 treeLike 的节点总数(输入数据量)\r\n *\r\n * @param {Array|Object|null|undefined} treeLike - 待处理的树形结构数据,可以是数组、单个对象或null/undefined\r\n * @param {Function} func - 判断函数,接收节点作为参数,返回true表示匹配\r\n * @returns {Object|null} 找到的第一个匹配节点,未找到则返回null\r\n *\r\n * @example\r\n * const tree = [\r\n * { id: 1, name: 'A', children: [\r\n * { id: 2, name: 'B' },\r\n * { id: 3, name: 'C', children: [\r\n * { id: 4, name: 'D' }\r\n * ]}\r\n * ]},\r\n * { id: 5, name: 'E' }\r\n * ];\r\n *\r\n * // 查找id为3的节点\r\n * const result = treeFind(tree, node => node.id === 3);\r\n * console.log(result); // { id: 3, name: 'C', children: [{ id: 4, name: 'D' }] }\r\n */\r\nexport function treeFind(treeLike, func) {\r\n // 统一处理为数组格式\r\n const tree = treeSafe(treeLike)\r\n\r\n // 使用迭代方式遍历,避免深层递归可能导致的栈溢出\r\n const stack = [...tree];\r\n\r\n while (stack.length > 0) {\r\n const currentNode = stack.pop();\r\n\r\n if (func(currentNode)) {\r\n return currentNode;\r\n }\r\n\r\n // 将子节点添加到栈中(反向添加以保持遍历顺序)\r\n if (currentNode?.children && Array.isArray(currentNode.children)) {\r\n for (let i = currentNode.children.length - 1; i >= 0; i--) {\r\n stack.push(currentNode.children[i]);\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * 查找节点的父级\r\n * 在树结构中查找满足条件的节点的父节点\r\n *\r\n * @param {Array|Object|null|undefined} treeLike - 待处理的树形结构数据,可以是数组、单个对象或null/undefined\r\n * @param {Function} func - 用于判断节点是否满足条件的函数\r\n * @param {*} parent - 当前层级的父节点,默认为null\r\n *\r\n * @returns {*} 找到的第一个满足条件的节点的父节点,如果没找到则返回null\r\n *\r\n * 时间复杂度: O(n) - 其中n是树中节点总数,最坏情况下需要遍历所有节点\r\n * 空间复杂度: O(h) - 其中h是树的高度,用于存储迭代栈的空间\r\n *\r\n * @example\r\n * const tree = [\r\n * {\r\n * id: '1',\r\n * name: 'parent',\r\n * children: [\r\n * { id: '11', name: 'child1' },\r\n * { id: '12', name: 'child2' }\r\n * ]\r\n * }\r\n * ];\r\n * const parent = treeFindParent(tree, item => item.id === '11');\r\n * // 返回 id 为 '1' 的节点\r\n */\r\nexport function treeFindParent(treeLike, func, parent) {\r\n // 统一处理为数组格式\r\n const tree = treeSafe(treeLike)\r\n\r\n // 输入验证\r\n if (typeof func !== 'function') {\r\n return null;\r\n }\r\n\r\n // 使用栈进行迭代遍历,避免深层递归导致的栈溢出\r\n const stack = tree.map(node => ({ node, parent }));\r\n\r\n while (stack.length > 0) {\r\n const { node, parent: parentNode } = stack.pop();\r\n\r\n // 检查当前节点是否满足条件\r\n if (func(node)) {\r\n return parentNode; // 如果满足条件,返回其父节点\r\n }\r\n\r\n // 如果当前节点有子节点,将子节点加入栈中继续遍历\r\n if (node.children && Array.isArray(node.children)) {\r\n // 反向添加子节点以保持原有遍历顺序\r\n for (let i = node.children.length - 1; i >= 0; i--) {\r\n stack.push({ node: node.children[i], parent: node });\r\n }\r\n }\r\n }\r\n\r\n // 遍历完所有节点仍未找到满足条件的节点,返回null\r\n return null;\r\n}\r\n\r\n\r\n/**\r\n * 修改树上的点\r\n * 对树形结构中的每个节点应用变换函数,返回一个新的树结构\r\n *\r\n * @param {Array|Object} treeLike - 树形结构数据,可以是数组或单个对象\r\n * @param {Function} func - 应用于每个节点的变换函数,接收节点作为参数并返回新节点\r\n *\r\n * @returns {Array} 经过变换后的新树形结构数组\r\n *\r\n * 时间复杂度: O(n) - 其中n是树中节点总数,需要访问每个节点一次\r\n * 空间复杂度: O(n + h) - 其中n用于存储新树结构,h是树的高度用于递归调用栈\r\n *\r\n * @example\r\n * const tree = [\r\n * {\r\n * id: '1',\r\n * name: 'parent',\r\n * children: [\r\n * { id: '11', name: 'child1' },\r\n * { id: '12', name: 'child2' }\r\n * ]\r\n * }\r\n * ];\r\n * const newTree = treeMap(tree, node => ({ ...node, processed: true }));\r\n */\r\nexport function treeMap(treeLike, func) {\r\n // 统一处理为数组格式\r\n const tree = treeSafe(treeLike)\r\n // 输入验证\r\n if (typeof func !== 'function') {\r\n console.warn('treeMap: func 参数必须是函数类型');\r\n return tree;\r\n }\r\n\r\n // 创建新数组以避免修改原数据\r\n const newTree = [];\r\n\r\n for (let i = 0; i < tree.length; i++) {\r\n const item = tree[i];\r\n\r\n // 对当前节点应用变换函数\r\n const newItem = func(item);\r\n\r\n // 递归处理子节点(如果存在)\r\n if (item.children && Array.isArray(item.children) && item.children.length > 0) {\r\n // 注意:应该对newItem的children进行映射,而不是item的children\r\n newTree[i] = {\r\n ...newItem,\r\n children: treeMap(item.children, func)\r\n };\r\n } else {\r\n newTree[i] = newItem;\r\n }\r\n }\r\n\r\n return newTree;\r\n}\r\n\r\n\r\n/**\r\n * 遍历树上的点\r\n * 对树形结构中的每个节点执行指定的函数\r\n *\r\n * @param {Array|Object} treeLike - 树形结构数据,可以是数组或单个对象\r\n * @param {Function} func - 对每个节点执行的回调函数,接收节点作为参数\r\n *\r\n * @returns {void}\r\n *\r\n * 时间复杂度: O(n) - 其中n是树中节点总数,需要访问每个节点一次\r\n * 空间复杂度: O(h) - 其中h是树的高度,用于递归调用栈的存储空间\r\n *\r\n * @example\r\n * const tree = [\r\n * {\r\n * id: '1',\r\n * name: 'parent',\r\n * children: [\r\n * { id: '11', name: 'child1' },\r\n * { id: '12', name: 'child2' }\r\n * ]\r\n * }\r\n * ];\r\n * treeForEach(tree, node => console.log(node.id));\r\n * // 输出: '1', '11', '12'\r\n */\r\nexport function treeForEach(treeLike, func) {\r\n // 输入验证\r\n if (typeof func !== 'function') {\r\n console.warn('treeForEach: func 参数必须是函数类型');\r\n return;\r\n }\r\n\r\n // 统一处理为数组格式\r\n const tree = treeSafe(treeLike);\r\n\r\n // 使用迭代方式替代递归,避免深层树导致的栈溢出\r\n const stack = [...tree];\r\n\r\n while (stack.length > 0) {\r\n const currentItem = stack.pop();\r\n\r\n // 对当前节点执行函数\r\n func(currentItem);\r\n\r\n // 如果当前节点有子节点,将子节点添加到栈中(逆序添加以保持原有遍历顺序)\r\n if (currentItem.children && Array.isArray(currentItem.children) && currentItem.children.length > 0) {\r\n for (let i = currentItem.children.length - 1; i >= 0; i--) {\r\n stack.push(currentItem.children[i]);\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n/**\r\n * 删除树上的点,所有符合条件的节点都将被删除,直接操作原始树,返回被删除的节点数组。\r\n *\r\n * @param {Array|Object} treeLike - 树形结构数据,可以是数组或单个对象\r\n * @param {Function} func - 判断节点是否需要删除的函数,接收节点作为参数\r\n *\r\n * @returns {Array} 入参treeLike,直接返回,指针不变\r\n *\r\n * 时间复杂度: O(n) - 其中n是树中节点总数,需要访问每个节点一次\r\n * 空间复杂度: O(n) - 最坏情况下需要存储所有被删除的节点和栈空间\r\n *\r\n * @example\r\n * const tree = [\r\n * {\r\n * id: '1',\r\n * name: 'parent',\r\n * children: [\r\n * { id: '11', name: 'child1' },\r\n * { id: '12', name: 'child2' }\r\n * ]\r\n * }\r\n * ];\r\n * const deleted = treeDel(tree, node => node.id === '11');\r\n * // deleted 包含被删除的节点\r\n * // tree 中id为'11'的节点及其所有子节点已被删除\r\n */\r\nexport function treeDel(treeLike, func) {\r\n // 输入验证\r\n if (typeof func !== 'function') {\r\n console.warn('dlsjs: treeDel函数的第二个参数必须是函数类型');\r\n return [];\r\n }\r\n\r\n // 统一处理为数组格式\r\n const tree = treeSafe(treeLike);\r\n\r\n // 存储被删除的节点\r\n const removedNodes = [];\r\n\r\n // 使用迭代方式替代递归,避免深层树导致的栈溢出\r\n // 使用栈来存储需要处理的节点及其父节点的children数组和索引\r\n const stack = [];\r\n\r\n // 初始化栈,存储根节点数组\r\n for (let i = tree.length - 1; i >= 0; i--) {\r\n stack.push({\r\n node: tree[i],\r\n parentArray: tree,\r\n index: i\r\n });\r\n }\r\n\r\n // 处理栈中的节点(从后往前处理,避免索引变化影响)\r\n const nodesToDelete = [];\r\n\r\n while (stack.length > 0) {\r\n const { node, parentArray, index } = stack.pop();\r\n\r\n // 检查当前节点是否符合删除条件\r\n if (func(node)) {\r\n // 标记节点待删除\r\n nodesToDelete.push({ node, parentArray, index });\r\n } else {\r\n // 如果节点不符合删除条件,将其子节点加入栈中继续处理\r\n if (node.children && Array.isArray(node.children) && node.children.length > 0) {\r\n // 从后向前添加子节点,以保持正确的处理顺序\r\n for (let i = node.children.length - 1; i >= 0; i--) {\r\n stack.push({\r\n node: node.children[i],\r\n parentArray: node.children,\r\n index: i\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n // 按照从后往前的顺序删除节点,避免索引变化影响\r\n nodesToDelete.sort((a, b) => {\r\n // 按照在各自数组中的索引从大到小排序\r\n if (a.parentArray === b.parentArray) {\r\n return b.index - a.index;\r\n }\r\n // 如果在不同数组中,我们简单地按删除顺序处理\r\n return 0;\r\n });\r\n\r\n // 实际删除节点\r\n for (const deletion of nodesToDelete) {\r\n const { node, parentArray, index } = deletion;\r\n\r\n // 从数组中移除节点并添加到已删除节点数组\r\n const removed = parentArray.splice(index, 1)[0];\r\n removedNodes.push(removed);\r\n }\r\n\r\n return tree;\r\n}\r\n\r\n\r\n\r\n/**\r\n * 寻找叶子对象\r\n * 沿着指定的键路径递归查找,直到找到没有该键的对象\r\n *\r\n * @param {Object} obj - 要查找的对象\r\n * @param {string} leafKey - 用于查找的键名\r\n *\r\n * @returns {Object|null} 找到的叶子对象,如果输入无效则返回null\r\n *\r\n * 时间复杂度: O(k) - 其中k是叶子键的嵌套深度\r\n * 空间复杂度: O(1) - 使用迭代方式,仅需常量额外空间\r\n *\r\n * @example\r\n * const obj = {\r\n * a: {\r\n * b: {\r\n * c: 'leaf value'\r\n * }\r\n * }\r\n * };\r\n * const result = findLeaf(obj, 'a'); // 返回 { b: { c: 'leaf value' } }\r\n * const result2 = findLeaf(obj, 'c'); // 返回 'leaf value'\r\n */\r\nexport function findLeaf(obj, leafKey) {\r\n // 输入验证\r\n if (obj === null || obj === undefined || typeof obj !== 'object') {\r\n console.warn('dlsjs: findLeaf函数的第一个参数必须是对象类型');\r\n return null;\r\n }\r\n\r\n if (typeof leafKey !== 'string' || leafKey.trim() === '') {\r\n console.warn('dlsjs: findLeaf函数的第二个参数必须是有效的字符串');\r\n return null;\r\n }\r\n\r\n // 使用迭代方式替代递归,避免深层嵌套导致的栈溢出\r\n let current = obj;\r\n\r\n while (current !== null && typeof current === 'object') {\r\n // 检查当前对象是否包含指定的键\r\n if (current.hasOwnProperty(leafKey)) {\r\n // 如果包含键,继续向下查找\r\n current = current[leafKey];\r\n } else {\r\n // 如果不包含键,说明已经到达叶子节点\r\n break;\r\n }\r\n }\r\n\r\n return current;\r\n}\r\n\r\n\r\n/**\r\n * 沿着叶子键路径查找属性值\r\n * 在当前对象中查找指定属性,如果不存在则沿着叶子键路径递归查找\r\n *\r\n * @param {Object} obj - 要查找的对象\r\n * @param {string} leafKey - 用于递归查找的叶子键名\r\n * @param {string} propName - 要查找的属性名\r\n *\r\n * @returns {any|null} 找到的属性值,如果未找到则返回null\r\n *\r\n * 时间复杂度: O(k) - 其中k是叶子键的嵌套深度\r\n * 空间复杂度: O(1) - 使用迭代方式,仅需常量额外空间\r\n *\r\n * @example\r\n * const obj = {\r\n * a: {\r\n * b: {\r\n * c: 'leaf value',\r\n * targetProp: 'found value'\r\n * }\r\n * },\r\n * targetProp: 'root value'\r\n * };\r\n * const result = forkProp(obj, 'a', 'targetProp'); // 返回 'root value'\r\n * const result2 = forkProp(obj, 'a', 'nonexistent'); // 返回 null\r\n */\r\nexport function forkProp(obj, leafKey, propName) {\r\n // 输入验证\r\n if (obj === null || obj === undefined || typeof obj !== 'object') {\r\n console.warn('dlsjs: forkProp函数的第一个参数必须是对象类型');\r\n return null;\r\n }\r\n\r\n if (typeof leafKey !== 'string' || leafKey.trim() === '') {\r\n console.warn('dlsjs: forkProp函数的第二个参数必须是有效的字符串');\r\n return null;\r\n }\r\n\r\n if (typeof propName !== 'string' || propName.trim() === '') {\r\n console.warn('dlsjs: forkProp函数的第三个参数必须是有效的字符串');\r\n return null;\r\n }\r\n\r\n // 使用迭代方式替代递归,避免深层嵌套导致的栈溢出\r\n let current = obj;\r\n\r\n while (current !== null && typeof current === 'object') {\r\n // 1. 优先在当前对象中查找目标属性\r\n if (current.hasOwnProperty(propName)) {\r\n return current[propName];\r\n }\r\n\r\n // 2. 如果当前对象包含叶子键,继续向下查找\r\n if (current.hasOwnProperty(leafKey)) {\r\n current = current[leafKey];\r\n } else {\r\n // 3. 如果不包含叶子键,说明已经到达叶子节点,查找结束\r\n break;\r\n }\r\n }\r\n\r\n // 遍历完所有层级仍未找到目标属性\r\n return null;\r\n}\r\n\r\n\r\n/**\r\n * 维表转树\r\n * @param dimList 平铺维表\r\n * @param dimLink 维表关联关系 e.g.['市','区县','乡镇']\r\n * @param dimMap 维表关联映射字段 e.g.{'市': {propFieldName: 'code1', textFieldName: 'name1'}, '区': {propFieldName: 'code2', textFieldName: 'name2'}, '乡镇': {propFieldName: 'code3', textFieldName: 'name3'}}\r\n */\r\nexport function dim2Tree(dimList, dimLink, dimMap) {\r\n let list = dim2List(dimList, dimLink, dimMap)\r\n return list2Tree(list);\r\n}\r\n\r\n/**\r\n * 维度数据转平铺列表\r\n * 将多维度数据转换为带有层级关系的平铺列表,用于构建树形结构\r\n * 时间复杂度O(m × k):\r\n * m 是 dimList 的长度(输入数据量)\r\n * k 是 dimLink 的长度(维度层级数量)\r\n *\r\n * @param {Array} dimList - 维度数据源,包含各个维度信息的对象数组\r\n * @param {Array} dimLink - 维度关联关系,按层级顺序排列的维度名称数组\r\n * @param {Object} dimMap - 维度映射配置,定义各维度的属性字段\r\n *\r\n * @returns {Array} 转换后的节点列表,每个节点包含 id、parentId、label、value 等属性\r\n *\r\n * @example\r\n * const dimList = [\r\n * { code1: '01', name1: '北京', code2: '0101', name2: '东城区' }\r\n * ];\r\n * const dimLink = ['市', '区'];\r\n * const dimMap = {\r\n * '市': { propFieldName: 'code1', textFieldName: 'name1' },\r\n * '区': { propFieldName: 'code2', textFieldName: 'name2' }\r\n * };\r\n *\r\n * const result = dim2List(dimList, dimLink, dimMap);\r\n */\r\nexport function dim2List(dimList, dimLink, dimMap) {\r\n // 验证输入参数\r\n if (!Array.isArray(dimList) || !Array.isArray(dimLink) || !dimMap) {\r\n return [];\r\n }\r\n\r\n // 构建字段排序数组,按维度关联顺序排列\r\n const fieldSort = [];\r\n for (let i = 0; i < dimLink.length; i++) {\r\n const propName = dimLink[i];\r\n if (propName) {\r\n const match = dimMap[propName];\r\n if (match) {\r\n fieldSort.push(match);\r\n }\r\n }\r\n }\r\n\r\n // 如果没有有效的字段配置,直接返回空数组\r\n if (fieldSort.length === 0) {\r\n return [];\r\n }\r\n\r\n const dataTreeOrg = [];\r\n\r\n // 遍历每条维度数据\r\n for (let i = 0; i < dimList.length; i++) {\r\n const record = dimList[i];\r\n\r\n // 为每个维度层级生成对应的节点\r\n for (let j = 0; j < fieldSort.length; j++) {\r\n const fieldConfig = fieldSort[j];\r\n\r\n // 创建节点对象\r\n const node = {\r\n id: '',\r\n parentId: '',\r\n label: '',\r\n value: ''\r\n };\r\n\r\n // 构建节点ID:连接当前层级及之前所有层级的编码\r\n for (let k = 0; k <= j; k++) {\r\n const currentField = fieldSort[k];\r\n node.id += record[currentField.propFieldName] || '';\r\n }\r\n\r\n // 设置父节点ID:连接当前层级之前所有层级的编码\r\n if (j > 0) {\r\n for (let k = 0; k < j; k++) {\r\n const prevField = fieldSort[k];\r\n node.parentId += record[prevField.propFieldName] || '';\r\n }\r\n } else {\r\n // 顶层节点的父ID设为'-1'\r\n node.parentId = '-1';\r\n }\r\n\r\n // 设置显示标签和值\r\n node.label = record[fieldConfig.textFieldName] || '';\r\n node.value = record[fieldConfig.propFieldName] || '';\r\n\r\n dataTreeOrg.push(node);\r\n }\r\n }\r\n\r\n // 使用uniqBy去重,确保每个ID只对应一个节点\r\n // 注意:这里假设uniqBy函数已正确导入\r\n return uniqBy(item => item.id, dataTreeOrg);\r\n}\r\n\r\n/**\r\n * 树筛选(包含父节点)\r\n * 筛选出符合条件的节点及其所有父节点,返回包含这些节点的树形结构\r\n *\r\n * @param {Array|Object} treeLike - 树形结构数据,可以是数组或单个对象\r\n * @param {Function} func - 判断节点是否满足条件的函数\r\n *\r\n * @returns {Array} 包含符合条件的节点及其所有父节点的树形结构\r\n *\r\n * 时间复杂度: O(n) - 其中n是树中节点总数,需要访问每个节点一次\r\n * 空间复杂度: O(n) - 需要存储所有节点和父节点关系\r\n *\r\n * @example\r\n * const tree = [\r\n * {\r\n * id: '1',\r\n * name: 'parent',\r\n * children: [\r\n * { id: '11', name: 'child1' },\r\n * { id: '12', name: 'child2' }\r\n * ]\r\n * }\r\n * ];\r\n * const result = treeFilter(tree, node => node.id === '11');\r\n * // 返回包含id为'1'和'11'的节点的树形结构\r\n */\r\nexport function treeFilter(treeLike, func) {\r\n // 输入验证\r\n if (typeof func !== 'function') {\r\n console.warn('dlsjs: treeFilter函数的第二个参数必须是函数类型');\r\n return [];\r\n }\r\n\r\n // 统一处理为数组格式\r\n const tree = treeSafe(treeLike);\r\n\r\n // 如果树为空,直接返回空数组\r\n if (tree.length === 0) {\r\n return [];\r\n }\r\n\r\n // 将树转换为平铺列表\r\n const list = tree2List(tree);\r\n\r\n // 使用迭代方式设置父ID列表,避免递归栈溢出\r\n setParentIds4List(list);\r\n\r\n // 筛选符合条件的节点\r\n const matchedNodes = list.filter(func);\r\n\r\n // 如果没有符合条件的节点,返回空数组\r\n if (matchedNodes.length === 0) {\r\n return [];\r\n }\r\n\r\n // 收集所有需要保留的节点ID(符合条件的节点及其所有父节点)\r\n const nodeIdsToKeep = new Set();\r\n\r\n // 添加符合条件的节点ID\r\n for (let i = 0; i < matchedNodes.length; i++) {\r\n nodeIdsToKeep.add(matchedNodes[i].id);\r\n }\r\n\r\n // 添加所有父节点ID\r\n for (let i = 0; i < matchedNodes.length; i++) {\r\n const parentIds = matchedNodes[i]._parentIds || [];\r\n for (let j = 0; j < parentIds.length; j++) {\r\n nodeIdsToKeep.add(parentIds[j]);\r\n }\r\n }\r\n\r\n // 筛选出需要保留的节点\r\n const filteredList = list.filter(item => nodeIdsToKeep.has(item.id));\r\n\r\n // 将筛选后的列表重新构建为树形结构\r\n return list2Tree(filteredList);\r\n}\r\n\r\n/**\r\n * 树转平铺\r\n * 将树形结构数据转换为平铺的数组形式\r\n *\r\n * @param {Array|Object|null|undefined} treeLike - 待处理的树形结构数据,可以是数组、单个对象或null/undefined\r\n * @param {Array} list - 可选的初始数组,用于累积结果,默认为空数组\r\n *\r\n * @returns {Array} 包含所有节点的平铺数组\r\n *\r\n * 时间复杂度: O(n) - 其中n是树中节点总数\r\n * 空间复杂度: O(n) - 用于存储结果数组和递归调用栈\r\n *\r\n * @example\r\n * const tree = [\r\n * {\r\n * id: '1',\r\n * name: 'a',\r\n * children: [\r\n * { id: '11', name: 'a1', parentId: '1' },\r\n * { id: '12', name: 'a2', parentId: '1' }\r\n * ]\r\n * }\r\n * ];\r\n * console.log(tree2List(tree));\r\n * // 输出: [{ id: '1', name: 'a', children: [...] }, { id: '11', name: 'a1', parentId: '1' }, { id: '12', name: 'a2', parentId: '1' }]\r\n */\r\nexport function tree2List(treeLike, list = []) {\r\n // 统一处理为数组格式\r\n const tree = treeSafe(treeLike)\r\n\r\n // 使用迭代方法替代递归,避免深层树导致的栈溢出\r\n const stack = [...tree];\r\n\r\n while (stack.length > 0) {\r\n const currentNode = stack.pop();\r\n\r\n // 添加当前节点到结果列表\r\n list.push(currentNode);\r\n\r\n // 如果当前节点有子节点,则将子节点添加到栈中(逆序添加以保持原有顺序)\r\n if (currentNode.children && Array.isArray(currentNode.children) && currentNode.children.length > 0) {\r\n // 逆序添加子节点以保持与原递归实现相同的遍历顺序\r\n for (let i = currentNode.children.length - 1; i >= 0; i--) {\r\n stack.push(currentNode.children[i]);\r\n }\r\n }\r\n }\r\n\r\n return list;\r\n}\r\n\r\n\r\n/**\r\n * 裁剪树形结构到指定层级(高性能版,不裁剪原始树,返回一颗新树)\r\n * @param {Array|Object|null|undefined} treeLike - 待处理的树形结构数据,可以是数组、单个对象或null/undefined\r\n * @param {number} level - 要保留的层级(从1开始,level=1保留根节点,level=2保留根+一级子节点,以此类推)\r\n * @returns {Array} 裁剪后的指定层级节点列表\r\n */\r\nexport function treeCutLevel(treeLike, level) {\r\n // 统一处理为数组格式\r\n treeLike = treeSafe(treeLike)\r\n // 边界值处理:层级≤0 返回空,层级=1 直接返回根节点(浅拷贝避免修改原数据)\r\n if (level <= 0) return [];\r\n if (level === 1) {\r\n // 只保留根节点,浅拷贝根节点(删除children),不影响原数据\r\n return treeLike.map(node => {\r\n const newNode = { ...node }; // 浅拷贝当前节点\r\n delete newNode.children; // 移除子节点,只保留当前层级\r\n return newNode;\r\n });\r\n }\r\n\r\n // 初始化:当前处理的层级节点列表(初始为根节点)\r\n let currentLevelNodes = [...treeLike]; // 浅拷贝当前层级节点,不修改原数组\r\n // 存储最终要返回的目标层级节点\r\n let targetNodes = [];\r\n\r\n // 遍历到指定层级(从第2层开始,到level层结束)\r\n for (let currentLevel = 2; currentLevel <= level; currentLevel++) {\r\n // 收集下一层的所有节点\r\n const nextLevelNodes = [];\r\n\r\n for (const node of currentLevelNodes) {\r\n // 只处理有children的节点\r\n if (node.children && node.children.length > 0) {\r\n if (currentLevel === level) {\r\n // 到达目标层级:浅拷贝当前子节点,删除其children后加入结果\r\n const cutNodes = node.children.map(child => {\r\n const newChild = { ...child };\r\n delete newChild.children;\r\n return newChild;\r\n });\r\n targetNodes.push(...cutNodes);\r\n } else {\r\n // 未到目标层级:收集子节点,继续遍历下一层\r\n nextLevelNodes.push(...node.children);\r\n }\r\n }\r\n }\r\n\r\n // 更新当前层级节点为下一层\r\n currentLevelNodes = nextLevelNodes;\r\n\r\n // 提前终止:如果下一层没有节点,无需继续循环\r\n if (currentLevelNodes.length === 0) break;\r\n }\r\n\r\n return targetNodes;\r\n}\r\n\r\n\r\n/**\r\n * 安全处理树形结构,确保树为数组格式\r\n * 将输入的树形结构统一转换为数组格式,便于后续处理\r\n *\r\n * @param {Array|Object|null|undefined} treeLike - 待处理的树形结构数据,可以是数组、单个对象或null/undefined\r\n *\r\n * @returns {Array} 统一格式的数组,如果输入为数组则直接返回,如果是对象则包装成数组,其他情况返回空数组\r\n *\r\n * 时间复杂度: O(1) - 仅执行简单的类型检查和转换操作\r\n * 空间复杂度: O(1) - 不考虑输出数组的空间,仅使用常量额外空间\r\n *\r\n * @example\r\n * treeSafe([]); // 返回 []\r\n * treeSafe({id: 1, name: 'node'}); // 返回 [{id: 1, name: 'node'}]\r\n * treeSafe([{id: 1}, {id: 2}]); // 返回 [{id: 1}, {id: 2}]\r\n * treeSafe(null); // 返回 []\r\n * treeSafe(undefined); // 返回 []\r\n */\r\nfunction treeSafe(treeLike) {\r\n // 统一处理为数组格式\r\n let tree = [];\r\n if (Array.isArray(treeLike)) {\r\n // 如果输入已经是数组,直接返回\r\n tree = treeLike;\r\n } else if (typeof treeLike === 'object' && treeLike !== null) {\r\n // 如果输入是对象且不为null,将其包装在数组中\r\n tree = [treeLike];\r\n }\r\n // 对于其他情况(null, undefined, 基本类型等),返回空数组\r\n return tree;\r\n}\r\n\r\n","import {isNil} from \"ramda\";\r\nimport {findLeaf} from \"./Tree\";\r\n/**\r\n * 读写扩展,将扩展getter,setter方法,更易于双向绑定的使用\r\n */\r\nconst ReservedFunction = {\r\n /**\r\n * 取值时解析JSON字符串为JS对象,赋值后将JS对象序列化回JSON字符串\r\n */\r\n \"JSON\": {\r\n get: (v) => {\r\n try {\r\n return JSON.parse(v)\r\n }catch (e) {\r\n // console.warn(e)\r\n return v\r\n }\r\n },\r\n set: (tempSchema, tempKey, tempValue) => {\r\n try {\r\n tempSchema[tempKey] = JSON.stringify(tempValue)\r\n return true\r\n }catch (e) {\r\n // console.warn(e)\r\n tempSchema[tempKey] = '{}'\r\n return true\r\n }\r\n }\r\n },\r\n /**\r\n * 取值时如果为空则创建空数组容器,赋值前如果没有数组容器,则创建数组容器\r\n */\r\n \"Array\": {\r\n get: (v, tempSchema, tempKey) => {\r\n if(!v) tempSchema[tempKey] = []\r\n return tempSchema[tempKey]\r\n },\r\n preSet: (tempSchema, tempKey, tempValue) => {\r\n if(!tempSchema) tempSchema = []\r\n for(let i = 0; i < Number(tempKey); i++){\r\n if(isNil(tempSchema[i])) {\r\n tempSchema[i] = null\r\n }\r\n }\r\n return tempSchema\r\n }\r\n },\r\n /**\r\n * 取值时如果上级是对象数组,则调用Array.property.map(item => item[index])\r\n * 赋值时则调用Array.property.forEach(item => item[index] = tempValue)\r\n */\r\n \"Item\": {\r\n get: (v, tempSchema, tempKey) => {\r\n if(Array.isArray(tempSchema)) {\r\n return tempSchema.map(item => item[tempKey])\r\n }else {\r\n return tempSchema[tempKey]\r\n }\r\n },\r\n set: (tempSchema, tempKey, tempValue) => {\r\n for(let i = 0; i < tempValue.length; i++){\r\n if(!isNil(tempValue[i])) {\r\n if(!tempSchema[i]) tempSchema[i] = {}\r\n tempSchema[i][tempKey] = tempValue[i]\r\n }\r\n }\r\n return tempSchema\r\n }\r\n },\r\n /*针对数字与数组 todo 切换A2S*/\r\n \"ItemString\": {\r\n get: (v, tempSchema, tempKey) => {\r\n if(Array.isArray(tempSchema)) {\r\n return tempSchema.map(item => item[tempKey]).toString()\r\n }else {\r\n return tempSchema[tempKey]\r\n }\r\n },\r\n set: (tempSchema, tempKey, tempValue) => {\r\n tempValue = tempValue.split(',')\r\n for(let i = 0; i < tempValue.length; i++){\r\n if(!tempSchema[i]) tempSchema[i] = {}\r\n if(!isNil(tempValue[i])) {\r\n if(!tempSchema[i]) tempSchema[i] = {}\r\n tempSchema[i][tempKey] = tempValue[i]\r\n }\r\n }\r\n return tempSchema\r\n }\r\n },\r\n /*针对数字与数组 todo 切换N2S*/\r\n \"String\": {\r\n get: (v) => {\r\n return v.toString()\r\n },\r\n set: (tempSchema, tempKey, tempValue) => {\r\n if(typeof tempValue !== 'string') {\r\n tempSchema[tempKey] = tempValue.toString()\r\n }else {\r\n tempSchema[tempKey] = tempValue\r\n }\r\n return tempSchema\r\n }\r\n },\r\n \"Number\": {\r\n get: (v) => {\r\n return Number(v || 0)\r\n },\r\n set: (tempSchema, tempKey, tempValue) => {\r\n tempSchema[tempKey] = Number(tempValue || 0)\r\n return tempSchema\r\n }\r\n },\r\n \"Boolean\": {\r\n get: (v) => {\r\n if(v === 'true') return true\r\n if(v === 'false') return false\r\n return !!v\r\n },\r\n set: (tempSchema, tempKey, tempValue) => {\r\n if(tempValue === 'true') tempSchema[tempKey] = true\r\n else if(tempValue === 'false') tempSchema[tempKey] = false\r\n else tempSchema[tempKey] = !!tempValue\r\n return tempSchema\r\n }\r\n },\r\n /**\r\n * 取一叉树叶子 todo 赋值未完成\r\n */\r\n \"Leaf\": {\r\n get: (v, tempSchema, tempKey) => {\r\n return findLeaf(tempSchema, tempKey)\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 获取符合openApi中$Ref格式的内容\r\n * @param {Object} target\r\n * @param {String} refName\r\n * @param {String} splitString\r\n */\r\nexport function queryDefinitionByRef(target, refName, splitString = '/') {\r\n let refArray = refName?.split(splitString)\r\n refArray.shift() // 抛出\"#\"\r\n let tempSchema = target // 临时参数(每次循环体执行后会改变),当前内容,随着逐步深入解析改变\r\n while(refArray.length > 0) {\r\n // todo 是否对Map与Set提供支持,待决定\r\n if(!tempSchema) return tempSchema // 开始时做非空判断,防止出现空指针\r\n let tempKey = refArray.shift() || '' // 临时参数,取当前key或index\r\n if(tempKey === '') return tempSchema // 应对refName为#/的情况\r\n let regexRes = /\\$([a-zA-Z0-9]+)_(.+)/.exec(tempKey) // 当识别到 $ 开始 _ 结束的正则,开始匹配保留字,做对应处理\r\n if(regexRes) {\r\n const [matchString, reservedWord, newTempKey] = regexRes\r\n tempKey = newTempKey\r\n let reversed = ReservedFunction[reservedWord]\r\n if(reversed && reversed.get) {\r\n tempSchema = reversed.get(tempSchema[tempKey], tempSchema, tempKey)\r\n continue\r\n }\r\n }\r\n tempSchema = tempSchema[tempKey]\r\n }\r\n return tempSchema\r\n}\r\n\r\n/**\r\n * 设置符合openApi中$Ref格式的内容\r\n * @param {Object} target\r\n * @param {String} refName\r\n * @param {any} value\r\n * @param {String} splitString\r\n */\r\nexport function setDefinitionByRef(target, refName, value, splitString = '/') {\r\n let refArray = refName?.split(splitString)\r\n // refArray.shift() // 不抛出\"#\"\r\n let tempSchema;\r\n let tempValue = value;\r\n let tempKey = refArray.pop() || '';\r\n let preKey;\r\n while (refArray.length > 0) {\r\n let tempRef = refArray.join('/')\r\n tempSchema = queryDefinitionByRef(target, tempRef) // 取当前要赋值的区域\r\n preKey = refArray[refArray.length-1] // 赋值区域的键名\r\n let regexResPre = /\\$([a-zA-Z0-9]+)_(.+)/.exec(preKey) // 当识别到 $ 开始 _ 结束的正则,开始匹配保留字,做对应处理\r\n let regexResTemp = /\\$([a-zA-Z0-9]+)_(.+)/.exec(tempKey) // 当识别到 $ 开始 _ 结束的正则,开始匹配保留字,做对应处理\r\n if(regexResPre) {\r\n const [ms, $1, $2] = regexResPre\r\n let reversed = ReservedFunction[$1]\r\n if(reversed && reversed.preSet) {\r\n tempSchema = reversed.preSet(tempSchema, tempKey, tempValue)\r\n }\r\n }\r\n if(regexResTemp) {\r\n const [ms, $1, $2] = regexResTemp\r\n let reversed = ReservedFunction[$1]\r\n if(reversed && reversed.set) {\r\n tempValue = reversed.set(tempSchema, $2, tempValue)\r\n }else {\r\n if(!tempSchema) tempSchema = {}\r\n tempSchema[$2] = tempValue\r\n tempValue = tempSchema\r\n }\r\n }else {\r\n if(!tempSchema) tempSchema = {}\r\n tempSchema[tempKey] = tempValue\r\n tempValue = tempSchema\r\n }\r\n tempKey = preKey;\r\n refArray.pop();\r\n }\r\n return true\r\n}\r\n\r\n/**\r\n * 读写代理内容\r\n */\r\nconst handler = {\r\n get: (target, key) => {\r\n let result;\r\n if(typeof key === 'string' && key.includes('#/')) {\r\n result = queryDefinitionByRef(target, key)\r\n }else {\r\n result = target[key]\r\n }\r\n return result\r\n },\r\n set: (target, key, value) => {\r\n if(typeof key === 'string') {\r\n if(key.includes('#/')) {\r\n setDefinitionByRef(target, key, value)\r\n return true\r\n }\r\n }\r\n target[key] = value\r\n return true\r\n }\r\n}\r\n\r\n/**\r\n * 读写代理内容\r\n */\r\nconst deepHandler = {\r\n get: (target, key) => {\r\n let result;\r\n if(typeof key === 'string' && key.includes('#/')) {\r\n result = queryDefinitionByRef(target, key)\r\n }else {\r\n result = target[key]\r\n }\r\n if(['[object Object]', '[object Array]'].includes(Object.prototype.toString.call(result))) {\r\n return new Proxy(result, deepHandler)\r\n }else {\r\n return result\r\n }\r\n },\r\n set: (target, key, value) => {\r\n if(typeof key === 'string') {\r\n if(key.includes('#/')) {\r\n setDefinitionByRef(target, key, value)\r\n return true\r\n }\r\n }\r\n target[key] = value\r\n return true\r\n }\r\n}\r\n\r\n\r\n/**\r\n * 构造函数,创建一个智能读写对象\r\n * @constructor\r\n */\r\nexport function shallowRW(data) {\r\n return new Proxy(data, handler)\r\n}\r\n\r\nexport function RW(data) {\r\n if(isNil(data)) {\r\n return {}\r\n }\r\n return new Proxy(data, deepHandler)\r\n}\r\n\r\nexport default {\r\n RW, shallowRW\r\n}\r\n","import * as r from 'ramda'\r\n\r\n/**\r\n * 代理函数执行\r\n * @type {{get: ((function(*, *, *): (function(): *))|*)}}\r\n */\r\nconst handler = {\r\n get: function (target, p, receiver) {\r\n if (!r.isNil(target[p])) {\r\n // 使用本身方法\r\n if (r.is(Function, target[p])) {\r\n return (...arg) => {\r\n let result = target[p].call(target, ...arg)\r\n return pack(result)\r\n }\r\n }\r\n // 使用本身属性\r\n else {\r\n return pack(target[p])\r\n }\r\n }\r\n // 使用ramda方法\r\n if (r[p] instanceof Function) {\r\n let func;\r\n if (r[p].length > 1) {\r\n const paramList = new Array(r[p].length - 1).fill(r.__)\r\n func = r[p](...paramList, target)\r\n } else {\r\n func = () => r[p](target)\r\n }\r\n return (...args) => {\r\n let result = func(...args)\r\n return pack(result)\r\n }\r\n }\r\n return target[p]\r\n }\r\n}\r\n\r\n/**\r\n * 数据是否为数组或者对象\r\n */\r\nfunction isAO(data) {\r\n return ['[object Object]', '[object Array]'].includes(Object.prototype.toString.call(data))\r\n}\r\n\r\n/**\r\n * 如果是对象或数组则包装成proxy\r\n */\r\nfunction pack(data) {\r\n if (isAO(data)) {\r\n return new Proxy(data, handler)\r\n } else {\r\n return data\r\n }\r\n}\r\n\r\nexport function Chain(data) {\r\n return pack(data)\r\n}\r\n\r\nexport default Chain\r\n","import {clone, equals, isNil, mergeDeepWith, type} from 'ramda'\r\n/**\r\n * 默认携带当前值的key与parent,便于delete操作等\r\n */\r\n\r\n/**\r\n * 获得翻译转换后的配置,当前版本仅翻译匹配成功的字符串\r\n * @param data\r\n * @param scope\r\n * @param convertFunc\r\n * @param isTerminator\r\n */\r\nexport function deepConvert(data, scope, convertFunc, isTerminator) {\r\n // todo 是否应区分scope中的临时可变数据(key,parent),与常驻不变数据(dataScope等其他外部传入的数据)\r\n if(isTerminator(data, scope) === 'deep') {\r\n return deepConvert(convertFunc(data, scope), scope, convertFunc, isTerminator)\r\n }\r\n if(isTerminator(data, scope)) return convertFunc(data, scope) // 最优先判断,是否为终止标记\r\n if(['[object Object]','[object Array]'].includes(Object.prototype.toString.call(data))) {\r\n // 初始化容器类型\r\n let container = null\r\n if(Object.prototype.toString.call(data) === '[object Array]') {\r\n container = []\r\n }\r\n if(Object.prototype.toString.call(data) === '[object Object]') {\r\n container = {}\r\n }\r\n for(let key in data) {\r\n scope.key = key\r\n scope.parent = container\r\n if(Object.prototype.toString.call(container) === '[object Object]') {\r\n container[key] = deepConvert(data[key], scope, convertFunc, isTerminator)\r\n }else {\r\n let tempResult = deepConvert(data[key], scope, convertFunc, isTerminator)\r\n if(tempResult !== undefined) container.push(tempResult)\r\n }\r\n }\r\n return container\r\n }\r\n return data\r\n}\r\n\r\n/**\r\n * 代替直接赋值方式,合并两个对象,尽可能的不改变指针,键名以obj2为主,obj1中存在,obj2中不存在的键名,将会删除obj1中的内容\r\n * @param obj1\r\n * @param obj2\r\n */\r\nexport function deepMerge(obj1, obj2) {\r\n if(Object.prototype.toString.call(obj1) === '[object Array]') {\r\n obj1.length = 0\r\n obj1.splice(0,0,...obj2)\r\n return\r\n }\r\n for(let key in obj1) {\r\n if(!obj2.hasOwnProperty(key)) {\r\n delete obj1[key]\r\n }\r\n }\r\n for(let key in obj1) {\r\n if(!equals(obj1[key], obj2[key])) { // todo 使用equals将增加时空复杂度,待优化\r\n if(Object.prototype.toString.call(obj1[key]) === '[object Object]') {\r\n deepMerge(obj1[key], obj2[key])\r\n }else if(Object.prototype.toString.call(obj1[key]) === '[object Array]') {\r\n obj1[key].length = 0\r\n obj1[key].splice(0,0,...obj2[key])\r\n }else {\r\n obj1[key] = obj2[key]\r\n }\r\n }\r\n }\r\n for(let key in obj2) {\r\n if(!obj1.hasOwnProperty(key)) obj1[key] = obj2[key]\r\n }\r\n}\r\n\r\n/**\r\n * 代替object.assign,合并两个对象,尽可能的不改变指针\r\n * @param obj1\r\n * @param obj2\r\n * @param [matchFunc]\r\n */\r\nexport function deepAssign(obj1 = {}, obj2 = {}, matchFunc = null, notUseMatch = null) {\r\n for(let key in obj2) {\r\n // 属性判断类型\r\n if(obj1.hasOwnProperty(key) && type(obj2[key]) === 'Object' && type(obj1[key]) === 'Object') {\r\n deepAssign(obj1[key], obj2[key], matchFunc, notUseMatch)\r\n }else if(obj1.hasOwnProperty(key) && type(obj2[key]) === 'Array' && type(obj1[key]) === 'Array') {\r\n deepAssignArr(obj1[key], obj2[key], matchFunc, notUseMatch)\r\n }else {\r\n obj1[key] = obj2[key]\r\n }\r\n }\r\n return obj1\r\n}\r\nexport function shallowAssign(obj1 = {}, obj2 = {}, matchFunc = null) {\r\n for(let key in obj2) {\r\n // 属性判断类型\r\n if(obj1.hasOwnProperty(key) && type(obj2[key]) === 'Object' && type(obj1[key]) === 'Object') {\r\n deepAssign(obj1[key], obj2[key], matchFunc)\r\n }else {\r\n obj1[key] = obj2[key]\r\n }\r\n }\r\n return obj1\r\n}\r\n\r\n/**\r\n * 合并数组\r\n * @param arr1\r\n * @param arr2\r\n * @param [matchFunc] 例:(a,b) => a.id === b.id\r\n * @param [notUseMatch] 例:(arr1,arr2) => !a?.[0]?.id || b?.[0]?.id 为true时,不适用标识配对情况,仍以顺序覆盖\r\n */\r\nexport function deepAssignArr(arr1, arr2, matchFunc = null, notUseMatch = null) {\r\n if(arr2.filter(item => typeof item === 'object')?.length === 0) {\r\n arr1.splice(0, arr1.length)\r\n }\r\n for (let index in arr2) {\r\n if(type(arr2[index]) === 'Object') {\r\n // 没有自定义匹配规则时使用,顺位赋值\r\n if((notUseMatch instanceof Function && notUseMatch(arr1, arr2)) || !(matchFunc instanceof Function)) {\r\n if(!isNil(arr1[index])) {\r\n deepAssign(arr1[index], arr2[index], matchFunc, notUseMatch);\r\n }else {\r\n arr1.push(arr2[index])\r\n }\r\n }\r\n // 匹配规则赋值\r\n else if(matchFunc instanceof Function) {\r\n let matchRes;\r\n for(let i1 = 0;i1 < arr1.length;i1++) {\r\n matchRes = matchFunc(arr1[i1], arr2[index])\r\n if(matchRes) {\r\n deepAssign(arr1[i1], arr2[index], matchFunc, notUseMatch);\r\n break;\r\n }\r\n }\r\n if(!matchRes) {\r\n arr1.push(arr2[index])\r\n }\r\n }\r\n\r\n }else if(type(arr2[index]) === 'Array' && type(arr1[index]) === 'Array') {\r\n // 多位数组合并情况,仅通过index合并\r\n deepAssignArr(arr1[index], arr2[index], matchFunc, notUseMatch)\r\n }else {\r\n // 非数组对象仅通过赋值合并\r\n arr1[index] = arr2[index]\r\n }\r\n }\r\n}\r\n\r\nexport function shallowAssignArr(arr1, arr2, matchFunc = null) {\r\n for (let index in arr2) {\r\n if(type(arr2[index]) === 'Object') {\r\n // 匹配规则赋值\r\n if(matchFunc instanceof Function) {\r\n let matchRes;\r\n for(let i1 = 0;i1 < arr1.length;i1++) {\r\n matchRes = matchFunc(arr1[i1], arr2[index])\r\n if(matchRes) {\r\n shallowAssign(arr1[i1], arr2[index], matchFunc);\r\n break;\r\n }\r\n }\r\n if(!matchRes) {\r\n arr1.push(arr2[index])\r\n }\r\n }\r\n // 没有自定义匹配规则时使用,顺位赋值\r\n else {\r\n if(!isNil(arr1[index])) {\r\n shallowAssign(arr1[index], arr2[index], matchFunc);\r\n }else {\r\n arr1.push(arr2[index])\r\n }\r\n }\r\n }else if(type(arr2[index]) === 'Array' && type(arr1[index]) === 'Array') {\r\n // 多位数组合并情况,仅通过index合并\r\n shallowAssignArr(arr1[index], arr2[index], matchFunc)\r\n }else {\r\n // 非数组对象仅通过赋值合并\r\n arr1[index] = arr2[index]\r\n }\r\n }\r\n}\r\n\r\n\r\n/**\r\n * 查询不同值\r\n * @param json1\r\n * @param json2\r\n */\r\nexport function deepDiff(json1, json2) {\r\n let differences = {};\r\n\r\n function compare(obj1, obj2, path) {\r\n for (let key in obj1) {\r\n if (!(key in obj2)) {\r\n differences[path + key] = { left: obj1[key], right: undefined };\r\n } else {\r\n if (type(obj1[key]) === 'Object' && type(obj2[key]) === 'Object' || type(obj1[key]) === 'Array' && type(obj2[key]) === 'Array') {\r\n let newPath = ''\r\n if(path === '') newPath = `#/${key}/`\r\n else newPath = path + `${key}/`\r\n compare(obj1[key], obj2[key], newPath);\r\n } else if (obj1[key] !== obj2[key]) {\r\n differences[path + key] = { left: obj1[key], right: obj2[key] };\r\n }\r\n }\r\n }\r\n\r\n for (let key in obj2) {\r\n if (!(key in obj1)) {\r\n differences[path + key] = { left: undefined, right: obj2[key] };\r\n }\r\n }\r\n }\r\n\r\n compare(json1, json2, '');\r\n return differences;\r\n}\r\n\r\nclass Convert {\r\n constructor(config) {\r\n this.reservedProperty = config.reservedProperty || {}\r\n this.reservedWord = config.reservedWord || {}\r\n }\r\n createConverter() {\r\n return (data) => deepConvert(data, {key: null, parent: null}, this.transValue , this.isTerminator)\r\n }\r\n /**\r\n * 可以把符合条件的字符或者对象转换为目标格式\r\n * @param data\r\n * @param params\r\n * @return {(function(): void)|*}\r\n */\r\n transValue(data, params) {\r\n if(Object.prototype.toString.call(data) === '[object Object]') {\r\n for(let key in data) {\r\n if(this.reservedProperty.hasOwnProperty(key)) {\r\n return this.reservedProperty[key](data, params)\r\n }\r\n }\r\n }\r\n if(typeof data === 'string') {\r\n let regexRes = /^(@[a-zA-Z0-9]+)\\/(.+)/.exec(data)\r\n if(regexRes) {\r\n const [matchString, $1, $2] = regexRes;\r\n if(this.reservedWord.hasOwnProperty($1)) {\r\n return this.reservedWord[$1](data, params, $2)\r\n }\r\n }\r\n }\r\n return data\r\n }\r\n /**\r\n * 终止符判断\r\n * @param data\r\n * @returns {boolean}\r\n */\r\n isTerminator(data) {\r\n if(Object.prototype.toString.call(data) === '[object Object]') {\r\n for(let key in data) {\r\n if(this.reservedProperty.hasOwnProperty(key)) {\r\n return true\r\n }\r\n }\r\n }\r\n if(typeof data === 'string') {\r\n let regexRes = /^(@[a-zA-Z0-9]+)\\/(.+)/.exec(data)\r\n if(regexRes) {\r\n const [matchString, $1, $2] = regexRes;\r\n if(this.reservedWord.hasOwnProperty($1)) {\r\n return true\r\n }\r\n }\r\n }\r\n return false\r\n }\r\n}\r\n\r\n/**\r\n * 多长度数组组合长度可能性\r\n * @param sizeArr\r\n */\r\nexport function combine(sizeArr) {\r\n if(sizeArr.length === 1) return combineSingle(sizeArr[0])\r\n let res = combineNum(sizeArr[0], sizeArr[1])\r\n if(sizeArr.length === 2) return res\r\n for(let i = 2;i < sizeArr.length;i++) {\r\n res = combineArrSize(res, sizeArr[i])\r\n }\r\n return res\r\n\r\n function combineSingle(size) {\r\n const arr = []\r\n for(let i = 0;i < size;i++) {\r\n arr.push([i])\r\n }\r\n return arr\r\n }\r\n\r\n function combineNum(size1, size2) {\r\n const arr = []\r\n for(let i = 0;i < size1;i++) {\r\n for(let j = 0;j < size2;j++) {\r\n arr.push([i, j])\r\n }\r\n }\r\n return arr\r\n }\r\n\r\n function combineArrSize(lastArr, size) {\r\n const arr = []\r\n for(let item of lastArr) {\r\n for(let j = 0;j < size;j++) {\r\n const iArr = clone(item)\r\n arr.push(iArr.concat(j))\r\n }\r\n }\r\n return arr\r\n }\r\n}\r\n\r\n/**\r\n * 多组数组组合排列\r\n * @param groupArr\r\n */\r\nexport function combineArr(groupArr) {\r\n const sizeArr = []\r\n for(let item of groupArr) {\r\n sizeArr.push(item.length)\r\n }\r\n const indexList = combine(sizeArr)\r\n\r\n const res = []\r\n for(let indexGroup of indexList) {\r\n const item = []\r\n for(let i in indexGroup) {\r\n let index = indexGroup[i]\r\n item.push(clone(groupArr[i][index]))\r\n }\r\n res.push(item)\r\n }\r\n return res\r\n}\r\n\r\n// 运行模板字符串\r\nexport function runTemplateString(template, variableMap) {\r\n let keys = [...new Set([...Object.keys(variableMap), ...extractPlaceholders(template)])]\r\n let values = Object.values(variableMap)\r\n for(let i = 1;keys.length >= values.length;i++) {\r\n values.push('')\r\n }\r\n let func\r\n try {\r\n func = new Function(...keys, `return \\`${template}\\``)\r\n }catch (e) {\r\n console.warn(e)\r\n return ''\r\n }\r\n let res = ''\r\n try {\r\n res = func(...values)\r\n }catch (e) {\r\n console.warn(e)\r\n return ''\r\n }\r\n return res\r\n}\r\n\r\nfunction extractPlaceholders(str) {\r\n // 使用正则表达式来匹配 ${} 中的内容\r\n const regex = /\\$\\{([a-zA-Z0-9_]+)\\}/g;\r\n const matches = [];\r\n let match;\r\n\r\n // 使用 while 循环来提取所有匹配项\r\n while ((match = regex.exec(str)) !== null) {\r\n // 第一个匹配的分组是 `([a-zA-Z0-9_]+)` 中的内容\r\n matches.push(match[1]);\r\n }\r\n\r\n return matches;\r\n}\r\n\r\nexport default {\r\n deepConvert, deepMerge, deepAssign, deepDiff, combine, combineArr, shallowAssign, shallowAssignArr\r\n}\r\n","import {isEmpty, isNil, type} from 'ramda'\r\nimport {RW} from \"./QRW\";\r\n/**\r\n * 区间判断\r\n * @param value\r\n * @param range\r\n * @return {boolean|void|*}\r\n *\r\n * @example\r\n * isRangeIn(55,'[50,60]')\r\n * 中括号开区间,小括号闭区间,大括号枚举匹配,直接填入数值判断等于\r\n */\r\nexport const isRangeIn = function (value, range) {\r\n if(typeof range === 'number') range = range.toString()\r\n if(!range) return false // range为空时默认错误\r\n if(!value && value !== 0) return false // value为空时默认错误\r\n if(!isNaN(value)) value = Number(value) // value不为number时强转一下\r\n else {\r\n console.error('isRangeIn first param \"value\" is NaN')\r\n return false\r\n }\r\n let isContainMin = false\r\n let isContainMax = false\r\n let isGTMin = false\r\n let isLTMax = false\r\n // 纯数字时相等为真\r\n if(!isNaN(Number(range))) return value === Number(range)\r\n // 花括弧时,包含为真\r\n if(range.includes('{') && range.includes('}')) {\r\n let arrString = range.replace(/\\{|}/g,'')\r\n let arr = arrString.split(',').map(item => {\r\n return Number(item)\r\n })\r\n return arr.includes(value)\r\n }\r\n // 位运算+幂运算(判断第几位是1)\r\n if(range.includes('&pow')) {\r\n let string = range.replace(/(&pow)/g,'')\r\n return !!(value&Math.pow(2,Number(string) - 1))\r\n }\r\n // 位运算(与)\r\n if(range.includes('&')) {\r\n let string = range.replace(/(&)/g,'')\r\n return !!(value&Number(string))\r\n }\r\n // 开闭区间,运算\r\n let rangeArr = range.split(',')\r\n if(rangeArr[0].includes('[')) isContainMin = true\r\n if(rangeArr[1].includes(']')) isContainMax = true\r\n let min = rangeArr[0].replace(/\\[|]|\\(|\\)/g,'') || -Infinity\r\n let max = rangeArr[1].replace(/\\[|]|\\(|\\)/g,'') || Infinity\r\n if(isContainMin) {\r\n isGTMin = value >= min\r\n }else {\r\n isGTMin = value > min\r\n }\r\n if(isContainMax) {\r\n isLTMax = value <= max\r\n\r\n }else {\r\n isLTMax = value < max\r\n }\r\n return isLTMax && isGTMin\r\n}\r\n\r\n/**\r\n * 判断一个对象是否符合要求\r\n * @param {{key,value,condition,prop,eval,enum,dateFormat,must,should,matchFuncName}} config\r\n * @param {{}} data\r\n * @param {{}} [myFuncMap]\r\n * @return {boolean|*}\r\n */\r\nexport function matchRules(config, data) {\r\n if(config.must) {\r\n return checkMust(config.must, data)\r\n }\r\n if(config.should) {\r\n return checkShould(config.should, data)\r\n }\r\n if(config.condition) {\r\n let left = config.left\r\n let right = config.right\r\n if(config.leftKey) {\r\n left = RW(data)[config.leftKey]\r\n }\r\n if(config.rightKey) {\r\n right = RW(data)[config.rightKey]\r\n }\r\n if(config.condition === 'eq') {\r\n return left === right\r\n }\r\n if(config.condition === 'ne') {\r\n return left !== right\r\n }\r\n if(config.condition === 'lt') {\r\n return left < right\r\n }\r\n if(config.condition === 'le') {\r\n return left <= right\r\n }\r\n if(config.condition === 'gt') {\r\n return left > right\r\n }\r\n if(config.condition === 'ge') {\r\n return left >= right\r\n }\r\n if(config.condition === 'in') {\r\n if(['String', 'Array'].includes(type(right))) {\r\n return right?.includes(left)\r\n }else {\r\n console.error(`${right} is not String|Array`)\r\n return false\r\n }\r\n }\r\n if(config.condition === 'nin') {\r\n if(['String', 'Array'].includes(type(right))) {\r\n return !right?.includes(left)\r\n }else {\r\n console.error(`${right} is not String|Array`)\r\n return false\r\n }\r\n }\r\n if(config.condition === 'has') {\r\n if(['String', 'Array'].includes(type(left))) {\r\n return left?.includes(right)\r\n }else {\r\n console.error(`${left} is not String|Array`)\r\n return false\r\n }\r\n }\r\n if(config.condition === 'nhas') {\r\n if(['String', 'Array'].includes(type(left))) {\r\n return !left?.includes(right)\r\n }else {\r\n console.error(`${left} is not String|Array`)\r\n return false\r\n }\r\n }\r\n if(config.condition === 'notNull') {\r\n return !isNil(left) && !isEmpty(left)\r\n }\r\n if(config.condition === 'isNull') {\r\n return isNil(left) || isEmpty(left)\r\n }\r\n if(config.condition === 'any') {\r\n return true\r\n }\r\n }\r\n return true\r\n}\r\n\r\n/**\r\n * 通用条件判断must\r\n */\r\nexport function checkMust(must, row) {\r\n let result = []\r\n for(let item of must) {\r\n result.push(matchRules(item, row))\r\n }\r\n return !result.includes(false)\r\n}\r\n\r\n/**\r\n * 通用条件判断should\r\n */\r\nexport function checkShould(should, row) {\r\n let result = []\r\n for(let item of should) {\r\n result.push(matchRules(item, row))\r\n }\r\n return result.includes(true)\r\n}\r\n\r\n/**\r\n * 类型判断\r\n */\r\nexport function isType(type, target) {\r\n let typeList = type.split(',')\r\n let result = []\r\n for(let type of typeList) {\r\n result.push(Object.prototype.toString.call(target) === `[object ${type}]`)\r\n }\r\n return result.includes(true)\r\n}\r\n","import {isNil} from 'ramda'\r\n\r\nclass SingletonManage {\r\n constructor(option) {\r\n // todo 检查option结构\r\n this.data = {}\r\n this.promiseInstance = {}\r\n this.option = option\r\n }\r\n async get(name) {\r\n // 内存有值返回值\r\n if(this.data[name]) return this.data[name]\r\n // 已发起请求需等待\r\n if(this.promiseInstance[name]) {\r\n await this.promiseInstance[name]\r\n return this.data[name]\r\n }\r\n if(!this.promiseInstance[name]) {\r\n if(!this.option[name]) return null\r\n this.promiseInstance[name] = this.option[name]()\r\n this.data[name] = await this.promiseInstance[name]\r\n this.promiseInstance[name] = null\r\n return this.data[name]\r\n }\r\n }\r\n getSync(name) {\r\n // 内存有值返回值\r\n if(this.data[name]) return this.data[name]\r\n else {\r\n this.data[name] = this.option[name]()\r\n return this.data[name]\r\n }\r\n }\r\n async set(name, func) {\r\n // todo 命名冲突校验\r\n if(Object.prototype.toString.call(func) === '[object Function]') {\r\n this.option[name] = func\r\n }else if(Object.prototype.toString.call(func) === '[object AsyncFunction]'){\r\n if(!this.promiseInstance[name]) {\r\n this.promiseInstance[name] = func()\r\n this.data[name] = await this.promiseInstance[name]\r\n this.promiseInstance[name] = null\r\n }\r\n }\r\n }\r\n async refresh(name) {\r\n this.data[name] = null\r\n return await this.get(name)\r\n }\r\n}\r\n\r\n/**\r\n * 创建单例仓库\r\n * @param option 键值是getter函数,可以是async函数\r\n */\r\nexport function createSM(option) {\r\n const instance = new SingletonManage(option)\r\n const handler = {\r\n get: (target, key) => {\r\n if(!isNil(target[key])) {\r\n return target[key]\r\n }else {\r\n return target.getSync(key)\r\n }\r\n }\r\n }\r\n // 支持直接取值\r\n return new Proxy(instance, handler)\r\n}\r\n\r\nexport default {\r\n createSM\r\n}\r\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","import {RW} from \"../ES/QRW.js\";\r\nimport dayjs from \"dayjs\";\r\n\r\n/**\r\n * 直接获取scope.data的数据\r\n * @param value\r\n * @param scope\r\n * @param $2\r\n * @return {*}\r\n */\r\nexport function pickRW4Scope(value, scope, $2) {\r\n if(!scope || !scope.data) return null\r\n return RW(scope.data)['#/' + $2]\r\n}\r\n\r\n/**\r\n * 通常使用scope.func与scope.data组合成一个函数,获取其返回值\r\n * @param value\r\n * @param scope\r\n * @param $2\r\n * @return {function(...[*]): *}\r\n */\r\nexport function createEval(value, scope, $2) {\r\n let func = new Function('scope', 'RW', 'dayjs', 'return ' + $2)\r\n return func(scope, RW, dayjs)\r\n}\r\n\r\n/**\r\n * 构造一个函数立刻求返回值\r\n */\r\nexport function createFuncEval(value, scope, $2) {\r\n let func = new Function('scope', 'RW', 'dayjs', $2)\r\n return func(scope, RW, dayjs)\r\n}\r\n\r\n/**\r\n * 需要返回一个函数\r\n */\r\nexport function createFunc(value, scope, $2) {\r\n let func = new Function('scope', 'RW', 'dayjs', 'args', $2)\r\n return (...args) => {\r\n return func(scope, RW, dayjs, args)\r\n }\r\n}\r\n\r\n/**\r\n * 需要返回一个函数,并且函数的返回值是Promise实例,在文本中可以用await 关键字。\r\n */\r\nexport function createAsync(value, scope, $2) {\r\n let func = new Function('scope', 'RW', 'dayjs', 'args', `return async function() {${$2}}`)\r\n return (...args) => {\r\n let asyncFunc = func(scope, RW, dayjs, args)\r\n return asyncFunc()\r\n }\r\n}\r\n\r\n/**\r\n * 创建多步function\r\n * @param steps\r\n * @param params\r\n * @return {(function(...[*]): Promise<void>)|*}\r\n */\r\nexport function createStep(steps, params) {\r\n return async (...args) => {\r\n for(let step of steps) {\r\n if(step.type === 'custom') {\r\n let func = params.funcScope?.[step.funcName]\r\n let paramList = []\r\n if(step.params) {\r\n for(let p of step.params) {\r\n paramList.push(createEval(p, params)(...args))\r\n }\r\n }\r\n if(typeof func === 'function') {\r\n func(...paramList)\r\n }\r\n }\r\n if(step.type === 'eval') {\r\n let res = createEval(step.value, params)(...args)\r\n if(res === false) return\r\n }\r\n }\r\n }\r\n}\r\n","import {createAsync, createEval, createFunc, createFuncEval, createStep, pickRW4Scope} from \"./transFunc.js\";\r\n\r\n// 当对象含有下列属性值时,把对象输入对应函数翻译。函数的返回值赋值给输入对象的原指针\r\nexport const reservedProperty = {\r\n '@step': function(value, params) {\r\n let steps = value['@step']\r\n return createStep(steps, params)\r\n },\r\n '@json': function (value, params) {\r\n return JSON.parse(value['@json'])\r\n }\r\n}\r\n\r\n// 当对象含有下列属性值时,把对象输入对应函数解析后。返回值应该是一个对象。这个返回值会被再次翻译,直到。。。\r\nexport const reservedDeepProperty = {\r\n\r\n}\r\n\r\n// 遇到键值是字符串,且包含下列关键字,就把键值送去解析后返回原地址。\r\nexport const reservedWord = {\r\n '@scope': pickRW4Scope,\r\n '@dataScope': pickRW4Scope,\r\n '@eval': createEval,\r\n '@funcEval': createFuncEval,\r\n '@func': createFunc,\r\n '@async': createAsync,\r\n}\r\n\r\n// 遇到键名是下列关键字时,就把键值送去解析\r\nexport const reservedKey = {\r\n\r\n}\r\n","import {reservedDeepProperty, reservedKey, reservedProperty, reservedWord} from \"./transRule.js\";\r\nimport {deepConvert} from \"../ES/Trans.js\";\r\n\r\n/**\r\n * 翻译器的翻译中心,执行各个翻译规则,可以把符合条件的字符或者对象转换为目标格式\r\n * @param data\r\n * @param params\r\n * @param reservedDeepProperty\r\n * @param reservedKey\r\n * @param reservedProperty\r\n * @param reservedWord\r\n * @return {(function(): void)|*}\r\n */\r\nfunction transValue(data, params, {reservedDeepProperty, reservedKey, reservedProperty, reservedWord}) {\r\n if(reservedKey.hasOwnProperty(params.key)) {\r\n return reservedKey[params.key](data, params)\r\n }\r\n if(Object.prototype.toString.call(data) === '[object Object]') {\r\n for(let key in data) {\r\n if(reservedProperty.hasOwnProperty(key)) {\r\n return reservedProperty[key](data, params)\r\n }else if(reservedDeepProperty.hasOwnProperty(key)) {\r\n return reservedDeepProperty[key](data, params)\r\n }\r\n }\r\n }\r\n if(typeof data === 'string') {\r\n let regexRes = /^(@[a-zA-Z0-9]+)\\/(.+)/.exec(data)\r\n if(regexRes) {\r\n const [matchString, $1, $2] = regexRes;\r\n if(reservedWord.hasOwnProperty($1)) {\r\n return reservedWord[$1](data, params, $2)\r\n }\r\n }\r\n }\r\n return data\r\n}\r\n\r\n/**\r\n * 终止符判断。防止翻译器无法停止,这里设置终止条件,返回值为ture时视作当前分支终结。\r\n * @param data\r\n * @param params\r\n * @param reservedDeepProperty\r\n * @param reservedKey\r\n * @param reservedProperty\r\n * @param reservedWord\r\n * @returns {boolean}\r\n */\r\nfunction isTerminator(data, params, {reservedDeepProperty, reservedKey, reservedProperty, reservedWord}) {\r\n // 键名匹配成功时,翻译键值后不再继续遍历\r\n if(reservedKey.hasOwnProperty(params.key)) {\r\n return true\r\n }\r\n // 键名未匹配时,键值如果是对象,进入属性匹配与深度匹配, 匹配到则识别此处为分支终点\r\n if(Object.prototype.toString.call(data) === '[object Object]') {\r\n for(let key in data) {\r\n if(reservedProperty.hasOwnProperty(key) && !(data.hasOwnProperty('@canDeep') || data.hasOwnProperty('@json') || data.hasOwnProperty('@stepV2'))) {\r\n return true\r\n }else if(reservedProperty.hasOwnProperty(key) && (data.hasOwnProperty('@canDeep') || data.hasOwnProperty('@json') || data.hasOwnProperty('@stepV2'))){\r\n return 'deep'\r\n }else if(reservedDeepProperty.hasOwnProperty(key)) {\r\n reservedDeepProperty[key](data, params)\r\n }\r\n }\r\n }\r\n // 键名未匹配时,键值如果是字符,进入键值正则匹配\r\n if(typeof data === 'string') {\r\n let regexRes = /^(@[a-zA-Z0-9]+)\\/(.+)/.exec(data)\r\n if(regexRes) {\r\n const [matchString, $1, $2] = regexRes;\r\n if(reservedWord.hasOwnProperty($1)) {\r\n return true\r\n }\r\n }\r\n }\r\n return false\r\n}\r\n\r\n/**\r\n * dlsjs提供的预设翻译器\r\n * @param jsonObj 从数据库取出,将要翻译的对象\r\n * @param scope 提供当前环境下,可以让翻译器访问的指针\r\n * @returns {*}\r\n */\r\nexport const dlsjsTrans = createMyTrans({})\r\n\r\n/**\r\n * 构建自己的翻译器\r\n * @param rules\r\n * @returns {function(*, *): *|[]}\r\n */\r\nexport function createMyTrans(rules = {}) {\r\n const myTransFunc = (data, params) => transValue(data, params, {\r\n reservedDeepProperty: Object.assign({}, reservedDeepProperty, rules.reservedDeepProperty),\r\n reservedKey: Object.assign({}, reservedKey, rules.reservedKey),\r\n reservedProperty: Object.assign({}, reservedProperty, rules.reservedProperty),\r\n reservedWord: Object.assign({}, reservedWord, rules.reservedWord),\r\n })\r\n const myIsTerminator = (data, params) => isTerminator(data, params, {\r\n reservedDeepProperty: Object.assign({}, reservedDeepProperty, rules.reservedDeepProperty),\r\n reservedKey: Object.assign({}, reservedKey, rules.reservedKey),\r\n reservedProperty: Object.assign({}, reservedProperty, rules.reservedProperty),\r\n reservedWord: Object.assign({}, reservedWord, rules.reservedWord),\r\n })\r\n return (jsonObj, scope) => deepConvert(jsonObj, scope, myTransFunc , myIsTerminator)\r\n}\r\n\r\n\r\n","export * from './Browser/File'\r\nexport * from './Browser/Dom'\r\nexport * from './Browser/Nav'\r\nexport * from './Browser/Timer'\r\nexport * from './Browser/Screen'\r\nexport * from './Browser/Local'\r\nexport * from './ES/QRW'\r\nexport {default as Chain} from './ES/Chain'\r\nexport * from './ES/Trans'\r\nexport * from './ES/Tree'\r\nexport * from './ES/Judgment'\r\nexport * from './ES/Singleton'\r\nexport * from './Instance/transCore'\r\n\r\nexport const DLS_CONFIG = {\r\n TREE_ID: 'id',\r\n TREE_PARENT_ID: 'parentId',\r\n TREE_CHILDREN: 'children'\r\n}\r\n"],"names":["bind","toString","type","isFunction","prototype","trim","forEach","keys","props","descriptors","filter","prop","endsWith","pair","hasOwnProperty","AxiosError","utils","path","toFormData","encode","match","URLSearchParams","FormData","Blob","platform","isFormData","isFileList","transitional","self","AxiosHeaders","isCancel","CanceledError","reject","validateStatus","min","head","tail","origin","mergeConfig","merge","length","signal","iterator","done","ReadableStream","test","fetch","map","fetchAdapter.getFetch","getAdapter","adapters","VERSION","validators","validator","chain","Axios","spread","isAxiosError","HttpStatusCode","CancelToken","all","count","handler","add","set2","curryN","addIndex","adjust","_isArray","XAll","_isArguments","contains","b","_objectIs","equals","pad","_toISOString","XFilter","recur","max","XMap","_xmap","_isInteger","pluck","_reduce","XWrap","allPass","always","and","XAny","any","anyPass","ap","XAperture","append","apply","values","applySpec","applyTo","ascend","curry","ascendNatural","isNil","assocPath","assoc","nAry","binary","liftN","lift","both","call","tInit","tStep","XPreservingReduced","XFlatCat","clamp","copy","_ObjectMap","clone","collectBy","o","tag","comparator","not","slice","reverse","pipeWith","composeWith","concat","cond","constructN","construct","converge","XReduceBy","reduceBy","defaultTo","descend","descendNatural","_Set","set","difference","differenceWith","remove","dissocPath","dissoc","divide","XDrop","drop","XTake","take","dropLast","XDropLast","_dropLast","dropLastWhile","XDropLastWhile","_dropLastWhile","XDropRepeatsWith","dropRepeatsWith","eqBy","XDropWhile","dropWhile","or","either","empty","takeLast","eqProps","evolve","XFind","find","XFindIndex","findIndex","XFindLast","findLast","XFindLastIndex","findLastIndex","flip","flow","forEachObjIndexed","fromPairs","_fromPairs","gt","gte","hasPath","_path","has","hasIn","ifElse","indexOf","innerJoin","insert","insertAll","XUniqBy","intersection","objOf","_objectAssign","into","invert","invertObj","invoker","is","isEmpty","isNotEmpty","isNotNil","juxt","keysIn","lastIndexOf","lens","update","lensIndex","lensPath","lensProp","lt","lte","mapAccum","mapAccumRight","rebuild","mapKeys","_rebuild","_mapKeys","mapObjIndexed","mathMod","maxBy","mean","median","memoizeWith","mergeAll","mergeWithKey","r","mergeDeepWithKey","mergeDeepLeft","mergeDeepRight","mergeDeepWith","mergeLeft","mergeRight","mergeWith","minBy","modifyPath","modify","modulo","multiply","partialObject","negate","none","nthArg","of","omit","on","once","otherwise","over","paths","pathEq","pathOr","pathSatisfies","pick","pickAll","pickBy","prepend","useWith","XPromap","propEq","propIs","propOr","propSatisfies","range","reduceRight","renameKeys","times","repeat","replace","XScan","_xscan","scan","sequence","F","identity","sort","sortBy","sortWith","splitAt","splitEvery","splitWhen","splitWhenever","subtract","symmetricDifference","symmetricDifferenceWith","takeLastWhile","XTakeWhile","takeWhile","XTap","tap","andThen","toPairsIn","transduce","transpose","traverse","unapply","unary","uncurryN","unfold","XUniqWith","unionWith","unless","until","init","valuesIn","view","when","where","whereAny","whereEq","without","xor","xprod","zip","zipObj","zipWith","thunkify","reservedWord","r.isNil","r.is","r.__","isTerminator","this","t","e","n","i","s","u","a","M","m","f","l","$","y","v","g","D","d","c","h","reservedDeepProperty","reservedKey","reservedProperty"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,428]}
|